@wemake4u/form-player-se 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +17 -0
  2. package/esm2022/lib/controls/accordion.mjs +7 -0
  3. package/esm2022/lib/controls/button.mjs +7 -0
  4. package/esm2022/lib/controls/checkbox.mjs +7 -0
  5. package/esm2022/lib/controls/checklist.mjs +7 -0
  6. package/esm2022/lib/controls/chipchecklist.mjs +7 -0
  7. package/esm2022/lib/controls/chipradio.mjs +7 -0
  8. package/esm2022/lib/controls/control.mjs +65 -0
  9. package/esm2022/lib/controls/date.mjs +7 -0
  10. package/esm2022/lib/controls/dynamiclist.mjs +4 -0
  11. package/esm2022/lib/controls/factory.mjs +106 -0
  12. package/esm2022/lib/controls/filepicker.mjs +7 -0
  13. package/esm2022/lib/controls/form.mjs +4 -0
  14. package/esm2022/lib/controls/group.mjs +4 -0
  15. package/esm2022/lib/controls/html.mjs +4 -0
  16. package/esm2022/lib/controls/iframe.mjs +4 -0
  17. package/esm2022/lib/controls/image.mjs +4 -0
  18. package/esm2022/lib/controls/number.mjs +7 -0
  19. package/esm2022/lib/controls/radio.mjs +7 -0
  20. package/esm2022/lib/controls/select.mjs +7 -0
  21. package/esm2022/lib/controls/separator.mjs +4 -0
  22. package/esm2022/lib/controls/spacer.mjs +4 -0
  23. package/esm2022/lib/controls/tab.mjs +7 -0
  24. package/esm2022/lib/controls/table.mjs +13 -0
  25. package/esm2022/lib/controls/taglist.mjs +7 -0
  26. package/esm2022/lib/controls/text.mjs +4 -0
  27. package/esm2022/lib/controls/textarea.mjs +7 -0
  28. package/esm2022/lib/controls/textfield.mjs +18 -0
  29. package/esm2022/lib/controls/time.mjs +7 -0
  30. package/esm2022/lib/controls/toggle.mjs +7 -0
  31. package/esm2022/lib/dataSources/interfaces.mjs +2 -0
  32. package/esm2022/lib/dataSources/odata.mjs +131 -0
  33. package/esm2022/lib/dataSources/rest.mjs +48 -0
  34. package/esm2022/lib/directives/accordion.directive.mjs +52 -0
  35. package/esm2022/lib/directives/adorner.directive.mjs +130 -0
  36. package/esm2022/lib/directives/disable.directive.mjs +38 -0
  37. package/esm2022/lib/directives/display.directive.mjs +46 -0
  38. package/esm2022/lib/directives/dropdown.directive.mjs +233 -0
  39. package/esm2022/lib/directives/frame-security.directive.mjs +66 -0
  40. package/esm2022/lib/directives/grid.directive.mjs +68 -0
  41. package/esm2022/lib/directives/register.directive.mjs +86 -0
  42. package/esm2022/lib/directives/repeat.directive.mjs +38 -0
  43. package/esm2022/lib/directives/tab.directive.mjs +49 -0
  44. package/esm2022/lib/directives/updateblur.directive.mjs +32 -0
  45. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +493 -0
  46. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +395 -0
  47. package/esm2022/lib/locale/locale-it.mjs +13 -0
  48. package/esm2022/lib/services/data.service.mjs +29 -0
  49. package/esm2022/lib/services/event.service.mjs +19 -0
  50. package/esm2022/lib/services/feel.service.mjs +73 -0
  51. package/esm2022/lib/services/formatter.service.mjs +60 -0
  52. package/esm2022/lib/services/markdown.service.mjs +24 -0
  53. package/esm2022/lib/services/mime.service.mjs +32 -0
  54. package/esm2022/lib/services/programmability.service.mjs +221 -0
  55. package/esm2022/lib/services/proxy.service.mjs +131 -0
  56. package/esm2022/lib/services/register.service.mjs +60 -0
  57. package/esm2022/lib/services/sanitize.service.mjs +38 -0
  58. package/esm2022/lib/services/scope.service.mjs +46 -0
  59. package/esm2022/lib/services/toast.service.mjs +37 -0
  60. package/esm2022/lib/services/weak.service.mjs +60 -0
  61. package/esm2022/lib/utils/extractFiles.mjs +30 -0
  62. package/esm2022/lib/utils/gridCells.mjs +49 -0
  63. package/esm2022/lib/utils/groupByRow.mjs +30 -0
  64. package/esm2022/lib/utils/patchForm.mjs +55 -0
  65. package/esm2022/lib/utils/toFormData.mjs +11 -0
  66. package/esm2022/public-api.mjs +8 -0
  67. package/esm2022/wemake4u-form-player-se.mjs +5 -0
  68. package/fesm2022/wemake4u-form-player-se.mjs +3101 -0
  69. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -0
  70. package/index.d.ts +5 -0
  71. package/lib/controls/accordion.d.ts +4 -0
  72. package/lib/controls/button.d.ts +4 -0
  73. package/lib/controls/checkbox.d.ts +4 -0
  74. package/lib/controls/checklist.d.ts +4 -0
  75. package/lib/controls/chipchecklist.d.ts +4 -0
  76. package/lib/controls/chipradio.d.ts +4 -0
  77. package/lib/controls/control.d.ts +24 -0
  78. package/lib/controls/date.d.ts +4 -0
  79. package/lib/controls/dynamiclist.d.ts +3 -0
  80. package/lib/controls/factory.d.ts +4 -0
  81. package/lib/controls/filepicker.d.ts +4 -0
  82. package/lib/controls/form.d.ts +3 -0
  83. package/lib/controls/group.d.ts +3 -0
  84. package/lib/controls/html.d.ts +3 -0
  85. package/lib/controls/iframe.d.ts +3 -0
  86. package/lib/controls/image.d.ts +3 -0
  87. package/lib/controls/number.d.ts +4 -0
  88. package/lib/controls/radio.d.ts +4 -0
  89. package/lib/controls/select.d.ts +4 -0
  90. package/lib/controls/separator.d.ts +3 -0
  91. package/lib/controls/spacer.d.ts +3 -0
  92. package/lib/controls/tab.d.ts +4 -0
  93. package/lib/controls/table.d.ts +6 -0
  94. package/lib/controls/taglist.d.ts +4 -0
  95. package/lib/controls/text.d.ts +3 -0
  96. package/lib/controls/textarea.d.ts +4 -0
  97. package/lib/controls/textfield.d.ts +6 -0
  98. package/lib/controls/time.d.ts +4 -0
  99. package/lib/controls/toggle.d.ts +4 -0
  100. package/lib/dataSources/interfaces.d.ts +8 -0
  101. package/lib/dataSources/odata.d.ts +16 -0
  102. package/lib/dataSources/rest.d.ts +16 -0
  103. package/lib/directives/accordion.directive.d.ts +11 -0
  104. package/lib/directives/adorner.directive.d.ts +22 -0
  105. package/lib/directives/disable.directive.d.ts +12 -0
  106. package/lib/directives/display.directive.d.ts +12 -0
  107. package/lib/directives/dropdown.directive.d.ts +26 -0
  108. package/lib/directives/frame-security.directive.d.ts +14 -0
  109. package/lib/directives/grid.directive.d.ts +17 -0
  110. package/lib/directives/register.directive.d.ts +24 -0
  111. package/lib/directives/repeat.directive.d.ts +12 -0
  112. package/lib/directives/tab.directive.d.ts +11 -0
  113. package/lib/directives/updateblur.directive.d.ts +10 -0
  114. package/lib/dynamic-fields/dynamic-fields.component.d.ts +84 -0
  115. package/lib/dynamic-form/dynamic-form.component.d.ts +76 -0
  116. package/lib/locale/locale-it.d.ts +12 -0
  117. package/lib/services/data.service.d.ts +15 -0
  118. package/lib/services/event.service.d.ts +15 -0
  119. package/lib/services/feel.service.d.ts +10 -0
  120. package/lib/services/formatter.service.d.ts +10 -0
  121. package/lib/services/markdown.service.d.ts +7 -0
  122. package/lib/services/mime.service.d.ts +8 -0
  123. package/lib/services/programmability.service.d.ts +39 -0
  124. package/lib/services/proxy.service.d.ts +31 -0
  125. package/lib/services/register.service.d.ts +18 -0
  126. package/lib/services/sanitize.service.d.ts +12 -0
  127. package/lib/services/scope.service.d.ts +13 -0
  128. package/lib/services/toast.service.d.ts +13 -0
  129. package/lib/services/weak.service.d.ts +10 -0
  130. package/lib/utils/extractFiles.d.ts +4 -0
  131. package/lib/utils/gridCells.d.ts +19 -0
  132. package/lib/utils/groupByRow.d.ts +38 -0
  133. package/lib/utils/patchForm.d.ts +8 -0
  134. package/lib/utils/toFormData.d.ts +1 -0
  135. package/package.json +42 -0
  136. package/public-api.d.ts +4 -0
