mstate-angular 0.2.2 → 0.2.4
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/action-form/action-form.component.mjs +85 -48
- package/esm2022/lib/common/constant.mjs +2 -2
- package/esm2022/lib/components/action-card/action-card.component.mjs +9 -8
- package/esm2022/lib/components/button/button.component.mjs +13 -5
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +7 -4
- package/esm2022/lib/components/error-card/error-card.component.mjs +23 -0
- package/esm2022/lib/components/input-field/input-field.component.mjs +14 -7
- package/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/components/select/select.component.mjs +7 -4
- package/esm2022/lib/components/workflow-end-card/workflow-end-card.component.mjs +11 -0
- package/esm2022/lib/input-selector/input-selector.component.mjs +6 -3
- package/esm2022/lib/interfaces/interface.mjs +1 -1
- package/esm2022/lib/mstate-angular/mstate-angular.component.mjs +35 -21
- package/esm2022/lib/mstate-angular.helper.mjs +28 -1
- package/esm2022/lib/mstate-angular.module.mjs +5 -4
- package/esm2022/lib/mstate-angular.service.mjs +3 -3
- package/fesm2022/mstate-angular.mjs +220 -95
- package/fesm2022/mstate-angular.mjs.map +1 -1
- package/lib/action-form/action-form.component.d.ts +16 -9
- package/lib/common/constant.d.ts +2 -2
- package/lib/components/action-card/action-card.component.d.ts +4 -4
- package/lib/components/button/button.component.d.ts +3 -1
- package/lib/components/dropdown/dropdown.component.d.ts +6 -1
- package/lib/components/error-card/error-card.component.d.ts +9 -0
- package/lib/components/input-field/input-field.component.d.ts +9 -1
- package/lib/components/select/select.component.d.ts +6 -1
- package/lib/components/workflow-end-card/workflow-end-card.component.d.ts +5 -0
- package/lib/input-selector/input-selector.component.d.ts +6 -1
- package/lib/interfaces/interface.d.ts +1 -1
- package/lib/mstate-angular/mstate-angular.component.d.ts +7 -3
- package/lib/mstate-angular.helper.d.ts +7 -0
- package/lib/mstate-angular.module.d.ts +2 -1
- package/package.json +1 -1
@@ -4,11 +4,11 @@ import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/common/http';
|
5
5
|
import { HttpHeaders } from '@angular/common/http';
|
6
6
|
import axios from 'axios';
|
7
|
+
import { catchError, finalize } from 'rxjs';
|
7
8
|
import * as i3 from '@angular/forms';
|
8
|
-
import {
|
9
|
+
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
9
10
|
import * as i4 from '@ng-select/ng-select';
|
10
11
|
import { NgSelectModule } from '@ng-select/ng-select';
|
11
|
-
import { catchError, finalize } from 'rxjs';
|
12
12
|
|
13
13
|
var Route;
|
14
14
|
(function (Route) {
|
@@ -58,7 +58,7 @@ var ActionType;
|
|
58
58
|
ActionType["CHAINED"] = "CHAINED";
|
59
59
|
})(ActionType || (ActionType = {}));
|
60
60
|
|
61
|
-
// export const MSTATE_URL = 'https://dev.mstate.mobioffice.io/api';
|
61
|
+
// export const MSTATE_URL: string = 'https://dev.mstate.mobioffice.io/api';
|
62
62
|
// export const MSTATE_URL = 'http://localhost:3000/api';
|
63
63
|
const MSTATE_URL = 'https://api.mstate.mobioffice.io/api';
|
64
64
|
const TOKEN_KEY = 'secret-key';
|
@@ -85,6 +85,32 @@ class MstateAngularHelper {
|
|
85
85
|
checkIsStep(step) {
|
86
86
|
return step?.config !== undefined;
|
87
87
|
}
|
88
|
+
checkIsHandledStep(module) {
|
89
|
+
switch (module) {
|
90
|
+
case FieldType.CHECKBOX:
|
91
|
+
case FieldType.DROP_DOWN:
|
92
|
+
case FieldType.INPUT_FIELD:
|
93
|
+
case FieldType.RADIO_LIST:
|
94
|
+
return true;
|
95
|
+
default:
|
96
|
+
return false;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
checkInputError(form, key) {
|
100
|
+
switch ((form.controls[key].status === 'INVALID' && form.controls[key].touched) ||
|
101
|
+
(form.controls[key].status === 'INVALID' && form.controls[key].dirty)) {
|
102
|
+
case true:
|
103
|
+
return {
|
104
|
+
isError: true,
|
105
|
+
message: `${key} is required`,
|
106
|
+
};
|
107
|
+
default:
|
108
|
+
return {
|
109
|
+
isError: false,
|
110
|
+
message: '',
|
111
|
+
};
|
112
|
+
}
|
113
|
+
}
|
88
114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
89
115
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularHelper, providedIn: 'root' }); }
|
90
116
|
}
|
@@ -124,8 +150,8 @@ class MstateAngularService {
|
|
124
150
|
});
|
125
151
|
}
|
126
152
|
async handleDropdownAPI(request, target) {
|
127
|
-
const
|
128
|
-
return this.mstateHelper.getObjectValue(data, target) ?? [];
|
153
|
+
const response = await axios(request);
|
154
|
+
return this.mstateHelper.getObjectValue(response?.data, target) ?? [];
|
129
155
|
}
|
130
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularService, deps: [{ token: i1.HttpClient }, { token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
131
157
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularService, providedIn: 'root' }); }
|
@@ -138,13 +164,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
138
164
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: MstateAngularHelper }] });
|
139
165
|
|
140
166
|
class InputFieldComponent {
|
141
|
-
|
142
|
-
|
167
|
+
constructor(mstateHelper) {
|
168
|
+
this.mstateHelper = mstateHelper;
|
169
|
+
}
|
170
|
+
checkInputError(form, key) {
|
171
|
+
return this.mstateHelper.checkInputError(form, key);
|
172
|
+
}
|
173
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputFieldComponent, deps: [{ token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
174
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputFieldComponent, isStandalone: true, selector: "mobi-office-input-field", inputs: { config: "config", mstateModel: "mstateModel" }, ngImport: i0, template: "<div\r\n class=\"form-group\"\r\n [formGroup]=\"mstateModel\"\r\n style=\"display: flex; flex-direction: column\"\r\n>\r\n <label>{{ config.label }}</label>\r\n <input\r\n style=\"flex: 1\"\r\n [required]=\"config.field.isRequired || false\"\r\n [type]=\"config.inputType\"\r\n [name]=\"config.field.keyForAPI\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n class=\"form-control\"\r\n />\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
143
175
|
}
|
144
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputFieldComponent, decorators: [{
|
145
177
|
type: Component,
|
146
|
-
args: [{ selector: 'mobi-office-input-field', standalone: true, imports: [CommonModule,
|
147
|
-
}], propDecorators: { config: [{
|
178
|
+
args: [{ selector: 'mobi-office-input-field', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<div\r\n class=\"form-group\"\r\n [formGroup]=\"mstateModel\"\r\n style=\"display: flex; flex-direction: column\"\r\n>\r\n <label>{{ config.label }}</label>\r\n <input\r\n style=\"flex: 1\"\r\n [required]=\"config.field.isRequired || false\"\r\n [type]=\"config.inputType\"\r\n [name]=\"config.field.keyForAPI\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n class=\"form-control\"\r\n />\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n" }]
|
179
|
+
}], ctorParameters: () => [{ type: MstateAngularHelper }], propDecorators: { config: [{
|
148
180
|
type: Input,
|
149
181
|
args: [{ required: true }]
|
150
182
|
}], mstateModel: [{
|
@@ -175,12 +207,15 @@ class SelectComponent {
|
|
175
207
|
getObjectValue(obj, target) {
|
176
208
|
return this.mstateHelper.getObjectValue(obj, target);
|
177
209
|
}
|
210
|
+
checkInputError(form, key) {
|
211
|
+
return this.mstateHelper.checkInputError(form, key);
|
212
|
+
}
|
178
213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, deps: [{ token: MstateAngularService }, { token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectComponent, isStandalone: true, selector: "mobi-office-select", inputs: { config: "config", mstateModel: "mstateModel" }, providers: [MstateAngularService], ngImport: i0, template: "<div class=\"form-group\" [formGroup]=\"mstateModel\">\r\n <label>{{ config.label }}</label>\r\n\r\n <ng-select\r\n [required]=\"config.field.isRequired || false\"\r\n [items]=\"list\"\r\n [multiple]=\"true\"\r\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n >\r\n </ng-select>\r\n\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n", styles: [".dropdown{position:relative;width:300px}.search-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.dropdown-menu{position:absolute;width:100%;max-height:150px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:4px;margin-top:5px;z-index:10}.dropdown-item{padding:8px;cursor:pointer}.dropdown-item:hover{background-color:#f0f0f0}.no-results{padding:8px;color:#888;text-align:center}.selected-option{margin-top:10px;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
180
215
|
}
|
181
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, decorators: [{
|
182
217
|
type: Component,
|
183
|
-
args: [{ selector: 'mobi-office-select', standalone: true, imports: [
|
218
|
+
args: [{ selector: 'mobi-office-select', standalone: true, imports: [ReactiveFormsModule, NgSelectModule, CommonModule], providers: [MstateAngularService], template: "<div class=\"form-group\" [formGroup]=\"mstateModel\">\r\n <label>{{ config.label }}</label>\r\n\r\n <ng-select\r\n [required]=\"config.field.isRequired || false\"\r\n [items]=\"list\"\r\n [multiple]=\"true\"\r\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n >\r\n </ng-select>\r\n\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n", styles: [".dropdown{position:relative;width:300px}.search-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.dropdown-menu{position:absolute;width:100%;max-height:150px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:4px;margin-top:5px;z-index:10}.dropdown-item{padding:8px;cursor:pointer}.dropdown-item:hover{background-color:#f0f0f0}.no-results{padding:8px;color:#888;text-align:center}.selected-option{margin-top:10px;font-weight:700}\n"] }]
|
184
219
|
}], ctorParameters: () => [{ type: MstateAngularService }, { type: MstateAngularHelper }], propDecorators: { config: [{
|
185
220
|
type: Input,
|
186
221
|
args: [{ required: true }]
|
@@ -212,12 +247,15 @@ class DropdownComponent {
|
|
212
247
|
getObjectValue(obj, target) {
|
213
248
|
return this.mstateHelper.getObjectValue(obj, target);
|
214
249
|
}
|
250
|
+
checkInputError(form, key) {
|
251
|
+
return this.mstateHelper.checkInputError(form, key);
|
252
|
+
}
|
215
253
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownComponent, deps: [{ token: MstateAngularService }, { token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
216
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DropdownComponent, isStandalone: true, selector: "mobi-office-dropdown", inputs: { config: "config", mstateModel: "mstateModel" }, providers: [MstateAngularService], ngImport: i0, template: "<div class=\"form-group\" [formGroup]=\"mstateModel\">\r\n <label>{{ config.label }}</label>\r\n\r\n <ng-select\r\n [items]=\"list\"\r\n [multiple]=\"false\"\r\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n [required]=\"config.field.isRequired || false\"\r\n >\r\n </ng-select>\r\n\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
217
255
|
}
|
218
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownComponent, decorators: [{
|
219
257
|
type: Component,
|
220
|
-
args: [{ selector: 'mobi-office-dropdown', standalone: true, imports: [
|
258
|
+
args: [{ selector: 'mobi-office-dropdown', standalone: true, imports: [ReactiveFormsModule, NgSelectModule, CommonModule], providers: [MstateAngularService], template: "<div class=\"form-group\" [formGroup]=\"mstateModel\">\r\n <label>{{ config.label }}</label>\r\n\r\n <ng-select\r\n [items]=\"list\"\r\n [multiple]=\"false\"\r\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\r\n [placeholder]=\"config.field.placeholder\"\r\n [formControlName]=\"config.field.keyForAPI\"\r\n [required]=\"config.field.isRequired || false\"\r\n >\r\n </ng-select>\r\n\r\n @if (checkInputError(mstateModel, config.field.keyForAPI).isError) {\r\n <small>{{\r\n checkInputError(mstateModel, config.field.keyForAPI).message\r\n }}</small>\r\n }\r\n</div>\r\n" }]
|
221
259
|
}], ctorParameters: () => [{ type: MstateAngularService }, { type: MstateAngularHelper }], propDecorators: { config: [{
|
222
260
|
type: Input,
|
223
261
|
args: [{ required: true }]
|
@@ -236,8 +274,11 @@ class InputSelectorComponent {
|
|
236
274
|
? this.step?.config?.data
|
237
275
|
: this.step;
|
238
276
|
}
|
277
|
+
checkInputError(form, key) {
|
278
|
+
return this.mstateHelper.checkInputError(form, key);
|
279
|
+
}
|
239
280
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputSelectorComponent, deps: [{ token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
240
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputSelectorComponent, isStandalone: true, selector: "mobi-office-input-selector", inputs: { step: "step", mstateModel: "mstateModel" }, providers: [MstateAngularHelper, MstateAngularService], ngImport: i0, template: "@switch (config.fieldType) {
|
281
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputSelectorComponent, isStandalone: true, selector: "mobi-office-input-selector", inputs: { step: "step", mstateModel: "mstateModel" }, providers: [MstateAngularHelper, MstateAngularService], ngImport: i0, template: "@switch (config.fieldType) { @case (FieldType.INPUT_FIELD) {\r\n<mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.TEXT_AREA) {\r\n<mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.DROP_DOWN) {\r\n<mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.RADIO_LIST) {\r\n<mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.CHECKBOX) {\r\n<mobi-office-select [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @default { } }\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InputFieldComponent, selector: "mobi-office-input-field", inputs: ["config", "mstateModel"] }, { kind: "component", type: SelectComponent, selector: "mobi-office-select", inputs: ["config", "mstateModel"] }, { kind: "component", type: DropdownComponent, selector: "mobi-office-dropdown", inputs: ["config", "mstateModel"] }] }); }
|
241
282
|
}
|
242
283
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputSelectorComponent, decorators: [{
|
243
284
|
type: Component,
|
@@ -246,7 +287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
246
287
|
InputFieldComponent,
|
247
288
|
SelectComponent,
|
248
289
|
DropdownComponent,
|
249
|
-
], providers: [MstateAngularHelper, MstateAngularService], template: "@switch (config.fieldType) {
|
290
|
+
], providers: [MstateAngularHelper, MstateAngularService], template: "@switch (config.fieldType) { @case (FieldType.INPUT_FIELD) {\r\n<mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.TEXT_AREA) {\r\n<mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.DROP_DOWN) {\r\n<mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.RADIO_LIST) {\r\n<mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @case (FieldType.CHECKBOX) {\r\n<mobi-office-select [config]=\"config\" [mstateModel]=\"mstateModel\" />\r\n} @default { } }\r\n" }]
|
250
291
|
}], ctorParameters: () => [{ type: MstateAngularHelper }], propDecorators: { step: [{
|
251
292
|
type: Input,
|
252
293
|
args: [{ required: true }]
|
@@ -256,18 +297,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
256
297
|
}] } });
|
257
298
|
|
258
299
|
class ButtonComponent {
|
300
|
+
constructor() {
|
301
|
+
this.type = 'submit';
|
302
|
+
this.onClick = () => { };
|
303
|
+
}
|
259
304
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
260
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonComponent, isStandalone: true, selector: "mobi-office-button", ngImport: i0, template: "<button>\n <ng-content></ng-content>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ButtonComponent, isStandalone: true, selector: "mobi-office-button", inputs: { type: "type", onClick: "onClick" }, ngImport: i0, template: "<button [type]=\"type\" (click)=\"onClick()\" class=\"btn\">\r\n <ng-content></ng-content>\r\n</button>\r\n", styles: [".btn{width:100%;display:flex;align-items:center;justify-content:center;background-color:#007bff;color:#fff;border:1px solid #007bff;padding:10px 20px;font-size:16px;border-radius:4px;text-align:center;cursor:pointer;transition:all .3s ease}.btn:hover{background-color:#0056b3;border-color:#0056b3}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #007bff40}.btn:active{background-color:#004085;border-color:#036}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
261
306
|
}
|
262
307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonComponent, decorators: [{
|
263
308
|
type: Component,
|
264
|
-
args: [{ selector: 'mobi-office-button', standalone: true, imports: [CommonModule], template: "<button>\n <ng-content></ng-content>\n</button>\n" }]
|
309
|
+
args: [{ selector: 'mobi-office-button', standalone: true, imports: [CommonModule], template: "<button [type]=\"type\" (click)=\"onClick()\" class=\"btn\">\r\n <ng-content></ng-content>\r\n</button>\r\n", styles: [".btn{width:100%;display:flex;align-items:center;justify-content:center;background-color:#007bff;color:#fff;border:1px solid #007bff;padding:10px 20px;font-size:16px;border-radius:4px;text-align:center;cursor:pointer;transition:all .3s ease}.btn:hover{background-color:#0056b3;border-color:#0056b3}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #007bff40}.btn:active{background-color:#004085;border-color:#036}\n"] }]
|
310
|
+
}], propDecorators: { type: [{
|
311
|
+
type: Input
|
312
|
+
}], onClick: [{
|
313
|
+
type: Input
|
314
|
+
}] } });
|
315
|
+
|
316
|
+
class LoaderComponent {
|
317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
318
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoaderComponent, isStandalone: true, selector: "mobi-office-loader", ngImport: i0, template: "<img\r\n class=\"loader\"\r\n src=\"https://cdn.dribbble.com/users/10743/screenshots/2098959/ezgif.com-crop.gif\"\r\n alt=\"loading\"\r\n/>\r\n", styles: [".loader{width:auto;height:100%;aspect-ratio:1/1;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
319
|
+
}
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoaderComponent, decorators: [{
|
321
|
+
type: Component,
|
322
|
+
args: [{ selector: 'mobi-office-loader', standalone: true, imports: [CommonModule], template: "<img\r\n class=\"loader\"\r\n src=\"https://cdn.dribbble.com/users/10743/screenshots/2098959/ezgif.com-crop.gif\"\r\n alt=\"loading\"\r\n/>\r\n", styles: [".loader{width:auto;height:100%;aspect-ratio:1/1;border-radius:50%}\n"] }]
|
265
323
|
}] });
|
266
324
|
|
267
325
|
class ActionFormComponent {
|
268
|
-
constructor(mstateAngularService,
|
326
|
+
constructor(fb, mstateAngularService, mstateHelper) {
|
327
|
+
this.fb = fb;
|
269
328
|
this.mstateAngularService = mstateAngularService;
|
270
|
-
this.
|
329
|
+
this.mstateHelper = mstateHelper;
|
271
330
|
this.token = '';
|
272
331
|
this.workflow = '';
|
273
332
|
this.config = {
|
@@ -275,23 +334,23 @@ class ActionFormComponent {
|
|
275
334
|
type: ActionType.MANUAL,
|
276
335
|
steps: [],
|
277
336
|
};
|
278
|
-
this.onExecuteAction = ()
|
279
|
-
|
280
|
-
this.
|
281
|
-
this.mstateModel = {};
|
337
|
+
this.onExecuteAction = new EventEmitter();
|
338
|
+
this.isLoading = false;
|
339
|
+
this.nonUserInputField = {};
|
282
340
|
this.handleStepConfigFilter = () => {
|
283
341
|
const keyForAPISet = new Set();
|
284
|
-
this.config.steps = this.config?.steps?.filter(stepConfig => {
|
342
|
+
this.config.steps = this.config?.steps?.filter((stepConfig) => {
|
285
343
|
const step = stepConfig;
|
286
344
|
switch (step?.module) {
|
287
345
|
case ManualStepModule.CUSTOM_FIELD: {
|
288
346
|
if (this.updateCustomFieldValue) {
|
289
|
-
this.
|
347
|
+
this.nonUserInputField[step?.context?.as] =
|
348
|
+
this.updateCustomFieldValue(step?.context?.key);
|
290
349
|
}
|
291
350
|
return true;
|
292
351
|
}
|
293
352
|
case ManualStepModule.CONTEXT_FIELD:
|
294
|
-
this.
|
353
|
+
this.nonUserInputField[step?.context?.as] = step?.context?.value;
|
295
354
|
return true;
|
296
355
|
default: {
|
297
356
|
const isDuplicate = keyForAPISet.has(step?.field?.keyForAPI);
|
@@ -307,45 +366,80 @@ class ActionFormComponent {
|
|
307
366
|
this.handleExecuteAction();
|
308
367
|
return;
|
309
368
|
}
|
369
|
+
this.assignFormBuilder();
|
310
370
|
this.handleStepConfigFilter();
|
311
371
|
}
|
312
|
-
ngOnChanges(changes) {
|
313
|
-
console.log({ changes });
|
314
|
-
if (this.mstateAngularHelper.detectChange(changes, ['mstateModel'])) {
|
315
|
-
}
|
316
|
-
}
|
317
372
|
//#region handlers
|
318
373
|
handleExecuteAction() {
|
319
|
-
this.
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
374
|
+
if (this.form.status === 'VALID') {
|
375
|
+
this.isLoading = true;
|
376
|
+
this.mstateAngularService
|
377
|
+
.executeAction({
|
378
|
+
action: {
|
379
|
+
name: this.config.name,
|
380
|
+
payload: {
|
381
|
+
...this.form.value,
|
382
|
+
...this.nonUserInputField,
|
383
|
+
},
|
384
|
+
},
|
385
|
+
token: this.token,
|
386
|
+
workflow: this.workflow,
|
387
|
+
})
|
388
|
+
.pipe(catchError((e) => {
|
389
|
+
this.onExecuteAction.emit({
|
390
|
+
value: {},
|
391
|
+
errors: e.error?.errors ?? [],
|
392
|
+
});
|
393
|
+
throw e;
|
394
|
+
}), finalize(() => {
|
395
|
+
this.isLoading = false;
|
396
|
+
}))
|
397
|
+
.subscribe((data) => {
|
398
|
+
this.onExecuteAction.emit({
|
399
|
+
value: data.data,
|
400
|
+
errors: [],
|
401
|
+
});
|
402
|
+
if (this.onSuccess) {
|
403
|
+
this.onSuccess(this.config.name);
|
404
|
+
}
|
405
|
+
});
|
406
|
+
}
|
407
|
+
else {
|
408
|
+
this.markAllAsTouched(this.form);
|
409
|
+
}
|
410
|
+
}
|
411
|
+
markAllAsTouched(formGroup) {
|
412
|
+
Object.keys(formGroup.controls).forEach((key) => {
|
413
|
+
const control = formGroup.get(key);
|
414
|
+
if (control?.markAsTouched) {
|
415
|
+
control?.markAsTouched();
|
416
|
+
}
|
417
|
+
});
|
418
|
+
}
|
419
|
+
assignFormBuilder() {
|
420
|
+
const validators = this.config.steps.reduce((acc, data) => Object.assign(acc, this.mstateHelper.checkIsStep(data) === false &&
|
421
|
+
this.mstateHelper.checkIsHandledStep(data.fieldType)
|
422
|
+
? {
|
423
|
+
[data?.field?.keyForAPI]: [
|
424
|
+
data?.field.multiple ? [] : '',
|
425
|
+
data?.field?.isRequired ? [Validators.required] : undefined,
|
426
|
+
],
|
427
|
+
}
|
428
|
+
: {}), {});
|
429
|
+
this.form = this.fb.group(validators);
|
430
|
+
}
|
431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionFormComponent, deps: [{ token: i3.FormBuilder }, { token: MstateAngularService }, { token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ActionFormComponent, isStandalone: true, selector: "lib-action-form", inputs: { token: "token", workflow: "workflow", config: "config", updateCustomFieldValue: "updateCustomFieldValue", instanceID: "instanceID", onSuccess: "onSuccess" }, outputs: { onExecuteAction: "onExecuteAction" }, providers: [MstateAngularService, MstateAngularHelper], ngImport: i0, template: "<div>\r\n <p style=\"font-size: 2rem; text-align: center\">\r\n {{ config.meta?.title ?? config.name }}\r\n </p>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"handleExecuteAction()\">\r\n @for (step of config.steps; track $index) {\r\n <mobi-office-input-selector [step]=\"step\" [mstateModel]=\"form\" />\r\n }\r\n\r\n <div style=\"margin-top: 10px\">\r\n <mobi-office-button type=\"submit\">\r\n @if (isLoading) {\r\n <div style=\"height: 25px\">\r\n <mobi-office-loader></mobi-office-loader>\r\n </div>\r\n } @else {\r\n Submit\r\n }\r\n </mobi-office-button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["form{display:flex;flex-direction:column}label{margin-bottom:5px}\n"], dependencies: [{ kind: "component", type: InputSelectorComponent, selector: "mobi-office-input-selector", inputs: ["step", "mstateModel"] }, { kind: "component", type: ButtonComponent, selector: "mobi-office-button", inputs: ["type", "onClick"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: LoaderComponent, selector: "mobi-office-loader" }] }); }
|
344
433
|
}
|
345
434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionFormComponent, decorators: [{
|
346
435
|
type: Component,
|
347
|
-
args: [{ selector: 'lib-action-form', standalone: true, imports: [
|
348
|
-
|
436
|
+
args: [{ selector: 'lib-action-form', standalone: true, imports: [
|
437
|
+
InputSelectorComponent,
|
438
|
+
ButtonComponent,
|
439
|
+
ReactiveFormsModule,
|
440
|
+
LoaderComponent,
|
441
|
+
], providers: [MstateAngularService, MstateAngularHelper], template: "<div>\r\n <p style=\"font-size: 2rem; text-align: center\">\r\n {{ config.meta?.title ?? config.name }}\r\n </p>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"handleExecuteAction()\">\r\n @for (step of config.steps; track $index) {\r\n <mobi-office-input-selector [step]=\"step\" [mstateModel]=\"form\" />\r\n }\r\n\r\n <div style=\"margin-top: 10px\">\r\n <mobi-office-button type=\"submit\">\r\n @if (isLoading) {\r\n <div style=\"height: 25px\">\r\n <mobi-office-loader></mobi-office-loader>\r\n </div>\r\n } @else {\r\n Submit\r\n }\r\n </mobi-office-button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["form{display:flex;flex-direction:column}label{margin-bottom:5px}\n"] }]
|
442
|
+
}], ctorParameters: () => [{ type: i3.FormBuilder }, { type: MstateAngularService }, { type: MstateAngularHelper }], propDecorators: { token: [{
|
349
443
|
type: Input,
|
350
444
|
args: [{ required: true }]
|
351
445
|
}], workflow: [{
|
@@ -355,8 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
355
449
|
type: Input,
|
356
450
|
args: [{ required: true }]
|
357
451
|
}], onExecuteAction: [{
|
358
|
-
type:
|
359
|
-
args: [{ required: true }]
|
452
|
+
type: Output
|
360
453
|
}], updateCustomFieldValue: [{
|
361
454
|
type: Input
|
362
455
|
}], instanceID: [{
|
@@ -367,31 +460,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
367
460
|
|
368
461
|
class ActionCardComponent {
|
369
462
|
constructor() {
|
370
|
-
this.
|
463
|
+
this.executeAction = new EventEmitter();
|
371
464
|
}
|
372
|
-
|
373
|
-
this.
|
465
|
+
triggerExecuteAction() {
|
466
|
+
this.executeAction.emit(this.config);
|
374
467
|
}
|
375
468
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
376
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionCardComponent, isStandalone: true, selector: "mobi-office-action-card", inputs: {
|
469
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionCardComponent, isStandalone: true, selector: "mobi-office-action-card", inputs: { config: "config" }, outputs: { executeAction: "executeAction" }, ngImport: i0, template: "<div class=\"card\" (click)=\"triggerExecuteAction()\">\r\n <img\r\n src=\"https://docs.mstate.ai/img/mymobioffice_logo.png\"\r\n alt=\"Card Image\"\r\n class=\"card-image\"\r\n />\r\n <div class=\"card-content\">\r\n <h3 class=\"card-title\">\r\n {{ config?.name }}\r\n </h3>\r\n <p class=\"card-description\">\r\n {{ config?.meta?.desc ?? 'Click card to execute' }}\r\n </p>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"card-button\">Execute</button>\r\n </div>\r\n</div>\r\n", styles: [".card{width:240px;background-color:#fff;border-radius:10px;box-shadow:0 4px 8px #0000001a;overflow:hidden;cursor:pointer;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-5px);box-shadow:0 8px 16px #0003}.card-image{width:auto;margin:5px;height:150px;display:block;margin-inline:auto;border-radius:10px}.card-content{padding:15px}.card-title{margin:0 0 10px;font-size:18px;font-weight:700;color:#333}.card-description{margin:0;font-size:14px;color:#666;line-height:1.5}.card-footer{padding:10px 15px;background-color:#f9f9f9;text-align:right}.card-button{background-color:#007bff;color:#fff;border:none;padding:8px 15px;border-radius:5px;cursor:pointer;font-size:14px;transition:background-color .2s}.card-button:hover{background-color:#0056b3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
377
470
|
}
|
378
471
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionCardComponent, decorators: [{
|
379
472
|
type: Component,
|
380
|
-
args: [{ selector: 'mobi-office-action-card', standalone: true, imports: [CommonModule], template: "<p
|
381
|
-
}], propDecorators: {
|
473
|
+
args: [{ selector: 'mobi-office-action-card', standalone: true, imports: [CommonModule, ButtonComponent], template: "<div class=\"card\" (click)=\"triggerExecuteAction()\">\r\n <img\r\n src=\"https://docs.mstate.ai/img/mymobioffice_logo.png\"\r\n alt=\"Card Image\"\r\n class=\"card-image\"\r\n />\r\n <div class=\"card-content\">\r\n <h3 class=\"card-title\">\r\n {{ config?.name }}\r\n </h3>\r\n <p class=\"card-description\">\r\n {{ config?.meta?.desc ?? 'Click card to execute' }}\r\n </p>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"card-button\">Execute</button>\r\n </div>\r\n</div>\r\n", styles: [".card{width:240px;background-color:#fff;border-radius:10px;box-shadow:0 4px 8px #0000001a;overflow:hidden;cursor:pointer;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-5px);box-shadow:0 8px 16px #0003}.card-image{width:auto;margin:5px;height:150px;display:block;margin-inline:auto;border-radius:10px}.card-content{padding:15px}.card-title{margin:0 0 10px;font-size:18px;font-weight:700;color:#333}.card-description{margin:0;font-size:14px;color:#666;line-height:1.5}.card-footer{padding:10px 15px;background-color:#f9f9f9;text-align:right}.card-button{background-color:#007bff;color:#fff;border:none;padding:8px 15px;border-radius:5px;cursor:pointer;font-size:14px;transition:background-color .2s}.card-button:hover{background-color:#0056b3}\n"] }]
|
474
|
+
}], propDecorators: { config: [{
|
382
475
|
type: Input,
|
383
476
|
args: [{ required: true }]
|
384
|
-
}],
|
477
|
+
}], executeAction: [{
|
385
478
|
type: Output
|
386
479
|
}] } });
|
387
480
|
|
388
|
-
class
|
389
|
-
|
390
|
-
|
481
|
+
class ErrorCardComponent {
|
482
|
+
constructor() {
|
483
|
+
this.retry = new EventEmitter();
|
484
|
+
}
|
485
|
+
handleRetryError() {
|
486
|
+
this.retry.emit();
|
487
|
+
}
|
488
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
489
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ErrorCardComponent, isStandalone: true, selector: "lib-error-card", inputs: { errors: "errors" }, outputs: { retry: "retry" }, ngImport: i0, template: "<div class=\"error\">\r\n <p style=\"font-size: 2rem; text-align: center\">Error</p>\r\n\r\n @for (message of errors; track message) {\r\n <p style=\"color: red; font-size: 1rem; text-align: center\">\r\n {{ message }}\r\n </p>\r\n }\r\n <mobi-office-button (click)=\"handleRetryError()\">Retry</mobi-office-button>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "mobi-office-button", inputs: ["type", "onClick"] }] }); }
|
391
490
|
}
|
392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type:
|
491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ErrorCardComponent, decorators: [{
|
492
|
+
type: Component,
|
493
|
+
args: [{ selector: 'lib-error-card', standalone: true, imports: [ButtonComponent], template: "<div class=\"error\">\r\n <p style=\"font-size: 2rem; text-align: center\">Error</p>\r\n\r\n @for (message of errors; track message) {\r\n <p style=\"color: red; font-size: 1rem; text-align: center\">\r\n {{ message }}\r\n </p>\r\n }\r\n <mobi-office-button (click)=\"handleRetryError()\">Retry</mobi-office-button>\r\n</div>\r\n" }]
|
494
|
+
}], propDecorators: { errors: [{
|
495
|
+
type: Input,
|
496
|
+
args: [{ required: true }]
|
497
|
+
}], retry: [{
|
498
|
+
type: Output
|
499
|
+
}] } });
|
500
|
+
|
501
|
+
class WorkflowEndCardComponent {
|
502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowEndCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WorkflowEndCardComponent, isStandalone: true, selector: "lib-workflow-end-card", ngImport: i0, template: "<p>Workflow Ended</p>\r\n", styles: [""] }); }
|
504
|
+
}
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowEndCardComponent, decorators: [{
|
393
506
|
type: Component,
|
394
|
-
args: [{ selector: '
|
507
|
+
args: [{ selector: 'lib-workflow-end-card', standalone: true, imports: [], template: "<p>Workflow Ended</p>\r\n" }]
|
395
508
|
}] });
|
396
509
|
|
397
510
|
class MstateAngularComponent {
|
@@ -408,7 +521,6 @@ class MstateAngularComponent {
|
|
408
521
|
this.start = true;
|
409
522
|
//#region Variables & Events
|
410
523
|
this.isLoading = true;
|
411
|
-
this.triggerAgain = false;
|
412
524
|
this.errors = [];
|
413
525
|
this.errorMessages = [];
|
414
526
|
this.allowedActions = [];
|
@@ -418,17 +530,10 @@ class MstateAngularComponent {
|
|
418
530
|
this.setAllowedActions();
|
419
531
|
}
|
420
532
|
ngOnChanges(changes) {
|
421
|
-
if (this.mstateAngularHelper.detectChange(changes, [
|
422
|
-
Variable.START,
|
423
|
-
Variable.TRIGGER_AGAIN,
|
424
|
-
])) {
|
533
|
+
if (this.mstateAngularHelper.detectChange(changes, [Variable.START])) {
|
425
534
|
if (this.start)
|
426
535
|
this.setAllowedActions();
|
427
536
|
}
|
428
|
-
if (this.mstateAngularHelper.detectChange(changes, [Variable.ERRORS])) {
|
429
|
-
console.log({ mstateErrors: this.errors });
|
430
|
-
this.errorMessages = this.errors.filter((e) => typeof e === 'string');
|
431
|
-
}
|
432
537
|
}
|
433
538
|
//#endregion
|
434
539
|
//#region Handlers
|
@@ -441,7 +546,7 @@ class MstateAngularComponent {
|
|
441
546
|
token: this.token,
|
442
547
|
})
|
443
548
|
.pipe(catchError((err) => {
|
444
|
-
|
549
|
+
this.handleError({}, err.error?.errors);
|
445
550
|
throw err;
|
446
551
|
}), finalize(() => {
|
447
552
|
this.isLoading = false;
|
@@ -457,7 +562,7 @@ class MstateAngularComponent {
|
|
457
562
|
token: this.token,
|
458
563
|
})
|
459
564
|
.pipe(catchError((err) => {
|
460
|
-
|
565
|
+
this.handleError({}, err.error?.errors);
|
461
566
|
throw err;
|
462
567
|
}), finalize(() => {
|
463
568
|
this.isLoading = false;
|
@@ -467,13 +572,10 @@ class MstateAngularComponent {
|
|
467
572
|
});
|
468
573
|
}
|
469
574
|
}
|
470
|
-
handleExecuteAction(
|
575
|
+
handleExecuteAction(response) {
|
576
|
+
const { value, errors = [] } = response;
|
471
577
|
if (errors?.length) {
|
472
|
-
this.
|
473
|
-
value.instanceID = errors[0]
|
474
|
-
?.split("instanceID='")
|
475
|
-
?.pop()
|
476
|
-
?.replace("'", '');
|
578
|
+
this.handleError(value, errors);
|
477
579
|
}
|
478
580
|
else {
|
479
581
|
this.allowedActions = value.actions;
|
@@ -487,11 +589,32 @@ class MstateAngularComponent {
|
|
487
589
|
}
|
488
590
|
}
|
489
591
|
}
|
490
|
-
|
592
|
+
handleActionExecution(config) {
|
491
593
|
this.allowedActions = [config];
|
492
594
|
}
|
595
|
+
handleRetryAction() {
|
596
|
+
if (this.allowedActions.length === 0) {
|
597
|
+
if (this.start)
|
598
|
+
this.setAllowedActions();
|
599
|
+
}
|
600
|
+
this.errors = [];
|
601
|
+
this.errorMessages = [];
|
602
|
+
}
|
603
|
+
handleError(value, errors) {
|
604
|
+
this.errors = errors;
|
605
|
+
value.instanceID = errors[0]
|
606
|
+
?.split("instanceID='")
|
607
|
+
?.pop()
|
608
|
+
?.replace("'", '');
|
609
|
+
this.errorMessages = this.errors
|
610
|
+
.filter((e) => typeof e === 'string')
|
611
|
+
.map((msg) => msg.replace(/ instanceID='(.*)'/i, ''));
|
612
|
+
if (this.onError) {
|
613
|
+
this.onError(this.errors);
|
614
|
+
}
|
615
|
+
}
|
493
616
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularComponent, deps: [{ token: MstateAngularHelper }, { token: MstateAngularService }], target: i0.ɵɵFactoryTarget.Component }); }
|
494
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MstateAngularComponent, isStandalone: true, selector: "mstate-angular", inputs: { token: "token", workflow: "workflow", instanceID: "instanceID", start: "start", theme: "theme", who: "who", onInstanceChange: "onInstanceChange", onSuccess: "onSuccess", onError: "onError", handleCustomField: "handleCustomField" }, providers: [MstateAngularHelper, MstateAngularService], usesOnChanges: true, ngImport: i0, template: "<div class=\"mstate-angular\">\n <img\n src=\"https://firebasestorage.googleapis.com/v0/b/mobioffice-dev.appspot.com/o/companies_logo%2Flogo.png?alt=media&token=e5f238f0-c373-4c76-9168-37fbe7da1de0\"\n alt=\"logo\"\n width=\"100%\"\n class=\"logo\" />\n\n @if (isLoading) {\n <mobi-office-loader></mobi-office-loader>\n } @else if (errorMessages.length) {\n @for (message of errorMessages; track message) {\n <p>\n {{ message }}\n </p>\n }\n } @else {\n @switch (allowedActions.length) {\n @case (0) {\n <h1>Workflow Ended</h1>\n }\n @case (1) {\n <lib-action-form\n [workflow]=\"workflow\"\n [token]=\"token\"\n [instanceID]=\"instanceID\"\n [config]=\"allowedActions[0]\"\n [onExecuteAction]=\"handleExecuteAction\"\n [updateCustomFieldValue]=\"handleCustomField\"\n [onSuccess]=\"onSuccess\"></lib-action-form>\n }\n @default {\n @for (item of allowedActions; track $index) {\n <mobi-office-action-card\n [error]=\"item\"\n (retryEmitter)=\"handleError($event)\"></mobi-office-action-card>\n }\n }\n }\n }\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap\";.mstate-angular *{font-family:Poppins,serif}.mstate-angular ::ng-deep .ng-select{padding-bottom:1.25em}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container:after{border-bottom-color:#0000;background-image:linear-gradient(to right,rgba(0,0,0,.42) 0%,rgba(0,0,0,.42) 33%,transparent 0%);background-size:4px 1px;background-repeat:repeat-x}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-arrow-wrapper .ng-arrow,.mstate-angular .ng-select.ng-select-disabled .ng-clear-wrapper{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:hover:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-value-container .ng-placeholder{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);color:#3f51b5}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-arrow-wrapper .ng-arrow{color:#3f51b5}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-filtered .ng-select-container .ng-placeholder{display:initial}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-opened .ng-placeholder{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px)}.mstate-angular ::ng-deep .ng-select .ng-select-container{color:#000000de;align-items:baseline;min-height:51.5px}.mstate-angular ::ng-deep .ng-select .ng-select-container:after{border-bottom:thin solid rgba(0,0,0,.42);content:\"\";bottom:0;left:0;right:0;position:absolute;transition:border-color .3s cubic-bezier(.55,0,.55,.2)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline{padding:0 .5em;min-height:60px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:after{border:solid 1px rgba(0,0,0,.12);border-radius:5px;height:calc(100% - .5em);pointer-events:none;transition:border-color .3s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:hover:after{border-color:#000000de;border-width:2px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-placeholder{padding:0 .25em;background-color:#fff;z-index:1}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-value{padding-left:.25em}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container{align-items:stretch;padding:.4375em 0;border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{position:absolute;color:#0000008a;transform-origin:left 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep [dir=rtl] .ng-select .ng-select-container .ng-value-container .ng-placeholder{transform-origin:right 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input{bottom:.4375em}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{bottom:17px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-clear-wrapper{bottom:14px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-arrow-wrapper{align-self:flex-end;bottom:9px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-clear-wrapper{align-self:flex-end;bottom:7px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-select-container .ng-value-container .ng-value{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:hover:after{background-image:none;border:dotted 1px rgba(0,0,0,.12)}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-arrow-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-clear-wrapper{border-top:none}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{top:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-clear-wrapper{top:4px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:#3f51b5;border-radius:2px;color:#fff;padding:2px 5px;margin:0 .4375em .4375em 0}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin:0 0 .4375em .4375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:14px;font-weight:500}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{color:#ffffff8a;padding-right:5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{padding-left:5px;padding-right:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{color:#ffffffde}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{line-height:1.375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value{align-items:center}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-value-container{padding-bottom:0;padding-top:.1875em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-clear-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-arrow-wrapper{border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper{color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:hover{color:#000000de}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:focus{color:#000000de;outline:none}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper{bottom:2px}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper .ng-arrow{border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px;color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-spinner-zone{top:3px}.mstate-angular ::ng-deep .ng-dropdown-panel{background:#fff;left:0}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-top{bottom:calc(100% - .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-right{left:100%;top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f;margin-left:4px}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-bottom{top:calc(100% - 1.25em);box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-left{left:calc(-100% - 4px);top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.selected{background:#fff}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;cursor:pointer;line-height:3em;height:3em;padding:0 16px;color:#0000008a;font-weight:500}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{line-height:3em;min-height:3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 16px;text-decoration:none;position:relative;color:#000000de;text-align:left}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{text-align:right}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#0000000a;color:#000000de}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#00000061}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:32px}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:32px;padding-left:0}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-right:5px;font-size:80%;font-weight:400;color:#00000061}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}.mstate-angular .logo{width:70%;margin:auto;max-width:300px;margin-block:12px}.mstate-angular .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mstate-angular .form-group{margin-bottom:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ActionFormComponent, selector: "lib-action-form", inputs: ["token", "workflow", "config", "onExecuteAction", "updateCustomFieldValue", "instanceID", "onSuccess"] }, { kind: "component", type: ActionCardComponent, selector: "mobi-office-action-card", inputs: ["error"], outputs: ["retryEmitter"] }, { kind: "component", type: LoaderComponent, selector: "mobi-office-loader" }] }); }
|
617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MstateAngularComponent, isStandalone: true, selector: "mstate-angular", inputs: { token: "token", workflow: "workflow", instanceID: "instanceID", start: "start", theme: "theme", who: "who", onInstanceChange: "onInstanceChange", onSuccess: "onSuccess", onError: "onError", handleCustomField: "handleCustomField" }, providers: [MstateAngularHelper, MstateAngularService], usesOnChanges: true, ngImport: i0, template: "<div class=\"mstate-angular\">\r\n <img\r\n src=\"https://firebasestorage.googleapis.com/v0/b/mobioffice-dev.appspot.com/o/companies_logo%2Flogo.png?alt=media&token=e5f238f0-c373-4c76-9168-37fbe7da1de0\"\r\n alt=\"logo\"\r\n width=\"100%\"\r\n class=\"logo\"\r\n />\r\n\r\n @if (isLoading) {\r\n <div class=\"flex-container\">\r\n <mobi-office-loader />\r\n </div>\r\n } @else if (errorMessages.length) {\r\n <lib-error-card [errors]=\"errorMessages\" (retry)=\"handleRetryAction()\" />\r\n } @else {\r\n @switch (allowedActions.length) {\r\n @case (0) {\r\n <lib-workflow-end-card />\r\n }\r\n @case (1) {\r\n <lib-action-form\r\n [workflow]=\"workflow\"\r\n [token]=\"token\"\r\n [instanceID]=\"instanceID\"\r\n [config]=\"allowedActions[0]\"\r\n (onExecuteAction)=\"handleExecuteAction($event)\"\r\n [updateCustomFieldValue]=\"handleCustomField\"\r\n [onSuccess]=\"onSuccess\"\r\n ></lib-action-form>\r\n }\r\n @default {\r\n <div class=\"flex-container\">\r\n @for (item of allowedActions; track $index) {\r\n <mobi-office-action-card\r\n [config]=\"item\"\r\n (executeAction)=\"handleActionExecution($event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap\";.mstate-angular *{font-family:Poppins,serif}.mstate-angular ::ng-deep small{color:red}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container:after{background-image:linear-gradient(to right,rgba(0,0,0,.42) 0%,rgba(0,0,0,.42) 33%,transparent 0%);background-size:4px 1px;background-repeat:repeat-x}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-arrow-wrapper .ng-arrow,.mstate-angular .ng-select.ng-select-disabled .ng-clear-wrapper{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:hover:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-value-container .ng-placeholder{display:none}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-arrow-wrapper .ng-arrow{color:#3f51b5}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-filtered .ng-select-container .ng-placeholder{display:initial}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-opened .ng-placeholder{display:none}.mstate-angular ::ng-deep .ng-select .ng-select-container{color:#000000de;align-items:center;min-height:45px;padding-bottom:3px;padding-inline:.5rem}.mstate-angular ::ng-deep .ng-select .ng-select-container:after{content:\"\";bottom:0;left:0;right:0;position:absolute;transition:border-color .3s cubic-bezier(.55,0,.55,.2)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline{padding:0 .5em;min-height:60px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:after{border:solid 1px rgba(0,0,0,.12);border-radius:5px;height:calc(100% - .5em);pointer-events:none;transition:border-color .3s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:hover:after{border-color:#000000de;border-width:2px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-placeholder{padding:0 .25em;background-color:#fff;z-index:1}.mstate-angular ::ng-deep .ng-select-container{border:1px solid #ced4da;border-radius:5px;padding-left:5px}.mstate-angular ::ng-deep .ng-input input{height:100%;font-size:14px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-value{padding-left:.25em}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container{align-items:stretch;padding:.4375em 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{position:absolute;color:#0000008a;transform-origin:left 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep [dir=rtl] .ng-select .ng-select-container .ng-value-container .ng-placeholder{transform-origin:right 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input{bottom:.4375em}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{bottom:17px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-clear-wrapper{bottom:14px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-arrow-wrapper{align-self:flex-end;bottom:9px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-clear-wrapper{align-self:flex-end;bottom:7px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-select-container .ng-value-container .ng-value{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:hover:after{background-image:none;border:dotted 1px rgba(0,0,0,.12)}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-arrow-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-clear-wrapper{border-top:none}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{top:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-clear-wrapper{top:4px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:#3f51b5;border-radius:2px;color:#fff;padding:2px .75em;margin:.4375em .4375em 5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin:0 0 .4375em .4375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:14px;font-weight:500}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{color:#ffffff8a;padding-right:5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{padding-left:5px;padding-right:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{color:#ffffffde}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{line-height:1.375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value{align-items:center}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-value-container{padding-bottom:0;padding-top:.1875em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-clear-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-arrow-wrapper{border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper{color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:hover{color:#000000de}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:focus{color:#000000de;outline:none}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper{bottom:2px}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper .ng-arrow{border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px;color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-spinner-zone{top:3px}.mstate-angular ::ng-deep .ng-dropdown-panel{background:#fff;left:0}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-top{bottom:calc(100% - .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-right{left:100%;top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f;margin-left:4px}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-bottom{top:100%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-left{left:calc(-100% - 4px);top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.selected{background:#fff}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-header{padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;cursor:pointer;line-height:3em;height:3em;padding:0 16px;color:#0000008a;font-weight:500}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{line-height:3em;min-height:3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 16px;text-decoration:none;position:relative;color:#000000de;text-align:left}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{text-align:right}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#0000000a;color:#000000de}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#00000061}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:32px}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:32px;padding-left:0}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-right:5px;font-size:80%;font-weight:400;color:#00000061}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}.mstate-angular .logo{width:70%;margin:auto;max-width:300px;margin-block:12px;display:flex}.mstate-angular .flex-container{display:flex;flex-wrap:wrap;gap:3rem;justify-content:center}.mstate-angular ::ng-deep .form-control{display:block;min-height:35px;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;outline:none;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mstate-angular ::ng-deep .form-group{padding-block:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ActionFormComponent, selector: "lib-action-form", inputs: ["token", "workflow", "config", "updateCustomFieldValue", "instanceID", "onSuccess"], outputs: ["onExecuteAction"] }, { kind: "component", type: ActionCardComponent, selector: "mobi-office-action-card", inputs: ["config"], outputs: ["executeAction"] }, { kind: "component", type: LoaderComponent, selector: "mobi-office-loader" }, { kind: "component", type: ErrorCardComponent, selector: "lib-error-card", inputs: ["errors"], outputs: ["retry"] }, { kind: "component", type: WorkflowEndCardComponent, selector: "lib-workflow-end-card" }] }); }
|
495
618
|
}
|
496
619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularComponent, decorators: [{
|
497
620
|
type: Component,
|
@@ -500,7 +623,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
500
623
|
ActionFormComponent,
|
501
624
|
ActionCardComponent,
|
502
625
|
LoaderComponent,
|
503
|
-
], providers: [MstateAngularHelper, MstateAngularService], template: "<div class=\"mstate-angular\">\n <img\n src=\"https://firebasestorage.googleapis.com/v0/b/mobioffice-dev.appspot.com/o/companies_logo%2Flogo.png?alt=media&token=e5f238f0-c373-4c76-9168-37fbe7da1de0\"\n alt=\"logo\"\n width=\"100%\"\n class=\"logo\" />\n\n @if (isLoading) {\n <mobi-office-loader></mobi-office-loader>\n } @else if (errorMessages.length) {\n @for (message of errorMessages; track message) {\n <p>\n {{ message }}\n </p>\n }\n } @else {\n @switch (allowedActions.length) {\n @case (0) {\n <h1>Workflow Ended</h1>\n }\n @case (1) {\n <lib-action-form\n [workflow]=\"workflow\"\n [token]=\"token\"\n [instanceID]=\"instanceID\"\n [config]=\"allowedActions[0]\"\n [onExecuteAction]=\"handleExecuteAction\"\n [updateCustomFieldValue]=\"handleCustomField\"\n [onSuccess]=\"onSuccess\"></lib-action-form>\n }\n @default {\n @for (item of allowedActions; track $index) {\n <mobi-office-action-card\n [error]=\"item\"\n (retryEmitter)=\"handleError($event)\"></mobi-office-action-card>\n }\n }\n }\n }\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap\";.mstate-angular *{font-family:Poppins,serif}.mstate-angular ::ng-deep .ng-select{padding-bottom:1.25em}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container:after{border-bottom-color:#0000;background-image:linear-gradient(to right,rgba(0,0,0,.42) 0%,rgba(0,0,0,.42) 33%,transparent 0%);background-size:4px 1px;background-repeat:repeat-x}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-arrow-wrapper .ng-arrow,.mstate-angular .ng-select.ng-select-disabled .ng-clear-wrapper{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:hover:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-value-container .ng-placeholder{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);color:#3f51b5}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-arrow-wrapper .ng-arrow{color:#3f51b5}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-filtered .ng-select-container .ng-placeholder{display:initial}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-opened .ng-placeholder{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px)}.mstate-angular ::ng-deep .ng-select .ng-select-container{color:#000000de;align-items:baseline;min-height:51.5px}.mstate-angular ::ng-deep .ng-select .ng-select-container:after{border-bottom:thin solid rgba(0,0,0,.42);content:\"\";bottom:0;left:0;right:0;position:absolute;transition:border-color .3s cubic-bezier(.55,0,.55,.2)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline{padding:0 .5em;min-height:60px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:after{border:solid 1px rgba(0,0,0,.12);border-radius:5px;height:calc(100% - .5em);pointer-events:none;transition:border-color .3s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:hover:after{border-color:#000000de;border-width:2px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-placeholder{padding:0 .25em;background-color:#fff;z-index:1}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-value{padding-left:.25em}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container{align-items:stretch;padding:.4375em 0;border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{position:absolute;color:#0000008a;transform-origin:left 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep [dir=rtl] .ng-select .ng-select-container .ng-value-container .ng-placeholder{transform-origin:right 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input{bottom:.4375em}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{bottom:17px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-clear-wrapper{bottom:14px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-arrow-wrapper{align-self:flex-end;bottom:9px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-clear-wrapper{align-self:flex-end;bottom:7px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-select-container .ng-value-container .ng-value{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:hover:after{background-image:none;border:dotted 1px rgba(0,0,0,.12)}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-arrow-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-clear-wrapper{border-top:none}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{top:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-clear-wrapper{top:4px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:#3f51b5;border-radius:2px;color:#fff;padding:2px 5px;margin:0 .4375em .4375em 0}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin:0 0 .4375em .4375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:14px;font-weight:500}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{color:#ffffff8a;padding-right:5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{padding-left:5px;padding-right:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{color:#ffffffde}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{line-height:1.375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value{align-items:center}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-value-container{padding-bottom:0;padding-top:.1875em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-clear-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-arrow-wrapper{border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper{color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:hover{color:#000000de}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:focus{color:#000000de;outline:none}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper{bottom:2px}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper .ng-arrow{border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px;color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-spinner-zone{top:3px}.mstate-angular ::ng-deep .ng-dropdown-panel{background:#fff;left:0}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-top{bottom:calc(100% - .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-right{left:100%;top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f;margin-left:4px}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-bottom{top:calc(100% - 1.25em);box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-left{left:calc(-100% - 4px);top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.selected{background:#fff}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;cursor:pointer;line-height:3em;height:3em;padding:0 16px;color:#0000008a;font-weight:500}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{line-height:3em;min-height:3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 16px;text-decoration:none;position:relative;color:#000000de;text-align:left}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{text-align:right}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#0000000a;color:#000000de}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#00000061}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:32px}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:32px;padding-left:0}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-right:5px;font-size:80%;font-weight:400;color:#00000061}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}.mstate-angular .logo{width:70%;margin:auto;max-width:300px;margin-block:12px}.mstate-angular .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mstate-angular .form-group{margin-bottom:1rem}\n"] }]
|
626
|
+
ErrorCardComponent,
|
627
|
+
WorkflowEndCardComponent,
|
628
|
+
], providers: [MstateAngularHelper, MstateAngularService], template: "<div class=\"mstate-angular\">\r\n <img\r\n src=\"https://firebasestorage.googleapis.com/v0/b/mobioffice-dev.appspot.com/o/companies_logo%2Flogo.png?alt=media&token=e5f238f0-c373-4c76-9168-37fbe7da1de0\"\r\n alt=\"logo\"\r\n width=\"100%\"\r\n class=\"logo\"\r\n />\r\n\r\n @if (isLoading) {\r\n <div class=\"flex-container\">\r\n <mobi-office-loader />\r\n </div>\r\n } @else if (errorMessages.length) {\r\n <lib-error-card [errors]=\"errorMessages\" (retry)=\"handleRetryAction()\" />\r\n } @else {\r\n @switch (allowedActions.length) {\r\n @case (0) {\r\n <lib-workflow-end-card />\r\n }\r\n @case (1) {\r\n <lib-action-form\r\n [workflow]=\"workflow\"\r\n [token]=\"token\"\r\n [instanceID]=\"instanceID\"\r\n [config]=\"allowedActions[0]\"\r\n (onExecuteAction)=\"handleExecuteAction($event)\"\r\n [updateCustomFieldValue]=\"handleCustomField\"\r\n [onSuccess]=\"onSuccess\"\r\n ></lib-action-form>\r\n }\r\n @default {\r\n <div class=\"flex-container\">\r\n @for (item of allowedActions; track $index) {\r\n <mobi-office-action-card\r\n [config]=\"item\"\r\n (executeAction)=\"handleActionExecution($event)\"\r\n />\r\n }\r\n </div>\r\n }\r\n }\r\n }\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap\";.mstate-angular *{font-family:Poppins,serif}.mstate-angular ::ng-deep small{color:red}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container:after{background-image:linear-gradient(to right,rgba(0,0,0,.42) 0%,rgba(0,0,0,.42) 33%,transparent 0%);background-size:4px 1px;background-repeat:repeat-x}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-disabled .ng-arrow-wrapper .ng-arrow,.mstate-angular .ng-select.ng-select-disabled .ng-clear-wrapper{color:#00000061}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-focused .ng-select-container.ng-appearance-outline:hover:after{border-color:#3f51b5;border-width:2px}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-value-container .ng-placeholder{display:none}.mstate-angular ::ng-deep .ng-select.ng-select-focused .ng-select-container .ng-arrow-wrapper .ng-arrow{color:#3f51b5}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-filtered .ng-select-container .ng-placeholder{display:initial}.mstate-angular ::ng-deep .ng-select .ng-has-value .ng-placeholder,.mstate-angular .ng-select.ng-select-opened .ng-placeholder{display:none}.mstate-angular ::ng-deep .ng-select .ng-select-container{color:#000000de;align-items:center;min-height:45px;padding-bottom:3px;padding-inline:.5rem}.mstate-angular ::ng-deep .ng-select .ng-select-container:after{content:\"\";bottom:0;left:0;right:0;position:absolute;transition:border-color .3s cubic-bezier(.55,0,.55,.2)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline{padding:0 .5em;min-height:60px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:after{border:solid 1px rgba(0,0,0,.12);border-radius:5px;height:calc(100% - .5em);pointer-events:none;transition:border-color .3s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline:hover:after{border-color:#000000de;border-width:2px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-placeholder{padding:0 .25em;background-color:#fff;z-index:1}.mstate-angular ::ng-deep .ng-select-container{border:1px solid #ced4da;border-radius:5px;padding-left:5px}.mstate-angular ::ng-deep .ng-input input{height:100%;font-size:14px}.mstate-angular ::ng-deep .ng-select .ng-select-container.ng-appearance-outline .ng-value{padding-left:.25em}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container{align-items:stretch;padding:.4375em 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{position:absolute;color:#0000008a;transform-origin:left 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1)}.mstate-angular ::ng-deep [dir=rtl] .ng-select .ng-select-container .ng-value-container .ng-placeholder{transform-origin:right 0}.mstate-angular ::ng-deep .ng-select .ng-select-container .ng-value-container .ng-input{bottom:.4375em}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{bottom:17px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container.ng-appearance-outline .ng-clear-wrapper{bottom:14px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-arrow-wrapper{align-self:flex-end;bottom:9px}.mstate-angular ::ng-deep .ng-select.ng-select-single .ng-select-container .ng-clear-wrapper{align-self:flex-end;bottom:7px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-select-container .ng-value-container .ng-value{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:after,.mstate-angular .ng-select.ng-select-multiple.ng-select-disabled .ng-appearance-outline:hover:after{background-image:none;border:dotted 1px rgba(0,0,0,.12)}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-arrow-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline.ng-has-value .ng-clear-wrapper{border-top:none}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-arrow-wrapper{top:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-appearance-outline .ng-clear-wrapper{top:4px}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:#3f51b5;border-radius:2px;color:#fff;padding:2px .75em;margin:.4375em .4375em 5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin:0 0 .4375em .4375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#0000001f;color:#00000042}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:14px;font-weight:500}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{color:#ffffff8a;padding-right:5px}.mstate-angular ::ng-deep [dir=rtl] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{padding-left:5px;padding-right:0}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{color:#ffffffde}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{line-height:1.375em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value{align-items:center}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-value-container{padding-bottom:0;padding-top:.1875em}.mstate-angular ::ng-deep .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-clear-wrapper,.mstate-angular .ng-select.ng-select-multiple .ng-select-container.ng-has-value .ng-arrow-wrapper{border-top:.84375em solid rgba(0,0,0,0)}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper{color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:hover{color:#000000de}.mstate-angular ::ng-deep .ng-select .ng-clear-wrapper:focus{color:#000000de;outline:none}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper{bottom:2px}.mstate-angular ::ng-deep .ng-select .ng-arrow-wrapper .ng-arrow{border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px;color:#0000008a}.mstate-angular ::ng-deep .ng-select .ng-spinner-zone{top:3px}.mstate-angular ::ng-deep .ng-dropdown-panel{background:#fff;left:0}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-top{bottom:calc(100% - .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-right{left:100%;top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f;margin-left:4px}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-bottom{top:100%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.ng-select-left{left:calc(-100% - 4px);top:calc(0% + .84375em);box-shadow:0 -5px 5px -3px #0003,0 -8px 10px 1px #00000024,0 -3px 14px 2px #0000001f}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.selected{background:#fff}.mstate-angular ::ng-deep .ng-dropdown-panel.multiple .ng-option.marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-header{padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid rgba(0,0,0,.12);padding:0 16px;line-height:3em;min-height:3em}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;user-select:none;cursor:pointer;line-height:3em;height:3em;padding:0 16px;color:#0000008a;font-weight:500}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background:#0000000a}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{line-height:3em;min-height:3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 16px;text-decoration:none;position:relative;color:#000000de;text-align:left}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{text-align:right}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#0000000a;color:#000000de}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background:#0000001f;color:#3f51b5}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#00000061}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:32px}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:32px;padding-left:0}.mstate-angular ::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-right:5px;font-size:80%;font-weight:400;color:#00000061}.mstate-angular ::ng-deep [dir=rtl] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}.mstate-angular .logo{width:70%;margin:auto;max-width:300px;margin-block:12px;display:flex}.mstate-angular .flex-container{display:flex;flex-wrap:wrap;gap:3rem;justify-content:center}.mstate-angular ::ng-deep .form-control{display:block;min-height:35px;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;outline:none;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mstate-angular ::ng-deep .form-group{padding-block:8px}\n"] }]
|
504
629
|
}], ctorParameters: () => [{ type: MstateAngularHelper }, { type: MstateAngularService }], propDecorators: { token: [{
|
505
630
|
type: Input,
|
506
631
|
args: [{ required: true }]
|
@@ -527,13 +652,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
527
652
|
|
528
653
|
class MstateAngularModule {
|
529
654
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
530
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, imports: [CommonModule, MstateAngularComponent], exports: [MstateAngularComponent] }); }
|
531
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, imports: [CommonModule, MstateAngularComponent] }); }
|
655
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, imports: [CommonModule, MstateAngularComponent, ReactiveFormsModule], exports: [MstateAngularComponent] }); }
|
656
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, imports: [CommonModule, MstateAngularComponent, ReactiveFormsModule] }); }
|
532
657
|
}
|
533
658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MstateAngularModule, decorators: [{
|
534
659
|
type: NgModule,
|
535
660
|
args: [{
|
536
|
-
imports: [CommonModule, MstateAngularComponent], // Import other necessary modules like CommonModule
|
661
|
+
imports: [CommonModule, MstateAngularComponent, ReactiveFormsModule], // Import other necessary modules like CommonModule
|
537
662
|
exports: [MstateAngularComponent], // Export the pipe so it can be used externally
|
538
663
|
}]
|
539
664
|
}] });
|