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.
Files changed (33) hide show
  1. package/esm2022/lib/action-form/action-form.component.mjs +85 -48
  2. package/esm2022/lib/common/constant.mjs +2 -2
  3. package/esm2022/lib/components/action-card/action-card.component.mjs +9 -8
  4. package/esm2022/lib/components/button/button.component.mjs +13 -5
  5. package/esm2022/lib/components/dropdown/dropdown.component.mjs +7 -4
  6. package/esm2022/lib/components/error-card/error-card.component.mjs +23 -0
  7. package/esm2022/lib/components/input-field/input-field.component.mjs +14 -7
  8. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  9. package/esm2022/lib/components/select/select.component.mjs +7 -4
  10. package/esm2022/lib/components/workflow-end-card/workflow-end-card.component.mjs +11 -0
  11. package/esm2022/lib/input-selector/input-selector.component.mjs +6 -3
  12. package/esm2022/lib/interfaces/interface.mjs +1 -1
  13. package/esm2022/lib/mstate-angular/mstate-angular.component.mjs +35 -21
  14. package/esm2022/lib/mstate-angular.helper.mjs +28 -1
  15. package/esm2022/lib/mstate-angular.module.mjs +5 -4
  16. package/esm2022/lib/mstate-angular.service.mjs +3 -3
  17. package/fesm2022/mstate-angular.mjs +220 -95
  18. package/fesm2022/mstate-angular.mjs.map +1 -1
  19. package/lib/action-form/action-form.component.d.ts +16 -9
  20. package/lib/common/constant.d.ts +2 -2
  21. package/lib/components/action-card/action-card.component.d.ts +4 -4
  22. package/lib/components/button/button.component.d.ts +3 -1
  23. package/lib/components/dropdown/dropdown.component.d.ts +6 -1
  24. package/lib/components/error-card/error-card.component.d.ts +9 -0
  25. package/lib/components/input-field/input-field.component.d.ts +9 -1
  26. package/lib/components/select/select.component.d.ts +6 -1
  27. package/lib/components/workflow-end-card/workflow-end-card.component.d.ts +5 -0
  28. package/lib/input-selector/input-selector.component.d.ts +6 -1
  29. package/lib/interfaces/interface.d.ts +1 -1
  30. package/lib/mstate-angular/mstate-angular.component.d.ts +7 -3
  31. package/lib/mstate-angular.helper.d.ts +7 -0
  32. package/lib/mstate-angular.module.d.ts +2 -1
  33. 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 { FormsModule } from '@angular/forms';
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 { data } = await axios(request);
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputFieldComponent, isStandalone: true, selector: "mobi-office-input-field", inputs: { config: "config", mstateModel: "mstateModel" }, ngImport: i0, template: "<div class=\"form-group\">\n <label>{{ config.label }}</label>\n <input\n [type]=\"config.inputType\"\n [name]=\"config.field.keyForAPI\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n class=\"form-control\" />\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
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, FormsModule], template: "<div class=\"form-group\">\n <label>{{ config.label }}</label>\n <input\n [type]=\"config.inputType\"\n [name]=\"config.field.keyForAPI\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n class=\"form-control\" />\n</div>\n" }]
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: "14.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\">\n <ng-select\n [items]=\"list\"\n [multiple]=\"config.field.placeholder\"\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n >\n </ng-select>\n</div>\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: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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 }] }); }
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: [FormsModule, NgSelectModule, CommonModule], providers: [MstateAngularService], template: "<div class=\"form-group\">\n <ng-select\n [items]=\"list\"\n [multiple]=\"config.field.placeholder\"\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n >\n </ng-select>\n</div>\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"] }]
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: "14.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\">\n <ng-select\n [items]=\"list\"\n [multiple]=\"config.field.placeholder\"\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n >\n </ng-select>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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 }] }); }
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: [FormsModule, NgSelectModule, CommonModule], providers: [MstateAngularService], template: "<div class=\"form-group\">\n <ng-select\n [items]=\"list\"\n [multiple]=\"config.field.placeholder\"\n [bindLabel]=\"this.config.field.mapper?.label ?? 'label'\"\n [placeholder]=\"config.field.placeholder\"\n [(ngModel)]=\"mstateModel[config.field.keyForAPI]\"\n >\n </ng-select>\n</div>\n" }]
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) {\n @case (FieldType.INPUT_FIELD) {\n <mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n @case (FieldType.TEXT_AREA) {\n <mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @case (FieldType.DROP_DOWN) {\n <mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n @case (FieldType.RADIO_LIST) {\n <mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @case (FieldType.CHECKBOX) {\n <mobi-office-select [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @default {\n <p>Step Left to handle</p>\n }\n}\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"] }] }); }
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) {\n @case (FieldType.INPUT_FIELD) {\n <mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n @case (FieldType.TEXT_AREA) {\n <mobi-office-input-field [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @case (FieldType.DROP_DOWN) {\n <mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n @case (FieldType.RADIO_LIST) {\n <mobi-office-dropdown [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @case (FieldType.CHECKBOX) {\n <mobi-office-select [config]=\"config\" [mstateModel]=\"mstateModel\" />\n }\n\n @default {\n <p>Step Left to handle</p>\n }\n}\n" }]
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, mstateAngularHelper) {
326
+ constructor(fb, mstateAngularService, mstateHelper) {
327
+ this.fb = fb;
269
328
  this.mstateAngularService = mstateAngularService;
270
- this.mstateAngularHelper = mstateAngularHelper;
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
- //#region Custom Declaration
280
- this.isLoading = true;
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.mstateModel[step?.context?.as] = this.updateCustomFieldValue(step?.context?.key);
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.mstateModel[step?.context?.as] = step?.context?.value;
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.isLoading = true;
320
- console.log(this.mstateModel);
321
- // this.mstateAngularService
322
- // .executeAction({
323
- // action: {
324
- // name: this.config.name,
325
- // payload: this.mstateModel,
326
- // },
327
- // token: this.token,
328
- // workflow: this.workflow,
329
- // })
330
- // .pipe(
331
- // catchError(e => {
332
- // throw e;
333
- // }),
334
- // finalize(() => {
335
- // this.isLoading = false;
336
- // })
337
- // )
338
- // .subscribe(data => {
339
- // this.onExecuteAction(data.data);
340
- // });
341
- }
342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionFormComponent, deps: [{ token: MstateAngularService }, { token: MstateAngularHelper }], target: i0.ɵɵFactoryTarget.Component }); }
343
- 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", onExecuteAction: "onExecuteAction", updateCustomFieldValue: "updateCustomFieldValue", instanceID: "instanceID", onSuccess: "onSuccess" }, providers: [MstateAngularService, MstateAngularHelper], usesOnChanges: true, ngImport: i0, template: "<div>\r\n <h4>{{ config.meta?.title ?? config.name }}</h4>\r\n\r\n <form #userForm=\"ngForm\">\r\n @for (step of config.steps; track $index) {\r\n <mobi-office-input-selector [step]=\"step\" [mstateModel]=\"mstateModel\" />\r\n }\r\n </form>\r\n\r\n <mobi-office-button (click)=\"handleExecuteAction()\"\r\n >Submit</mobi-office-button\r\n >\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: InputSelectorComponent, selector: "mobi-office-input-selector", inputs: ["step", "mstateModel"] }, { kind: "component", type: ButtonComponent, selector: "mobi-office-button" }] }); }
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: [FormsModule, InputSelectorComponent, ButtonComponent], providers: [MstateAngularService, MstateAngularHelper], template: "<div>\r\n <h4>{{ config.meta?.title ?? config.name }}</h4>\r\n\r\n <form #userForm=\"ngForm\">\r\n @for (step of config.steps; track $index) {\r\n <mobi-office-input-selector [step]=\"step\" [mstateModel]=\"mstateModel\" />\r\n }\r\n </form>\r\n\r\n <mobi-office-button (click)=\"handleExecuteAction()\"\r\n >Submit</mobi-office-button\r\n >\r\n</div>\r\n" }]
348
- }], ctorParameters: () => [{ type: MstateAngularService }, { type: MstateAngularHelper }], propDecorators: { token: [{
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: Input,
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.retryEmitter = new EventEmitter();
463
+ this.executeAction = new EventEmitter();
371
464
  }
372
- handleRetry() {
373
- this.retryEmitter.emit(this.error);
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: { error: "error" }, outputs: { retryEmitter: "retryEmitter" }, ngImport: i0, template: "<p>action-card works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
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>action-card works!</p>\n" }]
381
- }], propDecorators: { error: [{
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
- }], retryEmitter: [{
477
+ }], executeAction: [{
385
478
  type: Output
386
479
  }] } });
387
480
 
388
- class LoaderComponent {
389
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
390
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoaderComponent, isStandalone: true, selector: "mobi-office-loader", ngImport: i0, template: "<p>Loading...</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
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: LoaderComponent, decorators: [{
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: 'mobi-office-loader', standalone: true, imports: [CommonModule], template: "<p>Loading...</p>\n" }]
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
- console.log(err);
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
- console.log(err);
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(value, errors) {
575
+ handleExecuteAction(response) {
576
+ const { value, errors = [] } = response;
471
577
  if (errors?.length) {
472
- this.errors = errors;
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
- handleError(config) {
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
  }] });