@@ -0,0 +1,3101 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Optional, SkipSelf, Directive, Input, Host, ContentChild, ContentChildren, Component, ViewEncapsulation, EventEmitter, Output } from '@angular/core';
3
+ import * as i9 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i1$1 from '@angular/forms';
6
+ import { FormArray, FormControl as FormControl$1, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
7
+ import { isObservable, of, Subject, takeUntil } from 'rxjs';
8
+ import { evaluate } from 'feelers';
9
+ import { evaluate as evaluate$1, unaryTest, parseExpression } from 'feelin';
10
+ import { shareReplay, takeUntil as takeUntil$1, map } from 'rxjs/operators';
11
+ import * as i1 from 'ngx-sirio-lib';
12
+ import { SirioInputComponent, SirioValidationDirective, SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent, SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent, SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent, SirioButtonComponent, SirioFileUploadComponent, SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent, SirioTableModule, SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent, SirioNotifyComponent, SirioNotifyBodyComponent, SirioTableComponent, SirioPaginatorComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent, SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent } from 'ngx-sirio-lib';
13
+ import { Datepicker } from 'vanillajs-datepicker';
14
+ import * as i1$2 from 'ag-grid-angular';
15
+ import { AgGridAngular } from 'ag-grid-angular';
16
+ import { ClientSideRowModelModule, InfiniteRowModelModule, PaginationModule, LocaleModule, CellStyleModule, ClientSideRowModelApiModule, TextFilterModule, NumberFilterModule, DateFilterModule, themeQuartz, iconSetAlpine } from 'ag-grid-community';
17
+ import { AG_GRID_LOCALE_IT } from '@ag-grid-community/locale';
18
+ import sanitizeHtml from 'sanitize-html';
19
+ import * as i1$3 from '@angular/platform-browser';
20
+ import { marked } from 'marked';
21
+ import mimeDb from 'mime-db';
22
+ import * as i1$4 from '@angular/common/http';
23
+ import { HttpParams } from '@angular/common/http';
24
+
25
+ const IS_PROXY = Symbol("__isProxy$");
26
+ class ProxyService {
27
+ constructor() { }
28
+ getProxy(instance, options = null) {
29
+ return this.createProxy(instance, true, options);
30
+ }
31
+ createProxy(instance, root, options = null) {
32
+ if (!instance) {
33
+ return instance;
34
+ }
35
+ return new Proxy(instance, {
36
+ get: (target, property) => {
37
+ if (property === IS_PROXY) {
38
+ return true;
39
+ }
40
+ let value = undefined;
41
+ if (root && options && options.extend && property in options.extend) {
42
+ value = Reflect.get(options.extend, property, target);
43
+ }
44
+ else if (options && options.isCustom && options.getCustom && options.isCustom(target, property, root)) {
45
+ value = options.getCustom(target, property, root);
46
+ }
47
+ else if (property in target) {
48
+ value = Reflect.get(target, property, target);
49
+ }
50
+ if (options?.log) {
51
+ console.log(target, property, value);
52
+ }
53
+ if (this.isProxy(value))
54
+ return value;
55
+ if (typeof value === 'function') {
56
+ return this.createFunction(value, target);
57
+ }
58
+ else if (typeof value === 'object' && value !== null) {
59
+ return this.createProxy(value, false, options);
60
+ }
61
+ return value;
62
+ },
63
+ set: (target, property, value) => {
64
+ if (options && options.canSet && !options.canSet(target, property, root)) {
65
+ return false;
66
+ }
67
+ else {
68
+ return Reflect.set(target, property, value, target);
69
+ }
70
+ },
71
+ deleteProperty: (target, property) => {
72
+ if (options && options.canDelete && !options.canDelete(target, property, root)) {
73
+ return false;
74
+ }
75
+ else if (property in target) {
76
+ return delete target[property];
77
+ }
78
+ else {
79
+ return false;
80
+ }
81
+ },
82
+ has: (target, property) => {
83
+ if (root && options && options.extend && property in options.extend) {
84
+ return true;
85
+ }
86
+ else if (options && options.isCustom && options.isCustom(target, property, root)) {
87
+ return true;
88
+ }
89
+ else if (property in target) {
90
+ return true;
91
+ }
92
+ else {
93
+ return false;
94
+ }
95
+ }
96
+ });
97
+ }
98
+ createFunction(fn, target) {
99
+ return (...args) => {
100
+ return fn.bind(target)(...args);
101
+ };
102
+ }
103
+ isProxy(obj) {
104
+ return obj && obj[IS_PROXY] === true;
105
+ }
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
107
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, providedIn: 'root' });
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProxyService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root'
113
+ }]
114
+ }], ctorParameters: () => [] });
115
+ class ProxyOptions {
116
+ _canDelete = () => true;
117
+ _canSet = () => true;
118
+ _isCustom = () => false;
119
+ _getCustom = () => undefined;
120
+ _extend = () => undefined;
121
+ set extend(fn) {
122
+ this._extend = fn;
123
+ }
124
+ get extend() {
125
+ return this._extend;
126
+ }
127
+ set canDelete(fn) {
128
+ this._canDelete = fn;
129
+ }
130
+ get canDelete() {
131
+ return this._canDelete;
132
+ }
133
+ set canSet(fn) {
134
+ this._canSet = fn;
135
+ }
136
+ get canSet() {
137
+ return this._canSet;
138
+ }
139
+ set isCustom(fn) {
140
+ this._isCustom = fn;
141
+ }
142
+ get isCustom() {
143
+ return this._isCustom;
144
+ }
145
+ set getCustom(fn) {
146
+ this._getCustom = fn;
147
+ }
148
+ get getCustom() {
149
+ return this._getCustom;
150
+ }
151
+ log = false;
152
+ }
153
+
154
+ class FeelService {
155
+ constructor() { }
156
+ evalTemplate(template, context = {}) {
157
+ return evaluate(template, context);
158
+ }
159
+ ;
160
+ evalExpression(expression, context = {}) {
161
+ return evaluate$1(expression, context);
162
+ }
163
+ ;
164
+ evalUnaryTest(expression, context = {}, input = null) {
165
+ try {
166
+ context['?'] = input;
167
+ return unaryTest(expression, context);
168
+ }
169
+ finally {
170
+ delete context['?'];
171
+ }
172
+ }
173
+ ;
174
+ getDependencies(expression, context = {}) {
175
+ const dependencies = [];
176
+ const uniqueSet = new Set();
177
+ const addSet = (text) => {
178
+ if (uniqueSet.has(text)) {
179
+ return false;
180
+ }
181
+ else {
182
+ uniqueSet.add(text);
183
+ return true;
184
+ }
185
+ };
186
+ parseExpression(expression, context).iterate({
187
+ enter: (node) => {
188
+ if (node.name === 'VariableName') {
189
+ const text = expression.substring(node.from, node.to);
190
+ if (addSet(text)) {
191
+ dependencies.push(text);
192
+ }
193
+ }
194
+ else if (node.name === 'PathExpression') {
195
+ const text = expression.substring(node.from, node.to);
196
+ if (addSet(text)) {
197
+ const path = [];
198
+ node.iterate((subnode) => {
199
+ if (subnode.name === 'VariableName') {
200
+ const part = expression.substring(subnode.from, subnode.to);
201
+ path.push(part);
202
+ }
203
+ });
204
+ dependencies.push(path);
205
+ }
206
+ return false;
207
+ }
208
+ return true;
209
+ }
210
+ });
211
+ return dependencies;
212
+ }
213
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
214
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeelService, providedIn: 'root' });
215
+ }
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeelService, decorators: [{
217
+ type: Injectable,
218
+ args: [{
219
+ providedIn: 'root'
220
+ }]
221
+ }], ctorParameters: () => [] });
222
+
223
+ class WeakService {
224
+ constructor() { }
225
+ cache = new WeakMap();
226
+ exists(source, key) {
227
+ if (this.cache.has(source)) {
228
+ const cachedObject = this.cache.get(source);
229
+ return (key in cachedObject);
230
+ }
231
+ return false;
232
+ }
233
+ call(source, key, func, reusable = null, store = null) {
234
+ if (!this.cache.has(source)) {
235
+ this.cache.set(source, {});
236
+ }
237
+ const cachedObject = this.cache.get(source);
238
+ if (key in cachedObject
239
+ && (reusable == null
240
+ || reusable(cachedObject[key]))) {
241
+ return cachedObject[key];
242
+ }
243
+ let result = func();
244
+ if (store != null) {
245
+ result = store(result);
246
+ }
247
+ const observable = isObservable(result);
248
+ if (observable) {
249
+ result = result.pipe(shareReplay(1));
250
+ const subscription = result
251
+ .subscribe({
252
+ next: (result) => {
253
+ subscription.unsubscribe();
254
+ cachedObject[key] = of(result);
255
+ },
256
+ error: (error) => console.error(error),
257
+ complete: () => console.log('Observable complete')
258
+ });
259
+ }
260
+ cachedObject[key] = result;
261
+ return result;
262
+ }
263
+ invalidate(source, key) {
264
+ if (this.cache.has(source)) {
265
+ const cachedObject = this.cache.get(source);
266
+ delete cachedObject[key];
267
+ }
268
+ }
269
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WeakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
270
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WeakService, providedIn: 'root' });
271
+ }
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WeakService, decorators: [{
273
+ type: Injectable,
274
+ args: [{
275
+ providedIn: 'root'
276
+ }]
277
+ }], ctorParameters: () => [] });
278
+
279
+ class ToastService {
280
+ sirioToast;
281
+ constructor(sirioToast) {
282
+ this.sirioToast = sirioToast;
283
+ }
284
+ notifyInfo(message, delay = 2000) {
285
+ this.notify(message, "info", delay);
286
+ }
287
+ notifySuccess(message, delay = 2000) {
288
+ this.notify(message, "success", delay);
289
+ }
290
+ notifyWarning(message, delay = 2000) {
291
+ this.notify(message, "warning", delay);
292
+ }
293
+ notifyError(message, delay = 2000) {
294
+ this.notify(message, "danger", delay);
295
+ }
296
+ notify(message, type, delay = 2000) {
297
+ this.sirioToast.openToast({
298
+ delay: delay,
299
+ text: message,
300
+ type: type
301
+ });
302
+ }
303
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastService, deps: [{ token: i1.SirioToastService }], target: i0.ɵɵFactoryTarget.Injectable });
304
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastService, providedIn: 'root' });
305
+ }
306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastService, decorators: [{
307
+ type: Injectable,
308
+ args: [{
309
+ providedIn: 'root'
310
+ }]
311
+ }], ctorParameters: () => [{ type: i1.SirioToastService }] });
312
+
313
+ class RegisterService {
314
+ proxyService;
315
+ parent;
316
+ constructor(proxyService, parent) {
317
+ this.proxyService = proxyService;
318
+ this.parent = parent;
319
+ }
320
+ controls = {};
321
+ register(name, control) {
322
+ this.controls[name] = control;
323
+ }
324
+ unregister(name) {
325
+ delete this.controls[name];
326
+ }
327
+ unregisterAll() {
328
+ this.controls = {};
329
+ }
330
+ getControl(name) {
331
+ return this.controls[name];
332
+ }
333
+ getControls() {
334
+ return Object.values(this.controls);
335
+ }
336
+ proxy() {
337
+ const parentName = "parent";
338
+ const options = new ProxyOptions();
339
+ options.isCustom = (target, property, root) => {
340
+ return root || (property === parentName);
341
+ };
342
+ options.getCustom = (target, property, root) => {
343
+ if (property === parentName) {
344
+ return this.parent?.proxy();
345
+ }
346
+ return this.resolve(property.toString());
347
+ };
348
+ options.canDelete = () => false;
349
+ options.canSet = () => false;
350
+ return this.proxyService.getProxy(this.controls, options);
351
+ }
352
+ resolve(name) {
353
+ const result = this.controls[name];
354
+ if (result)
355
+ return result;
356
+ return this.parent?.resolve(name);
357
+ }
358
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterService, deps: [{ token: ProxyService }, { token: RegisterService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
359
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterService });
360
+ }
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterService, decorators: [{
362
+ type: Injectable
363
+ }], ctorParameters: () => [{ type: ProxyService }, { type: RegisterService, decorators: [{
364
+ type: Optional
365
+ }, {
366
+ type: SkipSelf
367
+ }] }] });
368
+
369
+ class ScopeService {
370
+ proxyService;
371
+ parent;
372
+ constructor(proxyService, parent) {
373
+ this.proxyService = proxyService;
374
+ this.parent = parent;
375
+ }
376
+ scope = null;
377
+ set(scope) {
378
+ this.scope = scope;
379
+ }
380
+ get() {
381
+ return this.scope;
382
+ }
383
+ proxy() {
384
+ const parentName = "parent";
385
+ const options = new ProxyOptions();
386
+ options.isCustom = (target, property, root) => {
387
+ return root && (property === parentName);
388
+ };
389
+ options.getCustom = (target, property, root) => {
390
+ return this.parent?.proxy();
391
+ };
392
+ options.canDelete = (target, property, root) => {
393
+ return !(root && property === parentName);
394
+ };
395
+ options.canSet = (target, property, root) => {
396
+ return !(root && property === parentName);
397
+ };
398
+ return this.proxyService.getProxy(this.scope ?? {}, options);
399
+ }
400
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScopeService, deps: [{ token: ProxyService }, { token: ScopeService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
401
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScopeService });
402
+ }
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScopeService, decorators: [{
404
+ type: Injectable
405
+ }], ctorParameters: () => [{ type: ProxyService }, { type: ScopeService, decorators: [{
406
+ type: Optional
407
+ }, {
408
+ type: SkipSelf
409
+ }] }] });
410
+
411
+ class ProgrammabilityService {
412
+ feelService;
413
+ weakService;
414
+ proxyService;
415
+ toastService;
416
+ register;
417
+ scope;
418
+ constructor(feelService, weakService, proxyService, toastService, register, scope) {
419
+ this.feelService = feelService;
420
+ this.weakService = weakService;
421
+ this.proxyService = proxyService;
422
+ this.toastService = toastService;
423
+ this.register = register;
424
+ this.scope = scope;
425
+ }
426
+ destroy$ = new Subject();
427
+ ngOnDestroy() {
428
+ this.destroy$.next();
429
+ this.destroy$.complete();
430
+ }
431
+ isExpression(text) {
432
+ return text != null && text.startsWith("=");
433
+ }
434
+ ;
435
+ getExpression(text) {
436
+ if (this.isExpression(text))
437
+ return text.substring(1);
438
+ return "";
439
+ }
440
+ ;
441
+ evaluateString(formGroup, value) {
442
+ if (this.isExpression(value)) {
443
+ return this.evalExpression(formGroup, this.getExpression(value));
444
+ }
445
+ return value ?? "";
446
+ }
447
+ evaluateBoolean(formGroup, value) {
448
+ if (typeof value === 'boolean') {
449
+ return value;
450
+ }
451
+ else if (typeof value === 'string') {
452
+ const strValue = value;
453
+ if (this.isExpression(strValue)) {
454
+ return this.evalExpression(formGroup, this.getExpression(strValue));
455
+ }
456
+ }
457
+ return null;
458
+ }
459
+ evaluateNumber(formGroup, value) {
460
+ if (typeof value === 'number') {
461
+ return value;
462
+ }
463
+ else if (typeof value === 'string') {
464
+ const strValue = value;
465
+ if (this.isExpression(strValue)) {
466
+ return this.evalExpression(formGroup, this.getExpression(strValue));
467
+ }
468
+ }
469
+ return null;
470
+ }
471
+ evaluate(formGroup, value, cacheable = this.cacheable) {
472
+ if (this.isExpression(value)) {
473
+ return this.evalExpression(formGroup, this.getExpression(value), cacheable);
474
+ }
475
+ return null;
476
+ }
477
+ evaluateTemplate(formGroup, value) {
478
+ let template = null;
479
+ if (this.isExpression(value)) {
480
+ template = this.evalExpression(formGroup, this.getExpression(value));
481
+ }
482
+ else {
483
+ template = value;
484
+ }
485
+ return this.evalTemplate(formGroup, template ?? "");
486
+ }
487
+ evaluateUnary(formGroup, value, input) {
488
+ if (this.isExpression(value)) {
489
+ return this.evalUnaryTest(formGroup, this.getExpression(value), input);
490
+ }
491
+ return null;
492
+ }
493
+ cacheable = true;
494
+ evalUnaryTest(formGroup, expression, input) {
495
+ try {
496
+ return this.feelService.evalUnaryTest(expression, this.getContext(formGroup), input);
497
+ }
498
+ catch (e) {
499
+ return null;
500
+ }
501
+ }
502
+ evalExpression(formGroup, expression, cacheable = this.cacheable) {
503
+ const evaluate = () => {
504
+ try {
505
+ return this.feelService.evalExpression(expression, this.getContext(formGroup));
506
+ }
507
+ catch (e) {
508
+ console.log(expression, e);
509
+ return null;
510
+ }
511
+ };
512
+ if (cacheable) {
513
+ const watchKey = `:watch(${expression})`;
514
+ this.weakService.call(formGroup, watchKey, () => {
515
+ this.watchExpression(formGroup, expression, () => this.weakService.invalidate(formGroup, expression));
516
+ return true;
517
+ });
518
+ return this.weakService.call(formGroup, expression, evaluate);
519
+ }
520
+ else {
521
+ return evaluate();
522
+ }
523
+ }
524
+ evalTemplate(formGroup, expression) {
525
+ try {
526
+ return this.feelService.evalTemplate(expression, this.getContext(formGroup));
527
+ }
528
+ catch (e) {
529
+ return null;
530
+ }
531
+ }
532
+ createProxy(formGroup) {
533
+ if (!formGroup) {
534
+ return null;
535
+ }
536
+ const options = new ProxyOptions();
537
+ options.extend = {
538
+ parent: this.getParent(formGroup),
539
+ getFormGroup: () => this.proxyService.getProxy(formGroup),
540
+ getScope: () => this.scope ? this.scope.proxy() : null,
541
+ controls: () => this.register ? this.register.proxy() : null,
542
+ notifyInfo: (message, delay) => this.toastService.notifyInfo(message, delay),
543
+ notifySuccess: (message, delay) => this.toastService.notifySuccess(message, delay),
544
+ notifyWarning: (message, delay) => this.toastService.notifyWarning(message, delay),
545
+ notifyError: (message, delay) => this.toastService.notifyError(message, delay)
546
+ };
547
+ return this.proxyService.getProxy(formGroup.value, options);
548
+ }
549
+ getParent(formGroup) {
550
+ let parent = formGroup.parent;
551
+ while (parent instanceof FormArray) {
552
+ parent = parent?.parent;
553
+ }
554
+ return parent;
555
+ }
556
+ getContext(control) {
557
+ const formGroup = control;
558
+ const context = this.createProxy(formGroup);
559
+ return context;
560
+ }
561
+ watchExpression(formGroup, expression, callback) {
562
+ const context = this.getContext(formGroup);
563
+ const dependencies = this.feelService.getDependencies(expression, context);
564
+ this.watchDependencies(formGroup, dependencies, callback);
565
+ }
566
+ ;
567
+ watchDependencies(formGroup, dependencies, callback) {
568
+ const subscriptions = [];
569
+ const scopeName = "scope";
570
+ const parentName = "parent";
571
+ const invokeCallback = (control) => {
572
+ subscriptions.push(control.valueChanges
573
+ .pipe(takeUntil(this.destroy$))
574
+ .subscribe(() => {
575
+ setTimeout(() => {
576
+ callback();
577
+ });
578
+ }));
579
+ };
580
+ for (const dependence of dependencies) {
581
+ if (Array.isArray(dependence)) {
582
+ if (dependence[0] === scopeName)
583
+ continue;
584
+ let targetForm = formGroup;
585
+ let controlPath = dependence;
586
+ while (controlPath.length > 0 && controlPath[0] === parentName) {
587
+ if (!targetForm.parent)
588
+ break;
589
+ targetForm = targetForm.parent;
590
+ controlPath = controlPath.slice(1);
591
+ }
592
+ if (controlPath.length > 0 && targetForm) {
593
+ const control = targetForm.get(controlPath);
594
+ if (control) {
595
+ invokeCallback(control);
596
+ }
597
+ }
598
+ }
599
+ else {
600
+ if (dependence === scopeName)
601
+ continue;
602
+ const control = formGroup.get(dependence);
603
+ if (control) {
604
+ invokeCallback(control);
605
+ }
606
+ }
607
+ }
608
+ return subscriptions;
609
+ }
610
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgrammabilityService, deps: [{ token: FeelService }, { token: WeakService }, { token: ProxyService }, { token: ToastService }, { token: RegisterService, optional: true }, { token: ScopeService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
611
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgrammabilityService });
612
+ }
613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgrammabilityService, decorators: [{
614
+ type: Injectable
615
+ }], ctorParameters: () => [{ type: FeelService }, { type: WeakService }, { type: ProxyService }, { type: ToastService }, { type: RegisterService, decorators: [{
616
+ type: Optional
617
+ }] }, { type: ScopeService, decorators: [{
618
+ type: Optional
619
+ }] }] });
620
+
621
+ function patchForm(control, value, options) {
622
+ const defaultOptions = {
623
+ emitEvent: true,
624
+ validateType: false,
625
+ fallbackValue: null
626
+ };
627
+ const warn = (message) => {
628
+ if (options?.emitWarn)
629
+ console.warn(`[patchForm] ${message}`);
630
+ };
631
+ const error = (message) => {
632
+ if (options?.emitError)
633
+ throw new Error(message);
634
+ };
635
+ const { emitEvent, validateType, fallbackValue } = { ...defaultOptions, ...options };
636
+ if (control instanceof FormControl$1) {
637
+ if (validateType && typeof value !== typeof control.value) {
638
+ warn(`Value type mismatch: expected ${typeof control.value}, but received ${typeof value}`);
639
+ if (fallbackValue !== null) {
640
+ control.patchValue(fallbackValue, { emitEvent });
641
+ return;
642
+ }
643
+ error('Invalid value type and no fallback value provided.');
644
+ return;
645
+ }
646
+ control.patchValue(value, { emitEvent });
647
+ }
648
+ else if (control instanceof FormGroup) {
649
+ Object.keys(value || {}).forEach((key) => {
650
+ if (control.controls[key]) {
651
+ patchForm(control.controls[key], value[key], options);
652
+ }
653
+ else {
654
+ warn(`Key "${key}" not found in the FormGroup.`);
655
+ }
656
+ });
657
+ }
658
+ else if (control instanceof FormArray) {
659
+ (value || []).forEach((item, index) => {
660
+ if (control.at(index)) {
661
+ patchForm(control.at(index), item, options);
662
+ }
663
+ else {
664
+ warn(`Index ${index} not found in the FormArray. Adding dynamically...`);
665
+ const newControl = control.addNewItem();
666
+ patchForm(newControl, item, options);
667
+ }
668
+ });
669
+ }
670
+ else {
671
+ error('Unsupported AbstractControl type.');
672
+ }
673
+ }
674
+
675
+ function groupByRow(forms) {
676
+ return forms.map(form => ({
677
+ id: form.id,
678
+ type: form.type,
679
+ name: form.name,
680
+ title: form.title,
681
+ path: form.path,
682
+ rows: groupRowsRecursively(form.components)
683
+ }));
684
+ }
685
+ function groupRowsRecursively(components) {
686
+ const groupedMap = new Map();
687
+ function processComponent(component) {
688
+ const row = component.layout.row;
689
+ if (!groupedMap.has(row)) {
690
+ groupedMap.set(row, []);
691
+ }
692
+ const { components, ...props } = component;
693
+ groupedMap.get(row).push({
694
+ ...props,
695
+ rows: components ? groupRowsRecursively(components) : undefined
696
+ });
697
+ }
698
+ components.forEach(component => processComponent(component));
699
+ return Array.from(groupedMap.entries()).map(([row, components]) => ({
700
+ row,
701
+ components
702
+ }));
703
+ }
704
+
705
+ class EventService {
706
+ commandSubject = new Subject();
707
+ onCommand = this.commandSubject.asObservable();
708
+ emitCommand(data) {
709
+ this.commandSubject.next(data);
710
+ }
711
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
712
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventService, providedIn: 'root' });
713
+ }
714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EventService, decorators: [{
715
+ type: Injectable,
716
+ args: [{
717
+ providedIn: 'root'
718
+ }]
719
+ }] });
720
+
721
+ class AdornerDirective {
722
+ el;
723
+ renderer;
724
+ prefixAdorner = null;
725
+ suffixAdorner = null;
726
+ constructor(el, renderer) {
727
+ this.el = el;
728
+ this.renderer = renderer;
729
+ }
730
+ ngAfterViewInit() {
731
+ this.updatePrefix(this.prefixAdorner);
732
+ this.updateSuffix(this.suffixAdorner);
733
+ }
734
+ ngOnChanges(changes) {
735
+ if (changes["prefixAdorner"]) {
736
+ this.updatePrefix(changes["prefixAdorner"].currentValue);
737
+ }
738
+ if (changes["suffixAdorner"]) {
739
+ this.updateSuffix(changes["suffixAdorner"].currentValue);
740
+ }
741
+ }
742
+ getWrapper() {
743
+ return this.el.nativeElement.querySelector('div.sirio-input-group');
744
+ }
745
+ ;
746
+ isPrepared() {
747
+ return this.getWrapper() !== null;
748
+ }
749
+ prepare() {
750
+ if (this.isPrepared())
751
+ return this.getWrapper();
752
+ const inputElement = this.el.nativeElement.querySelector('input');
753
+ if (!inputElement)
754
+ return null;
755
+ const wrapper = this.renderer.createElement('div');
756
+ this.renderer.addClass(wrapper, 'sirio-input-group');
757
+ const parent = inputElement.parentNode;
758
+ this.renderer.insertBefore(parent, wrapper, inputElement);
759
+ this.renderer.appendChild(wrapper, inputElement);
760
+ return wrapper;
761
+ }
762
+ updatePrefix(prefixAdorner) {
763
+ const prefixText = this.normalizeText(prefixAdorner);
764
+ this.remove("span.prefix");
765
+ if (prefixText !== null) {
766
+ const wrapper = this.prepare();
767
+ if (wrapper) {
768
+ const inputElement = wrapper.querySelector('input');
769
+ const prefixSpan = this.createSpanElement(prefixText);
770
+ this.renderer.addClass(prefixSpan, "prefix");
771
+ this.renderer.insertBefore(wrapper, prefixSpan, inputElement);
772
+ }
773
+ }
774
+ }
775
+ updateSuffix(suffixAdorner) {
776
+ const suffixText = this.normalizeText(suffixAdorner);
777
+ this.remove("span.suffix");
778
+ if (suffixText !== null) {
779
+ const wrapper = this.prepare();
780
+ if (wrapper) {
781
+ const suffixSpan = this.createSpanElement(suffixText);
782
+ this.renderer.addClass(suffixSpan, "suffix");
783
+ this.renderer.appendChild(wrapper, suffixSpan);
784
+ }
785
+ }
786
+ }
787
+ remove(selector) {
788
+ const wrapper = this.getWrapper();
789
+ if (!wrapper)
790
+ return;
791
+ const span = wrapper.querySelector(selector);
792
+ if (span)
793
+ this.renderer.removeChild(wrapper, span);
794
+ }
795
+ createSpanElement(adorner) {
796
+ const outerSpan = this.renderer.createElement('span');
797
+ this.renderer.addClass(outerSpan, 'sirio-input-group-text');
798
+ const innerSpan = this.renderer.createElement('span');
799
+ this.renderer.setAttribute(innerSpan, 'aria-hidden', 'true');
800
+ const iconClass = this.getIconClassName(adorner);
801
+ if (iconClass) {
802
+ this.renderer.addClass(innerSpan, 'fas');
803
+ this.renderer.addClass(innerSpan, iconClass);
804
+ }
805
+ else {
806
+ const strongElement = this.renderer.createElement('strong');
807
+ this.renderer.appendChild(innerSpan, strongElement);
808
+ const text = this.renderer.createText(adorner);
809
+ this.renderer.appendChild(strongElement, text);
810
+ }
811
+ this.renderer.appendChild(outerSpan, innerSpan);
812
+ return outerSpan;
813
+ }
814
+ ;
815
+ getIconClassName(text) {
816
+ switch (text) {
817
+ case "%":
818
+ return "fa-percent";
819
+ case "@":
820
+ return "fa-envelope";
821
+ case "€":
822
+ return "fa-euro-sign";
823
+ }
824
+ return null;
825
+ }
826
+ ;
827
+ normalizeText(text) {
828
+ if (text) {
829
+ const trimmedValue = text.trim();
830
+ return trimmedValue.length > 0 ? trimmedValue : null;
831
+ }
832
+ return null;
833
+ }
834
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdornerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
835
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AdornerDirective, isStandalone: true, selector: "[prefixAdorner], [suffixAdorner]", inputs: { prefixAdorner: "prefixAdorner", suffixAdorner: "suffixAdorner" }, usesOnChanges: true, ngImport: i0 });
836
+ }
837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdornerDirective, decorators: [{
838
+ type: Directive,
839
+ args: [{
840
+ selector: '[prefixAdorner], [suffixAdorner]',
841
+ standalone: true
842
+ }]
843
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { prefixAdorner: [{
844
+ type: Input
845
+ }], suffixAdorner: [{
846
+ type: Input
847
+ }] } });
848
+
849
+ class DisableDirective {
850
+ ngControl;
851
+ disableControl = null;
852
+ readonly = null;
853
+ constructor(ngControl) {
854
+ this.ngControl = ngControl;
855
+ }
856
+ ngOnChanges(changes) {
857
+ if (changes["disableControl"] || changes["readonly"]) {
858
+ if (this.ngControl.control) {
859
+ if (this.disableControl) {
860
+ this.ngControl.control.disable();
861
+ }
862
+ else {
863
+ this.ngControl.control.enable();
864
+ this.ngControl.valueAccessor?.setDisabledState(this.readonly === true);
865
+ }
866
+ }
867
+ }
868
+ }
869
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableDirective, deps: [{ token: i1$1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
870
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DisableDirective, isStandalone: true, selector: "[disableControl], [readonly]", inputs: { disableControl: "disableControl", readonly: "readonly" }, usesOnChanges: true, ngImport: i0 });
871
+ }
872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisableDirective, decorators: [{
873
+ type: Directive,
874
+ args: [{
875
+ selector: '[disableControl], [readonly]',
876
+ standalone: true
877
+ }]
878
+ }], ctorParameters: () => [{ type: i1$1.NgControl }], propDecorators: { disableControl: [{
879
+ type: Input
880
+ }], readonly: [{
881
+ type: Input
882
+ }] } });
883
+
884
+ class DisplayDirective {
885
+ el;
886
+ renderer;
887
+ hide = null;
888
+ show = null;
889
+ constructor(el, renderer) {
890
+ this.el = el;
891
+ this.renderer = renderer;
892
+ }
893
+ ngOnChanges(changes) {
894
+ if (changes["hide"]) {
895
+ const value = changes["hide"].currentValue;
896
+ if (value === true) {
897
+ this.renderer.setStyle(this.el.nativeElement, 'display', 'none');
898
+ }
899
+ else if (value === false) {
900
+ this.renderer.setStyle(this.el.nativeElement, 'display', 'block');
901
+ }
902
+ }
903
+ if (changes["show"]) {
904
+ const value = changes["show"].currentValue;
905
+ if (value === true) {
906
+ this.renderer.setStyle(this.el.nativeElement, 'display', 'block');
907
+ }
908
+ else if (value === false) {
909
+ this.renderer.setStyle(this.el.nativeElement, 'display', 'none');
910
+ }
911
+ }
912
+ }
913
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisplayDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
914
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DisplayDirective, isStandalone: true, selector: "[hide], [show]", inputs: { hide: "hide", show: "show" }, usesOnChanges: true, ngImport: i0 });
915
+ }
916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DisplayDirective, decorators: [{
917
+ type: Directive,
918
+ args: [{
919
+ selector: '[hide], [show]',
920
+ standalone: true
921
+ }]
922
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { hide: [{
923
+ type: Input
924
+ }], show: [{
925
+ type: Input
926
+ }] } });
927
+
928
+ class RepeatDirective {
929
+ controlContainer;
930
+ repeat = null;
931
+ constructor(controlContainer) {
932
+ this.controlContainer = controlContainer;
933
+ }
934
+ ngOnChanges(changes) {
935
+ if (changes["repeat"]) {
936
+ const formArray = this.controlContainer.control;
937
+ const value = changes["repeat"].currentValue;
938
+ if (Number.isInteger(value) && value >= 0)
939
+ this.resizeArray(formArray, value);
940
+ }
941
+ }
942
+ resizeArray(formArray, size) {
943
+ while (formArray.length < size) {
944
+ formArray.addNewItem();
945
+ }
946
+ while (formArray.length > size) {
947
+ formArray.removeAt(formArray.length - 1);
948
+ }
949
+ }
950
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RepeatDirective, deps: [{ token: i1$1.ControlContainer }], target: i0.ɵɵFactoryTarget.Directive });
951
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RepeatDirective, isStandalone: true, selector: "[repeat]", inputs: { repeat: "repeat" }, usesOnChanges: true, ngImport: i0 });
952
+ }
953
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RepeatDirective, decorators: [{
954
+ type: Directive,
955
+ args: [{
956
+ selector: '[repeat]',
957
+ standalone: true
958
+ }]
959
+ }], ctorParameters: () => [{ type: i1$1.ControlContainer }], propDecorators: { repeat: [{
960
+ type: Input
961
+ }] } });
962
+
963
+ class FrameSecurityDirective {
964
+ el;
965
+ renderer;
966
+ frameSecurity = null;
967
+ constructor(el, renderer) {
968
+ this.el = el;
969
+ this.renderer = renderer;
970
+ }
971
+ ngAfterViewInit() {
972
+ const frame = this.el.nativeElement;
973
+ const sandbox = this.getSandBox(this.frameSecurity);
974
+ if (sandbox)
975
+ this.renderer.setAttribute(frame, 'sandbox', sandbox);
976
+ const allow = this.getAllow(this.frameSecurity);
977
+ if (allow)
978
+ this.renderer.setAttribute(frame, 'allow', allow);
979
+ }
980
+ getSandBox(security) {
981
+ let allowedProperties = [
982
+ "allowScripts",
983
+ "allowSameOrigin",
984
+ "allowForms",
985
+ "allowModals",
986
+ "allowPopups",
987
+ "allowTopNavigation",
988
+ "allowStorageAccessByUserActivation"
989
+ ];
990
+ let sandBox = Object.entries(security)
991
+ .filter(([key, value]) => value === true && allowedProperties.includes(key))
992
+ .map(([key]) => this.camelToKebabCase(key))
993
+ .join(' ');
994
+ return sandBox;
995
+ }
996
+ ;
997
+ getAllow(security) {
998
+ let allowedProperties = [
999
+ "fullscreen",
1000
+ "geolocation",
1001
+ "camera",
1002
+ "microphone"
1003
+ ];
1004
+ let allow = Object.entries(security)
1005
+ .filter(([key, value]) => value === true && allowedProperties.includes(key))
1006
+ .map(([key]) => key)
1007
+ .join(' ');
1008
+ return allow;
1009
+ }
1010
+ ;
1011
+ camelToKebabCase(str) {
1012
+ return str.replace(/[A-Z]/g, (match) => '-' + match.toLowerCase());
1013
+ }
1014
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FrameSecurityDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
1015
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FrameSecurityDirective, isStandalone: true, selector: "[frameSecurity]", inputs: { frameSecurity: "frameSecurity" }, ngImport: i0 });
1016
+ }
1017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FrameSecurityDirective, decorators: [{
1018
+ type: Directive,
1019
+ args: [{
1020
+ selector: '[frameSecurity]',
1021
+ standalone: true
1022
+ }]
1023
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { frameSecurity: [{
1024
+ type: Input
1025
+ }] } });
1026
+
1027
+ class DropdownDirective {
1028
+ el;
1029
+ renderer;
1030
+ sirioSelect;
1031
+ constructor(el, renderer, sirioSelect) {
1032
+ this.el = el;
1033
+ this.renderer = renderer;
1034
+ this.sirioSelect = sirioSelect;
1035
+ }
1036
+ ngAfterViewInit() {
1037
+ this.handleNullValue();
1038
+ this.handleSearchable();
1039
+ }
1040
+ handleNullValue() {
1041
+ if (this.sirioSelect
1042
+ && this.sirioSelect.value === null
1043
+ && Array.isArray(this.sirioSelect.options)) {
1044
+ const nullOption = this.sirioSelect.options.find(option => option.value === null);
1045
+ if (nullOption) {
1046
+ nullOption.isSelected = true;
1047
+ }
1048
+ }
1049
+ }
1050
+ handleSearchable() {
1051
+ const searchable = this.el.nativeElement.querySelector('.searchable');
1052
+ if (searchable) {
1053
+ const dropDown = this.el.nativeElement.querySelector('.sirio-dropdown');
1054
+ const dropMenu = dropDown.querySelector('.sirio-dropdown-menu');
1055
+ const input = searchable.querySelector('input');
1056
+ this.renderer.insertBefore(dropDown, searchable, dropMenu);
1057
+ this.renderer.listen(input, 'blur', (event) => {
1058
+ this.sirioSelect.panel.close();
1059
+ });
1060
+ this.renderer.listen(input, 'keyup', (event) => {
1061
+ this.onKeyUp(event, input);
1062
+ });
1063
+ this.renderer.listen(input, 'keydown', (event) => {
1064
+ this.onKeyDown(event);
1065
+ });
1066
+ this.sirioSelect.panel.panelOpened.subscribe(() => {
1067
+ this.activate(searchable);
1068
+ });
1069
+ this.sirioSelect.panel.panelClosed.subscribe(() => {
1070
+ this.deactivate(searchable);
1071
+ });
1072
+ }
1073
+ }
1074
+ deactivate(element) {
1075
+ this.renderer.setStyle(element, 'display', 'none');
1076
+ }
1077
+ activate(element) {
1078
+ let currentValue = "";
1079
+ if (this.sirioSelect.optionsSelected.length > 0) {
1080
+ currentValue = this.sirioSelect.optionsSelected[0].text;
1081
+ }
1082
+ const input = element.querySelector("input");
1083
+ if (!input)
1084
+ return;
1085
+ input.value = currentValue;
1086
+ const dropMenu = this.el.nativeElement.querySelector('.sirio-dropdown-menu');
1087
+ this.sirioSelect.options.forEach((option) => {
1088
+ this.show(option, true);
1089
+ if (currentValue == option.text) {
1090
+ dropMenu.scrollTop = this.native(option).offsetTop;
1091
+ }
1092
+ });
1093
+ this.renderer.setStyle(element, 'display', 'inline-block');
1094
+ setTimeout(() => {
1095
+ input.setSelectionRange(input.value.length, input.value.length);
1096
+ input.focus();
1097
+ });
1098
+ }
1099
+ onKeyUp(event, input) {
1100
+ const { code } = event;
1101
+ switch (code) {
1102
+ case 'Enter':
1103
+ case 'Space':
1104
+ case 'ArrowDown':
1105
+ case 'ArrowUp':
1106
+ case 'Escape':
1107
+ return;
1108
+ }
1109
+ const value = this.comparable(input.value);
1110
+ let firstMatch = true;
1111
+ this.sirioSelect.options.forEach((option, index) => {
1112
+ const match = this.comparable(option.text).includes(value);
1113
+ this.show(option, match);
1114
+ if (match && firstMatch) {
1115
+ option.setFocus();
1116
+ firstMatch = false;
1117
+ }
1118
+ else {
1119
+ option.removeFocus();
1120
+ }
1121
+ });
1122
+ }
1123
+ onKeyDown(event) {
1124
+ const panel = this.sirioSelect.panel;
1125
+ if (!panel) {
1126
+ return;
1127
+ }
1128
+ const panelIsOpen = panel.panelIsOpen;
1129
+ const { code } = event;
1130
+ if (panelIsOpen) {
1131
+ switch (code) {
1132
+ case 'Enter':
1133
+ case 'Space':
1134
+ if (panel.optionFocused) {
1135
+ panel.optionFocused?.onOptionSelected(event);
1136
+ }
1137
+ else {
1138
+ panel.close(event);
1139
+ event?.preventDefault();
1140
+ }
1141
+ break;
1142
+ case 'ArrowDown':
1143
+ this.scrollDown();
1144
+ event?.preventDefault();
1145
+ break;
1146
+ case 'ArrowUp':
1147
+ this.scrollUp();
1148
+ event?.preventDefault();
1149
+ break;
1150
+ case 'Escape':
1151
+ panel.close(event);
1152
+ break;
1153
+ default:
1154
+ break;
1155
+ }
1156
+ }
1157
+ if (!panelIsOpen) {
1158
+ switch (code) {
1159
+ case 'Enter':
1160
+ case 'Space':
1161
+ panel.open(event);
1162
+ event?.preventDefault();
1163
+ break;
1164
+ default:
1165
+ break;
1166
+ }
1167
+ }
1168
+ }
1169
+ native(option) {
1170
+ return option.viewContainerRef.element.nativeElement;
1171
+ }
1172
+ isHidden(option) {
1173
+ return this.native(option).style.display === 'none';
1174
+ }
1175
+ show(option, value) {
1176
+ this.native(option).style.display = value ? '' : 'none';
1177
+ }
1178
+ comparable(text) {
1179
+ return text.toLowerCase().trim();
1180
+ }
1181
+ scrollDown() {
1182
+ const panel = this.sirioSelect.panel;
1183
+ if (!panel.optionFocused) {
1184
+ panel.scrollBarTop();
1185
+ panel.options.first.setFocus();
1186
+ return;
1187
+ }
1188
+ const nextOptionFocused = this.findNextVisibleOption(panel.optionFocusedIndex + 1, panel.options);
1189
+ panel.scrollBarDown();
1190
+ panel.optionFocused?.removeFocus();
1191
+ if (nextOptionFocused) {
1192
+ nextOptionFocused?.setFocus();
1193
+ return;
1194
+ }
1195
+ panel.scrollBarTop();
1196
+ const firstVisible = this.findNextVisibleOption(0, panel.options);
1197
+ if (firstVisible) {
1198
+ firstVisible.setFocus();
1199
+ }
1200
+ }
1201
+ scrollUp() {
1202
+ const panel = this.sirioSelect.panel;
1203
+ if (!panel.optionFocused) {
1204
+ panel.scrollBarTop();
1205
+ panel.options.last.setFocus();
1206
+ return;
1207
+ }
1208
+ const nextOptionFocused = this.findPreviousVisibleOption(panel.optionFocusedIndex - 1, panel.options);
1209
+ if (nextOptionFocused) {
1210
+ panel.scrollBarUp();
1211
+ panel.optionFocused?.removeFocus();
1212
+ nextOptionFocused?.setFocus();
1213
+ return;
1214
+ }
1215
+ panel.optionFocused?.removeFocus();
1216
+ panel.scrollBarBottom();
1217
+ const lastVisible = this.findPreviousVisibleOption(panel.options.length - 1, panel.options);
1218
+ if (lastVisible) {
1219
+ lastVisible.setFocus();
1220
+ }
1221
+ }
1222
+ findPreviousVisibleOption(startIndex, options) {
1223
+ let i = startIndex;
1224
+ while (i >= 0) {
1225
+ const option = options.get(i);
1226
+ if (!this.isHidden(option)) {
1227
+ return option;
1228
+ }
1229
+ i--;
1230
+ }
1231
+ return null;
1232
+ }
1233
+ findNextVisibleOption(startIndex, options) {
1234
+ let i = startIndex;
1235
+ while (i < options.length) {
1236
+ const option = options.get(i);
1237
+ if (!this.isHidden(option)) {
1238
+ return option;
1239
+ }
1240
+ i++;
1241
+ }
1242
+ return null;
1243
+ }
1244
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SirioSelectComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
1245
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DropdownDirective, isStandalone: true, selector: "[dropdown]", ngImport: i0 });
1246
+ }
1247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownDirective, decorators: [{
1248
+ type: Directive,
1249
+ args: [{
1250
+ selector: '[dropdown]',
1251
+ standalone: true
1252
+ }]
1253
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SirioSelectComponent, decorators: [{
1254
+ type: Host
1255
+ }] }] });
1256
+
1257
+ class TabDirective {
1258
+ sirioTab;
1259
+ tabCount = 0;
1260
+ constructor(sirioTab) {
1261
+ this.sirioTab = sirioTab;
1262
+ }
1263
+ ngOnChanges(changes) {
1264
+ if (changes["tabCount"]) {
1265
+ const previous = changes["tabCount"].previousValue;
1266
+ if (previous === undefined)
1267
+ return;
1268
+ const current = changes["tabCount"].currentValue;
1269
+ setTimeout(() => {
1270
+ this.sirioTab.setContentItemIndex();
1271
+ this.sirioTab.showArrowIfNeeded();
1272
+ if (previous < current) {
1273
+ this.sirioTab.setActiveIndex(current - 1);
1274
+ }
1275
+ else {
1276
+ if (this.sirioTab.oldIndex == current) {
1277
+ // remove last
1278
+ this.sirioTab.setActiveIndex(current - 1);
1279
+ }
1280
+ else if (this.sirioTab.oldIndex < current) {
1281
+ // remove middle
1282
+ this.sirioTab.setActiveIndex(this.sirioTab.oldIndex);
1283
+ }
1284
+ }
1285
+ });
1286
+ }
1287
+ }
1288
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabDirective, deps: [{ token: i1.SirioTabComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
1289
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TabDirective, isStandalone: true, selector: "[tabCount]", inputs: { tabCount: "tabCount" }, usesOnChanges: true, ngImport: i0 });
1290
+ }
1291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabDirective, decorators: [{
1292
+ type: Directive,
1293
+ args: [{
1294
+ selector: '[tabCount]',
1295
+ standalone: true
1296
+ }]
1297
+ }], ctorParameters: () => [{ type: i1.SirioTabComponent, decorators: [{
1298
+ type: Host
1299
+ }] }], propDecorators: { tabCount: [{
1300
+ type: Input
1301
+ }] } });
1302
+
1303
+ class AccordionDirective {
1304
+ sirioAccordion;
1305
+ accordionCount = 0;
1306
+ constructor(sirioAccordion) {
1307
+ this.sirioAccordion = sirioAccordion;
1308
+ }
1309
+ ngOnChanges(changes) {
1310
+ if (changes["accordionCount"]) {
1311
+ const previous = changes["accordionCount"].previousValue;
1312
+ if (previous === undefined)
1313
+ return;
1314
+ const current = changes["accordionCount"].currentValue;
1315
+ const oldIndex = this.sirioAccordion.panels.toArray().findIndex(panel => panel.panelIsOpen);
1316
+ setTimeout(() => {
1317
+ const event = new Event("");
1318
+ this.sirioAccordion.closePanels(event);
1319
+ const panels = this.sirioAccordion.panels.toArray();
1320
+ const showPanel = (index) => panels[index].onPanelHeaderClicked(event);
1321
+ if (previous < current) {
1322
+ showPanel(current - 1);
1323
+ }
1324
+ else {
1325
+ if (oldIndex == current) {
1326
+ // remove last
1327
+ showPanel(current - 1);
1328
+ }
1329
+ else if (oldIndex < current) {
1330
+ // remove middle
1331
+ showPanel(oldIndex);
1332
+ }
1333
+ }
1334
+ }, 100);
1335
+ }
1336
+ }
1337
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionDirective, deps: [{ token: i1.SirioAccordionComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
1338
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionDirective, isStandalone: true, selector: "[accordionCount]", inputs: { accordionCount: "accordionCount" }, usesOnChanges: true, ngImport: i0 });
1339
+ }
1340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionDirective, decorators: [{
1341
+ type: Directive,
1342
+ args: [{
1343
+ selector: '[accordionCount]',
1344
+ standalone: true
1345
+ }]
1346
+ }], ctorParameters: () => [{ type: i1.SirioAccordionComponent, decorators: [{
1347
+ type: Host
1348
+ }] }], propDecorators: { accordionCount: [{
1349
+ type: Input
1350
+ }] } });
1351
+
1352
+ class GridDirective {
1353
+ grid;
1354
+ rowSource = null;
1355
+ constructor(grid) {
1356
+ this.grid = grid;
1357
+ grid.gridReady.subscribe(() => {
1358
+ this.isGridReady = true;
1359
+ });
1360
+ }
1361
+ ngOnChanges(changes) {
1362
+ if (changes["rowSource"]) {
1363
+ this.onRowChanges();
1364
+ }
1365
+ }
1366
+ isGridReady = false;
1367
+ onRowChanges() {
1368
+ if (this.isArray(this.rowSource)) {
1369
+ this.setRowData(this.rowSource);
1370
+ }
1371
+ else if (this.isDataSource(this.rowSource)) {
1372
+ this.setDataSource(this.rowSource);
1373
+ }
1374
+ else {
1375
+ this.setRowData([]);
1376
+ }
1377
+ }
1378
+ setRowData(rowSource) {
1379
+ this.grid.rowModelType = 'clientSide';
1380
+ if (this.isGridReady) {
1381
+ this.grid.api.setGridOption('rowData', rowSource);
1382
+ }
1383
+ else {
1384
+ this.grid.rowData = rowSource;
1385
+ }
1386
+ }
1387
+ setDataSource(rowSource) {
1388
+ this.grid.rowModelType = 'infinite';
1389
+ if (this.isGridReady) {
1390
+ this.grid.api.setGridOption('datasource', rowSource);
1391
+ }
1392
+ else {
1393
+ this.grid.datasource = rowSource;
1394
+ }
1395
+ }
1396
+ isArray(rowSource) {
1397
+ return Array.isArray(rowSource);
1398
+ }
1399
+ isDataSource(obj) {
1400
+ return typeof obj.getRows === "function";
1401
+ }
1402
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, deps: [{ token: i1$2.AgGridAngular, host: true }], target: i0.ɵɵFactoryTarget.Directive });
1403
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GridDirective, isStandalone: true, selector: "[rowSource]", inputs: { rowSource: "rowSource" }, usesOnChanges: true, ngImport: i0 });
1404
+ }
1405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, decorators: [{
1406
+ type: Directive,
1407
+ args: [{
1408
+ selector: '[rowSource]',
1409
+ standalone: true
1410
+ }]
1411
+ }], ctorParameters: () => [{ type: i1$2.AgGridAngular, decorators: [{
1412
+ type: Host
1413
+ }] }], propDecorators: { rowSource: [{
1414
+ type: Input
1415
+ }] } });
1416
+
1417
+ class Control {
1418
+ name;
1419
+ metadata;
1420
+ componentRef;
1421
+ elementRef;
1422
+ constructor(name, metadata, componentRef, elementRef) {
1423
+ this.name = name;
1424
+ this.metadata = metadata;
1425
+ this.componentRef = componentRef;
1426
+ this.elementRef = elementRef;
1427
+ }
1428
+ getMetadata() {
1429
+ return this.metadata;
1430
+ }
1431
+ getComponentRef() {
1432
+ return this.componentRef;
1433
+ }
1434
+ getElementRef() {
1435
+ return this.elementRef;
1436
+ }
1437
+ }
1438
+ class ContainerControl extends Control {
1439
+ register;
1440
+ constructor(name, metadata, componentRef, elementRef, register) {
1441
+ super(name, metadata, componentRef, elementRef);
1442
+ this.register = register;
1443
+ }
1444
+ getControls() {
1445
+ return this.register?.getControls() ?? [];
1446
+ }
1447
+ getControl(name) {
1448
+ return this.register?.getControl(name);
1449
+ }
1450
+ findControl(name, type) {
1451
+ const control = this.getControl(name);
1452
+ if (control) {
1453
+ if (!type) {
1454
+ return control;
1455
+ }
1456
+ else if (control instanceof type) {
1457
+ return control;
1458
+ }
1459
+ else {
1460
+ return null;
1461
+ }
1462
+ }
1463
+ for (const child of this.getControls()) {
1464
+ if (child instanceof ContainerControl) {
1465
+ const found = child.findControl(name, type);
1466
+ if (found) {
1467
+ return found;
1468
+ }
1469
+ }
1470
+ }
1471
+ return null;
1472
+ }
1473
+ }
1474
+ class ItemControl extends ContainerControl {
1475
+ index;
1476
+ constructor(name, index, metadata, componentRef, elementRef, register) {
1477
+ super(name, metadata, componentRef, elementRef, register);
1478
+ this.index = index;
1479
+ }
1480
+ }
1481
+
1482
+ class FormControl extends ContainerControl {
1483
+ }
1484
+
1485
+ class TextFieldControl extends Control {
1486
+ setRandomColor() {
1487
+ this.getInput().sirioInput.nativeElement.style.backgroundColor = this.getRandomColor();
1488
+ }
1489
+ getInput() {
1490
+ return this.getComponentRef();
1491
+ }
1492
+ getRandomColor() {
1493
+ const letters = '0123456789ABCDEF';
1494
+ let color = '#';
1495
+ for (let i = 0; i < 6; i++) {
1496
+ color += letters[Math.floor(Math.random() * 16)];
1497
+ }
1498
+ return color;
1499
+ }
1500
+ }
1501
+
1502
+ class SelectControl extends Control {
1503
+ getSelect() {
1504
+ return this.getComponentRef();
1505
+ }
1506
+ }
1507
+
1508
+ class TagListControl extends Control {
1509
+ getSelect() {
1510
+ return this.getComponentRef();
1511
+ }
1512
+ }
1513
+
1514
+ class NumberControl extends Control {
1515
+ getInput() {
1516
+ return this.getComponentRef();
1517
+ }
1518
+ }
1519
+
1520
+ class DateControl extends Control {
1521
+ getDatePicker() {
1522
+ return this.getComponentRef();
1523
+ }
1524
+ }
1525
+
1526
+ class TimeControl extends Control {
1527
+ getTimePicker() {
1528
+ return this.getComponentRef();
1529
+ }
1530
+ }
1531
+
1532
+ class ToggleControl extends Control {
1533
+ getToggle() {
1534
+ return this.getComponentRef();
1535
+ }
1536
+ }
1537
+
1538
+ class CheckBoxControl extends Control {
1539
+ getCheckBox() {
1540
+ return this.getComponentRef();
1541
+ }
1542
+ }
1543
+
1544
+ class ChipRadioControl extends Control {
1545
+ getChipRadio() {
1546
+ return this.getComponentRef();
1547
+ }
1548
+ }
1549
+
1550
+ class RadioControl extends Control {
1551
+ getRadio() {
1552
+ return this.getComponentRef();
1553
+ }
1554
+ }
1555
+
1556
+ class ChipCheckListControl extends Control {
1557
+ getChipCheckBoxGroup() {
1558
+ return this.getComponentRef();
1559
+ }
1560
+ }
1561
+
1562
+ class CheckListControl extends Control {
1563
+ getCheckboxGroup() {
1564
+ return this.getComponentRef();
1565
+ }
1566
+ }
1567
+
1568
+ class TextAreaControl extends Control {
1569
+ getInput() {
1570
+ return this.getComponentRef();
1571
+ }
1572
+ }
1573
+
1574
+ class FilePickerControl extends Control {
1575
+ getFileUpload() {
1576
+ return this.getComponentRef();
1577
+ }
1578
+ }
1579
+
1580
+ class TextControl extends Control {
1581
+ }
1582
+
1583
+ class HtmlControl extends Control {
1584
+ }
1585
+
1586
+ class ImageControl extends Control {
1587
+ }
1588
+
1589
+ class TabControl extends ContainerControl {
1590
+ getTab() {
1591
+ return this.getComponentRef();
1592
+ }
1593
+ }
1594
+
1595
+ class AccordionControl extends ContainerControl {
1596
+ getAccordion() {
1597
+ return this.getComponentRef();
1598
+ }
1599
+ }
1600
+
1601
+ class DynamicListControl extends ContainerControl {
1602
+ }
1603
+
1604
+ class GroupControl extends ContainerControl {
1605
+ }
1606
+
1607
+ class TableControl extends Control {
1608
+ setFilter(filter) {
1609
+ this.getGrid().api.setFilterModel(filter);
1610
+ }
1611
+ clearFilter() {
1612
+ this.getGrid().api.setFilterModel(null);
1613
+ }
1614
+ getGrid() {
1615
+ return this.getComponentRef();
1616
+ }
1617
+ }
1618
+
1619
+ class ButtonControl extends Control {
1620
+ getButton() {
1621
+ return this.getComponentRef();
1622
+ }
1623
+ }
1624
+
1625
+ class SeparatorControl extends Control {
1626
+ }
1627
+
1628
+ class SpacerControl extends Control {
1629
+ }
1630
+
1631
+ class IFrameControl extends Control {
1632
+ }
1633
+
1634
+ function createControl(name, metadata, componentRef, elementRef, register) {
1635
+ switch (metadata.type) {
1636
+ case "default":
1637
+ return new FormControl(name, metadata, componentRef, elementRef, register);
1638
+ case "textfield":
1639
+ return new TextFieldControl(name, metadata, componentRef, elementRef);
1640
+ case "select":
1641
+ return new SelectControl(name, metadata, componentRef, elementRef);
1642
+ case "taglist":
1643
+ return new TagListControl(name, metadata, componentRef, elementRef);
1644
+ case "number":
1645
+ return new NumberControl(name, metadata, componentRef, elementRef);
1646
+ case "datetime":
1647
+ switch (metadata.subtype) {
1648
+ case "date":
1649
+ return new DateControl(name, metadata, componentRef, elementRef);
1650
+ case "time":
1651
+ return new TimeControl(name, metadata, componentRef, elementRef);
1652
+ default:
1653
+ return new Control(name, metadata, componentRef, elementRef);
1654
+ }
1655
+ case "checkbox":
1656
+ switch (metadata.subtype) {
1657
+ case "toggle":
1658
+ return new ToggleControl(name, metadata, componentRef, elementRef);
1659
+ default:
1660
+ return new CheckBoxControl(name, metadata, componentRef, elementRef);
1661
+ }
1662
+ case "radio":
1663
+ switch (metadata.subtype) {
1664
+ case "chip":
1665
+ return new ChipRadioControl(name, metadata, componentRef, elementRef);
1666
+ default:
1667
+ return new RadioControl(name, metadata, componentRef, elementRef);
1668
+ }
1669
+ case "checklist":
1670
+ switch (metadata.subtype) {
1671
+ case "chip":
1672
+ return new ChipCheckListControl(name, metadata, componentRef, elementRef);
1673
+ default:
1674
+ return new CheckListControl(name, metadata, componentRef, elementRef);
1675
+ }
1676
+ case "textarea":
1677
+ return new TextAreaControl(name, metadata, componentRef, elementRef);
1678
+ case "filepicker":
1679
+ return new FilePickerControl(name, metadata, componentRef, elementRef);
1680
+ case "text":
1681
+ return new TextControl(name, metadata, componentRef, elementRef);
1682
+ case "html":
1683
+ return new HtmlControl(name, metadata, componentRef, elementRef);
1684
+ case "image":
1685
+ return new ImageControl(name, metadata, componentRef, elementRef);
1686
+ case "dynamiclist":
1687
+ switch (metadata.subtype) {
1688
+ case "tab":
1689
+ return new TabControl(name, metadata, componentRef, elementRef, register);
1690
+ case "accordion":
1691
+ return new AccordionControl(name, metadata, componentRef, elementRef, register);
1692
+ default:
1693
+ return new DynamicListControl(name, metadata, componentRef, elementRef, register);
1694
+ }
1695
+ case "group":
1696
+ return new GroupControl(name, metadata, componentRef, elementRef, register);
1697
+ case "table":
1698
+ return new TableControl(name, metadata, componentRef, elementRef);
1699
+ case "button":
1700
+ return new ButtonControl(name, metadata, componentRef, elementRef);
1701
+ case "separator":
1702
+ return new SeparatorControl(name, metadata, componentRef, elementRef);
1703
+ case "spacer":
1704
+ return new SpacerControl(name, metadata, componentRef, elementRef);
1705
+ case "iframe":
1706
+ return new IFrameControl(name, metadata, componentRef, elementRef);
1707
+ default:
1708
+ return new Control(name, metadata, componentRef, elementRef);
1709
+ }
1710
+ }
1711
+
1712
+ class RegisterDirective {
1713
+ el;
1714
+ registerService;
1715
+ proxyService;
1716
+ register = null;
1717
+ componentRef;
1718
+ dynamicField;
1719
+ itemFields;
1720
+ constructor(el, registerService, proxyService) {
1721
+ this.el = el;
1722
+ this.registerService = registerService;
1723
+ this.proxyService = proxyService;
1724
+ }
1725
+ ngAfterContentInit() {
1726
+ this.registerControl();
1727
+ }
1728
+ ngOnDestroy() {
1729
+ this.unregisterControl();
1730
+ this.destroy$.next();
1731
+ this.destroy$.complete();
1732
+ }
1733
+ destroy$ = new Subject();
1734
+ registerControl() {
1735
+ const name = this.getName();
1736
+ const register = (this.register.type === 'dynamiclist')
1737
+ ? this.createDynamicRegister(name, this.register, this.componentRef, this.el, this.itemFields)
1738
+ : this.dynamicField?.getRegister();
1739
+ const control = createControl(name, this.register, this.componentRef, this.el, register);
1740
+ this.registerService.register(name, control);
1741
+ }
1742
+ unregisterControl() {
1743
+ this.registerService.unregister(this.getName());
1744
+ }
1745
+ getName() {
1746
+ return this.register.name ?? this.register.id;
1747
+ }
1748
+ createDynamicRegister(name, metadata, componentRef, el, itemFields) {
1749
+ const newRegister = new RegisterService(this.proxyService, null);
1750
+ const registerAll = (itemFields) => {
1751
+ newRegister.unregisterAll();
1752
+ itemFields.forEach((itemField, index) => {
1753
+ const register = itemField.getRegister();
1754
+ const newName = `${name}-${index}`;
1755
+ const control = new ItemControl(newName, index, metadata, componentRef, el, register);
1756
+ newRegister.register(newName, control);
1757
+ });
1758
+ };
1759
+ registerAll(itemFields);
1760
+ itemFields.changes
1761
+ .pipe(takeUntil$1(this.destroy$))
1762
+ .subscribe((itemFields) => {
1763
+ registerAll(itemFields);
1764
+ });
1765
+ return newRegister;
1766
+ }
1767
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDirective, deps: [{ token: i0.ElementRef }, { token: RegisterService }, { token: ProxyService }], target: i0.ɵɵFactoryTarget.Directive });
1768
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RegisterDirective, isStandalone: true, selector: "[register]", inputs: { register: "register", componentRef: "componentRef" }, queries: [{ propertyName: "dynamicField", first: true, predicate: DynamicFieldsComponent, descendants: true }, { propertyName: "itemFields", predicate: DynamicFieldsComponent, descendants: true }], ngImport: i0 });
1769
+ }
1770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDirective, decorators: [{
1771
+ type: Directive,
1772
+ args: [{
1773
+ selector: '[register]',
1774
+ standalone: true
1775
+ }]
1776
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: RegisterService }, { type: ProxyService }], propDecorators: { register: [{
1777
+ type: Input
1778
+ }], componentRef: [{
1779
+ type: Input
1780
+ }], dynamicField: [{
1781
+ type: ContentChild,
1782
+ args: [DynamicFieldsComponent]
1783
+ }], itemFields: [{
1784
+ type: ContentChildren,
1785
+ args: [DynamicFieldsComponent, { descendants: true }]
1786
+ }] } });
1787
+
1788
+ class UpdateBlurDirective {
1789
+ sirioInput;
1790
+ constructor(sirioInput) {
1791
+ this.sirioInput = sirioInput;
1792
+ }
1793
+ ngAfterViewInit() {
1794
+ if (this.sirioInput?.control?.updateOn === 'blur') {
1795
+ const writeValue = this.sirioInput.writeValue;
1796
+ this.sirioInput.writeValue = function (value, event = false) {
1797
+ writeValue.bind(this)(value, false);
1798
+ };
1799
+ this.sirioInput.onBlur = function (event) {
1800
+ writeValue.bind(this)(this.value, true);
1801
+ };
1802
+ }
1803
+ }
1804
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UpdateBlurDirective, deps: [{ token: i1.SirioInputComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
1805
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: UpdateBlurDirective, isStandalone: true, selector: "[updateBlur]", ngImport: i0 });
1806
+ }
1807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UpdateBlurDirective, decorators: [{
1808
+ type: Directive,
1809
+ args: [{
1810
+ selector: '[updateBlur]',
1811
+ standalone: true
1812
+ }]
1813
+ }], ctorParameters: () => [{ type: i1.SirioInputComponent, decorators: [{
1814
+ type: Host
1815
+ }] }] });
1816
+
1817
+ class ObjectURLRendererComponent {
1818
+ params;
1819
+ agInit(params) {
1820
+ this.params = params;
1821
+ }
1822
+ onClick(event) {
1823
+ const fileURL = URL.createObjectURL(this.params.data);
1824
+ window.open(fileURL, '_blank');
1825
+ setTimeout(() => {
1826
+ URL.revokeObjectURL(fileURL);
1827
+ }, 1000);
1828
+ }
1829
+ refresh() {
1830
+ return false;
1831
+ }
1832
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1833
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectURLRendererComponent, selector: "ng-component", ngImport: i0, template: `<a aria-label="View" title="View" href="javascript:void(0)" (click)="onClick($event)"><span class="fas fa-paperclip"></span></a>`, isInline: true });
1834
+ }
1835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, decorators: [{
1836
+ type: Component,
1837
+ args: [{
1838
+ template: `<a aria-label="View" title="View" href="javascript:void(0)" (click)="onClick($event)"><span class="fas fa-paperclip"></span></a>`,
1839
+ }]
1840
+ }] });
1841
+ class DeleteRowCellRenderer {
1842
+ params;
1843
+ agInit(params) {
1844
+ this.params = params;
1845
+ }
1846
+ onClick(event) {
1847
+ if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {
1848
+ this.params.data.remove();
1849
+ }
1850
+ }
1851
+ refresh() {
1852
+ return false;
1853
+ }
1854
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
1855
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeleteRowCellRenderer, selector: "ng-component", ngImport: i0, template: `<button aria-label="Remove" title="Remove" class="sirio-btn sirio-btn-icon" (click)="onClick($event)"><span class="fas fa-trash"></span></button>`, isInline: true });
1856
+ }
1857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, decorators: [{
1858
+ type: Component,
1859
+ args: [{
1860
+ template: `<button aria-label="Remove" title="Remove" class="sirio-btn sirio-btn-icon" (click)="onClick($event)"><span class="fas fa-trash"></span></button>`,
1861
+ }]
1862
+ }] });
1863
+
1864
+ const Texts = {
1865
+ TypeToSearch: "Digita per cercare...",
1866
+ Upload: "Upload",
1867
+ ScrollLeft: "Scorri a sinistra",
1868
+ ScrollRight: "Scorri a destra",
1869
+ AddItem: "Aggiungi",
1870
+ RemoveItem: "Rimuovi",
1871
+ PreviousSection: "Sezione precedente",
1872
+ NextSection: "Sezione successiva",
1873
+ Show: "Visualizza",
1874
+ Close: "Chiudi"
1875
+ };
1876
+
1877
+ class SanitizeService {
1878
+ sanitizer;
1879
+ constructor(sanitizer) {
1880
+ this.sanitizer = sanitizer;
1881
+ this.sanitizeOption = {
1882
+ allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img']),
1883
+ allowedAttributes: {
1884
+ ...sanitizeHtml.defaults.allowedAttributes,
1885
+ '*': ['style']
1886
+ }
1887
+ };
1888
+ }
1889
+ sanitizeHtml(html) {
1890
+ return sanitizeHtml(html, this.sanitizeOption);
1891
+ }
1892
+ ;
1893
+ sanitizeSafeHtml(html) {
1894
+ return this.sanitizer.bypassSecurityTrustHtml(this.sanitizeHtml(html));
1895
+ }
1896
+ ;
1897
+ sanitizeSafeUrl(url) {
1898
+ return this.sanitizer.bypassSecurityTrustResourceUrl(url);
1899
+ }
1900
+ sanitizeOption;
1901
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SanitizeService, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
1902
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SanitizeService, providedIn: 'root' });
1903
+ }
1904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SanitizeService, decorators: [{
1905
+ type: Injectable,
1906
+ args: [{
1907
+ providedIn: 'root'
1908
+ }]
1909
+ }], ctorParameters: () => [{ type: i1$3.DomSanitizer }] });
1910
+
1911
+ marked.use({
1912
+ async: false,
1913
+ gfm: true,
1914
+ breaks: true
1915
+ });
1916
+ class MarkdownService {
1917
+ constructor() { }
1918
+ toHtml(text) {
1919
+ return marked.parse(text ?? "");
1920
+ }
1921
+ ;
1922
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1923
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownService, providedIn: 'root' });
1924
+ }
1925
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkdownService, decorators: [{
1926
+ type: Injectable,
1927
+ args: [{
1928
+ providedIn: 'root'
1929
+ }]
1930
+ }], ctorParameters: () => [] });
1931
+
1932
+ class MimeService {
1933
+ constructor() { }
1934
+ getMimeTypes(extensions) {
1935
+ return (extensions ?? "")
1936
+ .split(',')
1937
+ .map(ext => this.getMimeType(ext.trim()))
1938
+ .filter(mime => mime !== null)
1939
+ .join(', ');
1940
+ }
1941
+ ;
1942
+ getMimeType(extension) {
1943
+ const ext = extension.startsWith('.') ? extension.slice(1) : extension;
1944
+ for (const [mimeType, info] of Object.entries(mimeDb)) {
1945
+ if (info.extensions && info.extensions.includes(ext)) {
1946
+ return mimeType;
1947
+ }
1948
+ }
1949
+ return null;
1950
+ }
1951
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1952
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MimeService, providedIn: 'root' });
1953
+ }
1954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MimeService, decorators: [{
1955
+ type: Injectable,
1956
+ args: [{
1957
+ providedIn: 'root'
1958
+ }]
1959
+ }], ctorParameters: () => [] });
1960
+
1961
+ //import { FeelService } from '../services/feel.service';
1962
+ class FormatterService {
1963
+ //constructor(private feelService: FeelService) { }
1964
+ constructor() { }
1965
+ formatCurrency(value, symbol = null) {
1966
+ if (isNaN(value) || value === null || value === undefined) {
1967
+ return value;
1968
+ }
1969
+ const numberValue = parseFloat(value);
1970
+ if (isNaN(numberValue)) {
1971
+ return value;
1972
+ }
1973
+ const result = numberValue.toFixed(2).replace(".", ",").replace(/\B(?=(\d{3})+(?!\d))/g, ".");
1974
+ if (symbol) {
1975
+ return symbol + ' ' + result;
1976
+ }
1977
+ else {
1978
+ return result;
1979
+ }
1980
+ }
1981
+ formatDate(value) {
1982
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}(T|$)/.test(value)) {
1983
+ return value;
1984
+ }
1985
+ const date = new Date(value);
1986
+ if (isNaN(date.getTime())) {
1987
+ return value;
1988
+ }
1989
+ const day = date.getDate().toString().padStart(2, '0');
1990
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
1991
+ const year = date.getFullYear();
1992
+ return `${day}/${month}/${year}`;
1993
+ }
1994
+ formatInteger(value) {
1995
+ if (isNaN(value) || value === null || value === undefined) {
1996
+ return value;
1997
+ }
1998
+ const numberValue = parseInt(value, 10);
1999
+ if (isNaN(numberValue)) {
2000
+ return value;
2001
+ }
2002
+ return numberValue.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
2003
+ }
2004
+ formatExpression(value, expression) {
2005
+ return value;
2006
+ //const result = this.feelService.evalExpression(expression, { value: value }) as string;
2007
+ //return result;
2008
+ }
2009
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2010
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, providedIn: 'root' });
2011
+ }
2012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, decorators: [{
2013
+ type: Injectable,
2014
+ args: [{
2015
+ providedIn: 'root'
2016
+ }]
2017
+ }], ctorParameters: () => [] });
2018
+
2019
+ class DynamicFieldsComponent {
2020
+ sanitizer;
2021
+ markdown;
2022
+ mime;
2023
+ programmability;
2024
+ events;
2025
+ formatter;
2026
+ weak;
2027
+ register;
2028
+ el;
2029
+ rows;
2030
+ formGroup;
2031
+ Texts = Texts;
2032
+ constructor(sanitizer, markdown, mime, programmability, events, formatter, weak, register, el) {
2033
+ this.sanitizer = sanitizer;
2034
+ this.markdown = markdown;
2035
+ this.mime = mime;
2036
+ this.programmability = programmability;
2037
+ this.events = events;
2038
+ this.formatter = formatter;
2039
+ this.weak = weak;
2040
+ this.register = register;
2041
+ this.el = el;
2042
+ }
2043
+ ngOnInit() {
2044
+ this.configureDatepicker();
2045
+ }
2046
+ ngAfterViewInit() {
2047
+ setTimeout(() => {
2048
+ this.focusFirst();
2049
+ });
2050
+ }
2051
+ getRegister() {
2052
+ return this.register;
2053
+ }
2054
+ getClass(component) {
2055
+ if (component.layout?.columns) {
2056
+ return "col-md-" + component.layout?.columns;
2057
+ }
2058
+ else {
2059
+ return "col";
2060
+ }
2061
+ }
2062
+ getTextFeedback(component) {
2063
+ const control = this.formGroup.get(component.key);
2064
+ return control.valid || !control.errors
2065
+ ? ''
2066
+ : control.errors['message'];
2067
+ }
2068
+ isWarning(component) {
2069
+ const control = this.formGroup.get(component.key);
2070
+ return (control.errors && control.errors['warning']) || false;
2071
+ }
2072
+ evaluateString(value) {
2073
+ return this.programmability.evaluateString(this.formGroup, value);
2074
+ }
2075
+ evaluateBoolean(value) {
2076
+ return this.programmability.evaluateBoolean(this.formGroup, value);
2077
+ }
2078
+ evaluateNumber(value) {
2079
+ return this.programmability.evaluateNumber(this.formGroup, value);
2080
+ }
2081
+ evaluateUrl(value) {
2082
+ const url = this.programmability.evaluateString(this.formGroup, value);
2083
+ const watchKey = `:safeUrl(${url})`;
2084
+ return this.weak.call(this.formGroup, watchKey, () => {
2085
+ return this.sanitizer.sanitizeSafeUrl(url);
2086
+ });
2087
+ }
2088
+ evaluateTemplate(value) {
2089
+ return this.programmability.evaluateTemplate(this.formGroup, value);
2090
+ }
2091
+ evaluate(text, cacheable = true) {
2092
+ return this.programmability.evaluate(this.formGroup, text, cacheable);
2093
+ }
2094
+ evaluateColor(value) {
2095
+ const color = this.evaluateString(value);
2096
+ const watchKey = `:buttonColor(${color})`;
2097
+ return this.weak.call(this.formGroup, watchKey, () => {
2098
+ if (color === "ghost")
2099
+ return null;
2100
+ const validColors = ['primary', 'secondary', 'tertiary', 'tertiary-light', 'danger'];
2101
+ return validColors.includes(color) ? color : 'primary';
2102
+ });
2103
+ }
2104
+ getFormGroup(control) {
2105
+ if (!(control instanceof FormGroup)) {
2106
+ throw new Error('Control is not a FormGroup');
2107
+ }
2108
+ return control;
2109
+ }
2110
+ getFormArray(control) {
2111
+ if (!(control instanceof FormArray)) {
2112
+ throw new Error('Control is not a FormArray');
2113
+ }
2114
+ return control;
2115
+ }
2116
+ getControlFromPath(path) {
2117
+ return path
2118
+ ? this.formGroup.get(path)
2119
+ : this.formGroup;
2120
+ }
2121
+ toHTML(text) {
2122
+ let html = this.markdown.toHtml(text);
2123
+ return this.sanitizer.sanitizeSafeHtml(html);
2124
+ }
2125
+ ;
2126
+ sanitize(html) {
2127
+ return this.sanitizer.sanitizeSafeHtml(html);
2128
+ }
2129
+ ;
2130
+ getMimeTypes(extensions) {
2131
+ return this.mime.getMimeTypes(extensions);
2132
+ }
2133
+ ;
2134
+ clickButton(component, event) {
2135
+ if (component.click) {
2136
+ this.evaluate(component.click, false);
2137
+ }
2138
+ if (component.command) {
2139
+ const command = {
2140
+ name: this.evaluateString(component.command),
2141
+ component: component,
2142
+ formGroup: this.formGroup,
2143
+ event: event
2144
+ };
2145
+ this.events.emitCommand(command);
2146
+ }
2147
+ }
2148
+ getValues(component) {
2149
+ if (component.values) {
2150
+ // Static
2151
+ return of(component.values);
2152
+ }
2153
+ else if (component.valuesKey) {
2154
+ // Field value
2155
+ const result = this.evaluate(component.valuesKey);
2156
+ return this.getAsObservable(result);
2157
+ }
2158
+ else if (component.valuesExpression) {
2159
+ // Expression
2160
+ const result = this.evaluate(component.valuesExpression);
2161
+ return this.getAsObservable(result);
2162
+ }
2163
+ else {
2164
+ // Nothing
2165
+ return of([]);
2166
+ }
2167
+ }
2168
+ getGridOptions(component) {
2169
+ return this.weak.call(component, 'getGridOptions', () => {
2170
+ return {
2171
+ defaultColDef: {
2172
+ floatingFilter: (component.floatingFilter === true),
2173
+ headerClass: (component.floatingFilter === true)
2174
+ ? 'show-filter' : 'hide-filter'
2175
+ },
2176
+ columnDefs: this.getGridColumns(component),
2177
+ pagination: this.getGridPaginable(component),
2178
+ paginationPageSize: this.getGridPageSize(component),
2179
+ paginationPageSizeSelector: [5, 10, 20, 50],
2180
+ localeText: this.getGridTexts(),
2181
+ theme: this.getGridTheme(),
2182
+ };
2183
+ });
2184
+ }
2185
+ getGridModules(component) {
2186
+ return this.weak.call(component, 'getGridModules', () => {
2187
+ return [
2188
+ ClientSideRowModelModule,
2189
+ InfiniteRowModelModule,
2190
+ PaginationModule,
2191
+ LocaleModule,
2192
+ CellStyleModule,
2193
+ ClientSideRowModelApiModule,
2194
+ TextFilterModule,
2195
+ NumberFilterModule,
2196
+ DateFilterModule
2197
+ ];
2198
+ });
2199
+ }
2200
+ getGridData(component) {
2201
+ if (component.dataSource) {
2202
+ // Expression
2203
+ const result = this.evaluate(component.dataSource);
2204
+ return this.getAsObservable(result);
2205
+ }
2206
+ else {
2207
+ // Nothing
2208
+ return of([]);
2209
+ }
2210
+ }
2211
+ addNewItem(component) {
2212
+ const formArray = this.getFormArray(this.getControlFromPath(component.path));
2213
+ formArray.addNewItem();
2214
+ }
2215
+ removeItem(component, index) {
2216
+ const formArray = this.getFormArray(this.getControlFromPath(component.path));
2217
+ formArray.removeAt(index);
2218
+ }
2219
+ createUploadTables(component) {
2220
+ return this.weak.call(component, 'createUploadTables', () => {
2221
+ return [
2222
+ {
2223
+ components: [
2224
+ {
2225
+ "type": "table",
2226
+ "layout": {
2227
+ "columns": null
2228
+ },
2229
+ "columns": [
2230
+ {
2231
+ "label": "Name",
2232
+ "key": "name",
2233
+ "flex": 1
2234
+ },
2235
+ {
2236
+ "label": "Size",
2237
+ "key": "size",
2238
+ "format": "integer",
2239
+ "align": "right"
2240
+ },
2241
+ {
2242
+ "key": "type",
2243
+ "label": "Type"
2244
+ },
2245
+ {
2246
+ "key": "url",
2247
+ "label": "",
2248
+ "width": 50,
2249
+ "align": "center",
2250
+ "format": "objectURL"
2251
+ },
2252
+ {
2253
+ "label": "",
2254
+ "width": 50,
2255
+ "align": "center",
2256
+ "format": "deleteRow"
2257
+ }
2258
+ ],
2259
+ "dataSource": "=" + component.key,
2260
+ "height": 200,
2261
+ "conditional": component.conditional,
2262
+ "disabled": component.disabled
2263
+ }
2264
+ ]
2265
+ }
2266
+ ];
2267
+ });
2268
+ }
2269
+ fileUploaded($event) {
2270
+ const removeFile = (file) => {
2271
+ if ($event.component.control) {
2272
+ const newFiles = $event.component.fileList.filter(f => f !== file);
2273
+ $event.component.control.setValue(newFiles);
2274
+ addRemove(newFiles);
2275
+ return newFiles;
2276
+ }
2277
+ return [];
2278
+ };
2279
+ const addRemove = (files) => {
2280
+ files.forEach(file => {
2281
+ if (!('remove' in file)) {
2282
+ Object.defineProperty(file, 'remove', {
2283
+ value: function () {
2284
+ removeFile(this);
2285
+ },
2286
+ writable: false,
2287
+ enumerable: false
2288
+ });
2289
+ }
2290
+ });
2291
+ };
2292
+ addRemove($event.component.fileList);
2293
+ }
2294
+ focusFirst() {
2295
+ const focusableElements = this.el.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
2296
+ for (let el of focusableElements) {
2297
+ if (!el.hasAttribute('disabled')) {
2298
+ el.focus();
2299
+ break;
2300
+ }
2301
+ }
2302
+ }
2303
+ gridTexts = {
2304
+ ...AG_GRID_LOCALE_IT,
2305
+ "pageSizeSelectorLabel": "Elementi per pagina:",
2306
+ "to": "-",
2307
+ };
2308
+ gridTheme = themeQuartz
2309
+ .withPart(iconSetAlpine)
2310
+ .withParams({
2311
+ backgroundColor: "#FAFAFA",
2312
+ borderColor: "#D9E4F7",
2313
+ browserColorScheme: "light",
2314
+ cellTextColor: "#00121A",
2315
+ columnBorder: true,
2316
+ fontFamily: "inherit",
2317
+ fontSize: 16,
2318
+ headerBackgroundColor: "#002460",
2319
+ headerColumnBorder: true,
2320
+ headerColumnResizeHandleColor: "#F2F6FC",
2321
+ headerColumnResizeHandleWidth: 2,
2322
+ headerFontSize: 16,
2323
+ headerFontWeight: 600,
2324
+ headerRowBorder: false,
2325
+ headerTextColor: "#F2F6FC",
2326
+ rowBorder: true
2327
+ });
2328
+ getGridColumns(component) {
2329
+ if (Array.isArray(component.columns)) {
2330
+ return component.columns.map((column) => ({
2331
+ field: column.key,
2332
+ headerName: column.label,
2333
+ resizable: column.resize === true,
2334
+ sortable: column.sort === true,
2335
+ filter: column.filter === true,
2336
+ suppressMovable: !(column.move === true),
2337
+ ...(column.flex === true && { flex: 1 }),
2338
+ ...(column.align === "left" && { cellStyle: { textAlign: 'left' } }),
2339
+ ...(column.align === "center" && { cellStyle: { textAlign: 'center' } }),
2340
+ ...(column.align === "right" && { cellStyle: { textAlign: 'right' } }),
2341
+ ...(typeof column.pinned === "string" && { pinned: column.pinned }),
2342
+ ...(typeof column.flex === "number" && { flex: column.flex }),
2343
+ ...(typeof column.width === "number" && { width: column.width }),
2344
+ ...(typeof column.minWidth === "number" && { minWidth: column.minWidth }),
2345
+ ...(typeof column.maxWidth === "number" && { maxWidth: column.maxWidth }),
2346
+ valueFormatter: this.getGridFormatter(column),
2347
+ cellRenderer: this.getGridRenderer(column)
2348
+ }));
2349
+ }
2350
+ else {
2351
+ return [];
2352
+ }
2353
+ }
2354
+ getGridPaginable(component) {
2355
+ return (typeof component.rowCount === 'number' && component.rowCount > 0);
2356
+ }
2357
+ getGridPageSize(component) {
2358
+ if (typeof component.rowCount === 'number') {
2359
+ return component.rowCount;
2360
+ }
2361
+ }
2362
+ getGridTexts() {
2363
+ return this.gridTexts;
2364
+ }
2365
+ getGridTheme() {
2366
+ return this.gridTheme;
2367
+ }
2368
+ getGridFormatter(column) {
2369
+ if (column.format) {
2370
+ switch (column.format) {
2371
+ case 'integer':
2372
+ return params => this.formatter.formatInteger(params.value);
2373
+ case 'currency':
2374
+ return params => this.formatter.formatCurrency(params.value);
2375
+ case 'date':
2376
+ return params => this.formatter.formatDate(params.value);
2377
+ }
2378
+ }
2379
+ return undefined;
2380
+ }
2381
+ getGridRenderer(column) {
2382
+ if (column.format) {
2383
+ switch (column.format) {
2384
+ case 'objectURL':
2385
+ return ObjectURLRendererComponent;
2386
+ case "deleteRow":
2387
+ return DeleteRowCellRenderer;
2388
+ }
2389
+ }
2390
+ return undefined;
2391
+ }
2392
+ getAsObservable(value) {
2393
+ if (isObservable(value))
2394
+ return value;
2395
+ return of(value);
2396
+ }
2397
+ configureDatepicker() {
2398
+ Datepicker.locales['it'] = {
2399
+ days: [
2400
+ 'Domenica',
2401
+ 'Lunedì',
2402
+ 'Martedì',
2403
+ 'Mercoledì',
2404
+ 'Giovedì',
2405
+ 'Venerdì',
2406
+ 'Sabato',
2407
+ ],
2408
+ daysMin: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
2409
+ months: [
2410
+ 'Gennaio',
2411
+ 'Febbraio',
2412
+ 'Marzo',
2413
+ 'Aprile',
2414
+ 'Maggio',
2415
+ 'Giugno',
2416
+ 'Luglio',
2417
+ 'Agosto',
2418
+ 'Settembre',
2419
+ 'Ottobre',
2420
+ 'Novembre',
2421
+ 'Dicembre',
2422
+ ],
2423
+ monthsShort: [
2424
+ 'Gen',
2425
+ 'Feb',
2426
+ 'Mar',
2427
+ 'Apr',
2428
+ 'Mag',
2429
+ 'Giu',
2430
+ 'Lug',
2431
+ 'Ago',
2432
+ 'Set',
2433
+ 'Ott',
2434
+ 'Nov',
2435
+ 'Dic',
2436
+ ],
2437
+ today: 'Oggi',
2438
+ clear: 'Pulisci',
2439
+ format: 'dd/mm/yyyy',
2440
+ weekStart: 1,
2441
+ };
2442
+ }
2443
+ ;
2444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFieldsComponent, deps: [{ token: SanitizeService }, { token: MarkdownService }, { token: MimeService }, { token: ProgrammabilityService }, { token: EventService }, { token: FormatterService }, { token: WeakService }, { token: RegisterService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2445
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicFieldsComponent, isStandalone: true, selector: "app-dynamic-fields", inputs: { rows: "rows", formGroup: "formGroup" }, providers: [
2446
+ RegisterService,
2447
+ ProgrammabilityService
2448
+ ], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows\" [formGroup]=\"formGroup\">\r\n <div class=\"row field-set\">\r\n <ng-container *ngFor=\"let component of row.components\">\r\n <ng-container [ngSwitch]=\"component.type\">\r\n <div [formGroup]=\"formGroup\" [class]=\"getClass(component)\">\r\n <!-- #region textfield -->\r\n <ng-container *ngSwitchCase=\"'textfield'\">\r\n <ngx-sirio-input type=\"text\"\r\n ariaLabel=\"input\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ngx-sirio-select ariaLabel=\"select\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n dropdown\r\n #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel ariaLabel=\"items\">\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"Texts.TypeToSearch\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ option.label }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\">\r\n <ngx-sirio-select ariaLabel=\"select\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [isMultiple]=\"true\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel ariaLabel=\"items\">\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ option.label }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ngx-sirio-input type=\"number\"\r\n ariaLabel=\"input\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker ariaLabel=\"date\"\r\n [label]=\"evaluateString(component.dateLabel)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker ariaLabel=\"time\"\r\n [label]=\"evaluateString(component.timeLabel)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle ariaLabel=\"checkbox\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox ariaLabel=\"checkbox\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group ariaLabel=\"radio\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group ariaLabel=\"radio\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group ariaLabel=\"checklist\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group ariaLabel=\"checklist\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ngx-sirio-input type=\"textarea\"\r\n ariaLabel=\"textarea\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\">\r\n <ngx-sirio-file-upload ariaLabel=\"filepicker\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ Texts.Upload }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\" [rows]=\"createUploadTables(component)\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div class=\"text-paragraph\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region html -->\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <div class=\"html-paragraph\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [innerHTML]=\"sanitize(evaluateTemplate(component.content))\"\r\n #html\r\n [register]=\"component\"\r\n [componentRef]=\"html\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img [src]=\"evaluateString(component.source)\"\r\n [alt]=\"evaluateString(component.alt)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n style=\"width: 100%;height: 100%;\"\r\n #image\r\n [register]=\"component\"\r\n [componentRef]=\"image\">\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\">\r\n <ng-container [formArrayName]=\"component.path\" [repeat]=\"evaluateNumber(component.repetitions)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <ng-container *ngIf=\"getFormArray(formGroup.get(component.path)).controls.length > 0\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"Texts.ScrollLeft\"\r\n [rightArrowLabel]=\"Texts.ScrollRight\"\r\n [tabCount]=\"getFormArray(formGroup.get(component.path)).controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"component.label + ' ' + (i + 1)\">\r\n <!--<ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item, index: i }\"></ng-container>-->\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"getFormArray(formGroup.get(component.path)).controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"component.label + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <!--<ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item, index: i }\"></ng-container>-->\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true}\"\r\n #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container> \r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addNewItem(component)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ Texts.AddItem }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"{\r\n 'group-outline': component.showOutline === true,\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <div #group\r\n [register]=\"component\"\r\n [componentRef]=\"group\">\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(getControlFromPath(component.path))\"\r\n [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [gridOptions]=\"getGridOptions(component)\"\r\n [rowSource]=\"(getGridData(component) | async) || []\"\r\n [style.height.px]=\"component.height\"\r\n #table\r\n [register]=\"component\"\r\n [componentRef]=\"table\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region button -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <label [for]=\"component.id\">{{ evaluateString(component.label) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(component.label)\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"Texts.Close\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(component.title)\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <ngx-sirio-slider [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [min]=\"evaluateNumber(component.range?.min) ?? 0\"\r\n [max]=\"evaluateNumber(component.range?.max) ?? 0\"\r\n #range\r\n [register]=\"component\"\r\n [componentRef]=\"range\">\r\n </ngx-sirio-slider>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n", styles: [".field-set{align-items:center}.field-set>div{margin-top:10px;margin-bottom:10px}.separator{border-bottom:2px solid #d9e4f7;width:100%;margin:10px 0}.group-outline{border:1px solid #d9e4f7;padding:15px;margin-top:2px;margin-bottom:2px}.group-top .row{align-items:baseline}.group-center .row{align-items:center}.group-bottom .row{align-items:end}.text-paragraph p{margin-bottom:0!important}.sirio-control.ng-invalid .sirio-form-feedback{color:#aa224f;display:inline-block}.sirio-control.ng-invalid .sirio-input-group-text{color:#aa224f;border-color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]~label,.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label{color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]~label:before,.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label:before{border-color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label{color:#aa224f}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label:before,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label:before{border-color:#aa224f}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label:after,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label:after{background-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]~label,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label{color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]~label:before,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label:before{border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=checkbox]+label{color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=checkbox]:checked+label{color:#fff;background-color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]~label,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label{color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]~label:before,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label:before{border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=radio]+label{color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=radio]:checked+label{color:#fff;background-color:#aa224f;border-color:#aa224f}.sirio-upload.sirio-is-invalid button{background-color:#aa224f;border-color:#aa224f}.sirio-accordion .sirio-accordion-body .sirio-accordion-content{padding:16px}.ag-cell-value button.sirio-btn.sirio-btn-icon{padding:0}.sirio-tab.sirio-tab-scroll{display:block}.sirio-dropdown .searchable{position:absolute;width:100%;display:none;left:0}.ag-header-cell.hide-filter .ag-header-cell-filter-button{display:none}\n"], dependencies: [{ kind: "component", type: DynamicFieldsComponent, selector: "app-dynamic-fields", inputs: ["rows", "formGroup"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i9.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: AdornerDirective, selector: "[prefixAdorner], [suffixAdorner]", inputs: ["prefixAdorner", "suffixAdorner"] }, { kind: "directive", type: DisableDirective, selector: "[disableControl], [readonly]", inputs: ["disableControl", "readonly"] }, { kind: "directive", type: DisplayDirective, selector: "[hide], [show]", inputs: ["hide", "show"] }, { kind: "directive", type: FrameSecurityDirective, selector: "[frameSecurity]", inputs: ["frameSecurity"] }, { kind: "directive", type: DropdownDirective, selector: "[dropdown]" }, { kind: "directive", type: UpdateBlurDirective, selector: "[updateBlur]" }, { kind: "directive", type: RepeatDirective, selector: "[repeat]", inputs: ["repeat"] }, { kind: "directive", type: TabDirective, selector: "[tabCount]", inputs: ["tabCount"] }, { kind: "directive", type: GridDirective, selector: "[rowSource]", inputs: ["rowSource"] }, { kind: "directive", type: RegisterDirective, selector: "[register]", inputs: ["register", "componentRef"] }, { kind: "directive", type: AccordionDirective, selector: "[accordionCount]", inputs: ["accordionCount"] }, { kind: "component", type: SirioInputComponent, selector: "ngx-sirio-input", inputs: ["disabledState", "value", "label", "labelPopover", "ariaLabelPopoverButton", "type", "name", "placeholder", "textHelp", "textFeedback", "rows", "cols", "ariaLabel", "ariaAutocomplete", "ariaInvalid", "ariaDescribedBy", "role"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent"] }, { kind: "directive", type: SirioValidationDirective, selector: "[validation]", inputs: ["canValidate", "isWarning", "showWhenValid"] }, { kind: "component", type: SirioSelectComponent, selector: "ngx-sirio-select", inputs: ["placeholder", "disabledState", "value", "label", "labelPopover", "ariaLabelPopoverButton", "isMultiple", "textHelp", "textFeedback", "ariaLabel", "ariaInvalid", "ariaDescribedBy"], outputs: ["focusEvent", "blurEvent", "keydownEvent"] }, { kind: "component", type: SirioSelectOptionComponent, selector: "ngx-sirio-select-option", inputs: ["value"], outputs: ["optionSelected", "blurEvent"] }, { kind: "component", type: SirioSelectPanelComponent, selector: "ngx-sirio-select-panel", outputs: ["optionSelected", "panelOpened", "panelClosed"] }, { kind: "component", type: SirioCheckboxGroupComponent, selector: "ngx-sirio-checkbox-group", inputs: ["textHelp", "textFeedback", "label", "labelPopover", "ariaLabelPopoverButton", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioCheckboxComponent, selector: "ngx-sirio-checkbox", inputs: ["disabled", "name", "textHelp", "textFeedback", "value", "ariaInvalid", "ariaDescribedBy", "disabledState", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioDatepickerComponent, selector: "ngx-sirio-datepicker", inputs: ["name", "placeholder", "textHelp", "textFeedback", "label", "labelPopover", "ariaLabelPopoverButton", "ariaLabel", "ariaAutocomplete", "ariaInvalid", "ariaDescribedBy", "value", "disabledState"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent", "datechangeEvent"] }, { kind: "component", type: SirioTimepickerComponent, selector: "ngx-sirio-timepicker", inputs: ["name", "label", "labelPopover", "ariaLabelPopoverButton", "placeholder", "textHelp", "textFeedback", "ariaLabel", "ariaAutocomplete", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent"] }, { kind: "component", type: SirioRadioGroupComponent, selector: "ngx-sirio-radio-group", inputs: ["label", "labelPopover", "ariaLabelPopoverButton", "textHelp", "textFeedback", "items", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioRadioButtonComponent, selector: "ngx-sirio-radio-button", inputs: ["disabledState", "label", "name", "textHelp", "textFeedback", "ariaInvalid", "ariaDescribedBy", "value", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioTabComponent, selector: "ngx-sirio-tab", inputs: ["isVertical", "isNavLine", "leftArrowLabel", "rightArrowLabel", "tabActive"], outputs: ["tabChange"] }, { kind: "component", type: SirioTabItemComponent, selector: "ngx-sirio-tab-item", inputs: ["label", "disabled", "icon"] }, { kind: "component", type: SirioAccordionComponent, selector: "ngx-sirio-accordion", inputs: ["dark"] }, { kind: "component", type: SirioAccordionPanelComponent, selector: "ngx-sirio-accordion-panel", inputs: ["active", "disabled"], outputs: ["opened", "closed"] }, { kind: "component", type: SirioAccordionHeaderComponent, selector: "ngx-sirio-accordion-header" }, { kind: "component", type: SirioAccordionBodyComponent, selector: "ngx-sirio-accordion-body" }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioFileUploadComponent, selector: "ngx-sirio-file-upload", inputs: ["multiple", "color", "accept", "maxFiles", "showFilelist", "label", "labelPopover", "ariaLabelPopoverButton", "name", "textHelp", "textFeedback", "ariaLabel", "ariaLabelDeleteFileButton", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "fileUploadedEvent", "fileDeletedEvent", "uploadErrorEvent", "blurEvent"] }, { kind: "component", type: SirioToggleComponent, selector: "ngx-sirio-toggle", inputs: ["name", "textHelp", "textFeedback", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioChipCheckboxGroupComponent, selector: "ngx-sirio-chip-checkbox-group", inputs: ["label", "labelPopover", "ariaLabelPopoverButton", "textHelp", "textFeedback", "items", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioChipRadioGroupComponent, selector: "ngx-sirio-chip-radio-group", inputs: ["label", "labelPopover", "ariaLabelPopoverButton", "textHelp", "textFeedback", "items", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioInputChipComponent, selector: "ngx-sirio-input-chip", inputs: ["disabledState", "name", "textHelp", "textFeedback", "value", "ariaInvalid", "ariaDescribedBy", "type", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "ngmodule", type: SirioTableModule }, { kind: "component", type: SirioAlertComponent, selector: "ngx-sirio-alert", inputs: ["type", "labelClose", "isVisible"], outputs: ["closeEvent"] }, { kind: "component", type: SirioAlertMessageComponent, selector: "ngx-sirio-alert-message" }, { kind: "component", type: SirioSliderComponent, selector: "ngx-sirio-slider", inputs: ["disabledState", "value", "label", "labelPopover", "ariaLabelPopoverButton", "description", "min", "max", "ariaInvalid", "ariaDescribedBy", "textHelp", "textFeedback"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent"] }, { kind: "component", type: SirioNotifyComponent, selector: "ngx-sirio-notify", inputs: ["isDark"] }, { kind: "component", type: SirioNotifyBodyComponent, selector: "ngx-sirio-notify-body", inputs: ["title"] }, { kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }], encapsulation: i0.ViewEncapsulation.None });
2449
+ }
2450
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFieldsComponent, decorators: [{
2451
+ type: Component,
2452
+ args: [{ selector: 'app-dynamic-fields', standalone: true, imports: [CommonModule, ReactiveFormsModule,
2453
+ AdornerDirective, DisableDirective, DisplayDirective, FrameSecurityDirective,
2454
+ DropdownDirective, UpdateBlurDirective, RepeatDirective, TabDirective, GridDirective,
2455
+ RegisterDirective, AccordionDirective,
2456
+ SirioInputComponent, SirioValidationDirective,
2457
+ SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent,
2458
+ SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent,
2459
+ SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent,
2460
+ SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent,
2461
+ SirioButtonComponent, SirioFileUploadComponent,
2462
+ SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent,
2463
+ SirioTableModule, SirioTableComponent, SirioPaginatorComponent,
2464
+ SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent,
2465
+ SirioNotifyComponent, SirioNotifyBodyComponent, SirioNotifyActionComponent, SirioNotifyLinkComponent,
2466
+ AgGridAngular], providers: [
2467
+ RegisterService,
2468
+ ProgrammabilityService
2469
+ ], encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let row of rows\" [formGroup]=\"formGroup\">\r\n <div class=\"row field-set\">\r\n <ng-container *ngFor=\"let component of row.components\">\r\n <ng-container [ngSwitch]=\"component.type\">\r\n <div [formGroup]=\"formGroup\" [class]=\"getClass(component)\">\r\n <!-- #region textfield -->\r\n <ng-container *ngSwitchCase=\"'textfield'\">\r\n <ngx-sirio-input type=\"text\"\r\n ariaLabel=\"input\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textfield\r\n [register]=\"component\"\r\n [componentRef]=\"textfield\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region select -->\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ngx-sirio-select ariaLabel=\"select\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n dropdown\r\n #select\r\n [register]=\"component\"\r\n [componentRef]=\"select\">\r\n <ngx-sirio-select-panel ariaLabel=\"items\">\r\n <ngx-sirio-input *ngIf=\"component.searchable\" class=\"searchable\" type=\"text\" [placeholder]=\"Texts.TypeToSearch\"></ngx-sirio-input>\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ option.label }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region taglist -->\r\n <ng-container *ngSwitchCase=\"'taglist'\">\r\n <ngx-sirio-select ariaLabel=\"select\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [isMultiple]=\"true\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #taglist\r\n [register]=\"component\"\r\n [componentRef]=\"taglist\">\r\n <ngx-sirio-select-panel ariaLabel=\"items\">\r\n <ngx-sirio-select-option *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">{{ option.label }}</ngx-sirio-select-option>\r\n </ngx-sirio-select-panel>\r\n </ngx-sirio-select>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ngx-sirio-input type=\"number\"\r\n ariaLabel=\"input\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [prefixAdorner]=\"evaluateString(component.appearance?.prefixAdorner)\"\r\n [suffixAdorner]=\"evaluateString(component.appearance?.suffixAdorner)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #number\r\n [register]=\"component\"\r\n [componentRef]=\"number\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region datetime -->\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ngx-sirio-datepicker ariaLabel=\"date\"\r\n [label]=\"evaluateString(component.dateLabel)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #date\r\n [register]=\"component\"\r\n [componentRef]=\"date\">\r\n </ngx-sirio-datepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <ngx-sirio-timepicker ariaLabel=\"time\"\r\n [label]=\"evaluateString(component.timeLabel)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #time\r\n [register]=\"component\"\r\n [componentRef]=\"time\">\r\n </ngx-sirio-timepicker>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region toggle -->\r\n <ng-container *ngSwitchCase=\"'toggle'\">\r\n <ngx-sirio-toggle ariaLabel=\"checkbox\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #toggle\r\n [register]=\"component\"\r\n [componentRef]=\"toggle\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-toggle>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox ariaLabel=\"checkbox\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-checkbox>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-radio-group ariaLabel=\"radio\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #chipradio\r\n [register]=\"component\"\r\n [componentRef]=\"chipradio\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"radio\"\r\n [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-radio-group ariaLabel=\"radio\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #radio\r\n [register]=\"component\"\r\n [componentRef]=\"radio\">\r\n <ngx-sirio-radio-button *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-radio-button>\r\n </ngx-sirio-radio-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region checklist -->\r\n <ng-container *ngSwitchCase=\"'checklist'\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <!-- #region chip -->\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <ngx-sirio-chip-checkbox-group ariaLabel=\"checklist\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #chipcheckbox\r\n [register]=\"component\"\r\n [componentRef]=\"chipcheckbox\">\r\n <ngx-sirio-input-chip *ngFor=\"let option of (getValues(component) | async) || []\"\r\n type=\"checkbox\"\r\n [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-input-chip>\r\n </ngx-sirio-chip-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <ngx-sirio-checkbox-group ariaLabel=\"checklist\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #checkbox\r\n [register]=\"component\"\r\n [componentRef]=\"checkbox\">\r\n <ngx-sirio-checkbox *ngFor=\"let option of (getValues(component) | async) || []\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region textarea -->\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <ngx-sirio-input type=\"textarea\"\r\n ariaLabel=\"textarea\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [placeholder]=\"component.placeholder || ''\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [formControlName]=\"component.key\"\r\n updateBlur\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #textarea\r\n [register]=\"component\"\r\n [componentRef]=\"textarea\">\r\n </ngx-sirio-input>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region filepicker -->\r\n <ng-container *ngSwitchCase=\"'filepicker'\">\r\n <ngx-sirio-file-upload ariaLabel=\"filepicker\"\r\n [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [accept]=\"getMimeTypes(component.accept)\"\r\n [multiple]=\"evaluateBoolean(component.multiple)\"\r\n (fileUploadedEvent)=\"fileUploaded($event)\"\r\n [showFilelist]=\"!component.showDetails\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n #filepicker\r\n [register]=\"component\"\r\n [componentRef]=\"filepicker\">\r\n <span class=\"fas fa-arrow-up\" aria-hidden=\"true\"></span>\r\n {{ Texts.Upload }}\r\n </ngx-sirio-file-upload>\r\n <ng-container *ngIf=\"component.showDetails\">\r\n <app-dynamic-fields [formGroup]=\"formGroup\" [rows]=\"createUploadTables(component)\"></app-dynamic-fields>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div class=\"text-paragraph\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region html -->\r\n <ng-container *ngSwitchCase=\"'html'\">\r\n <div class=\"html-paragraph\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [innerHTML]=\"sanitize(evaluateTemplate(component.content))\"\r\n #html\r\n [register]=\"component\"\r\n [componentRef]=\"html\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img [src]=\"evaluateString(component.source)\"\r\n [alt]=\"evaluateString(component.alt)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n style=\"width: 100%;height: 100%;\"\r\n #image\r\n [register]=\"component\"\r\n [componentRef]=\"image\">\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region dynamiclist -->\r\n <ng-container *ngSwitchCase=\"'dynamiclist'\">\r\n <ng-container [formArrayName]=\"component.path\" [repeat]=\"evaluateNumber(component.repetitions)\">\r\n <ng-container [ngSwitch]=\"component.subtype\">\r\n <ng-container *ngIf=\"getFormArray(formGroup.get(component.path)).controls.length > 0\">\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclisttab\">\r\n <ngx-sirio-tab [leftArrowLabel]=\"Texts.ScrollLeft\"\r\n [rightArrowLabel]=\"Texts.ScrollRight\"\r\n [tabCount]=\"getFormArray(formGroup.get(component.path)).controls.length\"\r\n #dynamiclisttab>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-tab-item [label]=\"component.label + ' ' + (i + 1)\">\r\n <!--<ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item, index: i }\"></ng-container>-->\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <div [register]=\"component\"\r\n [componentRef]=\"dynamiclistaccordion\">\r\n <ngx-sirio-accordion [accordionCount]=\"getFormArray(formGroup.get(component.path)).controls.length\"\r\n #dynamiclistaccordion>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <ngx-sirio-accordion-panel>\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"component.label + ' ' + (i + 1)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\r\n <!--<ng-container *ngTemplateOutlet=\"itemTemplate; context: { item: item, index: i }\"></ng-container>-->\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ngx-sirio-accordion-body>\r\n </ngx-sirio-accordion-panel>\r\n </ng-container>\r\n </ngx-sirio-accordion>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region default -->\r\n <ng-container *ngSwitchDefault>\r\n <div [ngClass]=\"{'group-outline': component.showOutline === true}\"\r\n #dynamiclist\r\n [register]=\"component\"\r\n [componentRef]=\"dynamiclist\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <ng-container *ngFor=\"let item of getFormArray(formGroup.get(component.path)).controls; let i = index;\" [formGroupName]=\"i\">\r\n <div [ngClass]=\"{\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\">\r\n <div>\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(item)\" [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <div style=\"text-align:right\">\r\n <ngx-sirio-button (click)=\"removeItem(component, i)\" class=\"remove-item\" [color]=\"null\" icon=\"fas fa-trash\">{{ Texts.RemoveItem }}</ngx-sirio-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container> \r\n <ng-container *ngIf=\"component.allowAddRemove\">\r\n <ngx-sirio-button (click)=\"addNewItem(component)\" class=\"add-item\" [color]=\"null\" icon=\"fas fa-plus\">{{ Texts.AddItem }}</ngx-sirio-button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region group -->\r\n <ng-container *ngSwitchCase=\"'group'\">\r\n <div [ngClass]=\"{\r\n 'group-outline': component.showOutline === true,\r\n 'group-top': component.verticalAlignment === 'start',\r\n 'group-center': component.verticalAlignment === 'center',\r\n 'group-bottom': component.verticalAlignment === 'end'}\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <div #group\r\n [register]=\"component\"\r\n [componentRef]=\"group\">\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(getControlFromPath(component.path))\"\r\n [rows]=\"component.rows\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region table -->\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [gridOptions]=\"getGridOptions(component)\"\r\n [rowSource]=\"(getGridData(component) | async) || []\"\r\n [style.height.px]=\"component.height\"\r\n #table\r\n [register]=\"component\"\r\n [componentRef]=\"table\" />\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region button -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ngx-sirio-button (clickEvent)=\"clickButton(component, $event)\"\r\n [color]=\"evaluateColor(component.color)\"\r\n [icon]=\"evaluateString(component.icon)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [disabled]=\"evaluateBoolean(component.disabled)\"\r\n #button\r\n [register]=\"component\"\r\n [componentRef]=\"button\">\r\n {{ evaluateString(component.label) }}\r\n </ngx-sirio-button>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region separator -->\r\n <ng-container *ngSwitchCase=\"'separator'\">\r\n <div class=\"separator\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #separator\r\n [register]=\"component\"\r\n [componentRef]=\"separator\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region spacer -->\r\n <ng-container *ngSwitchCase=\"'spacer'\">\r\n <div style=\"width: 100%\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [style.height.px]=\"component.height\"\r\n #spacer\r\n [register]=\"component\"\r\n [componentRef]=\"spacer\">\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region iframe -->\r\n <ng-container *ngSwitchCase=\"'iframe'\">\r\n <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <label [for]=\"component.id\">{{ evaluateString(component.label) }}</label>\r\n <iframe [src]=\"evaluateUrl(component.url)\"\r\n [title]=\"evaluateString(component.label)\"\r\n [style.width]=\"'100%'\"\r\n [style.height.px]=\"component.height\"\r\n [frameSecurity]=\"component.security\"\r\n #iframe\r\n [register]=\"component\"\r\n [componentRef]=\"iframe\">\r\n </iframe>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region alert -->\r\n <ng-container *ngSwitchCase=\"'alert'\">\r\n <ngx-sirio-alert [type]=\"component.role\"\r\n [labelClose]=\"Texts.Close\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #alert\r\n [register]=\"component\"\r\n [componentRef]=\"alert\">\r\n <ngx-sirio-alert-message>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </ngx-sirio-alert-message>\r\n </ngx-sirio-alert>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region notice -->\r\n <ng-container *ngSwitchCase=\"'notice'\">\r\n <ngx-sirio-notify\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n #notice\r\n [register]=\"component\"\r\n [componentRef]=\"notice\">\r\n <ngx-sirio-notify-body [title]=\"evaluateString(component.title)\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </ngx-sirio-notify-body>\r\n </ngx-sirio-notify>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <ngx-sirio-slider [label]=\"evaluateString(component.label)\"\r\n [labelPopover]=\"evaluateString(component.tooltip)\"\r\n [textHelp]=\"evaluateString(component.description)\"\r\n [textFeedback]=\"getTextFeedback(component)\"\r\n [readonly]=\"evaluateBoolean(component.readonly)\"\r\n [disableControl]=\"evaluateBoolean(component.disabled)\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [formControlName]=\"component.key\"\r\n validation\r\n [canValidate]=\"true\"\r\n [isWarning]=\"isWarning(component)\"\r\n [showWhenValid]=\"false\"\r\n [min]=\"evaluateNumber(component.range?.min) ?? 0\"\r\n [max]=\"evaluateNumber(component.range?.max) ?? 0\"\r\n #range\r\n [register]=\"component\"\r\n [componentRef]=\"range\">\r\n </ngx-sirio-slider>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n", styles: [".field-set{align-items:center}.field-set>div{margin-top:10px;margin-bottom:10px}.separator{border-bottom:2px solid #d9e4f7;width:100%;margin:10px 0}.group-outline{border:1px solid #d9e4f7;padding:15px;margin-top:2px;margin-bottom:2px}.group-top .row{align-items:baseline}.group-center .row{align-items:center}.group-bottom .row{align-items:end}.text-paragraph p{margin-bottom:0!important}.sirio-control.ng-invalid .sirio-form-feedback{color:#aa224f;display:inline-block}.sirio-control.ng-invalid .sirio-input-group-text{color:#aa224f;border-color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]~label,.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label{color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]~label:before,.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label:before{border-color:#aa224f}.sirio-form-check.sirio-is-invalid input[type=checkbox]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label{color:#aa224f}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label:before,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label:before{border-color:#aa224f}.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid~label:after,.sirio-form-check.sirio-form-toggle input[type=checkbox].sirio-is-invalid:checked~label:after{background-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]~label,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label{color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]~label:before,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label:before{border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=checkbox]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=checkbox]+label{color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=checkbox]:checked+label{color:#fff;background-color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]~label,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label{color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]~label:before,.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label:before{border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-form-check input[type=radio]:checked~label:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath fill='%23AA224F' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/%3e%3c/svg%3e\");background-size:12px}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=radio]+label{color:#aa224f;border-color:#aa224f}.sirio-control.sirio-is-invalid fieldset .sirio-chip-selection input[type=radio]:checked+label{color:#fff;background-color:#aa224f;border-color:#aa224f}.sirio-upload.sirio-is-invalid button{background-color:#aa224f;border-color:#aa224f}.sirio-accordion .sirio-accordion-body .sirio-accordion-content{padding:16px}.ag-cell-value button.sirio-btn.sirio-btn-icon{padding:0}.sirio-tab.sirio-tab-scroll{display:block}.sirio-dropdown .searchable{position:absolute;width:100%;display:none;left:0}.ag-header-cell.hide-filter .ag-header-cell-filter-button{display:none}\n"] }]
2470
+ }], ctorParameters: () => [{ type: SanitizeService }, { type: MarkdownService }, { type: MimeService }, { type: ProgrammabilityService }, { type: EventService }, { type: FormatterService }, { type: WeakService }, { type: RegisterService }, { type: i0.ElementRef }], propDecorators: { rows: [{
2471
+ type: Input
2472
+ }], formGroup: [{
2473
+ type: Input
2474
+ }] } });
2475
+
2476
+ /// <reference path="../types/typings.d.ts" />
2477
+ class DynamicFormComponent {
2478
+ fb;
2479
+ programmabilityService;
2480
+ events;
2481
+ registerService;
2482
+ schema;
2483
+ formGroup;
2484
+ value = {};
2485
+ showNav = true;
2486
+ showNavButton = true;
2487
+ showProgress = false;
2488
+ progressStatus = true;
2489
+ valueChange = new EventEmitter();
2490
+ initialized = new EventEmitter();
2491
+ onCommand = new EventEmitter();
2492
+ activeNavChange = new EventEmitter();
2493
+ constructor(fb, programmabilityService, events, registerService) {
2494
+ this.fb = fb;
2495
+ this.programmabilityService = programmabilityService;
2496
+ this.events = events;
2497
+ this.registerService = registerService;
2498
+ }
2499
+ Texts = Texts;
2500
+ ngOnDestroy() {
2501
+ this.clearHandlers();
2502
+ }
2503
+ ngOnChanges(changes) {
2504
+ if (changes['schema']) {
2505
+ if (!this.formGroup) {
2506
+ this.formGroup = this.fb.group({});
2507
+ }
2508
+ this.clearControls();
2509
+ this.clearHandlers();
2510
+ const schema = changes['schema'].currentValue;
2511
+ this._forms = groupByRow(schema.forms ?? []);
2512
+ this.buildForm();
2513
+ if (this.value) {
2514
+ this.patchValue(this.formGroup, this.value);
2515
+ }
2516
+ if (this.initialized)
2517
+ this.initialized.emit(this.formGroup);
2518
+ this.registerHandlers();
2519
+ }
2520
+ }
2521
+ get forms() {
2522
+ return this._forms;
2523
+ }
2524
+ canPrevious() {
2525
+ return this.getPrevious() != -1;
2526
+ }
2527
+ goPrevious() {
2528
+ if (this.canPrevious()) {
2529
+ this.activeNav = this.getPrevious();
2530
+ }
2531
+ }
2532
+ canNext() {
2533
+ return this.getNext() != -1;
2534
+ }
2535
+ goNext() {
2536
+ if (this.canNext()) {
2537
+ this.activeNav = this.getNext();
2538
+ }
2539
+ }
2540
+ getControls() {
2541
+ return this.registerService.getControls();
2542
+ }
2543
+ getControl(name) {
2544
+ return this.registerService.getControl(name);
2545
+ }
2546
+ get activeNav() {
2547
+ return this._activeNav;
2548
+ }
2549
+ set activeNav(value) {
2550
+ if (value >= 0 && value < this.getMaxNav()) {
2551
+ this._activeNav = value;
2552
+ }
2553
+ setTimeout(() => {
2554
+ this.activeNavChange.emit(this._activeNav);
2555
+ });
2556
+ }
2557
+ getFormGroup(path) {
2558
+ const control = path ? this.formGroup.get(path) : this.formGroup;
2559
+ if (!(control instanceof FormGroup)) {
2560
+ throw new Error('Control is not a FormGroup');
2561
+ }
2562
+ return control;
2563
+ }
2564
+ getFormStatus(form) {
2565
+ const index = this._forms.findIndex(f => f.id === form.id);
2566
+ const current = index == this.activeNav;
2567
+ if (current) {
2568
+ return "active";
2569
+ }
2570
+ else if (this.progressStatus) {
2571
+ const formGroup = this.getFormGroup(form.path);
2572
+ return formGroup.valid ? "success" : "error";
2573
+ }
2574
+ else {
2575
+ return "active";
2576
+ }
2577
+ }
2578
+ activateForm(title) {
2579
+ const index = this.forms.findIndex(form => form.title === title);
2580
+ if (index != -1)
2581
+ this.activeNav = index;
2582
+ }
2583
+ valueChangesSubscription = null;
2584
+ onCommandSubscription = null;
2585
+ _forms = [];
2586
+ _activeNav = 0;
2587
+ getNext() {
2588
+ if (this.activeNav < this.getMaxNav() - 1) {
2589
+ return this.activeNav + 1;
2590
+ }
2591
+ else {
2592
+ return -1;
2593
+ }
2594
+ }
2595
+ getPrevious() {
2596
+ if (this.activeNav > 0) {
2597
+ return this.activeNav - 1;
2598
+ }
2599
+ else {
2600
+ return -1;
2601
+ }
2602
+ }
2603
+ getMaxNav() {
2604
+ return this._forms.length ?? 0;
2605
+ }
2606
+ ;
2607
+ clearControls() {
2608
+ Object.keys(this.formGroup.controls).forEach(key => {
2609
+ this.formGroup.removeControl(key);
2610
+ });
2611
+ }
2612
+ registerHandlers() {
2613
+ this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {
2614
+ this.valueChange.emit(value);
2615
+ });
2616
+ this.onCommandSubscription = this.events.onCommand.subscribe((data) => {
2617
+ if (this.onCommand)
2618
+ this.onCommand.emit(data);
2619
+ });
2620
+ }
2621
+ ;
2622
+ clearHandlers() {
2623
+ if (this.valueChangesSubscription) {
2624
+ this.valueChangesSubscription.unsubscribe();
2625
+ }
2626
+ if (this.onCommandSubscription) {
2627
+ this.onCommandSubscription.unsubscribe();
2628
+ }
2629
+ }
2630
+ buildForm() {
2631
+ this.forms.forEach((form) => {
2632
+ const currentGroup = this.applyPath(this.fb, this.formGroup, form.path);
2633
+ form.rows?.forEach((row) => {
2634
+ this.addControls(this.fb, currentGroup, row.components);
2635
+ });
2636
+ });
2637
+ }
2638
+ addControls(formBuilder, formGroup, components) {
2639
+ let formComponent = this;
2640
+ components?.forEach((component) => {
2641
+ if (this.isFormComponent(component)) {
2642
+ if (component.type === 'dynamiclist') {
2643
+ if (component.path) {
2644
+ let formArray = formBuilder.array([]);
2645
+ formGroup.addControl(component.path, formArray);
2646
+ formArray.addNewItem = function () {
2647
+ let newGroup = formBuilder.group({});
2648
+ component.rows?.forEach((row) => {
2649
+ formComponent.addControls(formBuilder, newGroup, row.components);
2650
+ });
2651
+ formArray.push(newGroup);
2652
+ return newGroup;
2653
+ };
2654
+ }
2655
+ }
2656
+ else if (component.type === 'group') {
2657
+ const currentGroup = this.applyPath(formBuilder, formGroup, component.path);
2658
+ component.rows?.forEach((row) => {
2659
+ formComponent.addControls(formBuilder, currentGroup, row.components);
2660
+ });
2661
+ }
2662
+ else if (component.key) {
2663
+ let defaultValue = this.getDefaultValue(component);
2664
+ const programmability = this.getValidators(formGroup, component);
2665
+ const options = {
2666
+ validators: programmability?.validators || [],
2667
+ updateOn: this.getUpdateOn(component) || "change"
2668
+ };
2669
+ const control = formBuilder.control(defaultValue, options);
2670
+ formGroup.addControl(component.key, control);
2671
+ programmability?.watch(control);
2672
+ if (component.type === 'number') {
2673
+ this.useNumber(control);
2674
+ }
2675
+ }
2676
+ }
2677
+ });
2678
+ }
2679
+ applyPath(formBuilder, formGroup, path) {
2680
+ if (!path) {
2681
+ return formGroup;
2682
+ }
2683
+ let currentGroup = formGroup;
2684
+ this.splitPath(path).forEach((segment) => {
2685
+ let newGroup = formBuilder.group({});
2686
+ currentGroup.addControl(segment, newGroup);
2687
+ currentGroup = newGroup;
2688
+ });
2689
+ return currentGroup;
2690
+ }
2691
+ getValidators(formGroup, component) {
2692
+ const validators = [];
2693
+ const noWatch = (control) => { };
2694
+ if (component?.validate?.required === true) {
2695
+ validators.push(Validators.required);
2696
+ }
2697
+ if (!Array.isArray(component.validations)) {
2698
+ if (validators.length == 0)
2699
+ return null;
2700
+ return { validators: validators, watch: noWatch };
2701
+ }
2702
+ component.validations?.forEach((item) => {
2703
+ if (!this.programmabilityService.isExpression(item.expression))
2704
+ return;
2705
+ if (item.type === "validate") {
2706
+ validators.push(this.validateFn(formGroup, item));
2707
+ }
2708
+ else if (item.type === "invalidate") {
2709
+ validators.push(this.invalidateFn(formGroup, item));
2710
+ }
2711
+ });
2712
+ if (validators.length == 0)
2713
+ return null;
2714
+ return {
2715
+ validators: validators,
2716
+ watch: (control) => {
2717
+ //let formGroup = control.parent as FormGroup;
2718
+ //this.watch(formGroup, Array.from(set), () => {
2719
+ // control.updateValueAndValidity();
2720
+ //});
2721
+ }
2722
+ };
2723
+ }
2724
+ validateFn(formGroup, item) {
2725
+ return (control) => {
2726
+ //if (!control.touched)
2727
+ // return null;
2728
+ var valid = this.programmabilityService.evaluateUnary(formGroup, item.expression, control.value);
2729
+ if (!valid) {
2730
+ return { error: true, message: item.message };
2731
+ }
2732
+ return null;
2733
+ };
2734
+ }
2735
+ invalidateFn(formGroup, item) {
2736
+ return (control) => {
2737
+ //if (!control.touched)
2738
+ // return null;
2739
+ var invalid = this.programmabilityService.evaluateUnary(formGroup, item.expression, control.value);
2740
+ if (invalid) {
2741
+ return { error: true, message: item.message };
2742
+ }
2743
+ return null;
2744
+ };
2745
+ }
2746
+ useNumber(formControl) {
2747
+ /* Required for Siro Input because the type number was not implemented correctly */
2748
+ formControl.valueChanges.subscribe(value => {
2749
+ const numericValue = value === '' ? null : parseFloat(value);
2750
+ if (numericValue === null || !isNaN(numericValue)) {
2751
+ formControl.setValue(numericValue, { emitEvent: false });
2752
+ }
2753
+ });
2754
+ }
2755
+ isFormComponent(component) {
2756
+ switch (component.type) {
2757
+ case "checkbox":
2758
+ case "checklist":
2759
+ case "datetime":
2760
+ case "dynamiclist":
2761
+ case "filepicker":
2762
+ case "group":
2763
+ case "number":
2764
+ case "radio":
2765
+ case "select":
2766
+ case "taglist":
2767
+ case "textarea":
2768
+ case "textfield":
2769
+ case "range":
2770
+ return true;
2771
+ default:
2772
+ return false;
2773
+ }
2774
+ }
2775
+ getUpdateOn(component) {
2776
+ switch (component.type) {
2777
+ case "number":
2778
+ case "textarea":
2779
+ case "textfield":
2780
+ return "blur";
2781
+ default:
2782
+ return null;
2783
+ }
2784
+ }
2785
+ getDefaultValue(component) {
2786
+ switch (component.type) {
2787
+ case "textarea":
2788
+ case "textfield":
2789
+ case "radio":
2790
+ case "select":
2791
+ return component.defaultValue;
2792
+ case "number":
2793
+ return component.defaultValue;
2794
+ case "checkbox":
2795
+ return component.defaultValue;
2796
+ default:
2797
+ return null;
2798
+ }
2799
+ }
2800
+ splitPath(path) {
2801
+ if (!path) {
2802
+ return [];
2803
+ }
2804
+ return path
2805
+ .split('.')
2806
+ .map(segment => segment.trim())
2807
+ .filter(segment => segment.length > 0);
2808
+ }
2809
+ patchValue(formGroup, value) {
2810
+ patchForm(formGroup, value);
2811
+ }
2812
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormComponent, deps: [{ token: i1$1.FormBuilder }, { token: ProgrammabilityService }, { token: EventService }, { token: RegisterService }], target: i0.ɵɵFactoryTarget.Component });
2813
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicFormComponent, isStandalone: true, selector: "app-dynamic-form", inputs: { schema: "schema", formGroup: "formGroup", value: "value", showNav: "showNav", showNavButton: "showNavButton", showProgress: "showProgress", progressStatus: "progressStatus", activeNav: "activeNav" }, outputs: { valueChange: "valueChange", initialized: "initialized", onCommand: "onCommand", activeNavChange: "activeNavChange" }, providers: [
2814
+ EventService, ProgrammabilityService, RegisterService
2815
+ ], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"ngs\">\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n\r\n <!-- #region progress -->\r\n <ngx-sirio-stepper-progress-bar *ngIf=\"showProgress\"\r\n (eventClick)=\"activateForm($event.data.label)\" \r\n [hasDropdown]=\"true\" \r\n [dropDownLabel]=\"Texts.Show\">\r\n <ngx-sirio-stepper-progress-item *ngFor=\"let form of forms\"\r\n [hasNavigation]=\"true\"\r\n [status]=\"getFormStatus(form)\"\r\n [label]=\"form.title\" />\r\n </ngx-sirio-stepper-progress-bar>\r\n <!-- #endregion -->\r\n\r\n <ng-container *ngIf=\"showNav\">\r\n\r\n <div class=\"col-md-4\">\r\n\r\n <!-- #region sidenav -->\r\n <ng-template #sidenavTemplate>\r\n <ngx-sirio-sidenav>\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == sectionIndex\" (click)=\"activeNav = sectionIndex\">\r\n {{ form.title }}\r\n </ngx-sirio-sidenav-item>\r\n </ng-container>\r\n </ngx-sirio-sidenav>\r\n </ng-template>\r\n\r\n <ngx-sirio-sidenav-mobile class=\"d-block d-lg-none\"\r\n openMenuLabel=\"Apri Menu\"\r\n openMenuAriaLabel=\"Apri Menu\"\r\n closeMenuLabel=\"Chiudi Menu\"\r\n closeMenuAriaLabel=\"Chiudi Menu\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </ngx-sirio-sidenav-mobile>\r\n <div class=\"d-none d-lg-block\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n </div>\r\n\r\n <div class=\"col-md-1\">\r\n <div class=\"separator-horizontal\"></div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div class=\"content-element-form\" [ngClass]=\"showNav ? 'col-md-11' : 'col-md-16'\">\r\n\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <div *ngIf=\"activeNav == sectionIndex\"\r\n #default\r\n [register]=\"form\"\r\n [componentRef]=\"default\">\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(form.path)\" [rows]=\"form.rows\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showNavButton\">\r\n\r\n <div class=\"row section-navs\">\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" [disabled]=\"!canNext()\" (click)=\"goNext()\" class=\"nextSection\">\r\n {{ Texts.NextSection }}\r\n <span class=\"fa-solid fa-chevron-right\" style=\"margin-left: 10px\"></span>\r\n </ngx-sirio-button>\r\n </div>\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" [disabled]=\"!canPrevious()\" (click)=\"goPrevious()\" class=\"prevSection\">\r\n <span class=\"fa-solid fa-chevron-left\" style=\"margin-right: 10px\"></span>\r\n {{ Texts.PreviousSection }}\r\n </ngx-sirio-button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</form>\r\n\r\n\r\n\r\n", styles: [".ngs .container,.ngs .container-fluid,.ngs .container-xxl,.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm{--ngsgutter-x: 1.5rem;--ngsgutter-y: 0;width:100%;padding-right:calc(var(--ngsgutter-x) * .5);padding-left:calc(var(--ngsgutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.ngs .container-sm,.ngs .container{max-width:540px}}@media (min-width: 768px){.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:720px}}@media (min-width: 992px){.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:960px}}@media (min-width: 1200px){.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:1140px}}@media (min-width: 1400px){.ngs .container-xxl,.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:1320px}}.ngs :root{--ngsbreakpoint-xs: 0;--ngsbreakpoint-sm: 576px;--ngsbreakpoint-md: 768px;--ngsbreakpoint-lg: 992px;--ngsbreakpoint-xl: 1200px;--ngsbreakpoint-xxl: 1400px}.ngs .row{--ngsgutter-x: 1.5rem;--ngsgutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--ngsgutter-y));margin-right:calc(-.5 * var(--ngsgutter-x));margin-left:calc(-.5 * var(--ngsgutter-x))}.ngs .row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--ngsgutter-x) * .5);padding-left:calc(var(--ngsgutter-x) * .5);margin-top:var(--ngsgutter-y)}.ngs .col{flex:1 0 0%}.ngs .row-cols-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-auto{flex:0 0 auto;width:auto}.ngs .col-1{flex:0 0 auto;width:6.25%}.ngs .col-2{flex:0 0 auto;width:12.5%}.ngs .col-3{flex:0 0 auto;width:18.75%}.ngs .col-4{flex:0 0 auto;width:25%}.ngs .col-5{flex:0 0 auto;width:31.25%}.ngs .col-6{flex:0 0 auto;width:37.5%}.ngs .col-7{flex:0 0 auto;width:43.75%}.ngs .col-8{flex:0 0 auto;width:50%}.ngs .col-9{flex:0 0 auto;width:56.25%}.ngs .col-10{flex:0 0 auto;width:62.5%}.ngs .col-11{flex:0 0 auto;width:68.75%}.ngs .col-12{flex:0 0 auto;width:75%}.ngs .col-13{flex:0 0 auto;width:81.25%}.ngs .col-14{flex:0 0 auto;width:87.5%}.ngs .col-15{flex:0 0 auto;width:93.75%}.ngs .col-16{flex:0 0 auto;width:100%}.ngs .offset-1{margin-left:6.25%}.ngs .offset-2{margin-left:12.5%}.ngs .offset-3{margin-left:18.75%}.ngs .offset-4{margin-left:25%}.ngs .offset-5{margin-left:31.25%}.ngs .offset-6{margin-left:37.5%}.ngs .offset-7{margin-left:43.75%}.ngs .offset-8{margin-left:50%}.ngs .offset-9{margin-left:56.25%}.ngs .offset-10{margin-left:62.5%}.ngs .offset-11{margin-left:68.75%}.ngs .offset-12{margin-left:75%}.ngs .offset-13{margin-left:81.25%}.ngs .offset-14{margin-left:87.5%}.ngs .offset-15{margin-left:93.75%}.ngs .g-0,.ngs .gx-0{--ngsgutter-x: 0}.ngs .g-0,.ngs .gy-0{--ngsgutter-y: 0}.ngs .g-1,.ngs .gx-1{--ngsgutter-x: .25rem}.ngs .g-1,.ngs .gy-1{--ngsgutter-y: .25rem}.ngs .g-2,.ngs .gx-2{--ngsgutter-x: .5rem}.ngs .g-2,.ngs .gy-2{--ngsgutter-y: .5rem}.ngs .g-3,.ngs .gx-3{--ngsgutter-x: 1rem}.ngs .g-3,.ngs .gy-3{--ngsgutter-y: 1rem}.ngs .g-4,.ngs .gx-4{--ngsgutter-x: 1.5rem}.ngs .g-4,.ngs .gy-4{--ngsgutter-y: 1.5rem}.ngs .g-5,.ngs .gx-5{--ngsgutter-x: 3rem}.ngs .g-5,.ngs .gy-5{--ngsgutter-y: 3rem}@media (min-width: 576px){.ngs .col-sm{flex:1 0 0%}.ngs .row-cols-sm-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-sm-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-sm-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-sm-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-sm-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-sm-auto{flex:0 0 auto;width:auto}.ngs .col-sm-1{flex:0 0 auto;width:6.25%}.ngs .col-sm-2{flex:0 0 auto;width:12.5%}.ngs .col-sm-3{flex:0 0 auto;width:18.75%}.ngs .col-sm-4{flex:0 0 auto;width:25%}.ngs .col-sm-5{flex:0 0 auto;width:31.25%}.ngs .col-sm-6{flex:0 0 auto;width:37.5%}.ngs .col-sm-7{flex:0 0 auto;width:43.75%}.ngs .col-sm-8{flex:0 0 auto;width:50%}.ngs .col-sm-9{flex:0 0 auto;width:56.25%}.ngs .col-sm-10{flex:0 0 auto;width:62.5%}.ngs .col-sm-11{flex:0 0 auto;width:68.75%}.ngs .col-sm-12{flex:0 0 auto;width:75%}.ngs .col-sm-13{flex:0 0 auto;width:81.25%}.ngs .col-sm-14{flex:0 0 auto;width:87.5%}.ngs .col-sm-15{flex:0 0 auto;width:93.75%}.ngs .col-sm-16{flex:0 0 auto;width:100%}.ngs .offset-sm-0{margin-left:0}.ngs .offset-sm-1{margin-left:6.25%}.ngs .offset-sm-2{margin-left:12.5%}.ngs .offset-sm-3{margin-left:18.75%}.ngs .offset-sm-4{margin-left:25%}.ngs .offset-sm-5{margin-left:31.25%}.ngs .offset-sm-6{margin-left:37.5%}.ngs .offset-sm-7{margin-left:43.75%}.ngs .offset-sm-8{margin-left:50%}.ngs .offset-sm-9{margin-left:56.25%}.ngs .offset-sm-10{margin-left:62.5%}.ngs .offset-sm-11{margin-left:68.75%}.ngs .offset-sm-12{margin-left:75%}.ngs .offset-sm-13{margin-left:81.25%}.ngs .offset-sm-14{margin-left:87.5%}.ngs .offset-sm-15{margin-left:93.75%}.ngs .g-sm-0,.ngs .gx-sm-0{--ngsgutter-x: 0}.ngs .g-sm-0,.ngs .gy-sm-0{--ngsgutter-y: 0}.ngs .g-sm-1,.ngs .gx-sm-1{--ngsgutter-x: .25rem}.ngs .g-sm-1,.ngs .gy-sm-1{--ngsgutter-y: .25rem}.ngs .g-sm-2,.ngs .gx-sm-2{--ngsgutter-x: .5rem}.ngs .g-sm-2,.ngs .gy-sm-2{--ngsgutter-y: .5rem}.ngs .g-sm-3,.ngs .gx-sm-3{--ngsgutter-x: 1rem}.ngs .g-sm-3,.ngs .gy-sm-3{--ngsgutter-y: 1rem}.ngs .g-sm-4,.ngs .gx-sm-4{--ngsgutter-x: 1.5rem}.ngs .g-sm-4,.ngs .gy-sm-4{--ngsgutter-y: 1.5rem}.ngs .g-sm-5,.ngs .gx-sm-5{--ngsgutter-x: 3rem}.ngs .g-sm-5,.ngs .gy-sm-5{--ngsgutter-y: 3rem}}@media (min-width: 768px){.ngs .col-md{flex:1 0 0%}.ngs .row-cols-md-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-md-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-md-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-md-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-md-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-md-auto{flex:0 0 auto;width:auto}.ngs .col-md-1{flex:0 0 auto;width:6.25%}.ngs .col-md-2{flex:0 0 auto;width:12.5%}.ngs .col-md-3{flex:0 0 auto;width:18.75%}.ngs .col-md-4{flex:0 0 auto;width:25%}.ngs .col-md-5{flex:0 0 auto;width:31.25%}.ngs .col-md-6{flex:0 0 auto;width:37.5%}.ngs .col-md-7{flex:0 0 auto;width:43.75%}.ngs .col-md-8{flex:0 0 auto;width:50%}.ngs .col-md-9{flex:0 0 auto;width:56.25%}.ngs .col-md-10{flex:0 0 auto;width:62.5%}.ngs .col-md-11{flex:0 0 auto;width:68.75%}.ngs .col-md-12{flex:0 0 auto;width:75%}.ngs .col-md-13{flex:0 0 auto;width:81.25%}.ngs .col-md-14{flex:0 0 auto;width:87.5%}.ngs .col-md-15{flex:0 0 auto;width:93.75%}.ngs .col-md-16{flex:0 0 auto;width:100%}.ngs .offset-md-0{margin-left:0}.ngs .offset-md-1{margin-left:6.25%}.ngs .offset-md-2{margin-left:12.5%}.ngs .offset-md-3{margin-left:18.75%}.ngs .offset-md-4{margin-left:25%}.ngs .offset-md-5{margin-left:31.25%}.ngs .offset-md-6{margin-left:37.5%}.ngs .offset-md-7{margin-left:43.75%}.ngs .offset-md-8{margin-left:50%}.ngs .offset-md-9{margin-left:56.25%}.ngs .offset-md-10{margin-left:62.5%}.ngs .offset-md-11{margin-left:68.75%}.ngs .offset-md-12{margin-left:75%}.ngs .offset-md-13{margin-left:81.25%}.ngs .offset-md-14{margin-left:87.5%}.ngs .offset-md-15{margin-left:93.75%}.ngs .g-md-0,.ngs .gx-md-0{--ngsgutter-x: 0}.ngs .g-md-0,.ngs .gy-md-0{--ngsgutter-y: 0}.ngs .g-md-1,.ngs .gx-md-1{--ngsgutter-x: .25rem}.ngs .g-md-1,.ngs .gy-md-1{--ngsgutter-y: .25rem}.ngs .g-md-2,.ngs .gx-md-2{--ngsgutter-x: .5rem}.ngs .g-md-2,.ngs .gy-md-2{--ngsgutter-y: .5rem}.ngs .g-md-3,.ngs .gx-md-3{--ngsgutter-x: 1rem}.ngs .g-md-3,.ngs .gy-md-3{--ngsgutter-y: 1rem}.ngs .g-md-4,.ngs .gx-md-4{--ngsgutter-x: 1.5rem}.ngs .g-md-4,.ngs .gy-md-4{--ngsgutter-y: 1.5rem}.ngs .g-md-5,.ngs .gx-md-5{--ngsgutter-x: 3rem}.ngs .g-md-5,.ngs .gy-md-5{--ngsgutter-y: 3rem}}@media (min-width: 992px){.ngs .col-lg{flex:1 0 0%}.ngs .row-cols-lg-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-lg-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-lg-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-lg-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-lg-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-lg-auto{flex:0 0 auto;width:auto}.ngs .col-lg-1{flex:0 0 auto;width:6.25%}.ngs .col-lg-2{flex:0 0 auto;width:12.5%}.ngs .col-lg-3{flex:0 0 auto;width:18.75%}.ngs .col-lg-4{flex:0 0 auto;width:25%}.ngs .col-lg-5{flex:0 0 auto;width:31.25%}.ngs .col-lg-6{flex:0 0 auto;width:37.5%}.ngs .col-lg-7{flex:0 0 auto;width:43.75%}.ngs .col-lg-8{flex:0 0 auto;width:50%}.ngs .col-lg-9{flex:0 0 auto;width:56.25%}.ngs .col-lg-10{flex:0 0 auto;width:62.5%}.ngs .col-lg-11{flex:0 0 auto;width:68.75%}.ngs .col-lg-12{flex:0 0 auto;width:75%}.ngs .col-lg-13{flex:0 0 auto;width:81.25%}.ngs .col-lg-14{flex:0 0 auto;width:87.5%}.ngs .col-lg-15{flex:0 0 auto;width:93.75%}.ngs .col-lg-16{flex:0 0 auto;width:100%}.ngs .offset-lg-0{margin-left:0}.ngs .offset-lg-1{margin-left:6.25%}.ngs .offset-lg-2{margin-left:12.5%}.ngs .offset-lg-3{margin-left:18.75%}.ngs .offset-lg-4{margin-left:25%}.ngs .offset-lg-5{margin-left:31.25%}.ngs .offset-lg-6{margin-left:37.5%}.ngs .offset-lg-7{margin-left:43.75%}.ngs .offset-lg-8{margin-left:50%}.ngs .offset-lg-9{margin-left:56.25%}.ngs .offset-lg-10{margin-left:62.5%}.ngs .offset-lg-11{margin-left:68.75%}.ngs .offset-lg-12{margin-left:75%}.ngs .offset-lg-13{margin-left:81.25%}.ngs .offset-lg-14{margin-left:87.5%}.ngs .offset-lg-15{margin-left:93.75%}.ngs .g-lg-0,.ngs .gx-lg-0{--ngsgutter-x: 0}.ngs .g-lg-0,.ngs .gy-lg-0{--ngsgutter-y: 0}.ngs .g-lg-1,.ngs .gx-lg-1{--ngsgutter-x: .25rem}.ngs .g-lg-1,.ngs .gy-lg-1{--ngsgutter-y: .25rem}.ngs .g-lg-2,.ngs .gx-lg-2{--ngsgutter-x: .5rem}.ngs .g-lg-2,.ngs .gy-lg-2{--ngsgutter-y: .5rem}.ngs .g-lg-3,.ngs .gx-lg-3{--ngsgutter-x: 1rem}.ngs .g-lg-3,.ngs .gy-lg-3{--ngsgutter-y: 1rem}.ngs .g-lg-4,.ngs .gx-lg-4{--ngsgutter-x: 1.5rem}.ngs .g-lg-4,.ngs .gy-lg-4{--ngsgutter-y: 1.5rem}.ngs .g-lg-5,.ngs .gx-lg-5{--ngsgutter-x: 3rem}.ngs .g-lg-5,.ngs .gy-lg-5{--ngsgutter-y: 3rem}}@media (min-width: 1200px){.ngs .col-xl{flex:1 0 0%}.ngs .row-cols-xl-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-xl-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-xl-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-xl-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-xl-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-xl-auto{flex:0 0 auto;width:auto}.ngs .col-xl-1{flex:0 0 auto;width:6.25%}.ngs .col-xl-2{flex:0 0 auto;width:12.5%}.ngs .col-xl-3{flex:0 0 auto;width:18.75%}.ngs .col-xl-4{flex:0 0 auto;width:25%}.ngs .col-xl-5{flex:0 0 auto;width:31.25%}.ngs .col-xl-6{flex:0 0 auto;width:37.5%}.ngs .col-xl-7{flex:0 0 auto;width:43.75%}.ngs .col-xl-8{flex:0 0 auto;width:50%}.ngs .col-xl-9{flex:0 0 auto;width:56.25%}.ngs .col-xl-10{flex:0 0 auto;width:62.5%}.ngs .col-xl-11{flex:0 0 auto;width:68.75%}.ngs .col-xl-12{flex:0 0 auto;width:75%}.ngs .col-xl-13{flex:0 0 auto;width:81.25%}.ngs .col-xl-14{flex:0 0 auto;width:87.5%}.ngs .col-xl-15{flex:0 0 auto;width:93.75%}.ngs .col-xl-16{flex:0 0 auto;width:100%}.ngs .offset-xl-0{margin-left:0}.ngs .offset-xl-1{margin-left:6.25%}.ngs .offset-xl-2{margin-left:12.5%}.ngs .offset-xl-3{margin-left:18.75%}.ngs .offset-xl-4{margin-left:25%}.ngs .offset-xl-5{margin-left:31.25%}.ngs .offset-xl-6{margin-left:37.5%}.ngs .offset-xl-7{margin-left:43.75%}.ngs .offset-xl-8{margin-left:50%}.ngs .offset-xl-9{margin-left:56.25%}.ngs .offset-xl-10{margin-left:62.5%}.ngs .offset-xl-11{margin-left:68.75%}.ngs .offset-xl-12{margin-left:75%}.ngs .offset-xl-13{margin-left:81.25%}.ngs .offset-xl-14{margin-left:87.5%}.ngs .offset-xl-15{margin-left:93.75%}.ngs .g-xl-0,.ngs .gx-xl-0{--ngsgutter-x: 0}.ngs .g-xl-0,.ngs .gy-xl-0{--ngsgutter-y: 0}.ngs .g-xl-1,.ngs .gx-xl-1{--ngsgutter-x: .25rem}.ngs .g-xl-1,.ngs .gy-xl-1{--ngsgutter-y: .25rem}.ngs .g-xl-2,.ngs .gx-xl-2{--ngsgutter-x: .5rem}.ngs .g-xl-2,.ngs .gy-xl-2{--ngsgutter-y: .5rem}.ngs .g-xl-3,.ngs .gx-xl-3{--ngsgutter-x: 1rem}.ngs .g-xl-3,.ngs .gy-xl-3{--ngsgutter-y: 1rem}.ngs .g-xl-4,.ngs .gx-xl-4{--ngsgutter-x: 1.5rem}.ngs .g-xl-4,.ngs .gy-xl-4{--ngsgutter-y: 1.5rem}.ngs .g-xl-5,.ngs .gx-xl-5{--ngsgutter-x: 3rem}.ngs .g-xl-5,.ngs .gy-xl-5{--ngsgutter-y: 3rem}}@media (min-width: 1400px){.ngs .col-xxl{flex:1 0 0%}.ngs .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-xxl-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-xxl-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-xxl-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-xxl-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-xxl-auto{flex:0 0 auto;width:auto}.ngs .col-xxl-1{flex:0 0 auto;width:6.25%}.ngs .col-xxl-2{flex:0 0 auto;width:12.5%}.ngs .col-xxl-3{flex:0 0 auto;width:18.75%}.ngs .col-xxl-4{flex:0 0 auto;width:25%}.ngs .col-xxl-5{flex:0 0 auto;width:31.25%}.ngs .col-xxl-6{flex:0 0 auto;width:37.5%}.ngs .col-xxl-7{flex:0 0 auto;width:43.75%}.ngs .col-xxl-8{flex:0 0 auto;width:50%}.ngs .col-xxl-9{flex:0 0 auto;width:56.25%}.ngs .col-xxl-10{flex:0 0 auto;width:62.5%}.ngs .col-xxl-11{flex:0 0 auto;width:68.75%}.ngs .col-xxl-12{flex:0 0 auto;width:75%}.ngs .col-xxl-13{flex:0 0 auto;width:81.25%}.ngs .col-xxl-14{flex:0 0 auto;width:87.5%}.ngs .col-xxl-15{flex:0 0 auto;width:93.75%}.ngs .col-xxl-16{flex:0 0 auto;width:100%}.ngs .offset-xxl-0{margin-left:0}.ngs .offset-xxl-1{margin-left:6.25%}.ngs .offset-xxl-2{margin-left:12.5%}.ngs .offset-xxl-3{margin-left:18.75%}.ngs .offset-xxl-4{margin-left:25%}.ngs .offset-xxl-5{margin-left:31.25%}.ngs .offset-xxl-6{margin-left:37.5%}.ngs .offset-xxl-7{margin-left:43.75%}.ngs .offset-xxl-8{margin-left:50%}.ngs .offset-xxl-9{margin-left:56.25%}.ngs .offset-xxl-10{margin-left:62.5%}.ngs .offset-xxl-11{margin-left:68.75%}.ngs .offset-xxl-12{margin-left:75%}.ngs .offset-xxl-13{margin-left:81.25%}.ngs .offset-xxl-14{margin-left:87.5%}.ngs .offset-xxl-15{margin-left:93.75%}.ngs .g-xxl-0,.ngs .gx-xxl-0{--ngsgutter-x: 0}.ngs .g-xxl-0,.ngs .gy-xxl-0{--ngsgutter-y: 0}.ngs .g-xxl-1,.ngs .gx-xxl-1{--ngsgutter-x: .25rem}.ngs .g-xxl-1,.ngs .gy-xxl-1{--ngsgutter-y: .25rem}.ngs .g-xxl-2,.ngs .gx-xxl-2{--ngsgutter-x: .5rem}.ngs .g-xxl-2,.ngs .gy-xxl-2{--ngsgutter-y: .5rem}.ngs .g-xxl-3,.ngs .gx-xxl-3{--ngsgutter-x: 1rem}.ngs .g-xxl-3,.ngs .gy-xxl-3{--ngsgutter-y: 1rem}.ngs .g-xxl-4,.ngs .gx-xxl-4{--ngsgutter-x: 1.5rem}.ngs .g-xxl-4,.ngs .gy-xxl-4{--ngsgutter-y: 1.5rem}.ngs .g-xxl-5,.ngs .gx-xxl-5{--ngsgutter-x: 3rem}.ngs .g-xxl-5,.ngs .gy-xxl-5{--ngsgutter-y: 3rem}}.ngs .d-inline{display:inline!important}.ngs .d-inline-block{display:inline-block!important}.ngs .d-block{display:block!important}.ngs .d-grid{display:grid!important}.ngs .d-inline-grid{display:inline-grid!important}.ngs .d-table{display:table!important}.ngs .d-table-row{display:table-row!important}.ngs .d-table-cell{display:table-cell!important}.ngs .d-flex{display:flex!important}.ngs .d-inline-flex{display:inline-flex!important}.ngs .d-none{display:none!important}.ngs .flex-fill{flex:1 1 auto!important}.ngs .flex-row{flex-direction:row!important}.ngs .flex-column{flex-direction:column!important}.ngs .flex-row-reverse{flex-direction:row-reverse!important}.ngs .flex-column-reverse{flex-direction:column-reverse!important}.ngs .flex-grow-0{flex-grow:0!important}.ngs .flex-grow-1{flex-grow:1!important}.ngs .flex-shrink-0{flex-shrink:0!important}.ngs .flex-shrink-1{flex-shrink:1!important}.ngs .flex-wrap{flex-wrap:wrap!important}.ngs .flex-nowrap{flex-wrap:nowrap!important}.ngs .flex-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-start{justify-content:flex-start!important}.ngs .justify-content-end{justify-content:flex-end!important}.ngs .justify-content-center{justify-content:center!important}.ngs .justify-content-between{justify-content:space-between!important}.ngs .justify-content-around{justify-content:space-around!important}.ngs .justify-content-evenly{justify-content:space-evenly!important}.ngs .align-items-start{align-items:flex-start!important}.ngs .align-items-end{align-items:flex-end!important}.ngs .align-items-center{align-items:center!important}.ngs .align-items-baseline{align-items:baseline!important}.ngs .align-items-stretch{align-items:stretch!important}.ngs .align-content-start{align-content:flex-start!important}.ngs .align-content-end{align-content:flex-end!important}.ngs .align-content-center{align-content:center!important}.ngs .align-content-between{align-content:space-between!important}.ngs .align-content-around{align-content:space-around!important}.ngs .align-content-stretch{align-content:stretch!important}.ngs .align-self-auto{align-self:auto!important}.ngs .align-self-start{align-self:flex-start!important}.ngs .align-self-end{align-self:flex-end!important}.ngs .align-self-center{align-self:center!important}.ngs .align-self-baseline{align-self:baseline!important}.ngs .align-self-stretch{align-self:stretch!important}.ngs .order-first{order:-1!important}.ngs .order-0{order:0!important}.ngs .order-1{order:1!important}.ngs .order-2{order:2!important}.ngs .order-3{order:3!important}.ngs .order-4{order:4!important}.ngs .order-5{order:5!important}.ngs .order-last{order:6!important}.ngs .m-0{margin:0!important}.ngs .m-1{margin:.25rem!important}.ngs .m-2{margin:.5rem!important}.ngs .m-3{margin:1rem!important}.ngs .m-4{margin:1.5rem!important}.ngs .m-5{margin:3rem!important}.ngs .m-auto{margin:auto!important}.ngs .mx-0{margin-right:0!important;margin-left:0!important}.ngs .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-0{margin-top:0!important}.ngs .mt-1{margin-top:.25rem!important}.ngs .mt-2{margin-top:.5rem!important}.ngs .mt-3{margin-top:1rem!important}.ngs .mt-4{margin-top:1.5rem!important}.ngs .mt-5{margin-top:3rem!important}.ngs .mt-auto{margin-top:auto!important}.ngs .me-0{margin-right:0!important}.ngs .me-1{margin-right:.25rem!important}.ngs .me-2{margin-right:.5rem!important}.ngs .me-3{margin-right:1rem!important}.ngs .me-4{margin-right:1.5rem!important}.ngs .me-5{margin-right:3rem!important}.ngs .me-auto{margin-right:auto!important}.ngs .mb-0{margin-bottom:0!important}.ngs .mb-1{margin-bottom:.25rem!important}.ngs .mb-2{margin-bottom:.5rem!important}.ngs .mb-3{margin-bottom:1rem!important}.ngs .mb-4{margin-bottom:1.5rem!important}.ngs .mb-5{margin-bottom:3rem!important}.ngs .mb-auto{margin-bottom:auto!important}.ngs .ms-0{margin-left:0!important}.ngs .ms-1{margin-left:.25rem!important}.ngs .ms-2{margin-left:.5rem!important}.ngs .ms-3{margin-left:1rem!important}.ngs .ms-4{margin-left:1.5rem!important}.ngs .ms-5{margin-left:3rem!important}.ngs .ms-auto{margin-left:auto!important}.ngs .p-0{padding:0!important}.ngs .p-1{padding:.25rem!important}.ngs .p-2{padding:.5rem!important}.ngs .p-3{padding:1rem!important}.ngs .p-4{padding:1.5rem!important}.ngs .p-5{padding:3rem!important}.ngs .px-0{padding-right:0!important;padding-left:0!important}.ngs .px-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-0{padding-top:0!important}.ngs .pt-1{padding-top:.25rem!important}.ngs .pt-2{padding-top:.5rem!important}.ngs .pt-3{padding-top:1rem!important}.ngs .pt-4{padding-top:1.5rem!important}.ngs .pt-5{padding-top:3rem!important}.ngs .pe-0{padding-right:0!important}.ngs .pe-1{padding-right:.25rem!important}.ngs .pe-2{padding-right:.5rem!important}.ngs .pe-3{padding-right:1rem!important}.ngs .pe-4{padding-right:1.5rem!important}.ngs .pe-5{padding-right:3rem!important}.ngs .pb-0{padding-bottom:0!important}.ngs .pb-1{padding-bottom:.25rem!important}.ngs .pb-2{padding-bottom:.5rem!important}.ngs .pb-3{padding-bottom:1rem!important}.ngs .pb-4{padding-bottom:1.5rem!important}.ngs .pb-5{padding-bottom:3rem!important}.ngs .ps-0{padding-left:0!important}.ngs .ps-1{padding-left:.25rem!important}.ngs .ps-2{padding-left:.5rem!important}.ngs .ps-3{padding-left:1rem!important}.ngs .ps-4{padding-left:1.5rem!important}.ngs .ps-5{padding-left:3rem!important}@media (min-width: 576px){.ngs .d-sm-inline{display:inline!important}.ngs .d-sm-inline-block{display:inline-block!important}.ngs .d-sm-block{display:block!important}.ngs .d-sm-grid{display:grid!important}.ngs .d-sm-inline-grid{display:inline-grid!important}.ngs .d-sm-table{display:table!important}.ngs .d-sm-table-row{display:table-row!important}.ngs .d-sm-table-cell{display:table-cell!important}.ngs .d-sm-flex{display:flex!important}.ngs .d-sm-inline-flex{display:inline-flex!important}.ngs .d-sm-none{display:none!important}.ngs .flex-sm-fill{flex:1 1 auto!important}.ngs .flex-sm-row{flex-direction:row!important}.ngs .flex-sm-column{flex-direction:column!important}.ngs .flex-sm-row-reverse{flex-direction:row-reverse!important}.ngs .flex-sm-column-reverse{flex-direction:column-reverse!important}.ngs .flex-sm-grow-0{flex-grow:0!important}.ngs .flex-sm-grow-1{flex-grow:1!important}.ngs .flex-sm-shrink-0{flex-shrink:0!important}.ngs .flex-sm-shrink-1{flex-shrink:1!important}.ngs .flex-sm-wrap{flex-wrap:wrap!important}.ngs .flex-sm-nowrap{flex-wrap:nowrap!important}.ngs .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-sm-start{justify-content:flex-start!important}.ngs .justify-content-sm-end{justify-content:flex-end!important}.ngs .justify-content-sm-center{justify-content:center!important}.ngs .justify-content-sm-between{justify-content:space-between!important}.ngs .justify-content-sm-around{justify-content:space-around!important}.ngs .justify-content-sm-evenly{justify-content:space-evenly!important}.ngs .align-items-sm-start{align-items:flex-start!important}.ngs .align-items-sm-end{align-items:flex-end!important}.ngs .align-items-sm-center{align-items:center!important}.ngs .align-items-sm-baseline{align-items:baseline!important}.ngs .align-items-sm-stretch{align-items:stretch!important}.ngs .align-content-sm-start{align-content:flex-start!important}.ngs .align-content-sm-end{align-content:flex-end!important}.ngs .align-content-sm-center{align-content:center!important}.ngs .align-content-sm-between{align-content:space-between!important}.ngs .align-content-sm-around{align-content:space-around!important}.ngs .align-content-sm-stretch{align-content:stretch!important}.ngs .align-self-sm-auto{align-self:auto!important}.ngs .align-self-sm-start{align-self:flex-start!important}.ngs .align-self-sm-end{align-self:flex-end!important}.ngs .align-self-sm-center{align-self:center!important}.ngs .align-self-sm-baseline{align-self:baseline!important}.ngs .align-self-sm-stretch{align-self:stretch!important}.ngs .order-sm-first{order:-1!important}.ngs .order-sm-0{order:0!important}.ngs .order-sm-1{order:1!important}.ngs .order-sm-2{order:2!important}.ngs .order-sm-3{order:3!important}.ngs .order-sm-4{order:4!important}.ngs .order-sm-5{order:5!important}.ngs .order-sm-last{order:6!important}.ngs .m-sm-0{margin:0!important}.ngs .m-sm-1{margin:.25rem!important}.ngs .m-sm-2{margin:.5rem!important}.ngs .m-sm-3{margin:1rem!important}.ngs .m-sm-4{margin:1.5rem!important}.ngs .m-sm-5{margin:3rem!important}.ngs .m-sm-auto{margin:auto!important}.ngs .mx-sm-0{margin-right:0!important;margin-left:0!important}.ngs .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-sm-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-sm-0{margin-top:0!important}.ngs .mt-sm-1{margin-top:.25rem!important}.ngs .mt-sm-2{margin-top:.5rem!important}.ngs .mt-sm-3{margin-top:1rem!important}.ngs .mt-sm-4{margin-top:1.5rem!important}.ngs .mt-sm-5{margin-top:3rem!important}.ngs .mt-sm-auto{margin-top:auto!important}.ngs .me-sm-0{margin-right:0!important}.ngs .me-sm-1{margin-right:.25rem!important}.ngs .me-sm-2{margin-right:.5rem!important}.ngs .me-sm-3{margin-right:1rem!important}.ngs .me-sm-4{margin-right:1.5rem!important}.ngs .me-sm-5{margin-right:3rem!important}.ngs .me-sm-auto{margin-right:auto!important}.ngs .mb-sm-0{margin-bottom:0!important}.ngs .mb-sm-1{margin-bottom:.25rem!important}.ngs .mb-sm-2{margin-bottom:.5rem!important}.ngs .mb-sm-3{margin-bottom:1rem!important}.ngs .mb-sm-4{margin-bottom:1.5rem!important}.ngs .mb-sm-5{margin-bottom:3rem!important}.ngs .mb-sm-auto{margin-bottom:auto!important}.ngs .ms-sm-0{margin-left:0!important}.ngs .ms-sm-1{margin-left:.25rem!important}.ngs .ms-sm-2{margin-left:.5rem!important}.ngs .ms-sm-3{margin-left:1rem!important}.ngs .ms-sm-4{margin-left:1.5rem!important}.ngs .ms-sm-5{margin-left:3rem!important}.ngs .ms-sm-auto{margin-left:auto!important}.ngs .p-sm-0{padding:0!important}.ngs .p-sm-1{padding:.25rem!important}.ngs .p-sm-2{padding:.5rem!important}.ngs .p-sm-3{padding:1rem!important}.ngs .p-sm-4{padding:1.5rem!important}.ngs .p-sm-5{padding:3rem!important}.ngs .px-sm-0{padding-right:0!important;padding-left:0!important}.ngs .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-sm-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-sm-0{padding-top:0!important}.ngs .pt-sm-1{padding-top:.25rem!important}.ngs .pt-sm-2{padding-top:.5rem!important}.ngs .pt-sm-3{padding-top:1rem!important}.ngs .pt-sm-4{padding-top:1.5rem!important}.ngs .pt-sm-5{padding-top:3rem!important}.ngs .pe-sm-0{padding-right:0!important}.ngs .pe-sm-1{padding-right:.25rem!important}.ngs .pe-sm-2{padding-right:.5rem!important}.ngs .pe-sm-3{padding-right:1rem!important}.ngs .pe-sm-4{padding-right:1.5rem!important}.ngs .pe-sm-5{padding-right:3rem!important}.ngs .pb-sm-0{padding-bottom:0!important}.ngs .pb-sm-1{padding-bottom:.25rem!important}.ngs .pb-sm-2{padding-bottom:.5rem!important}.ngs .pb-sm-3{padding-bottom:1rem!important}.ngs .pb-sm-4{padding-bottom:1.5rem!important}.ngs .pb-sm-5{padding-bottom:3rem!important}.ngs .ps-sm-0{padding-left:0!important}.ngs .ps-sm-1{padding-left:.25rem!important}.ngs .ps-sm-2{padding-left:.5rem!important}.ngs .ps-sm-3{padding-left:1rem!important}.ngs .ps-sm-4{padding-left:1.5rem!important}.ngs .ps-sm-5{padding-left:3rem!important}}@media (min-width: 768px){.ngs .d-md-inline{display:inline!important}.ngs .d-md-inline-block{display:inline-block!important}.ngs .d-md-block{display:block!important}.ngs .d-md-grid{display:grid!important}.ngs .d-md-inline-grid{display:inline-grid!important}.ngs .d-md-table{display:table!important}.ngs .d-md-table-row{display:table-row!important}.ngs .d-md-table-cell{display:table-cell!important}.ngs .d-md-flex{display:flex!important}.ngs .d-md-inline-flex{display:inline-flex!important}.ngs .d-md-none{display:none!important}.ngs .flex-md-fill{flex:1 1 auto!important}.ngs .flex-md-row{flex-direction:row!important}.ngs .flex-md-column{flex-direction:column!important}.ngs .flex-md-row-reverse{flex-direction:row-reverse!important}.ngs .flex-md-column-reverse{flex-direction:column-reverse!important}.ngs .flex-md-grow-0{flex-grow:0!important}.ngs .flex-md-grow-1{flex-grow:1!important}.ngs .flex-md-shrink-0{flex-shrink:0!important}.ngs .flex-md-shrink-1{flex-shrink:1!important}.ngs .flex-md-wrap{flex-wrap:wrap!important}.ngs .flex-md-nowrap{flex-wrap:nowrap!important}.ngs .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-md-start{justify-content:flex-start!important}.ngs .justify-content-md-end{justify-content:flex-end!important}.ngs .justify-content-md-center{justify-content:center!important}.ngs .justify-content-md-between{justify-content:space-between!important}.ngs .justify-content-md-around{justify-content:space-around!important}.ngs .justify-content-md-evenly{justify-content:space-evenly!important}.ngs .align-items-md-start{align-items:flex-start!important}.ngs .align-items-md-end{align-items:flex-end!important}.ngs .align-items-md-center{align-items:center!important}.ngs .align-items-md-baseline{align-items:baseline!important}.ngs .align-items-md-stretch{align-items:stretch!important}.ngs .align-content-md-start{align-content:flex-start!important}.ngs .align-content-md-end{align-content:flex-end!important}.ngs .align-content-md-center{align-content:center!important}.ngs .align-content-md-between{align-content:space-between!important}.ngs .align-content-md-around{align-content:space-around!important}.ngs .align-content-md-stretch{align-content:stretch!important}.ngs .align-self-md-auto{align-self:auto!important}.ngs .align-self-md-start{align-self:flex-start!important}.ngs .align-self-md-end{align-self:flex-end!important}.ngs .align-self-md-center{align-self:center!important}.ngs .align-self-md-baseline{align-self:baseline!important}.ngs .align-self-md-stretch{align-self:stretch!important}.ngs .order-md-first{order:-1!important}.ngs .order-md-0{order:0!important}.ngs .order-md-1{order:1!important}.ngs .order-md-2{order:2!important}.ngs .order-md-3{order:3!important}.ngs .order-md-4{order:4!important}.ngs .order-md-5{order:5!important}.ngs .order-md-last{order:6!important}.ngs .m-md-0{margin:0!important}.ngs .m-md-1{margin:.25rem!important}.ngs .m-md-2{margin:.5rem!important}.ngs .m-md-3{margin:1rem!important}.ngs .m-md-4{margin:1.5rem!important}.ngs .m-md-5{margin:3rem!important}.ngs .m-md-auto{margin:auto!important}.ngs .mx-md-0{margin-right:0!important;margin-left:0!important}.ngs .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-md-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-md-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-md-0{margin-top:0!important}.ngs .mt-md-1{margin-top:.25rem!important}.ngs .mt-md-2{margin-top:.5rem!important}.ngs .mt-md-3{margin-top:1rem!important}.ngs .mt-md-4{margin-top:1.5rem!important}.ngs .mt-md-5{margin-top:3rem!important}.ngs .mt-md-auto{margin-top:auto!important}.ngs .me-md-0{margin-right:0!important}.ngs .me-md-1{margin-right:.25rem!important}.ngs .me-md-2{margin-right:.5rem!important}.ngs .me-md-3{margin-right:1rem!important}.ngs .me-md-4{margin-right:1.5rem!important}.ngs .me-md-5{margin-right:3rem!important}.ngs .me-md-auto{margin-right:auto!important}.ngs .mb-md-0{margin-bottom:0!important}.ngs .mb-md-1{margin-bottom:.25rem!important}.ngs .mb-md-2{margin-bottom:.5rem!important}.ngs .mb-md-3{margin-bottom:1rem!important}.ngs .mb-md-4{margin-bottom:1.5rem!important}.ngs .mb-md-5{margin-bottom:3rem!important}.ngs .mb-md-auto{margin-bottom:auto!important}.ngs .ms-md-0{margin-left:0!important}.ngs .ms-md-1{margin-left:.25rem!important}.ngs .ms-md-2{margin-left:.5rem!important}.ngs .ms-md-3{margin-left:1rem!important}.ngs .ms-md-4{margin-left:1.5rem!important}.ngs .ms-md-5{margin-left:3rem!important}.ngs .ms-md-auto{margin-left:auto!important}.ngs .p-md-0{padding:0!important}.ngs .p-md-1{padding:.25rem!important}.ngs .p-md-2{padding:.5rem!important}.ngs .p-md-3{padding:1rem!important}.ngs .p-md-4{padding:1.5rem!important}.ngs .p-md-5{padding:3rem!important}.ngs .px-md-0{padding-right:0!important;padding-left:0!important}.ngs .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-md-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-md-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-md-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-md-0{padding-top:0!important}.ngs .pt-md-1{padding-top:.25rem!important}.ngs .pt-md-2{padding-top:.5rem!important}.ngs .pt-md-3{padding-top:1rem!important}.ngs .pt-md-4{padding-top:1.5rem!important}.ngs .pt-md-5{padding-top:3rem!important}.ngs .pe-md-0{padding-right:0!important}.ngs .pe-md-1{padding-right:.25rem!important}.ngs .pe-md-2{padding-right:.5rem!important}.ngs .pe-md-3{padding-right:1rem!important}.ngs .pe-md-4{padding-right:1.5rem!important}.ngs .pe-md-5{padding-right:3rem!important}.ngs .pb-md-0{padding-bottom:0!important}.ngs .pb-md-1{padding-bottom:.25rem!important}.ngs .pb-md-2{padding-bottom:.5rem!important}.ngs .pb-md-3{padding-bottom:1rem!important}.ngs .pb-md-4{padding-bottom:1.5rem!important}.ngs .pb-md-5{padding-bottom:3rem!important}.ngs .ps-md-0{padding-left:0!important}.ngs .ps-md-1{padding-left:.25rem!important}.ngs .ps-md-2{padding-left:.5rem!important}.ngs .ps-md-3{padding-left:1rem!important}.ngs .ps-md-4{padding-left:1.5rem!important}.ngs .ps-md-5{padding-left:3rem!important}}@media (min-width: 992px){.ngs .d-lg-inline{display:inline!important}.ngs .d-lg-inline-block{display:inline-block!important}.ngs .d-lg-block{display:block!important}.ngs .d-lg-grid{display:grid!important}.ngs .d-lg-inline-grid{display:inline-grid!important}.ngs .d-lg-table{display:table!important}.ngs .d-lg-table-row{display:table-row!important}.ngs .d-lg-table-cell{display:table-cell!important}.ngs .d-lg-flex{display:flex!important}.ngs .d-lg-inline-flex{display:inline-flex!important}.ngs .d-lg-none{display:none!important}.ngs .flex-lg-fill{flex:1 1 auto!important}.ngs .flex-lg-row{flex-direction:row!important}.ngs .flex-lg-column{flex-direction:column!important}.ngs .flex-lg-row-reverse{flex-direction:row-reverse!important}.ngs .flex-lg-column-reverse{flex-direction:column-reverse!important}.ngs .flex-lg-grow-0{flex-grow:0!important}.ngs .flex-lg-grow-1{flex-grow:1!important}.ngs .flex-lg-shrink-0{flex-shrink:0!important}.ngs .flex-lg-shrink-1{flex-shrink:1!important}.ngs .flex-lg-wrap{flex-wrap:wrap!important}.ngs .flex-lg-nowrap{flex-wrap:nowrap!important}.ngs .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-lg-start{justify-content:flex-start!important}.ngs .justify-content-lg-end{justify-content:flex-end!important}.ngs .justify-content-lg-center{justify-content:center!important}.ngs .justify-content-lg-between{justify-content:space-between!important}.ngs .justify-content-lg-around{justify-content:space-around!important}.ngs .justify-content-lg-evenly{justify-content:space-evenly!important}.ngs .align-items-lg-start{align-items:flex-start!important}.ngs .align-items-lg-end{align-items:flex-end!important}.ngs .align-items-lg-center{align-items:center!important}.ngs .align-items-lg-baseline{align-items:baseline!important}.ngs .align-items-lg-stretch{align-items:stretch!important}.ngs .align-content-lg-start{align-content:flex-start!important}.ngs .align-content-lg-end{align-content:flex-end!important}.ngs .align-content-lg-center{align-content:center!important}.ngs .align-content-lg-between{align-content:space-between!important}.ngs .align-content-lg-around{align-content:space-around!important}.ngs .align-content-lg-stretch{align-content:stretch!important}.ngs .align-self-lg-auto{align-self:auto!important}.ngs .align-self-lg-start{align-self:flex-start!important}.ngs .align-self-lg-end{align-self:flex-end!important}.ngs .align-self-lg-center{align-self:center!important}.ngs .align-self-lg-baseline{align-self:baseline!important}.ngs .align-self-lg-stretch{align-self:stretch!important}.ngs .order-lg-first{order:-1!important}.ngs .order-lg-0{order:0!important}.ngs .order-lg-1{order:1!important}.ngs .order-lg-2{order:2!important}.ngs .order-lg-3{order:3!important}.ngs .order-lg-4{order:4!important}.ngs .order-lg-5{order:5!important}.ngs .order-lg-last{order:6!important}.ngs .m-lg-0{margin:0!important}.ngs .m-lg-1{margin:.25rem!important}.ngs .m-lg-2{margin:.5rem!important}.ngs .m-lg-3{margin:1rem!important}.ngs .m-lg-4{margin:1.5rem!important}.ngs .m-lg-5{margin:3rem!important}.ngs .m-lg-auto{margin:auto!important}.ngs .mx-lg-0{margin-right:0!important;margin-left:0!important}.ngs .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-lg-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-lg-0{margin-top:0!important}.ngs .mt-lg-1{margin-top:.25rem!important}.ngs .mt-lg-2{margin-top:.5rem!important}.ngs .mt-lg-3{margin-top:1rem!important}.ngs .mt-lg-4{margin-top:1.5rem!important}.ngs .mt-lg-5{margin-top:3rem!important}.ngs .mt-lg-auto{margin-top:auto!important}.ngs .me-lg-0{margin-right:0!important}.ngs .me-lg-1{margin-right:.25rem!important}.ngs .me-lg-2{margin-right:.5rem!important}.ngs .me-lg-3{margin-right:1rem!important}.ngs .me-lg-4{margin-right:1.5rem!important}.ngs .me-lg-5{margin-right:3rem!important}.ngs .me-lg-auto{margin-right:auto!important}.ngs .mb-lg-0{margin-bottom:0!important}.ngs .mb-lg-1{margin-bottom:.25rem!important}.ngs .mb-lg-2{margin-bottom:.5rem!important}.ngs .mb-lg-3{margin-bottom:1rem!important}.ngs .mb-lg-4{margin-bottom:1.5rem!important}.ngs .mb-lg-5{margin-bottom:3rem!important}.ngs .mb-lg-auto{margin-bottom:auto!important}.ngs .ms-lg-0{margin-left:0!important}.ngs .ms-lg-1{margin-left:.25rem!important}.ngs .ms-lg-2{margin-left:.5rem!important}.ngs .ms-lg-3{margin-left:1rem!important}.ngs .ms-lg-4{margin-left:1.5rem!important}.ngs .ms-lg-5{margin-left:3rem!important}.ngs .ms-lg-auto{margin-left:auto!important}.ngs .p-lg-0{padding:0!important}.ngs .p-lg-1{padding:.25rem!important}.ngs .p-lg-2{padding:.5rem!important}.ngs .p-lg-3{padding:1rem!important}.ngs .p-lg-4{padding:1.5rem!important}.ngs .p-lg-5{padding:3rem!important}.ngs .px-lg-0{padding-right:0!important;padding-left:0!important}.ngs .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-lg-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-lg-0{padding-top:0!important}.ngs .pt-lg-1{padding-top:.25rem!important}.ngs .pt-lg-2{padding-top:.5rem!important}.ngs .pt-lg-3{padding-top:1rem!important}.ngs .pt-lg-4{padding-top:1.5rem!important}.ngs .pt-lg-5{padding-top:3rem!important}.ngs .pe-lg-0{padding-right:0!important}.ngs .pe-lg-1{padding-right:.25rem!important}.ngs .pe-lg-2{padding-right:.5rem!important}.ngs .pe-lg-3{padding-right:1rem!important}.ngs .pe-lg-4{padding-right:1.5rem!important}.ngs .pe-lg-5{padding-right:3rem!important}.ngs .pb-lg-0{padding-bottom:0!important}.ngs .pb-lg-1{padding-bottom:.25rem!important}.ngs .pb-lg-2{padding-bottom:.5rem!important}.ngs .pb-lg-3{padding-bottom:1rem!important}.ngs .pb-lg-4{padding-bottom:1.5rem!important}.ngs .pb-lg-5{padding-bottom:3rem!important}.ngs .ps-lg-0{padding-left:0!important}.ngs .ps-lg-1{padding-left:.25rem!important}.ngs .ps-lg-2{padding-left:.5rem!important}.ngs .ps-lg-3{padding-left:1rem!important}.ngs .ps-lg-4{padding-left:1.5rem!important}.ngs .ps-lg-5{padding-left:3rem!important}}@media (min-width: 1200px){.ngs .d-xl-inline{display:inline!important}.ngs .d-xl-inline-block{display:inline-block!important}.ngs .d-xl-block{display:block!important}.ngs .d-xl-grid{display:grid!important}.ngs .d-xl-inline-grid{display:inline-grid!important}.ngs .d-xl-table{display:table!important}.ngs .d-xl-table-row{display:table-row!important}.ngs .d-xl-table-cell{display:table-cell!important}.ngs .d-xl-flex{display:flex!important}.ngs .d-xl-inline-flex{display:inline-flex!important}.ngs .d-xl-none{display:none!important}.ngs .flex-xl-fill{flex:1 1 auto!important}.ngs .flex-xl-row{flex-direction:row!important}.ngs .flex-xl-column{flex-direction:column!important}.ngs .flex-xl-row-reverse{flex-direction:row-reverse!important}.ngs .flex-xl-column-reverse{flex-direction:column-reverse!important}.ngs .flex-xl-grow-0{flex-grow:0!important}.ngs .flex-xl-grow-1{flex-grow:1!important}.ngs .flex-xl-shrink-0{flex-shrink:0!important}.ngs .flex-xl-shrink-1{flex-shrink:1!important}.ngs .flex-xl-wrap{flex-wrap:wrap!important}.ngs .flex-xl-nowrap{flex-wrap:nowrap!important}.ngs .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-xl-start{justify-content:flex-start!important}.ngs .justify-content-xl-end{justify-content:flex-end!important}.ngs .justify-content-xl-center{justify-content:center!important}.ngs .justify-content-xl-between{justify-content:space-between!important}.ngs .justify-content-xl-around{justify-content:space-around!important}.ngs .justify-content-xl-evenly{justify-content:space-evenly!important}.ngs .align-items-xl-start{align-items:flex-start!important}.ngs .align-items-xl-end{align-items:flex-end!important}.ngs .align-items-xl-center{align-items:center!important}.ngs .align-items-xl-baseline{align-items:baseline!important}.ngs .align-items-xl-stretch{align-items:stretch!important}.ngs .align-content-xl-start{align-content:flex-start!important}.ngs .align-content-xl-end{align-content:flex-end!important}.ngs .align-content-xl-center{align-content:center!important}.ngs .align-content-xl-between{align-content:space-between!important}.ngs .align-content-xl-around{align-content:space-around!important}.ngs .align-content-xl-stretch{align-content:stretch!important}.ngs .align-self-xl-auto{align-self:auto!important}.ngs .align-self-xl-start{align-self:flex-start!important}.ngs .align-self-xl-end{align-self:flex-end!important}.ngs .align-self-xl-center{align-self:center!important}.ngs .align-self-xl-baseline{align-self:baseline!important}.ngs .align-self-xl-stretch{align-self:stretch!important}.ngs .order-xl-first{order:-1!important}.ngs .order-xl-0{order:0!important}.ngs .order-xl-1{order:1!important}.ngs .order-xl-2{order:2!important}.ngs .order-xl-3{order:3!important}.ngs .order-xl-4{order:4!important}.ngs .order-xl-5{order:5!important}.ngs .order-xl-last{order:6!important}.ngs .m-xl-0{margin:0!important}.ngs .m-xl-1{margin:.25rem!important}.ngs .m-xl-2{margin:.5rem!important}.ngs .m-xl-3{margin:1rem!important}.ngs .m-xl-4{margin:1.5rem!important}.ngs .m-xl-5{margin:3rem!important}.ngs .m-xl-auto{margin:auto!important}.ngs .mx-xl-0{margin-right:0!important;margin-left:0!important}.ngs .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-xl-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-xl-0{margin-top:0!important}.ngs .mt-xl-1{margin-top:.25rem!important}.ngs .mt-xl-2{margin-top:.5rem!important}.ngs .mt-xl-3{margin-top:1rem!important}.ngs .mt-xl-4{margin-top:1.5rem!important}.ngs .mt-xl-5{margin-top:3rem!important}.ngs .mt-xl-auto{margin-top:auto!important}.ngs .me-xl-0{margin-right:0!important}.ngs .me-xl-1{margin-right:.25rem!important}.ngs .me-xl-2{margin-right:.5rem!important}.ngs .me-xl-3{margin-right:1rem!important}.ngs .me-xl-4{margin-right:1.5rem!important}.ngs .me-xl-5{margin-right:3rem!important}.ngs .me-xl-auto{margin-right:auto!important}.ngs .mb-xl-0{margin-bottom:0!important}.ngs .mb-xl-1{margin-bottom:.25rem!important}.ngs .mb-xl-2{margin-bottom:.5rem!important}.ngs .mb-xl-3{margin-bottom:1rem!important}.ngs .mb-xl-4{margin-bottom:1.5rem!important}.ngs .mb-xl-5{margin-bottom:3rem!important}.ngs .mb-xl-auto{margin-bottom:auto!important}.ngs .ms-xl-0{margin-left:0!important}.ngs .ms-xl-1{margin-left:.25rem!important}.ngs .ms-xl-2{margin-left:.5rem!important}.ngs .ms-xl-3{margin-left:1rem!important}.ngs .ms-xl-4{margin-left:1.5rem!important}.ngs .ms-xl-5{margin-left:3rem!important}.ngs .ms-xl-auto{margin-left:auto!important}.ngs .p-xl-0{padding:0!important}.ngs .p-xl-1{padding:.25rem!important}.ngs .p-xl-2{padding:.5rem!important}.ngs .p-xl-3{padding:1rem!important}.ngs .p-xl-4{padding:1.5rem!important}.ngs .p-xl-5{padding:3rem!important}.ngs .px-xl-0{padding-right:0!important;padding-left:0!important}.ngs .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-xl-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-xl-0{padding-top:0!important}.ngs .pt-xl-1{padding-top:.25rem!important}.ngs .pt-xl-2{padding-top:.5rem!important}.ngs .pt-xl-3{padding-top:1rem!important}.ngs .pt-xl-4{padding-top:1.5rem!important}.ngs .pt-xl-5{padding-top:3rem!important}.ngs .pe-xl-0{padding-right:0!important}.ngs .pe-xl-1{padding-right:.25rem!important}.ngs .pe-xl-2{padding-right:.5rem!important}.ngs .pe-xl-3{padding-right:1rem!important}.ngs .pe-xl-4{padding-right:1.5rem!important}.ngs .pe-xl-5{padding-right:3rem!important}.ngs .pb-xl-0{padding-bottom:0!important}.ngs .pb-xl-1{padding-bottom:.25rem!important}.ngs .pb-xl-2{padding-bottom:.5rem!important}.ngs .pb-xl-3{padding-bottom:1rem!important}.ngs .pb-xl-4{padding-bottom:1.5rem!important}.ngs .pb-xl-5{padding-bottom:3rem!important}.ngs .ps-xl-0{padding-left:0!important}.ngs .ps-xl-1{padding-left:.25rem!important}.ngs .ps-xl-2{padding-left:.5rem!important}.ngs .ps-xl-3{padding-left:1rem!important}.ngs .ps-xl-4{padding-left:1.5rem!important}.ngs .ps-xl-5{padding-left:3rem!important}}@media (min-width: 1400px){.ngs .d-xxl-inline{display:inline!important}.ngs .d-xxl-inline-block{display:inline-block!important}.ngs .d-xxl-block{display:block!important}.ngs .d-xxl-grid{display:grid!important}.ngs .d-xxl-inline-grid{display:inline-grid!important}.ngs .d-xxl-table{display:table!important}.ngs .d-xxl-table-row{display:table-row!important}.ngs .d-xxl-table-cell{display:table-cell!important}.ngs .d-xxl-flex{display:flex!important}.ngs .d-xxl-inline-flex{display:inline-flex!important}.ngs .d-xxl-none{display:none!important}.ngs .flex-xxl-fill{flex:1 1 auto!important}.ngs .flex-xxl-row{flex-direction:row!important}.ngs .flex-xxl-column{flex-direction:column!important}.ngs .flex-xxl-row-reverse{flex-direction:row-reverse!important}.ngs .flex-xxl-column-reverse{flex-direction:column-reverse!important}.ngs .flex-xxl-grow-0{flex-grow:0!important}.ngs .flex-xxl-grow-1{flex-grow:1!important}.ngs .flex-xxl-shrink-0{flex-shrink:0!important}.ngs .flex-xxl-shrink-1{flex-shrink:1!important}.ngs .flex-xxl-wrap{flex-wrap:wrap!important}.ngs .flex-xxl-nowrap{flex-wrap:nowrap!important}.ngs .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-xxl-start{justify-content:flex-start!important}.ngs .justify-content-xxl-end{justify-content:flex-end!important}.ngs .justify-content-xxl-center{justify-content:center!important}.ngs .justify-content-xxl-between{justify-content:space-between!important}.ngs .justify-content-xxl-around{justify-content:space-around!important}.ngs .justify-content-xxl-evenly{justify-content:space-evenly!important}.ngs .align-items-xxl-start{align-items:flex-start!important}.ngs .align-items-xxl-end{align-items:flex-end!important}.ngs .align-items-xxl-center{align-items:center!important}.ngs .align-items-xxl-baseline{align-items:baseline!important}.ngs .align-items-xxl-stretch{align-items:stretch!important}.ngs .align-content-xxl-start{align-content:flex-start!important}.ngs .align-content-xxl-end{align-content:flex-end!important}.ngs .align-content-xxl-center{align-content:center!important}.ngs .align-content-xxl-between{align-content:space-between!important}.ngs .align-content-xxl-around{align-content:space-around!important}.ngs .align-content-xxl-stretch{align-content:stretch!important}.ngs .align-self-xxl-auto{align-self:auto!important}.ngs .align-self-xxl-start{align-self:flex-start!important}.ngs .align-self-xxl-end{align-self:flex-end!important}.ngs .align-self-xxl-center{align-self:center!important}.ngs .align-self-xxl-baseline{align-self:baseline!important}.ngs .align-self-xxl-stretch{align-self:stretch!important}.ngs .order-xxl-first{order:-1!important}.ngs .order-xxl-0{order:0!important}.ngs .order-xxl-1{order:1!important}.ngs .order-xxl-2{order:2!important}.ngs .order-xxl-3{order:3!important}.ngs .order-xxl-4{order:4!important}.ngs .order-xxl-5{order:5!important}.ngs .order-xxl-last{order:6!important}.ngs .m-xxl-0{margin:0!important}.ngs .m-xxl-1{margin:.25rem!important}.ngs .m-xxl-2{margin:.5rem!important}.ngs .m-xxl-3{margin:1rem!important}.ngs .m-xxl-4{margin:1.5rem!important}.ngs .m-xxl-5{margin:3rem!important}.ngs .m-xxl-auto{margin:auto!important}.ngs .mx-xxl-0{margin-right:0!important;margin-left:0!important}.ngs .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-xxl-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-xxl-0{margin-top:0!important}.ngs .mt-xxl-1{margin-top:.25rem!important}.ngs .mt-xxl-2{margin-top:.5rem!important}.ngs .mt-xxl-3{margin-top:1rem!important}.ngs .mt-xxl-4{margin-top:1.5rem!important}.ngs .mt-xxl-5{margin-top:3rem!important}.ngs .mt-xxl-auto{margin-top:auto!important}.ngs .me-xxl-0{margin-right:0!important}.ngs .me-xxl-1{margin-right:.25rem!important}.ngs .me-xxl-2{margin-right:.5rem!important}.ngs .me-xxl-3{margin-right:1rem!important}.ngs .me-xxl-4{margin-right:1.5rem!important}.ngs .me-xxl-5{margin-right:3rem!important}.ngs .me-xxl-auto{margin-right:auto!important}.ngs .mb-xxl-0{margin-bottom:0!important}.ngs .mb-xxl-1{margin-bottom:.25rem!important}.ngs .mb-xxl-2{margin-bottom:.5rem!important}.ngs .mb-xxl-3{margin-bottom:1rem!important}.ngs .mb-xxl-4{margin-bottom:1.5rem!important}.ngs .mb-xxl-5{margin-bottom:3rem!important}.ngs .mb-xxl-auto{margin-bottom:auto!important}.ngs .ms-xxl-0{margin-left:0!important}.ngs .ms-xxl-1{margin-left:.25rem!important}.ngs .ms-xxl-2{margin-left:.5rem!important}.ngs .ms-xxl-3{margin-left:1rem!important}.ngs .ms-xxl-4{margin-left:1.5rem!important}.ngs .ms-xxl-5{margin-left:3rem!important}.ngs .ms-xxl-auto{margin-left:auto!important}.ngs .p-xxl-0{padding:0!important}.ngs .p-xxl-1{padding:.25rem!important}.ngs .p-xxl-2{padding:.5rem!important}.ngs .p-xxl-3{padding:1rem!important}.ngs .p-xxl-4{padding:1.5rem!important}.ngs .p-xxl-5{padding:3rem!important}.ngs .px-xxl-0{padding-right:0!important;padding-left:0!important}.ngs .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-xxl-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-xxl-0{padding-top:0!important}.ngs .pt-xxl-1{padding-top:.25rem!important}.ngs .pt-xxl-2{padding-top:.5rem!important}.ngs .pt-xxl-3{padding-top:1rem!important}.ngs .pt-xxl-4{padding-top:1.5rem!important}.ngs .pt-xxl-5{padding-top:3rem!important}.ngs .pe-xxl-0{padding-right:0!important}.ngs .pe-xxl-1{padding-right:.25rem!important}.ngs .pe-xxl-2{padding-right:.5rem!important}.ngs .pe-xxl-3{padding-right:1rem!important}.ngs .pe-xxl-4{padding-right:1.5rem!important}.ngs .pe-xxl-5{padding-right:3rem!important}.ngs .pb-xxl-0{padding-bottom:0!important}.ngs .pb-xxl-1{padding-bottom:.25rem!important}.ngs .pb-xxl-2{padding-bottom:.5rem!important}.ngs .pb-xxl-3{padding-bottom:1rem!important}.ngs .pb-xxl-4{padding-bottom:1.5rem!important}.ngs .pb-xxl-5{padding-bottom:3rem!important}.ngs .ps-xxl-0{padding-left:0!important}.ngs .ps-xxl-1{padding-left:.25rem!important}.ngs .ps-xxl-2{padding-left:.5rem!important}.ngs .ps-xxl-3{padding-left:1rem!important}.ngs .ps-xxl-4{padding-left:1.5rem!important}.ngs .ps-xxl-5{padding-left:3rem!important}}@media print{.ngs .d-print-inline{display:inline!important}.ngs .d-print-inline-block{display:inline-block!important}.ngs .d-print-block{display:block!important}.ngs .d-print-grid{display:grid!important}.ngs .d-print-inline-grid{display:inline-grid!important}.ngs .d-print-table{display:table!important}.ngs .d-print-table-row{display:table-row!important}.ngs .d-print-table-cell{display:table-cell!important}.ngs .d-print-flex{display:flex!important}.ngs .d-print-inline-flex{display:inline-flex!important}.ngs .d-print-none{display:none!important}}\n", ".prevSection button{padding:5px 10px;float:left;margin-left:0}.nextSection button{padding:5px 10px;float:right;margin-left:0}.separator-horizontal{width:1px;height:100%;background-color:#d6cece;margin:0 auto}.content-element-form{position:relative;padding-bottom:70px}.section-navs{width:100%;position:absolute;bottom:0;background-color:#f2f6fc;padding:10px;flex-direction:row-reverse}.sirio-nav-item a{cursor:pointer}@media (max-width: 991px){.content-element-form{width:100%!important}}ngx-sirio-input-chip{margin-right:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: RegisterDirective, selector: "[register]", inputs: ["register", "componentRef"] }, { kind: "component", type: SirioSidenavMobileComponent, selector: "ngx-sirio-sidenav-mobile", inputs: ["openMenuLabel", "openMenuLabelSubtitile", "openMenuAriaLabel", "closeMenuLabel", "closeMenuAriaLabel", "closeMenuLabelSubtitile", "userProfileLabel", "userProfileType", "userProfileName", "userProfileSurname", "showUserInfo", "opened"] }, { kind: "component", type: SirioSidenavComponent, selector: "ngx-sirio-sidenav", inputs: ["sidenavTitle", "ariaLabel"] }, { kind: "component", type: SirioSidenavItemComponent, selector: "ngx-sirio-sidenav-item", inputs: ["labelTrigger", "isCustomNavItem", "isTrigger", "routerLinkUrl", "routerLinkFragment", "routerLinkQueryParams", "routerLinkQueryParamsHandling", "routerLinkState", "routerLinkRelativeTo", "routerLinkPreserveFragment", "routerLinkReplaceUrl", "href", "hrefTarget", "ariaLabelDesc", "isOpen", "isActive", "withTag", "tagType", "tagValue", "disabledState"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioStepperProgressBarComponent, selector: "ngx-sirio-stepper-progress-bar", inputs: ["ariaLabel", "hasDropdown", "dropDownLabel", "dropDownText"], outputs: ["eventClick"] }, { kind: "component", type: SirioStepperProgressItemComponent, selector: "ngx-sirio-stepper-progress-item", inputs: ["status", "hasNavigation", "screenReaderText", "label"] }, { kind: "component", type: DynamicFieldsComponent, selector: "app-dynamic-fields", inputs: ["rows", "formGroup"] }], encapsulation: i0.ViewEncapsulation.None });
2816
+ }
2817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFormComponent, decorators: [{
2818
+ type: Component,
2819
+ args: [{ selector: 'app-dynamic-form', standalone: true, imports: [CommonModule, ReactiveFormsModule,
2820
+ RegisterDirective,
2821
+ SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent,
2822
+ SirioButtonComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent,
2823
+ DynamicFieldsComponent], providers: [
2824
+ EventService, ProgrammabilityService, RegisterService
2825
+ ], encapsulation: ViewEncapsulation.None, template: "<form [formGroup]=\"formGroup\" class=\"ngs\">\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n\r\n <!-- #region progress -->\r\n <ngx-sirio-stepper-progress-bar *ngIf=\"showProgress\"\r\n (eventClick)=\"activateForm($event.data.label)\" \r\n [hasDropdown]=\"true\" \r\n [dropDownLabel]=\"Texts.Show\">\r\n <ngx-sirio-stepper-progress-item *ngFor=\"let form of forms\"\r\n [hasNavigation]=\"true\"\r\n [status]=\"getFormStatus(form)\"\r\n [label]=\"form.title\" />\r\n </ngx-sirio-stepper-progress-bar>\r\n <!-- #endregion -->\r\n\r\n <ng-container *ngIf=\"showNav\">\r\n\r\n <div class=\"col-md-4\">\r\n\r\n <!-- #region sidenav -->\r\n <ng-template #sidenavTemplate>\r\n <ngx-sirio-sidenav>\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <ngx-sirio-sidenav-item [isActive]=\"activeNav == sectionIndex\" (click)=\"activeNav = sectionIndex\">\r\n {{ form.title }}\r\n </ngx-sirio-sidenav-item>\r\n </ng-container>\r\n </ngx-sirio-sidenav>\r\n </ng-template>\r\n\r\n <ngx-sirio-sidenav-mobile class=\"d-block d-lg-none\"\r\n openMenuLabel=\"Apri Menu\"\r\n openMenuAriaLabel=\"Apri Menu\"\r\n closeMenuLabel=\"Chiudi Menu\"\r\n closeMenuAriaLabel=\"Chiudi Menu\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </ngx-sirio-sidenav-mobile>\r\n <div class=\"d-none d-lg-block\">\r\n <ng-container *ngTemplateOutlet=\"sidenavTemplate\"></ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n </div>\r\n\r\n <div class=\"col-md-1\">\r\n <div class=\"separator-horizontal\"></div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <div class=\"content-element-form\" [ngClass]=\"showNav ? 'col-md-11' : 'col-md-16'\">\r\n\r\n <ng-container *ngFor=\"let form of forms, let sectionIndex = index\">\r\n <div *ngIf=\"activeNav == sectionIndex\"\r\n #default\r\n [register]=\"form\"\r\n [componentRef]=\"default\">\r\n <app-dynamic-fields [formGroup]=\"getFormGroup(form.path)\" [rows]=\"form.rows\"></app-dynamic-fields>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showNavButton\">\r\n\r\n <div class=\"row section-navs\">\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" [disabled]=\"!canNext()\" (click)=\"goNext()\" class=\"nextSection\">\r\n {{ Texts.NextSection }}\r\n <span class=\"fa-solid fa-chevron-right\" style=\"margin-left: 10px\"></span>\r\n </ngx-sirio-button>\r\n </div>\r\n <div class=\"col-8 col-md-8\">\r\n <ngx-sirio-button [color]=\"null\" [disabled]=\"!canPrevious()\" (click)=\"goPrevious()\" class=\"prevSection\">\r\n <span class=\"fa-solid fa-chevron-left\" style=\"margin-right: 10px\"></span>\r\n {{ Texts.PreviousSection }}\r\n </ngx-sirio-button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</form>\r\n\r\n\r\n\r\n", styles: [".ngs .container,.ngs .container-fluid,.ngs .container-xxl,.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm{--ngsgutter-x: 1.5rem;--ngsgutter-y: 0;width:100%;padding-right:calc(var(--ngsgutter-x) * .5);padding-left:calc(var(--ngsgutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.ngs .container-sm,.ngs .container{max-width:540px}}@media (min-width: 768px){.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:720px}}@media (min-width: 992px){.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:960px}}@media (min-width: 1200px){.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:1140px}}@media (min-width: 1400px){.ngs .container-xxl,.ngs .container-xl,.ngs .container-lg,.ngs .container-md,.ngs .container-sm,.ngs .container{max-width:1320px}}.ngs :root{--ngsbreakpoint-xs: 0;--ngsbreakpoint-sm: 576px;--ngsbreakpoint-md: 768px;--ngsbreakpoint-lg: 992px;--ngsbreakpoint-xl: 1200px;--ngsbreakpoint-xxl: 1400px}.ngs .row{--ngsgutter-x: 1.5rem;--ngsgutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--ngsgutter-y));margin-right:calc(-.5 * var(--ngsgutter-x));margin-left:calc(-.5 * var(--ngsgutter-x))}.ngs .row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--ngsgutter-x) * .5);padding-left:calc(var(--ngsgutter-x) * .5);margin-top:var(--ngsgutter-y)}.ngs .col{flex:1 0 0%}.ngs .row-cols-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-auto{flex:0 0 auto;width:auto}.ngs .col-1{flex:0 0 auto;width:6.25%}.ngs .col-2{flex:0 0 auto;width:12.5%}.ngs .col-3{flex:0 0 auto;width:18.75%}.ngs .col-4{flex:0 0 auto;width:25%}.ngs .col-5{flex:0 0 auto;width:31.25%}.ngs .col-6{flex:0 0 auto;width:37.5%}.ngs .col-7{flex:0 0 auto;width:43.75%}.ngs .col-8{flex:0 0 auto;width:50%}.ngs .col-9{flex:0 0 auto;width:56.25%}.ngs .col-10{flex:0 0 auto;width:62.5%}.ngs .col-11{flex:0 0 auto;width:68.75%}.ngs .col-12{flex:0 0 auto;width:75%}.ngs .col-13{flex:0 0 auto;width:81.25%}.ngs .col-14{flex:0 0 auto;width:87.5%}.ngs .col-15{flex:0 0 auto;width:93.75%}.ngs .col-16{flex:0 0 auto;width:100%}.ngs .offset-1{margin-left:6.25%}.ngs .offset-2{margin-left:12.5%}.ngs .offset-3{margin-left:18.75%}.ngs .offset-4{margin-left:25%}.ngs .offset-5{margin-left:31.25%}.ngs .offset-6{margin-left:37.5%}.ngs .offset-7{margin-left:43.75%}.ngs .offset-8{margin-left:50%}.ngs .offset-9{margin-left:56.25%}.ngs .offset-10{margin-left:62.5%}.ngs .offset-11{margin-left:68.75%}.ngs .offset-12{margin-left:75%}.ngs .offset-13{margin-left:81.25%}.ngs .offset-14{margin-left:87.5%}.ngs .offset-15{margin-left:93.75%}.ngs .g-0,.ngs .gx-0{--ngsgutter-x: 0}.ngs .g-0,.ngs .gy-0{--ngsgutter-y: 0}.ngs .g-1,.ngs .gx-1{--ngsgutter-x: .25rem}.ngs .g-1,.ngs .gy-1{--ngsgutter-y: .25rem}.ngs .g-2,.ngs .gx-2{--ngsgutter-x: .5rem}.ngs .g-2,.ngs .gy-2{--ngsgutter-y: .5rem}.ngs .g-3,.ngs .gx-3{--ngsgutter-x: 1rem}.ngs .g-3,.ngs .gy-3{--ngsgutter-y: 1rem}.ngs .g-4,.ngs .gx-4{--ngsgutter-x: 1.5rem}.ngs .g-4,.ngs .gy-4{--ngsgutter-y: 1.5rem}.ngs .g-5,.ngs .gx-5{--ngsgutter-x: 3rem}.ngs .g-5,.ngs .gy-5{--ngsgutter-y: 3rem}@media (min-width: 576px){.ngs .col-sm{flex:1 0 0%}.ngs .row-cols-sm-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-sm-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-sm-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-sm-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-sm-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-sm-auto{flex:0 0 auto;width:auto}.ngs .col-sm-1{flex:0 0 auto;width:6.25%}.ngs .col-sm-2{flex:0 0 auto;width:12.5%}.ngs .col-sm-3{flex:0 0 auto;width:18.75%}.ngs .col-sm-4{flex:0 0 auto;width:25%}.ngs .col-sm-5{flex:0 0 auto;width:31.25%}.ngs .col-sm-6{flex:0 0 auto;width:37.5%}.ngs .col-sm-7{flex:0 0 auto;width:43.75%}.ngs .col-sm-8{flex:0 0 auto;width:50%}.ngs .col-sm-9{flex:0 0 auto;width:56.25%}.ngs .col-sm-10{flex:0 0 auto;width:62.5%}.ngs .col-sm-11{flex:0 0 auto;width:68.75%}.ngs .col-sm-12{flex:0 0 auto;width:75%}.ngs .col-sm-13{flex:0 0 auto;width:81.25%}.ngs .col-sm-14{flex:0 0 auto;width:87.5%}.ngs .col-sm-15{flex:0 0 auto;width:93.75%}.ngs .col-sm-16{flex:0 0 auto;width:100%}.ngs .offset-sm-0{margin-left:0}.ngs .offset-sm-1{margin-left:6.25%}.ngs .offset-sm-2{margin-left:12.5%}.ngs .offset-sm-3{margin-left:18.75%}.ngs .offset-sm-4{margin-left:25%}.ngs .offset-sm-5{margin-left:31.25%}.ngs .offset-sm-6{margin-left:37.5%}.ngs .offset-sm-7{margin-left:43.75%}.ngs .offset-sm-8{margin-left:50%}.ngs .offset-sm-9{margin-left:56.25%}.ngs .offset-sm-10{margin-left:62.5%}.ngs .offset-sm-11{margin-left:68.75%}.ngs .offset-sm-12{margin-left:75%}.ngs .offset-sm-13{margin-left:81.25%}.ngs .offset-sm-14{margin-left:87.5%}.ngs .offset-sm-15{margin-left:93.75%}.ngs .g-sm-0,.ngs .gx-sm-0{--ngsgutter-x: 0}.ngs .g-sm-0,.ngs .gy-sm-0{--ngsgutter-y: 0}.ngs .g-sm-1,.ngs .gx-sm-1{--ngsgutter-x: .25rem}.ngs .g-sm-1,.ngs .gy-sm-1{--ngsgutter-y: .25rem}.ngs .g-sm-2,.ngs .gx-sm-2{--ngsgutter-x: .5rem}.ngs .g-sm-2,.ngs .gy-sm-2{--ngsgutter-y: .5rem}.ngs .g-sm-3,.ngs .gx-sm-3{--ngsgutter-x: 1rem}.ngs .g-sm-3,.ngs .gy-sm-3{--ngsgutter-y: 1rem}.ngs .g-sm-4,.ngs .gx-sm-4{--ngsgutter-x: 1.5rem}.ngs .g-sm-4,.ngs .gy-sm-4{--ngsgutter-y: 1.5rem}.ngs .g-sm-5,.ngs .gx-sm-5{--ngsgutter-x: 3rem}.ngs .g-sm-5,.ngs .gy-sm-5{--ngsgutter-y: 3rem}}@media (min-width: 768px){.ngs .col-md{flex:1 0 0%}.ngs .row-cols-md-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-md-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-md-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-md-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-md-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-md-auto{flex:0 0 auto;width:auto}.ngs .col-md-1{flex:0 0 auto;width:6.25%}.ngs .col-md-2{flex:0 0 auto;width:12.5%}.ngs .col-md-3{flex:0 0 auto;width:18.75%}.ngs .col-md-4{flex:0 0 auto;width:25%}.ngs .col-md-5{flex:0 0 auto;width:31.25%}.ngs .col-md-6{flex:0 0 auto;width:37.5%}.ngs .col-md-7{flex:0 0 auto;width:43.75%}.ngs .col-md-8{flex:0 0 auto;width:50%}.ngs .col-md-9{flex:0 0 auto;width:56.25%}.ngs .col-md-10{flex:0 0 auto;width:62.5%}.ngs .col-md-11{flex:0 0 auto;width:68.75%}.ngs .col-md-12{flex:0 0 auto;width:75%}.ngs .col-md-13{flex:0 0 auto;width:81.25%}.ngs .col-md-14{flex:0 0 auto;width:87.5%}.ngs .col-md-15{flex:0 0 auto;width:93.75%}.ngs .col-md-16{flex:0 0 auto;width:100%}.ngs .offset-md-0{margin-left:0}.ngs .offset-md-1{margin-left:6.25%}.ngs .offset-md-2{margin-left:12.5%}.ngs .offset-md-3{margin-left:18.75%}.ngs .offset-md-4{margin-left:25%}.ngs .offset-md-5{margin-left:31.25%}.ngs .offset-md-6{margin-left:37.5%}.ngs .offset-md-7{margin-left:43.75%}.ngs .offset-md-8{margin-left:50%}.ngs .offset-md-9{margin-left:56.25%}.ngs .offset-md-10{margin-left:62.5%}.ngs .offset-md-11{margin-left:68.75%}.ngs .offset-md-12{margin-left:75%}.ngs .offset-md-13{margin-left:81.25%}.ngs .offset-md-14{margin-left:87.5%}.ngs .offset-md-15{margin-left:93.75%}.ngs .g-md-0,.ngs .gx-md-0{--ngsgutter-x: 0}.ngs .g-md-0,.ngs .gy-md-0{--ngsgutter-y: 0}.ngs .g-md-1,.ngs .gx-md-1{--ngsgutter-x: .25rem}.ngs .g-md-1,.ngs .gy-md-1{--ngsgutter-y: .25rem}.ngs .g-md-2,.ngs .gx-md-2{--ngsgutter-x: .5rem}.ngs .g-md-2,.ngs .gy-md-2{--ngsgutter-y: .5rem}.ngs .g-md-3,.ngs .gx-md-3{--ngsgutter-x: 1rem}.ngs .g-md-3,.ngs .gy-md-3{--ngsgutter-y: 1rem}.ngs .g-md-4,.ngs .gx-md-4{--ngsgutter-x: 1.5rem}.ngs .g-md-4,.ngs .gy-md-4{--ngsgutter-y: 1.5rem}.ngs .g-md-5,.ngs .gx-md-5{--ngsgutter-x: 3rem}.ngs .g-md-5,.ngs .gy-md-5{--ngsgutter-y: 3rem}}@media (min-width: 992px){.ngs .col-lg{flex:1 0 0%}.ngs .row-cols-lg-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-lg-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-lg-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-lg-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-lg-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-lg-auto{flex:0 0 auto;width:auto}.ngs .col-lg-1{flex:0 0 auto;width:6.25%}.ngs .col-lg-2{flex:0 0 auto;width:12.5%}.ngs .col-lg-3{flex:0 0 auto;width:18.75%}.ngs .col-lg-4{flex:0 0 auto;width:25%}.ngs .col-lg-5{flex:0 0 auto;width:31.25%}.ngs .col-lg-6{flex:0 0 auto;width:37.5%}.ngs .col-lg-7{flex:0 0 auto;width:43.75%}.ngs .col-lg-8{flex:0 0 auto;width:50%}.ngs .col-lg-9{flex:0 0 auto;width:56.25%}.ngs .col-lg-10{flex:0 0 auto;width:62.5%}.ngs .col-lg-11{flex:0 0 auto;width:68.75%}.ngs .col-lg-12{flex:0 0 auto;width:75%}.ngs .col-lg-13{flex:0 0 auto;width:81.25%}.ngs .col-lg-14{flex:0 0 auto;width:87.5%}.ngs .col-lg-15{flex:0 0 auto;width:93.75%}.ngs .col-lg-16{flex:0 0 auto;width:100%}.ngs .offset-lg-0{margin-left:0}.ngs .offset-lg-1{margin-left:6.25%}.ngs .offset-lg-2{margin-left:12.5%}.ngs .offset-lg-3{margin-left:18.75%}.ngs .offset-lg-4{margin-left:25%}.ngs .offset-lg-5{margin-left:31.25%}.ngs .offset-lg-6{margin-left:37.5%}.ngs .offset-lg-7{margin-left:43.75%}.ngs .offset-lg-8{margin-left:50%}.ngs .offset-lg-9{margin-left:56.25%}.ngs .offset-lg-10{margin-left:62.5%}.ngs .offset-lg-11{margin-left:68.75%}.ngs .offset-lg-12{margin-left:75%}.ngs .offset-lg-13{margin-left:81.25%}.ngs .offset-lg-14{margin-left:87.5%}.ngs .offset-lg-15{margin-left:93.75%}.ngs .g-lg-0,.ngs .gx-lg-0{--ngsgutter-x: 0}.ngs .g-lg-0,.ngs .gy-lg-0{--ngsgutter-y: 0}.ngs .g-lg-1,.ngs .gx-lg-1{--ngsgutter-x: .25rem}.ngs .g-lg-1,.ngs .gy-lg-1{--ngsgutter-y: .25rem}.ngs .g-lg-2,.ngs .gx-lg-2{--ngsgutter-x: .5rem}.ngs .g-lg-2,.ngs .gy-lg-2{--ngsgutter-y: .5rem}.ngs .g-lg-3,.ngs .gx-lg-3{--ngsgutter-x: 1rem}.ngs .g-lg-3,.ngs .gy-lg-3{--ngsgutter-y: 1rem}.ngs .g-lg-4,.ngs .gx-lg-4{--ngsgutter-x: 1.5rem}.ngs .g-lg-4,.ngs .gy-lg-4{--ngsgutter-y: 1.5rem}.ngs .g-lg-5,.ngs .gx-lg-5{--ngsgutter-x: 3rem}.ngs .g-lg-5,.ngs .gy-lg-5{--ngsgutter-y: 3rem}}@media (min-width: 1200px){.ngs .col-xl{flex:1 0 0%}.ngs .row-cols-xl-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-xl-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-xl-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-xl-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-xl-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-xl-auto{flex:0 0 auto;width:auto}.ngs .col-xl-1{flex:0 0 auto;width:6.25%}.ngs .col-xl-2{flex:0 0 auto;width:12.5%}.ngs .col-xl-3{flex:0 0 auto;width:18.75%}.ngs .col-xl-4{flex:0 0 auto;width:25%}.ngs .col-xl-5{flex:0 0 auto;width:31.25%}.ngs .col-xl-6{flex:0 0 auto;width:37.5%}.ngs .col-xl-7{flex:0 0 auto;width:43.75%}.ngs .col-xl-8{flex:0 0 auto;width:50%}.ngs .col-xl-9{flex:0 0 auto;width:56.25%}.ngs .col-xl-10{flex:0 0 auto;width:62.5%}.ngs .col-xl-11{flex:0 0 auto;width:68.75%}.ngs .col-xl-12{flex:0 0 auto;width:75%}.ngs .col-xl-13{flex:0 0 auto;width:81.25%}.ngs .col-xl-14{flex:0 0 auto;width:87.5%}.ngs .col-xl-15{flex:0 0 auto;width:93.75%}.ngs .col-xl-16{flex:0 0 auto;width:100%}.ngs .offset-xl-0{margin-left:0}.ngs .offset-xl-1{margin-left:6.25%}.ngs .offset-xl-2{margin-left:12.5%}.ngs .offset-xl-3{margin-left:18.75%}.ngs .offset-xl-4{margin-left:25%}.ngs .offset-xl-5{margin-left:31.25%}.ngs .offset-xl-6{margin-left:37.5%}.ngs .offset-xl-7{margin-left:43.75%}.ngs .offset-xl-8{margin-left:50%}.ngs .offset-xl-9{margin-left:56.25%}.ngs .offset-xl-10{margin-left:62.5%}.ngs .offset-xl-11{margin-left:68.75%}.ngs .offset-xl-12{margin-left:75%}.ngs .offset-xl-13{margin-left:81.25%}.ngs .offset-xl-14{margin-left:87.5%}.ngs .offset-xl-15{margin-left:93.75%}.ngs .g-xl-0,.ngs .gx-xl-0{--ngsgutter-x: 0}.ngs .g-xl-0,.ngs .gy-xl-0{--ngsgutter-y: 0}.ngs .g-xl-1,.ngs .gx-xl-1{--ngsgutter-x: .25rem}.ngs .g-xl-1,.ngs .gy-xl-1{--ngsgutter-y: .25rem}.ngs .g-xl-2,.ngs .gx-xl-2{--ngsgutter-x: .5rem}.ngs .g-xl-2,.ngs .gy-xl-2{--ngsgutter-y: .5rem}.ngs .g-xl-3,.ngs .gx-xl-3{--ngsgutter-x: 1rem}.ngs .g-xl-3,.ngs .gy-xl-3{--ngsgutter-y: 1rem}.ngs .g-xl-4,.ngs .gx-xl-4{--ngsgutter-x: 1.5rem}.ngs .g-xl-4,.ngs .gy-xl-4{--ngsgutter-y: 1.5rem}.ngs .g-xl-5,.ngs .gx-xl-5{--ngsgutter-x: 3rem}.ngs .g-xl-5,.ngs .gy-xl-5{--ngsgutter-y: 3rem}}@media (min-width: 1400px){.ngs .col-xxl{flex:1 0 0%}.ngs .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.ngs .row-cols-xxl-1>*{flex:0 0 auto;width:100%}.ngs .row-cols-xxl-2>*{flex:0 0 auto;width:50%}.ngs .row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.ngs .row-cols-xxl-4>*{flex:0 0 auto;width:25%}.ngs .row-cols-xxl-5>*{flex:0 0 auto;width:20%}.ngs .row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.ngs .col-xxl-auto{flex:0 0 auto;width:auto}.ngs .col-xxl-1{flex:0 0 auto;width:6.25%}.ngs .col-xxl-2{flex:0 0 auto;width:12.5%}.ngs .col-xxl-3{flex:0 0 auto;width:18.75%}.ngs .col-xxl-4{flex:0 0 auto;width:25%}.ngs .col-xxl-5{flex:0 0 auto;width:31.25%}.ngs .col-xxl-6{flex:0 0 auto;width:37.5%}.ngs .col-xxl-7{flex:0 0 auto;width:43.75%}.ngs .col-xxl-8{flex:0 0 auto;width:50%}.ngs .col-xxl-9{flex:0 0 auto;width:56.25%}.ngs .col-xxl-10{flex:0 0 auto;width:62.5%}.ngs .col-xxl-11{flex:0 0 auto;width:68.75%}.ngs .col-xxl-12{flex:0 0 auto;width:75%}.ngs .col-xxl-13{flex:0 0 auto;width:81.25%}.ngs .col-xxl-14{flex:0 0 auto;width:87.5%}.ngs .col-xxl-15{flex:0 0 auto;width:93.75%}.ngs .col-xxl-16{flex:0 0 auto;width:100%}.ngs .offset-xxl-0{margin-left:0}.ngs .offset-xxl-1{margin-left:6.25%}.ngs .offset-xxl-2{margin-left:12.5%}.ngs .offset-xxl-3{margin-left:18.75%}.ngs .offset-xxl-4{margin-left:25%}.ngs .offset-xxl-5{margin-left:31.25%}.ngs .offset-xxl-6{margin-left:37.5%}.ngs .offset-xxl-7{margin-left:43.75%}.ngs .offset-xxl-8{margin-left:50%}.ngs .offset-xxl-9{margin-left:56.25%}.ngs .offset-xxl-10{margin-left:62.5%}.ngs .offset-xxl-11{margin-left:68.75%}.ngs .offset-xxl-12{margin-left:75%}.ngs .offset-xxl-13{margin-left:81.25%}.ngs .offset-xxl-14{margin-left:87.5%}.ngs .offset-xxl-15{margin-left:93.75%}.ngs .g-xxl-0,.ngs .gx-xxl-0{--ngsgutter-x: 0}.ngs .g-xxl-0,.ngs .gy-xxl-0{--ngsgutter-y: 0}.ngs .g-xxl-1,.ngs .gx-xxl-1{--ngsgutter-x: .25rem}.ngs .g-xxl-1,.ngs .gy-xxl-1{--ngsgutter-y: .25rem}.ngs .g-xxl-2,.ngs .gx-xxl-2{--ngsgutter-x: .5rem}.ngs .g-xxl-2,.ngs .gy-xxl-2{--ngsgutter-y: .5rem}.ngs .g-xxl-3,.ngs .gx-xxl-3{--ngsgutter-x: 1rem}.ngs .g-xxl-3,.ngs .gy-xxl-3{--ngsgutter-y: 1rem}.ngs .g-xxl-4,.ngs .gx-xxl-4{--ngsgutter-x: 1.5rem}.ngs .g-xxl-4,.ngs .gy-xxl-4{--ngsgutter-y: 1.5rem}.ngs .g-xxl-5,.ngs .gx-xxl-5{--ngsgutter-x: 3rem}.ngs .g-xxl-5,.ngs .gy-xxl-5{--ngsgutter-y: 3rem}}.ngs .d-inline{display:inline!important}.ngs .d-inline-block{display:inline-block!important}.ngs .d-block{display:block!important}.ngs .d-grid{display:grid!important}.ngs .d-inline-grid{display:inline-grid!important}.ngs .d-table{display:table!important}.ngs .d-table-row{display:table-row!important}.ngs .d-table-cell{display:table-cell!important}.ngs .d-flex{display:flex!important}.ngs .d-inline-flex{display:inline-flex!important}.ngs .d-none{display:none!important}.ngs .flex-fill{flex:1 1 auto!important}.ngs .flex-row{flex-direction:row!important}.ngs .flex-column{flex-direction:column!important}.ngs .flex-row-reverse{flex-direction:row-reverse!important}.ngs .flex-column-reverse{flex-direction:column-reverse!important}.ngs .flex-grow-0{flex-grow:0!important}.ngs .flex-grow-1{flex-grow:1!important}.ngs .flex-shrink-0{flex-shrink:0!important}.ngs .flex-shrink-1{flex-shrink:1!important}.ngs .flex-wrap{flex-wrap:wrap!important}.ngs .flex-nowrap{flex-wrap:nowrap!important}.ngs .flex-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-start{justify-content:flex-start!important}.ngs .justify-content-end{justify-content:flex-end!important}.ngs .justify-content-center{justify-content:center!important}.ngs .justify-content-between{justify-content:space-between!important}.ngs .justify-content-around{justify-content:space-around!important}.ngs .justify-content-evenly{justify-content:space-evenly!important}.ngs .align-items-start{align-items:flex-start!important}.ngs .align-items-end{align-items:flex-end!important}.ngs .align-items-center{align-items:center!important}.ngs .align-items-baseline{align-items:baseline!important}.ngs .align-items-stretch{align-items:stretch!important}.ngs .align-content-start{align-content:flex-start!important}.ngs .align-content-end{align-content:flex-end!important}.ngs .align-content-center{align-content:center!important}.ngs .align-content-between{align-content:space-between!important}.ngs .align-content-around{align-content:space-around!important}.ngs .align-content-stretch{align-content:stretch!important}.ngs .align-self-auto{align-self:auto!important}.ngs .align-self-start{align-self:flex-start!important}.ngs .align-self-end{align-self:flex-end!important}.ngs .align-self-center{align-self:center!important}.ngs .align-self-baseline{align-self:baseline!important}.ngs .align-self-stretch{align-self:stretch!important}.ngs .order-first{order:-1!important}.ngs .order-0{order:0!important}.ngs .order-1{order:1!important}.ngs .order-2{order:2!important}.ngs .order-3{order:3!important}.ngs .order-4{order:4!important}.ngs .order-5{order:5!important}.ngs .order-last{order:6!important}.ngs .m-0{margin:0!important}.ngs .m-1{margin:.25rem!important}.ngs .m-2{margin:.5rem!important}.ngs .m-3{margin:1rem!important}.ngs .m-4{margin:1.5rem!important}.ngs .m-5{margin:3rem!important}.ngs .m-auto{margin:auto!important}.ngs .mx-0{margin-right:0!important;margin-left:0!important}.ngs .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-0{margin-top:0!important}.ngs .mt-1{margin-top:.25rem!important}.ngs .mt-2{margin-top:.5rem!important}.ngs .mt-3{margin-top:1rem!important}.ngs .mt-4{margin-top:1.5rem!important}.ngs .mt-5{margin-top:3rem!important}.ngs .mt-auto{margin-top:auto!important}.ngs .me-0{margin-right:0!important}.ngs .me-1{margin-right:.25rem!important}.ngs .me-2{margin-right:.5rem!important}.ngs .me-3{margin-right:1rem!important}.ngs .me-4{margin-right:1.5rem!important}.ngs .me-5{margin-right:3rem!important}.ngs .me-auto{margin-right:auto!important}.ngs .mb-0{margin-bottom:0!important}.ngs .mb-1{margin-bottom:.25rem!important}.ngs .mb-2{margin-bottom:.5rem!important}.ngs .mb-3{margin-bottom:1rem!important}.ngs .mb-4{margin-bottom:1.5rem!important}.ngs .mb-5{margin-bottom:3rem!important}.ngs .mb-auto{margin-bottom:auto!important}.ngs .ms-0{margin-left:0!important}.ngs .ms-1{margin-left:.25rem!important}.ngs .ms-2{margin-left:.5rem!important}.ngs .ms-3{margin-left:1rem!important}.ngs .ms-4{margin-left:1.5rem!important}.ngs .ms-5{margin-left:3rem!important}.ngs .ms-auto{margin-left:auto!important}.ngs .p-0{padding:0!important}.ngs .p-1{padding:.25rem!important}.ngs .p-2{padding:.5rem!important}.ngs .p-3{padding:1rem!important}.ngs .p-4{padding:1.5rem!important}.ngs .p-5{padding:3rem!important}.ngs .px-0{padding-right:0!important;padding-left:0!important}.ngs .px-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-0{padding-top:0!important}.ngs .pt-1{padding-top:.25rem!important}.ngs .pt-2{padding-top:.5rem!important}.ngs .pt-3{padding-top:1rem!important}.ngs .pt-4{padding-top:1.5rem!important}.ngs .pt-5{padding-top:3rem!important}.ngs .pe-0{padding-right:0!important}.ngs .pe-1{padding-right:.25rem!important}.ngs .pe-2{padding-right:.5rem!important}.ngs .pe-3{padding-right:1rem!important}.ngs .pe-4{padding-right:1.5rem!important}.ngs .pe-5{padding-right:3rem!important}.ngs .pb-0{padding-bottom:0!important}.ngs .pb-1{padding-bottom:.25rem!important}.ngs .pb-2{padding-bottom:.5rem!important}.ngs .pb-3{padding-bottom:1rem!important}.ngs .pb-4{padding-bottom:1.5rem!important}.ngs .pb-5{padding-bottom:3rem!important}.ngs .ps-0{padding-left:0!important}.ngs .ps-1{padding-left:.25rem!important}.ngs .ps-2{padding-left:.5rem!important}.ngs .ps-3{padding-left:1rem!important}.ngs .ps-4{padding-left:1.5rem!important}.ngs .ps-5{padding-left:3rem!important}@media (min-width: 576px){.ngs .d-sm-inline{display:inline!important}.ngs .d-sm-inline-block{display:inline-block!important}.ngs .d-sm-block{display:block!important}.ngs .d-sm-grid{display:grid!important}.ngs .d-sm-inline-grid{display:inline-grid!important}.ngs .d-sm-table{display:table!important}.ngs .d-sm-table-row{display:table-row!important}.ngs .d-sm-table-cell{display:table-cell!important}.ngs .d-sm-flex{display:flex!important}.ngs .d-sm-inline-flex{display:inline-flex!important}.ngs .d-sm-none{display:none!important}.ngs .flex-sm-fill{flex:1 1 auto!important}.ngs .flex-sm-row{flex-direction:row!important}.ngs .flex-sm-column{flex-direction:column!important}.ngs .flex-sm-row-reverse{flex-direction:row-reverse!important}.ngs .flex-sm-column-reverse{flex-direction:column-reverse!important}.ngs .flex-sm-grow-0{flex-grow:0!important}.ngs .flex-sm-grow-1{flex-grow:1!important}.ngs .flex-sm-shrink-0{flex-shrink:0!important}.ngs .flex-sm-shrink-1{flex-shrink:1!important}.ngs .flex-sm-wrap{flex-wrap:wrap!important}.ngs .flex-sm-nowrap{flex-wrap:nowrap!important}.ngs .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-sm-start{justify-content:flex-start!important}.ngs .justify-content-sm-end{justify-content:flex-end!important}.ngs .justify-content-sm-center{justify-content:center!important}.ngs .justify-content-sm-between{justify-content:space-between!important}.ngs .justify-content-sm-around{justify-content:space-around!important}.ngs .justify-content-sm-evenly{justify-content:space-evenly!important}.ngs .align-items-sm-start{align-items:flex-start!important}.ngs .align-items-sm-end{align-items:flex-end!important}.ngs .align-items-sm-center{align-items:center!important}.ngs .align-items-sm-baseline{align-items:baseline!important}.ngs .align-items-sm-stretch{align-items:stretch!important}.ngs .align-content-sm-start{align-content:flex-start!important}.ngs .align-content-sm-end{align-content:flex-end!important}.ngs .align-content-sm-center{align-content:center!important}.ngs .align-content-sm-between{align-content:space-between!important}.ngs .align-content-sm-around{align-content:space-around!important}.ngs .align-content-sm-stretch{align-content:stretch!important}.ngs .align-self-sm-auto{align-self:auto!important}.ngs .align-self-sm-start{align-self:flex-start!important}.ngs .align-self-sm-end{align-self:flex-end!important}.ngs .align-self-sm-center{align-self:center!important}.ngs .align-self-sm-baseline{align-self:baseline!important}.ngs .align-self-sm-stretch{align-self:stretch!important}.ngs .order-sm-first{order:-1!important}.ngs .order-sm-0{order:0!important}.ngs .order-sm-1{order:1!important}.ngs .order-sm-2{order:2!important}.ngs .order-sm-3{order:3!important}.ngs .order-sm-4{order:4!important}.ngs .order-sm-5{order:5!important}.ngs .order-sm-last{order:6!important}.ngs .m-sm-0{margin:0!important}.ngs .m-sm-1{margin:.25rem!important}.ngs .m-sm-2{margin:.5rem!important}.ngs .m-sm-3{margin:1rem!important}.ngs .m-sm-4{margin:1.5rem!important}.ngs .m-sm-5{margin:3rem!important}.ngs .m-sm-auto{margin:auto!important}.ngs .mx-sm-0{margin-right:0!important;margin-left:0!important}.ngs .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-sm-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-sm-0{margin-top:0!important}.ngs .mt-sm-1{margin-top:.25rem!important}.ngs .mt-sm-2{margin-top:.5rem!important}.ngs .mt-sm-3{margin-top:1rem!important}.ngs .mt-sm-4{margin-top:1.5rem!important}.ngs .mt-sm-5{margin-top:3rem!important}.ngs .mt-sm-auto{margin-top:auto!important}.ngs .me-sm-0{margin-right:0!important}.ngs .me-sm-1{margin-right:.25rem!important}.ngs .me-sm-2{margin-right:.5rem!important}.ngs .me-sm-3{margin-right:1rem!important}.ngs .me-sm-4{margin-right:1.5rem!important}.ngs .me-sm-5{margin-right:3rem!important}.ngs .me-sm-auto{margin-right:auto!important}.ngs .mb-sm-0{margin-bottom:0!important}.ngs .mb-sm-1{margin-bottom:.25rem!important}.ngs .mb-sm-2{margin-bottom:.5rem!important}.ngs .mb-sm-3{margin-bottom:1rem!important}.ngs .mb-sm-4{margin-bottom:1.5rem!important}.ngs .mb-sm-5{margin-bottom:3rem!important}.ngs .mb-sm-auto{margin-bottom:auto!important}.ngs .ms-sm-0{margin-left:0!important}.ngs .ms-sm-1{margin-left:.25rem!important}.ngs .ms-sm-2{margin-left:.5rem!important}.ngs .ms-sm-3{margin-left:1rem!important}.ngs .ms-sm-4{margin-left:1.5rem!important}.ngs .ms-sm-5{margin-left:3rem!important}.ngs .ms-sm-auto{margin-left:auto!important}.ngs .p-sm-0{padding:0!important}.ngs .p-sm-1{padding:.25rem!important}.ngs .p-sm-2{padding:.5rem!important}.ngs .p-sm-3{padding:1rem!important}.ngs .p-sm-4{padding:1.5rem!important}.ngs .p-sm-5{padding:3rem!important}.ngs .px-sm-0{padding-right:0!important;padding-left:0!important}.ngs .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-sm-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-sm-0{padding-top:0!important}.ngs .pt-sm-1{padding-top:.25rem!important}.ngs .pt-sm-2{padding-top:.5rem!important}.ngs .pt-sm-3{padding-top:1rem!important}.ngs .pt-sm-4{padding-top:1.5rem!important}.ngs .pt-sm-5{padding-top:3rem!important}.ngs .pe-sm-0{padding-right:0!important}.ngs .pe-sm-1{padding-right:.25rem!important}.ngs .pe-sm-2{padding-right:.5rem!important}.ngs .pe-sm-3{padding-right:1rem!important}.ngs .pe-sm-4{padding-right:1.5rem!important}.ngs .pe-sm-5{padding-right:3rem!important}.ngs .pb-sm-0{padding-bottom:0!important}.ngs .pb-sm-1{padding-bottom:.25rem!important}.ngs .pb-sm-2{padding-bottom:.5rem!important}.ngs .pb-sm-3{padding-bottom:1rem!important}.ngs .pb-sm-4{padding-bottom:1.5rem!important}.ngs .pb-sm-5{padding-bottom:3rem!important}.ngs .ps-sm-0{padding-left:0!important}.ngs .ps-sm-1{padding-left:.25rem!important}.ngs .ps-sm-2{padding-left:.5rem!important}.ngs .ps-sm-3{padding-left:1rem!important}.ngs .ps-sm-4{padding-left:1.5rem!important}.ngs .ps-sm-5{padding-left:3rem!important}}@media (min-width: 768px){.ngs .d-md-inline{display:inline!important}.ngs .d-md-inline-block{display:inline-block!important}.ngs .d-md-block{display:block!important}.ngs .d-md-grid{display:grid!important}.ngs .d-md-inline-grid{display:inline-grid!important}.ngs .d-md-table{display:table!important}.ngs .d-md-table-row{display:table-row!important}.ngs .d-md-table-cell{display:table-cell!important}.ngs .d-md-flex{display:flex!important}.ngs .d-md-inline-flex{display:inline-flex!important}.ngs .d-md-none{display:none!important}.ngs .flex-md-fill{flex:1 1 auto!important}.ngs .flex-md-row{flex-direction:row!important}.ngs .flex-md-column{flex-direction:column!important}.ngs .flex-md-row-reverse{flex-direction:row-reverse!important}.ngs .flex-md-column-reverse{flex-direction:column-reverse!important}.ngs .flex-md-grow-0{flex-grow:0!important}.ngs .flex-md-grow-1{flex-grow:1!important}.ngs .flex-md-shrink-0{flex-shrink:0!important}.ngs .flex-md-shrink-1{flex-shrink:1!important}.ngs .flex-md-wrap{flex-wrap:wrap!important}.ngs .flex-md-nowrap{flex-wrap:nowrap!important}.ngs .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-md-start{justify-content:flex-start!important}.ngs .justify-content-md-end{justify-content:flex-end!important}.ngs .justify-content-md-center{justify-content:center!important}.ngs .justify-content-md-between{justify-content:space-between!important}.ngs .justify-content-md-around{justify-content:space-around!important}.ngs .justify-content-md-evenly{justify-content:space-evenly!important}.ngs .align-items-md-start{align-items:flex-start!important}.ngs .align-items-md-end{align-items:flex-end!important}.ngs .align-items-md-center{align-items:center!important}.ngs .align-items-md-baseline{align-items:baseline!important}.ngs .align-items-md-stretch{align-items:stretch!important}.ngs .align-content-md-start{align-content:flex-start!important}.ngs .align-content-md-end{align-content:flex-end!important}.ngs .align-content-md-center{align-content:center!important}.ngs .align-content-md-between{align-content:space-between!important}.ngs .align-content-md-around{align-content:space-around!important}.ngs .align-content-md-stretch{align-content:stretch!important}.ngs .align-self-md-auto{align-self:auto!important}.ngs .align-self-md-start{align-self:flex-start!important}.ngs .align-self-md-end{align-self:flex-end!important}.ngs .align-self-md-center{align-self:center!important}.ngs .align-self-md-baseline{align-self:baseline!important}.ngs .align-self-md-stretch{align-self:stretch!important}.ngs .order-md-first{order:-1!important}.ngs .order-md-0{order:0!important}.ngs .order-md-1{order:1!important}.ngs .order-md-2{order:2!important}.ngs .order-md-3{order:3!important}.ngs .order-md-4{order:4!important}.ngs .order-md-5{order:5!important}.ngs .order-md-last{order:6!important}.ngs .m-md-0{margin:0!important}.ngs .m-md-1{margin:.25rem!important}.ngs .m-md-2{margin:.5rem!important}.ngs .m-md-3{margin:1rem!important}.ngs .m-md-4{margin:1.5rem!important}.ngs .m-md-5{margin:3rem!important}.ngs .m-md-auto{margin:auto!important}.ngs .mx-md-0{margin-right:0!important;margin-left:0!important}.ngs .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-md-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-md-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-md-0{margin-top:0!important}.ngs .mt-md-1{margin-top:.25rem!important}.ngs .mt-md-2{margin-top:.5rem!important}.ngs .mt-md-3{margin-top:1rem!important}.ngs .mt-md-4{margin-top:1.5rem!important}.ngs .mt-md-5{margin-top:3rem!important}.ngs .mt-md-auto{margin-top:auto!important}.ngs .me-md-0{margin-right:0!important}.ngs .me-md-1{margin-right:.25rem!important}.ngs .me-md-2{margin-right:.5rem!important}.ngs .me-md-3{margin-right:1rem!important}.ngs .me-md-4{margin-right:1.5rem!important}.ngs .me-md-5{margin-right:3rem!important}.ngs .me-md-auto{margin-right:auto!important}.ngs .mb-md-0{margin-bottom:0!important}.ngs .mb-md-1{margin-bottom:.25rem!important}.ngs .mb-md-2{margin-bottom:.5rem!important}.ngs .mb-md-3{margin-bottom:1rem!important}.ngs .mb-md-4{margin-bottom:1.5rem!important}.ngs .mb-md-5{margin-bottom:3rem!important}.ngs .mb-md-auto{margin-bottom:auto!important}.ngs .ms-md-0{margin-left:0!important}.ngs .ms-md-1{margin-left:.25rem!important}.ngs .ms-md-2{margin-left:.5rem!important}.ngs .ms-md-3{margin-left:1rem!important}.ngs .ms-md-4{margin-left:1.5rem!important}.ngs .ms-md-5{margin-left:3rem!important}.ngs .ms-md-auto{margin-left:auto!important}.ngs .p-md-0{padding:0!important}.ngs .p-md-1{padding:.25rem!important}.ngs .p-md-2{padding:.5rem!important}.ngs .p-md-3{padding:1rem!important}.ngs .p-md-4{padding:1.5rem!important}.ngs .p-md-5{padding:3rem!important}.ngs .px-md-0{padding-right:0!important;padding-left:0!important}.ngs .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-md-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-md-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-md-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-md-0{padding-top:0!important}.ngs .pt-md-1{padding-top:.25rem!important}.ngs .pt-md-2{padding-top:.5rem!important}.ngs .pt-md-3{padding-top:1rem!important}.ngs .pt-md-4{padding-top:1.5rem!important}.ngs .pt-md-5{padding-top:3rem!important}.ngs .pe-md-0{padding-right:0!important}.ngs .pe-md-1{padding-right:.25rem!important}.ngs .pe-md-2{padding-right:.5rem!important}.ngs .pe-md-3{padding-right:1rem!important}.ngs .pe-md-4{padding-right:1.5rem!important}.ngs .pe-md-5{padding-right:3rem!important}.ngs .pb-md-0{padding-bottom:0!important}.ngs .pb-md-1{padding-bottom:.25rem!important}.ngs .pb-md-2{padding-bottom:.5rem!important}.ngs .pb-md-3{padding-bottom:1rem!important}.ngs .pb-md-4{padding-bottom:1.5rem!important}.ngs .pb-md-5{padding-bottom:3rem!important}.ngs .ps-md-0{padding-left:0!important}.ngs .ps-md-1{padding-left:.25rem!important}.ngs .ps-md-2{padding-left:.5rem!important}.ngs .ps-md-3{padding-left:1rem!important}.ngs .ps-md-4{padding-left:1.5rem!important}.ngs .ps-md-5{padding-left:3rem!important}}@media (min-width: 992px){.ngs .d-lg-inline{display:inline!important}.ngs .d-lg-inline-block{display:inline-block!important}.ngs .d-lg-block{display:block!important}.ngs .d-lg-grid{display:grid!important}.ngs .d-lg-inline-grid{display:inline-grid!important}.ngs .d-lg-table{display:table!important}.ngs .d-lg-table-row{display:table-row!important}.ngs .d-lg-table-cell{display:table-cell!important}.ngs .d-lg-flex{display:flex!important}.ngs .d-lg-inline-flex{display:inline-flex!important}.ngs .d-lg-none{display:none!important}.ngs .flex-lg-fill{flex:1 1 auto!important}.ngs .flex-lg-row{flex-direction:row!important}.ngs .flex-lg-column{flex-direction:column!important}.ngs .flex-lg-row-reverse{flex-direction:row-reverse!important}.ngs .flex-lg-column-reverse{flex-direction:column-reverse!important}.ngs .flex-lg-grow-0{flex-grow:0!important}.ngs .flex-lg-grow-1{flex-grow:1!important}.ngs .flex-lg-shrink-0{flex-shrink:0!important}.ngs .flex-lg-shrink-1{flex-shrink:1!important}.ngs .flex-lg-wrap{flex-wrap:wrap!important}.ngs .flex-lg-nowrap{flex-wrap:nowrap!important}.ngs .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-lg-start{justify-content:flex-start!important}.ngs .justify-content-lg-end{justify-content:flex-end!important}.ngs .justify-content-lg-center{justify-content:center!important}.ngs .justify-content-lg-between{justify-content:space-between!important}.ngs .justify-content-lg-around{justify-content:space-around!important}.ngs .justify-content-lg-evenly{justify-content:space-evenly!important}.ngs .align-items-lg-start{align-items:flex-start!important}.ngs .align-items-lg-end{align-items:flex-end!important}.ngs .align-items-lg-center{align-items:center!important}.ngs .align-items-lg-baseline{align-items:baseline!important}.ngs .align-items-lg-stretch{align-items:stretch!important}.ngs .align-content-lg-start{align-content:flex-start!important}.ngs .align-content-lg-end{align-content:flex-end!important}.ngs .align-content-lg-center{align-content:center!important}.ngs .align-content-lg-between{align-content:space-between!important}.ngs .align-content-lg-around{align-content:space-around!important}.ngs .align-content-lg-stretch{align-content:stretch!important}.ngs .align-self-lg-auto{align-self:auto!important}.ngs .align-self-lg-start{align-self:flex-start!important}.ngs .align-self-lg-end{align-self:flex-end!important}.ngs .align-self-lg-center{align-self:center!important}.ngs .align-self-lg-baseline{align-self:baseline!important}.ngs .align-self-lg-stretch{align-self:stretch!important}.ngs .order-lg-first{order:-1!important}.ngs .order-lg-0{order:0!important}.ngs .order-lg-1{order:1!important}.ngs .order-lg-2{order:2!important}.ngs .order-lg-3{order:3!important}.ngs .order-lg-4{order:4!important}.ngs .order-lg-5{order:5!important}.ngs .order-lg-last{order:6!important}.ngs .m-lg-0{margin:0!important}.ngs .m-lg-1{margin:.25rem!important}.ngs .m-lg-2{margin:.5rem!important}.ngs .m-lg-3{margin:1rem!important}.ngs .m-lg-4{margin:1.5rem!important}.ngs .m-lg-5{margin:3rem!important}.ngs .m-lg-auto{margin:auto!important}.ngs .mx-lg-0{margin-right:0!important;margin-left:0!important}.ngs .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-lg-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-lg-0{margin-top:0!important}.ngs .mt-lg-1{margin-top:.25rem!important}.ngs .mt-lg-2{margin-top:.5rem!important}.ngs .mt-lg-3{margin-top:1rem!important}.ngs .mt-lg-4{margin-top:1.5rem!important}.ngs .mt-lg-5{margin-top:3rem!important}.ngs .mt-lg-auto{margin-top:auto!important}.ngs .me-lg-0{margin-right:0!important}.ngs .me-lg-1{margin-right:.25rem!important}.ngs .me-lg-2{margin-right:.5rem!important}.ngs .me-lg-3{margin-right:1rem!important}.ngs .me-lg-4{margin-right:1.5rem!important}.ngs .me-lg-5{margin-right:3rem!important}.ngs .me-lg-auto{margin-right:auto!important}.ngs .mb-lg-0{margin-bottom:0!important}.ngs .mb-lg-1{margin-bottom:.25rem!important}.ngs .mb-lg-2{margin-bottom:.5rem!important}.ngs .mb-lg-3{margin-bottom:1rem!important}.ngs .mb-lg-4{margin-bottom:1.5rem!important}.ngs .mb-lg-5{margin-bottom:3rem!important}.ngs .mb-lg-auto{margin-bottom:auto!important}.ngs .ms-lg-0{margin-left:0!important}.ngs .ms-lg-1{margin-left:.25rem!important}.ngs .ms-lg-2{margin-left:.5rem!important}.ngs .ms-lg-3{margin-left:1rem!important}.ngs .ms-lg-4{margin-left:1.5rem!important}.ngs .ms-lg-5{margin-left:3rem!important}.ngs .ms-lg-auto{margin-left:auto!important}.ngs .p-lg-0{padding:0!important}.ngs .p-lg-1{padding:.25rem!important}.ngs .p-lg-2{padding:.5rem!important}.ngs .p-lg-3{padding:1rem!important}.ngs .p-lg-4{padding:1.5rem!important}.ngs .p-lg-5{padding:3rem!important}.ngs .px-lg-0{padding-right:0!important;padding-left:0!important}.ngs .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-lg-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-lg-0{padding-top:0!important}.ngs .pt-lg-1{padding-top:.25rem!important}.ngs .pt-lg-2{padding-top:.5rem!important}.ngs .pt-lg-3{padding-top:1rem!important}.ngs .pt-lg-4{padding-top:1.5rem!important}.ngs .pt-lg-5{padding-top:3rem!important}.ngs .pe-lg-0{padding-right:0!important}.ngs .pe-lg-1{padding-right:.25rem!important}.ngs .pe-lg-2{padding-right:.5rem!important}.ngs .pe-lg-3{padding-right:1rem!important}.ngs .pe-lg-4{padding-right:1.5rem!important}.ngs .pe-lg-5{padding-right:3rem!important}.ngs .pb-lg-0{padding-bottom:0!important}.ngs .pb-lg-1{padding-bottom:.25rem!important}.ngs .pb-lg-2{padding-bottom:.5rem!important}.ngs .pb-lg-3{padding-bottom:1rem!important}.ngs .pb-lg-4{padding-bottom:1.5rem!important}.ngs .pb-lg-5{padding-bottom:3rem!important}.ngs .ps-lg-0{padding-left:0!important}.ngs .ps-lg-1{padding-left:.25rem!important}.ngs .ps-lg-2{padding-left:.5rem!important}.ngs .ps-lg-3{padding-left:1rem!important}.ngs .ps-lg-4{padding-left:1.5rem!important}.ngs .ps-lg-5{padding-left:3rem!important}}@media (min-width: 1200px){.ngs .d-xl-inline{display:inline!important}.ngs .d-xl-inline-block{display:inline-block!important}.ngs .d-xl-block{display:block!important}.ngs .d-xl-grid{display:grid!important}.ngs .d-xl-inline-grid{display:inline-grid!important}.ngs .d-xl-table{display:table!important}.ngs .d-xl-table-row{display:table-row!important}.ngs .d-xl-table-cell{display:table-cell!important}.ngs .d-xl-flex{display:flex!important}.ngs .d-xl-inline-flex{display:inline-flex!important}.ngs .d-xl-none{display:none!important}.ngs .flex-xl-fill{flex:1 1 auto!important}.ngs .flex-xl-row{flex-direction:row!important}.ngs .flex-xl-column{flex-direction:column!important}.ngs .flex-xl-row-reverse{flex-direction:row-reverse!important}.ngs .flex-xl-column-reverse{flex-direction:column-reverse!important}.ngs .flex-xl-grow-0{flex-grow:0!important}.ngs .flex-xl-grow-1{flex-grow:1!important}.ngs .flex-xl-shrink-0{flex-shrink:0!important}.ngs .flex-xl-shrink-1{flex-shrink:1!important}.ngs .flex-xl-wrap{flex-wrap:wrap!important}.ngs .flex-xl-nowrap{flex-wrap:nowrap!important}.ngs .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-xl-start{justify-content:flex-start!important}.ngs .justify-content-xl-end{justify-content:flex-end!important}.ngs .justify-content-xl-center{justify-content:center!important}.ngs .justify-content-xl-between{justify-content:space-between!important}.ngs .justify-content-xl-around{justify-content:space-around!important}.ngs .justify-content-xl-evenly{justify-content:space-evenly!important}.ngs .align-items-xl-start{align-items:flex-start!important}.ngs .align-items-xl-end{align-items:flex-end!important}.ngs .align-items-xl-center{align-items:center!important}.ngs .align-items-xl-baseline{align-items:baseline!important}.ngs .align-items-xl-stretch{align-items:stretch!important}.ngs .align-content-xl-start{align-content:flex-start!important}.ngs .align-content-xl-end{align-content:flex-end!important}.ngs .align-content-xl-center{align-content:center!important}.ngs .align-content-xl-between{align-content:space-between!important}.ngs .align-content-xl-around{align-content:space-around!important}.ngs .align-content-xl-stretch{align-content:stretch!important}.ngs .align-self-xl-auto{align-self:auto!important}.ngs .align-self-xl-start{align-self:flex-start!important}.ngs .align-self-xl-end{align-self:flex-end!important}.ngs .align-self-xl-center{align-self:center!important}.ngs .align-self-xl-baseline{align-self:baseline!important}.ngs .align-self-xl-stretch{align-self:stretch!important}.ngs .order-xl-first{order:-1!important}.ngs .order-xl-0{order:0!important}.ngs .order-xl-1{order:1!important}.ngs .order-xl-2{order:2!important}.ngs .order-xl-3{order:3!important}.ngs .order-xl-4{order:4!important}.ngs .order-xl-5{order:5!important}.ngs .order-xl-last{order:6!important}.ngs .m-xl-0{margin:0!important}.ngs .m-xl-1{margin:.25rem!important}.ngs .m-xl-2{margin:.5rem!important}.ngs .m-xl-3{margin:1rem!important}.ngs .m-xl-4{margin:1.5rem!important}.ngs .m-xl-5{margin:3rem!important}.ngs .m-xl-auto{margin:auto!important}.ngs .mx-xl-0{margin-right:0!important;margin-left:0!important}.ngs .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-xl-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-xl-0{margin-top:0!important}.ngs .mt-xl-1{margin-top:.25rem!important}.ngs .mt-xl-2{margin-top:.5rem!important}.ngs .mt-xl-3{margin-top:1rem!important}.ngs .mt-xl-4{margin-top:1.5rem!important}.ngs .mt-xl-5{margin-top:3rem!important}.ngs .mt-xl-auto{margin-top:auto!important}.ngs .me-xl-0{margin-right:0!important}.ngs .me-xl-1{margin-right:.25rem!important}.ngs .me-xl-2{margin-right:.5rem!important}.ngs .me-xl-3{margin-right:1rem!important}.ngs .me-xl-4{margin-right:1.5rem!important}.ngs .me-xl-5{margin-right:3rem!important}.ngs .me-xl-auto{margin-right:auto!important}.ngs .mb-xl-0{margin-bottom:0!important}.ngs .mb-xl-1{margin-bottom:.25rem!important}.ngs .mb-xl-2{margin-bottom:.5rem!important}.ngs .mb-xl-3{margin-bottom:1rem!important}.ngs .mb-xl-4{margin-bottom:1.5rem!important}.ngs .mb-xl-5{margin-bottom:3rem!important}.ngs .mb-xl-auto{margin-bottom:auto!important}.ngs .ms-xl-0{margin-left:0!important}.ngs .ms-xl-1{margin-left:.25rem!important}.ngs .ms-xl-2{margin-left:.5rem!important}.ngs .ms-xl-3{margin-left:1rem!important}.ngs .ms-xl-4{margin-left:1.5rem!important}.ngs .ms-xl-5{margin-left:3rem!important}.ngs .ms-xl-auto{margin-left:auto!important}.ngs .p-xl-0{padding:0!important}.ngs .p-xl-1{padding:.25rem!important}.ngs .p-xl-2{padding:.5rem!important}.ngs .p-xl-3{padding:1rem!important}.ngs .p-xl-4{padding:1.5rem!important}.ngs .p-xl-5{padding:3rem!important}.ngs .px-xl-0{padding-right:0!important;padding-left:0!important}.ngs .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-xl-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-xl-0{padding-top:0!important}.ngs .pt-xl-1{padding-top:.25rem!important}.ngs .pt-xl-2{padding-top:.5rem!important}.ngs .pt-xl-3{padding-top:1rem!important}.ngs .pt-xl-4{padding-top:1.5rem!important}.ngs .pt-xl-5{padding-top:3rem!important}.ngs .pe-xl-0{padding-right:0!important}.ngs .pe-xl-1{padding-right:.25rem!important}.ngs .pe-xl-2{padding-right:.5rem!important}.ngs .pe-xl-3{padding-right:1rem!important}.ngs .pe-xl-4{padding-right:1.5rem!important}.ngs .pe-xl-5{padding-right:3rem!important}.ngs .pb-xl-0{padding-bottom:0!important}.ngs .pb-xl-1{padding-bottom:.25rem!important}.ngs .pb-xl-2{padding-bottom:.5rem!important}.ngs .pb-xl-3{padding-bottom:1rem!important}.ngs .pb-xl-4{padding-bottom:1.5rem!important}.ngs .pb-xl-5{padding-bottom:3rem!important}.ngs .ps-xl-0{padding-left:0!important}.ngs .ps-xl-1{padding-left:.25rem!important}.ngs .ps-xl-2{padding-left:.5rem!important}.ngs .ps-xl-3{padding-left:1rem!important}.ngs .ps-xl-4{padding-left:1.5rem!important}.ngs .ps-xl-5{padding-left:3rem!important}}@media (min-width: 1400px){.ngs .d-xxl-inline{display:inline!important}.ngs .d-xxl-inline-block{display:inline-block!important}.ngs .d-xxl-block{display:block!important}.ngs .d-xxl-grid{display:grid!important}.ngs .d-xxl-inline-grid{display:inline-grid!important}.ngs .d-xxl-table{display:table!important}.ngs .d-xxl-table-row{display:table-row!important}.ngs .d-xxl-table-cell{display:table-cell!important}.ngs .d-xxl-flex{display:flex!important}.ngs .d-xxl-inline-flex{display:inline-flex!important}.ngs .d-xxl-none{display:none!important}.ngs .flex-xxl-fill{flex:1 1 auto!important}.ngs .flex-xxl-row{flex-direction:row!important}.ngs .flex-xxl-column{flex-direction:column!important}.ngs .flex-xxl-row-reverse{flex-direction:row-reverse!important}.ngs .flex-xxl-column-reverse{flex-direction:column-reverse!important}.ngs .flex-xxl-grow-0{flex-grow:0!important}.ngs .flex-xxl-grow-1{flex-grow:1!important}.ngs .flex-xxl-shrink-0{flex-shrink:0!important}.ngs .flex-xxl-shrink-1{flex-shrink:1!important}.ngs .flex-xxl-wrap{flex-wrap:wrap!important}.ngs .flex-xxl-nowrap{flex-wrap:nowrap!important}.ngs .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.ngs .justify-content-xxl-start{justify-content:flex-start!important}.ngs .justify-content-xxl-end{justify-content:flex-end!important}.ngs .justify-content-xxl-center{justify-content:center!important}.ngs .justify-content-xxl-between{justify-content:space-between!important}.ngs .justify-content-xxl-around{justify-content:space-around!important}.ngs .justify-content-xxl-evenly{justify-content:space-evenly!important}.ngs .align-items-xxl-start{align-items:flex-start!important}.ngs .align-items-xxl-end{align-items:flex-end!important}.ngs .align-items-xxl-center{align-items:center!important}.ngs .align-items-xxl-baseline{align-items:baseline!important}.ngs .align-items-xxl-stretch{align-items:stretch!important}.ngs .align-content-xxl-start{align-content:flex-start!important}.ngs .align-content-xxl-end{align-content:flex-end!important}.ngs .align-content-xxl-center{align-content:center!important}.ngs .align-content-xxl-between{align-content:space-between!important}.ngs .align-content-xxl-around{align-content:space-around!important}.ngs .align-content-xxl-stretch{align-content:stretch!important}.ngs .align-self-xxl-auto{align-self:auto!important}.ngs .align-self-xxl-start{align-self:flex-start!important}.ngs .align-self-xxl-end{align-self:flex-end!important}.ngs .align-self-xxl-center{align-self:center!important}.ngs .align-self-xxl-baseline{align-self:baseline!important}.ngs .align-self-xxl-stretch{align-self:stretch!important}.ngs .order-xxl-first{order:-1!important}.ngs .order-xxl-0{order:0!important}.ngs .order-xxl-1{order:1!important}.ngs .order-xxl-2{order:2!important}.ngs .order-xxl-3{order:3!important}.ngs .order-xxl-4{order:4!important}.ngs .order-xxl-5{order:5!important}.ngs .order-xxl-last{order:6!important}.ngs .m-xxl-0{margin:0!important}.ngs .m-xxl-1{margin:.25rem!important}.ngs .m-xxl-2{margin:.5rem!important}.ngs .m-xxl-3{margin:1rem!important}.ngs .m-xxl-4{margin:1.5rem!important}.ngs .m-xxl-5{margin:3rem!important}.ngs .m-xxl-auto{margin:auto!important}.ngs .mx-xxl-0{margin-right:0!important;margin-left:0!important}.ngs .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.ngs .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.ngs .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.ngs .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.ngs .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.ngs .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.ngs .my-xxl-0{margin-top:0!important;margin-bottom:0!important}.ngs .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.ngs .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.ngs .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.ngs .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.ngs .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.ngs .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.ngs .mt-xxl-0{margin-top:0!important}.ngs .mt-xxl-1{margin-top:.25rem!important}.ngs .mt-xxl-2{margin-top:.5rem!important}.ngs .mt-xxl-3{margin-top:1rem!important}.ngs .mt-xxl-4{margin-top:1.5rem!important}.ngs .mt-xxl-5{margin-top:3rem!important}.ngs .mt-xxl-auto{margin-top:auto!important}.ngs .me-xxl-0{margin-right:0!important}.ngs .me-xxl-1{margin-right:.25rem!important}.ngs .me-xxl-2{margin-right:.5rem!important}.ngs .me-xxl-3{margin-right:1rem!important}.ngs .me-xxl-4{margin-right:1.5rem!important}.ngs .me-xxl-5{margin-right:3rem!important}.ngs .me-xxl-auto{margin-right:auto!important}.ngs .mb-xxl-0{margin-bottom:0!important}.ngs .mb-xxl-1{margin-bottom:.25rem!important}.ngs .mb-xxl-2{margin-bottom:.5rem!important}.ngs .mb-xxl-3{margin-bottom:1rem!important}.ngs .mb-xxl-4{margin-bottom:1.5rem!important}.ngs .mb-xxl-5{margin-bottom:3rem!important}.ngs .mb-xxl-auto{margin-bottom:auto!important}.ngs .ms-xxl-0{margin-left:0!important}.ngs .ms-xxl-1{margin-left:.25rem!important}.ngs .ms-xxl-2{margin-left:.5rem!important}.ngs .ms-xxl-3{margin-left:1rem!important}.ngs .ms-xxl-4{margin-left:1.5rem!important}.ngs .ms-xxl-5{margin-left:3rem!important}.ngs .ms-xxl-auto{margin-left:auto!important}.ngs .p-xxl-0{padding:0!important}.ngs .p-xxl-1{padding:.25rem!important}.ngs .p-xxl-2{padding:.5rem!important}.ngs .p-xxl-3{padding:1rem!important}.ngs .p-xxl-4{padding:1.5rem!important}.ngs .p-xxl-5{padding:3rem!important}.ngs .px-xxl-0{padding-right:0!important;padding-left:0!important}.ngs .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.ngs .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.ngs .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.ngs .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.ngs .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.ngs .py-xxl-0{padding-top:0!important;padding-bottom:0!important}.ngs .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.ngs .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.ngs .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.ngs .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.ngs .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.ngs .pt-xxl-0{padding-top:0!important}.ngs .pt-xxl-1{padding-top:.25rem!important}.ngs .pt-xxl-2{padding-top:.5rem!important}.ngs .pt-xxl-3{padding-top:1rem!important}.ngs .pt-xxl-4{padding-top:1.5rem!important}.ngs .pt-xxl-5{padding-top:3rem!important}.ngs .pe-xxl-0{padding-right:0!important}.ngs .pe-xxl-1{padding-right:.25rem!important}.ngs .pe-xxl-2{padding-right:.5rem!important}.ngs .pe-xxl-3{padding-right:1rem!important}.ngs .pe-xxl-4{padding-right:1.5rem!important}.ngs .pe-xxl-5{padding-right:3rem!important}.ngs .pb-xxl-0{padding-bottom:0!important}.ngs .pb-xxl-1{padding-bottom:.25rem!important}.ngs .pb-xxl-2{padding-bottom:.5rem!important}.ngs .pb-xxl-3{padding-bottom:1rem!important}.ngs .pb-xxl-4{padding-bottom:1.5rem!important}.ngs .pb-xxl-5{padding-bottom:3rem!important}.ngs .ps-xxl-0{padding-left:0!important}.ngs .ps-xxl-1{padding-left:.25rem!important}.ngs .ps-xxl-2{padding-left:.5rem!important}.ngs .ps-xxl-3{padding-left:1rem!important}.ngs .ps-xxl-4{padding-left:1.5rem!important}.ngs .ps-xxl-5{padding-left:3rem!important}}@media print{.ngs .d-print-inline{display:inline!important}.ngs .d-print-inline-block{display:inline-block!important}.ngs .d-print-block{display:block!important}.ngs .d-print-grid{display:grid!important}.ngs .d-print-inline-grid{display:inline-grid!important}.ngs .d-print-table{display:table!important}.ngs .d-print-table-row{display:table-row!important}.ngs .d-print-table-cell{display:table-cell!important}.ngs .d-print-flex{display:flex!important}.ngs .d-print-inline-flex{display:inline-flex!important}.ngs .d-print-none{display:none!important}}\n", ".prevSection button{padding:5px 10px;float:left;margin-left:0}.nextSection button{padding:5px 10px;float:right;margin-left:0}.separator-horizontal{width:1px;height:100%;background-color:#d6cece;margin:0 auto}.content-element-form{position:relative;padding-bottom:70px}.section-navs{width:100%;position:absolute;bottom:0;background-color:#f2f6fc;padding:10px;flex-direction:row-reverse}.sirio-nav-item a{cursor:pointer}@media (max-width: 991px){.content-element-form{width:100%!important}}ngx-sirio-input-chip{margin-right:.5rem}\n"] }]
2826
+ }], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: ProgrammabilityService }, { type: EventService }, { type: RegisterService }], propDecorators: { schema: [{
2827
+ type: Input
2828
+ }], formGroup: [{
2829
+ type: Input
2830
+ }], value: [{
2831
+ type: Input
2832
+ }], showNav: [{
2833
+ type: Input
2834
+ }], showNavButton: [{
2835
+ type: Input
2836
+ }], showProgress: [{
2837
+ type: Input
2838
+ }], progressStatus: [{
2839
+ type: Input
2840
+ }], valueChange: [{
2841
+ type: Output
2842
+ }], initialized: [{
2843
+ type: Output
2844
+ }], onCommand: [{
2845
+ type: Output
2846
+ }], activeNavChange: [{
2847
+ type: Output
2848
+ }], activeNav: [{
2849
+ type: Input
2850
+ }] } });
2851
+
2852
+ function extractFiles(data) {
2853
+ let files = [];
2854
+ const rewrite = (obj) => {
2855
+ if (Array.isArray(obj)) {
2856
+ return obj.map(item => rewrite(item));
2857
+ }
2858
+ else if (obj instanceof File) {
2859
+ files.push(obj);
2860
+ return {
2861
+ name: obj.name,
2862
+ size: obj.size,
2863
+ type: obj.type,
2864
+ lastModified: obj.lastModified,
2865
+ _fileIndex: files.length - 1
2866
+ };
2867
+ }
2868
+ else if (typeof obj === 'object' && obj !== null) {
2869
+ const rewritten = {};
2870
+ for (const key in obj) {
2871
+ if (obj.hasOwnProperty(key)) {
2872
+ rewritten[key] = rewrite(obj[key]);
2873
+ }
2874
+ }
2875
+ return rewritten;
2876
+ }
2877
+ return obj;
2878
+ };
2879
+ return { data: rewrite(data), files: files };
2880
+ }
2881
+
2882
+ function toFormData(data) {
2883
+ const formData = new FormData();
2884
+ var result = extractFiles(data);
2885
+ formData.append("data", JSON.stringify(result.data));
2886
+ result.files.forEach((file) => {
2887
+ formData.append("files", file);
2888
+ });
2889
+ return formData;
2890
+ }
2891
+
2892
+ class ODataSource {
2893
+ url;
2894
+ http;
2895
+ constructor(url, http) {
2896
+ this.url = url;
2897
+ this.http = http;
2898
+ }
2899
+ getRows(params) {
2900
+ const queryString = this.getQueryString(params);
2901
+ let queryUrl = `${this.url}${queryString}`;
2902
+ this.http.get(queryUrl, { observe: 'response' }).subscribe({
2903
+ next: response => {
2904
+ const data = response.body ?? [];
2905
+ const count = response.headers.get('X-Total-Count');
2906
+ params.successCallback(data, this.toNumber(count));
2907
+ },
2908
+ error: error => {
2909
+ console.log(error);
2910
+ params.failCallback();
2911
+ }
2912
+ });
2913
+ }
2914
+ getQueryString(params) {
2915
+ let queryParams = new HttpParams();
2916
+ queryParams = this.addCount(queryParams);
2917
+ queryParams = this.addSkipAndTake(params, queryParams);
2918
+ queryParams = this.addOrderBy(params, queryParams);
2919
+ queryParams = this.addFilterBy(params, queryParams);
2920
+ const queryString = queryParams.toString();
2921
+ return queryString ? "?" + queryString : queryString;
2922
+ }
2923
+ addCount(queryParams) {
2924
+ return queryParams.set("$count", "true");
2925
+ }
2926
+ addSkipAndTake(params, queryParams) {
2927
+ return queryParams
2928
+ .set("$top", `${params.endRow - params.startRow}`)
2929
+ .set("$skip", `${params.startRow}`);
2930
+ }
2931
+ addOrderBy(params, queryParams) {
2932
+ if (!params.sortModel || params.sortModel.length === 0) {
2933
+ return queryParams;
2934
+ }
2935
+ const orderByParams = params.sortModel
2936
+ .map(sort => `${sort.colId} ${sort.sort}`)
2937
+ .join(",");
2938
+ return queryParams.set("$orderby", orderByParams);
2939
+ }
2940
+ addFilterBy(params, queryParams) {
2941
+ const filterModel = params.filterModel;
2942
+ if (!filterModel || Object.keys(filterModel).length === 0) {
2943
+ return queryParams;
2944
+ }
2945
+ const filters = [];
2946
+ for (const column in filterModel) {
2947
+ const filter = filterModel[column];
2948
+ const condition = this.getCondition(column, filter);
2949
+ if (condition) {
2950
+ filters.push(condition);
2951
+ }
2952
+ }
2953
+ return queryParams.set("$filter", filters.join(" and "));
2954
+ }
2955
+ getCondition(column, filter) {
2956
+ if (filter.operator === "AND" || filter.operator === "OR") {
2957
+ if (Array.isArray(filter.conditions)) {
2958
+ return "(" + filter.conditions.map((subfilter) => this.getCondition(column, subfilter))
2959
+ .join(` ${filter.operator.toLowerCase()} `) + ")";
2960
+ }
2961
+ return null;
2962
+ }
2963
+ const value = filter.filter;
2964
+ switch (filter.filterType) {
2965
+ case "text":
2966
+ const text = (value ?? "").replace(/'/g, "''");
2967
+ if (filter.type === "contains") {
2968
+ return `contains(${column}, '${text}')`;
2969
+ }
2970
+ else if (filter.type === "notContains") {
2971
+ return `not contains(${column}, '${text}')`;
2972
+ }
2973
+ else if (filter.type === "equals") {
2974
+ return `${column} eq '${text}'`;
2975
+ }
2976
+ else if (filter.type === "notEqual") {
2977
+ return `${column} ne '${text}'`;
2978
+ }
2979
+ else if (filter.type === "startsWith") {
2980
+ return `startswith(${column}, '${text}')`;
2981
+ }
2982
+ else if (filter.type === "endsWith") {
2983
+ return `endswith(${column}, '${text}')`;
2984
+ }
2985
+ else if (filter.type === "blank") {
2986
+ return `${column} eq null`;
2987
+ }
2988
+ else if (filter.type === "notBlank") {
2989
+ return `${column} ne null`;
2990
+ }
2991
+ break;
2992
+ case "number":
2993
+ if (filter.type === "equals") {
2994
+ return `${column} eq ${value}`;
2995
+ }
2996
+ else if (filter.type === "greaterThan") {
2997
+ return `${column} gt ${value}`;
2998
+ }
2999
+ else if (filter.type === "lessThan") {
3000
+ return `${column} lt ${value}`;
3001
+ }
3002
+ else if (filter.type === "greaterThanOrEqual") {
3003
+ return `${column} ge ${value}`;
3004
+ }
3005
+ else if (filter.type === "lessThanOrEqual") {
3006
+ return `${column} le ${value}`;
3007
+ }
3008
+ break;
3009
+ case "date":
3010
+ return `${column} eq ${value}`; // Modifica se OData usa formati ISO
3011
+ }
3012
+ return null;
3013
+ }
3014
+ toNumber(value) {
3015
+ if (!value)
3016
+ return undefined;
3017
+ const num = parseFloat(value);
3018
+ return isNaN(num) ? undefined : num;
3019
+ }
3020
+ }
3021
+
3022
+ class RestDataSource {
3023
+ http;
3024
+ baseUrl;
3025
+ params = {};
3026
+ mapFn;
3027
+ constructor(http, baseUrl) {
3028
+ this.http = http;
3029
+ this.baseUrl = baseUrl;
3030
+ }
3031
+ setParam(key, value) {
3032
+ if (value !== undefined && value !== null) {
3033
+ this.params[key] = value;
3034
+ }
3035
+ else {
3036
+ delete this.params[key];
3037
+ }
3038
+ return this;
3039
+ }
3040
+ setParams(params) {
3041
+ this.params = { ...params };
3042
+ return this;
3043
+ }
3044
+ setMapFunction(mapFn) {
3045
+ this.mapFn = mapFn;
3046
+ return this;
3047
+ }
3048
+ getMapFunction() {
3049
+ return this.mapFn;
3050
+ }
3051
+ getParam(key) {
3052
+ return this.params[key];
3053
+ }
3054
+ getParams() {
3055
+ return this.params;
3056
+ }
3057
+ getData() {
3058
+ let httpParams = new HttpParams();
3059
+ Object.keys(this.params).forEach(key => {
3060
+ if (this.params[key] !== undefined && this.params[key] !== null) {
3061
+ httpParams = httpParams.set(key, this.params[key].toString());
3062
+ }
3063
+ });
3064
+ return this.http.get(this.baseUrl, { params: httpParams }).pipe(map(responseArray => this.mapFn ? responseArray.map(item => this.mapFn(item)) : responseArray));
3065
+ }
3066
+ }
3067
+
3068
+ class DataService {
3069
+ http;
3070
+ constructor(http) {
3071
+ this.http = http;
3072
+ }
3073
+ queryOData(url) {
3074
+ return this.createOData(url);
3075
+ }
3076
+ createRest(url) {
3077
+ return new RestDataSource(this.http, url);
3078
+ }
3079
+ createOData(url) {
3080
+ return new ODataSource(url, this.http);
3081
+ }
3082
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataService, deps: [{ token: i1$4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
3083
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataService, providedIn: 'root' });
3084
+ }
3085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataService, decorators: [{
3086
+ type: Injectable,
3087
+ args: [{
3088
+ providedIn: 'root'
3089
+ }]
3090
+ }], ctorParameters: () => [{ type: i1$4.HttpClient }] });
3091
+
3092
+ /*
3093
+ * Public API Surface of sirio
3094
+ */
3095
+
3096
+ /**
3097
+ * Generated bundle index. Do not edit.
3098
+ */
3099
+
3100
+ export { DataService, DynamicFormComponent, ScopeService, toFormData };
3101
+ //# sourceMappingURL=wemake4u-form-player-se.mjs.map