@wemake4u/form-player-se 1.0.8 → 1.0.10

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.
@@ -1,20 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Optional, SkipSelf, Directive, Input, Host, ContentChild, forwardRef, ContentChildren, Component, ViewEncapsulation, EventEmitter, Output } from '@angular/core';
2
+ import { Injectable, Optional, SkipSelf, Component, Directive, Input, Host, ContentChild, forwardRef, ContentChildren, ViewEncapsulation, EventEmitter, Output } from '@angular/core';
3
3
  import * as i10 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
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';
6
+ import { FormArray, FormControl as FormControl$1, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
7
+ import { isObservable, take, tap, of, Subject, takeUntil } from 'rxjs';
8
8
  import { evaluate } from 'feelers';
9
9
  import { evaluate as evaluate$1, unaryTest, parseExpression } from 'feelin';
10
10
  import { shareReplay, takeUntil as takeUntil$1, map } from 'rxjs/operators';
11
11
  import * as i1 from 'ngx-sirio-lib';
12
- import { SirioButtonComponent, SirioInputComponent, SirioValidationDirective, SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioDatepickerComponent, SirioTimepickerComponent, SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent, SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent, SirioFileUploadComponent, SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent, SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent, SirioNotifyComponent, SirioNotifyBodyComponent, SirioTooltipDirective, SirioNotifyActionComponent, SirioNotifyLinkComponent, SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent } from 'ngx-sirio-lib';
12
+ import { SirioButtonComponent, SirioInputComponent, SirioCheckboxComponent, SirioCheckboxGroupComponent, SirioValidationDirective, SirioSelectComponent, SirioSelectOptionComponent, SirioSelectPanelComponent, SirioDatepickerComponent, SirioTimepickerComponent, SirioRadioGroupComponent, SirioRadioButtonComponent, SirioTabComponent, SirioTabItemComponent, SirioAccordionComponent, SirioAccordionPanelComponent, SirioAccordionHeaderComponent, SirioAccordionBodyComponent, SirioFileUploadComponent, SirioToggleComponent, SirioChipCheckboxGroupComponent, SirioChipRadioGroupComponent, SirioInputChipComponent, SirioAlertComponent, SirioAlertMessageComponent, SirioSliderComponent, SirioNotifyComponent, SirioNotifyBodyComponent, SirioTooltipDirective, SirioNotifyActionComponent, SirioNotifyLinkComponent, SirioSidenavMobileComponent, SirioSidenavComponent, SirioSidenavItemComponent, SirioStepperProgressBarComponent, SirioStepperProgressItemComponent } from 'ngx-sirio-lib';
13
13
  import { Datepicker } from 'vanillajs-datepicker';
14
+ import { ClientSideRowModelModule, InfiniteRowModelModule, PaginationModule, LocaleModule, CellStyleModule, ClientSideRowModelApiModule, TextFilterModule, NumberFilterModule, DateFilterModule, ColumnAutoSizeModule, ColumnApiModule, themeQuartz, iconSetAlpine } from 'ag-grid-community';
15
+ import { AG_GRID_LOCALE_IT } from '@ag-grid-community/locale';
14
16
  import * as i1$2 from 'ag-grid-angular';
15
17
  import { AgGridAngular } from 'ag-grid-angular';
16
- import { ClientSideRowModelModule, InfiniteRowModelModule, PaginationModule, LocaleModule, CellStyleModule, ClientSideRowModelApiModule, TextFilterModule, NumberFilterModule, DateFilterModule, ColumnAutoSizeModule, ColumnApiModule, ValidationModule, themeQuartz, iconSetAlpine } from 'ag-grid-community';
17
- import { AG_GRID_LOCALE_IT } from '@ag-grid-community/locale';
18
18
  import sanitizeHtml from 'sanitize-html';
19
19
  import * as i1$3 from '@angular/platform-browser';
20
20
  import { marked } from 'marked';
@@ -247,15 +247,19 @@ class WeakService {
247
247
  const observable = isObservable(result);
248
248
  if (observable) {
249
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
- });
250
+ result = result.pipe(take(1), tap((res) => {
251
+ cachedObject[key] = of(res);
252
+ }), shareReplay(1));
253
+ //let subscription: Subscription;
254
+ //subscription = result
255
+ // .subscribe({
256
+ // next: (result: any) => {
257
+ // subscription.unsubscribe();
258
+ // cachedObject[key] = of(result);
259
+ // },
260
+ // error: (error : any) => console.error(error),
261
+ // complete: () => console.log('Observable complete')
262
+ // });
259
263
  }
260
264
  cachedObject[key] = result;
261
265
  return result;
@@ -536,20 +540,36 @@ class ProgrammabilityService {
536
540
  return null;
537
541
  }
538
542
  const options = new ProxyOptions();
543
+ const scope = this.scope ? this.scope.proxy() : null;
539
544
  options.extend = {
540
- parent: this.getParent(formGroup),
545
+ parent: this.getParentContext(formGroup),
541
546
  getFormGroup: () => this.proxyService.getProxy(formGroup),
542
- getScope: () => this.scope ? this.scope.proxy() : null,
547
+ getScope: () => scope,
543
548
  controls: () => this.register ? this.register.proxy() : null,
544
549
  notifyInfo: (message, delay) => this.toastService.notifyInfo(message, delay),
545
550
  notifySuccess: (message, delay) => this.toastService.notifySuccess(message, delay),
546
551
  notifyWarning: (message, delay) => this.toastService.notifyWarning(message, delay),
547
552
  notifyError: (message, delay) => this.toastService.notifyError(message, delay)
548
553
  };
554
+ const scopeSymbol = "_";
555
+ if (formGroup.get(scopeSymbol) === null) {
556
+ options.extend[scopeSymbol] = scope;
557
+ }
549
558
  if (proxyFn)
550
559
  proxyFn(options);
551
560
  return this.proxyService.getProxy(formGroup.value, options);
552
561
  }
562
+ getParentContext(formGroup) {
563
+ const parent = this.getParent(formGroup);
564
+ if (!parent) {
565
+ return null;
566
+ }
567
+ const options = new ProxyOptions();
568
+ options.extend = {
569
+ parent: this.getParentContext(parent)
570
+ };
571
+ return this.proxyService.getProxy(parent.value, options);
572
+ }
553
573
  getParent(formGroup) {
554
574
  let parent = formGroup.parent;
555
575
  while (parent instanceof FormArray) {
@@ -726,23 +746,823 @@ class MetadataService {
726
746
  getSchema() {
727
747
  return this.schema;
728
748
  }
729
- setForms(forms) {
730
- this.forms = forms ?? [];
749
+ setForms(forms) {
750
+ this.forms = forms ?? [];
751
+ }
752
+ getForms() {
753
+ return this.forms;
754
+ }
755
+ getFormByName(name) {
756
+ return this.forms.find(form => form.name === name);
757
+ }
758
+ schema = { forms: [] };
759
+ forms = [];
760
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
761
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService });
762
+ }
763
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService, decorators: [{
764
+ type: Injectable
765
+ }], ctorParameters: () => [] });
766
+
767
+ const Texts = {
768
+ TypeToSearch: "Digita per cercare...",
769
+ Upload: "Upload",
770
+ ScrollLeft: "Scorri a sinistra",
771
+ ScrollRight: "Scorri a destra",
772
+ AddItem: "Aggiungi",
773
+ RemoveItem: "Rimuovi",
774
+ PreviousSection: "Sezione precedente",
775
+ NextSection: "Sezione successiva",
776
+ Show: "Visualizza",
777
+ Remove: "Rimuovi",
778
+ Close: "Chiudi",
779
+ Name: "Nome",
780
+ Size: "Dimensione",
781
+ Type: "Tipo",
782
+ Actions: "Azioni",
783
+ ReadMore: "Leggi di più",
784
+ ReadLess: "Leggi di meno",
785
+ SelectAll: "Seleziona tutto",
786
+ ChooseOne: "Scegli uno",
787
+ True: "Vero",
788
+ False: "Falso",
789
+ Blank: "Vuoto",
790
+ NotBlank: "Non vuoto",
791
+ };
792
+
793
+ class ObjectURLRendererComponent {
794
+ params;
795
+ Texts = Texts;
796
+ agInit(params) {
797
+ this.params = params;
798
+ }
799
+ onClick(event) {
800
+ const fileURL = URL.createObjectURL(this.params.data);
801
+ window.open(fileURL, '_blank');
802
+ setTimeout(() => {
803
+ URL.revokeObjectURL(fileURL);
804
+ }, 1000);
805
+ }
806
+ refresh() {
807
+ return false;
808
+ }
809
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
810
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectURLRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" });
811
+ }
812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, decorators: [{
813
+ type: Component,
814
+ args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" }]
815
+ }] });
816
+ class DeleteRowCellRenderer {
817
+ params;
818
+ Texts = Texts;
819
+ agInit(params) {
820
+ this.params = params;
821
+ }
822
+ onClick(event) {
823
+ if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {
824
+ this.params.data.remove();
825
+ }
826
+ }
827
+ refresh() {
828
+ return false;
829
+ }
830
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
831
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeleteRowCellRenderer, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" });
832
+ }
833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, decorators: [{
834
+ type: Component,
835
+ args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" }]
836
+ }] });
837
+ class ActionsCellRenderer {
838
+ programmability;
839
+ constructor(programmability) {
840
+ this.programmability = programmability;
841
+ }
842
+ params;
843
+ agInit(params) {
844
+ this.params = params;
845
+ }
846
+ refresh() {
847
+ return false;
848
+ }
849
+ evaluateBoolean(value) {
850
+ const options = {
851
+ proxyFn: (options) => {
852
+ options.extend["getParams"] = () => this.params;
853
+ options.extend["getData"] = () => this.getData();
854
+ }
855
+ };
856
+ return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);
857
+ }
858
+ evaluateString(value) {
859
+ return this.programmability.evaluateString(this.getFormGroup(), value);
860
+ }
861
+ clickButton(action, event) {
862
+ if (action.click) {
863
+ const options = {
864
+ cacheable: false,
865
+ proxyFn: (options) => {
866
+ options.extend["getParams"] = () => this.params;
867
+ options.extend["getAction"] = () => action;
868
+ options.extend["getData"] = () => this.getData();
869
+ }
870
+ };
871
+ return this.programmability.evaluate(this.getFormGroup(), action.click, options);
872
+ }
873
+ }
874
+ getData() {
875
+ return this.params.data;
876
+ }
877
+ getFormGroup() {
878
+ return this.params.formGroup;
879
+ }
880
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRenderer, deps: [{ token: ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Component });
881
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionsCellRenderer, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }] });
882
+ }
883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRenderer, decorators: [{
884
+ type: Component,
885
+ args: [{ standalone: true, imports: [
886
+ CommonModule, SirioButtonComponent
887
+ ], template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n" }]
888
+ }], ctorParameters: () => [{ type: ProgrammabilityService }] });
889
+
890
+ const getLabelSymbol = Symbol('getLabel');
891
+
892
+ function isLabeledRecord(obj, isKey, isValue, getLabelSymbol) {
893
+ if (!isRecord(obj, isKey, isValue)) {
894
+ return false;
895
+ }
896
+ const getLabel = obj[getLabelSymbol];
897
+ return (getLabel !== undefined && typeof getLabel === 'function');
898
+ }
899
+ function isRecord(obj, isKey, isValue) {
900
+ if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
901
+ return false;
902
+ }
903
+ return Object.entries(obj).every(([key, val]) => {
904
+ return isKey(key) && isValue(val);
905
+ });
906
+ }
907
+ function isStringKey(key) {
908
+ return typeof key === 'string';
909
+ }
910
+ function isNumericKey(key) {
911
+ return typeof key === 'string' && !isNaN(Number(key));
912
+ }
913
+ function isBooleanKey(key) {
914
+ return key === 'true' || key === 'false';
915
+ }
916
+
917
+ class SetFilterComponent {
918
+ params;
919
+ fieldName;
920
+ Texts = Texts;
921
+ selectAll = true;
922
+ searchText = '';
923
+ options = [];
924
+ filteredOptions = [];
925
+ agInit(params) {
926
+ this.params = params;
927
+ this.fieldName = params.colDef.field;
928
+ const map = params.colDef.filterParams?.map;
929
+ const result = isRecord(map, key => typeof key === 'string' || typeof key === 'number', val => typeof val === 'string');
930
+ if (result) {
931
+ this.options = Object.entries(map).map(([key, label]) => ({
932
+ value: this.parseKey(key),
933
+ label: label,
934
+ selected: true
935
+ }));
936
+ }
937
+ else {
938
+ this.options = [];
939
+ }
940
+ this.filteredOptions = [...this.options];
941
+ }
942
+ isFilterActive() {
943
+ return this.options.some(o => !o.selected);
944
+ }
945
+ doesFilterPass(params) {
946
+ const value = this.resolvePath(params.data, this.fieldName);
947
+ return this.options.some(o => o.selected && o.value === value);
948
+ }
949
+ getModel() {
950
+ const selectedValues = this.options
951
+ .filter(o => o.selected)
952
+ .map(o => o.value);
953
+ if (selectedValues.length === this.options.length) {
954
+ return null;
955
+ }
956
+ if (selectedValues.length === 0) {
957
+ return {
958
+ filterType: 'text',
959
+ type: 'excludeAll'
960
+ };
961
+ }
962
+ const filters = selectedValues.map(value => ({
963
+ filterType: 'number',
964
+ type: 'equals',
965
+ filter: value
966
+ }));
967
+ if (filters.length === 1)
968
+ return filters[0];
969
+ return {
970
+ filterType: 'number',
971
+ operator: 'OR',
972
+ conditions: filters
973
+ };
974
+ }
975
+ setModel(model) {
976
+ const selected = model?.values ?? this.options.map(o => o.value);
977
+ this.options.forEach(o => o.selected = selected.includes(o.value));
978
+ this.updateFilteredOptions();
979
+ }
980
+ onSelectionChange() {
981
+ this.params.filterChangedCallback();
982
+ }
983
+ onSearchChange() {
984
+ this.updateFilteredOptions();
985
+ }
986
+ onSelectAllChange() {
987
+ this.setAll(this.selectAll);
988
+ }
989
+ parseKey(key) {
990
+ if (key === 'true')
991
+ return true;
992
+ if (key === 'false')
993
+ return false;
994
+ const num = Number(key);
995
+ return isNaN(num) ? key : num;
996
+ }
997
+ setAll(select) {
998
+ this.options.forEach(o => o.selected = select);
999
+ this.updateFilteredOptions();
1000
+ this.params.filterChangedCallback();
1001
+ }
1002
+ updateFilteredOptions() {
1003
+ const search = this.searchText.toLowerCase();
1004
+ this.filteredOptions = this.options.filter(o => o.label.toLowerCase().includes(search));
1005
+ }
1006
+ resolvePath(obj, path) {
1007
+ return path.split('.').reduce((acc, part) => acc?.[part], obj);
1008
+ }
1009
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1010
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SetFilterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "component", type: SirioCheckboxComponent, selector: "ngx-sirio-checkbox", inputs: ["disabled", "name", "textHelp", "textFeedback", "value", "ariaInvalid", "ariaDescribedBy", "disabledState", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioCheckboxGroupComponent, selector: "ngx-sirio-checkbox-group", inputs: ["textHelp", "textFeedback", "label", "labelPopover", "ariaLabelPopoverButton", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }] });
1011
+ }
1012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetFilterComponent, decorators: [{
1013
+ type: Component,
1014
+ args: [{ standalone: true, imports: [CommonModule, FormsModule, SirioInputComponent,
1015
+ SirioCheckboxComponent, SirioCheckboxGroupComponent,
1016
+ SirioButtonComponent], template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n" }]
1017
+ }] });
1018
+
1019
+ //import { FeelService } from '../services/feel.service';
1020
+ class FormatterService {
1021
+ //constructor(private feelService: FeelService) { }
1022
+ constructor() { }
1023
+ formatCurrency(value, symbol = null) {
1024
+ if (isNaN(value) || value === null || value === undefined) {
1025
+ return value;
1026
+ }
1027
+ const numberValue = parseFloat(value);
1028
+ if (isNaN(numberValue)) {
1029
+ return value;
1030
+ }
1031
+ const result = numberValue.toFixed(2).replace(".", ",").replace(/\B(?=(\d{3})+(?!\d))/g, ".");
1032
+ if (symbol) {
1033
+ return symbol + ' ' + result;
1034
+ }
1035
+ else {
1036
+ return result;
1037
+ }
1038
+ }
1039
+ formatDate(value) {
1040
+ if (!value)
1041
+ return '';
1042
+ const date = new Date(value);
1043
+ if (isNaN(date.getTime()))
1044
+ return '';
1045
+ const day = String(date.getDate()).padStart(2, '0');
1046
+ const month = String(date.getMonth() + 1).padStart(2, '0');
1047
+ const year = date.getFullYear();
1048
+ return `${day}/${month}/${year}`;
1049
+ }
1050
+ formatDateTime(value) {
1051
+ if (!value)
1052
+ return '';
1053
+ const date = new Date(value);
1054
+ if (isNaN(date.getTime()))
1055
+ return '';
1056
+ const hasTime = typeof value === 'string' && value.includes('T');
1057
+ const day = String(date.getDate()).padStart(2, '0');
1058
+ const month = String(date.getMonth() + 1).padStart(2, '0');
1059
+ const year = date.getFullYear();
1060
+ if (!hasTime) {
1061
+ return `${day}/${month}/${year} 00:00:00`;
1062
+ }
1063
+ else {
1064
+ const hours = String(date.getHours()).padStart(2, '0');
1065
+ const minutes = String(date.getMinutes()).padStart(2, '0');
1066
+ const seconds = String(date.getSeconds()).padStart(2, '0');
1067
+ return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;
1068
+ }
1069
+ }
1070
+ formatInteger(value) {
1071
+ if (isNaN(value) || value === null || value === undefined) {
1072
+ return value;
1073
+ }
1074
+ const numberValue = parseInt(value, 10);
1075
+ if (isNaN(numberValue)) {
1076
+ return value;
1077
+ }
1078
+ return numberValue.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
1079
+ }
1080
+ formatExpression(value, expression) {
1081
+ return value;
1082
+ //const result = this.feelService.evalExpression(expression, { value: value }) as string;
1083
+ //return result;
1084
+ }
1085
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1086
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, providedIn: 'root' });
1087
+ }
1088
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, decorators: [{
1089
+ type: Injectable,
1090
+ args: [{
1091
+ providedIn: 'root'
1092
+ }]
1093
+ }], ctorParameters: () => [] });
1094
+
1095
+ class GridService {
1096
+ formatter;
1097
+ programmability;
1098
+ constructor(formatter, programmability) {
1099
+ this.formatter = formatter;
1100
+ this.programmability = programmability;
1101
+ }
1102
+ getGridModules() {
1103
+ return [
1104
+ ClientSideRowModelModule,
1105
+ InfiniteRowModelModule,
1106
+ PaginationModule,
1107
+ LocaleModule,
1108
+ CellStyleModule,
1109
+ ClientSideRowModelApiModule,
1110
+ TextFilterModule,
1111
+ NumberFilterModule,
1112
+ DateFilterModule,
1113
+ ColumnAutoSizeModule,
1114
+ ColumnApiModule
1115
+ ];
1116
+ }
1117
+ ;
1118
+ getGridOptions(component, formGroup) {
1119
+ const columnDefs = this.getGridColumns(component, formGroup);
1120
+ const pagination = this.getGridPaginable(component);
1121
+ const pageSize = this.getGridPageSize(component);
1122
+ const texts = this.getGridTexts();
1123
+ const theme = this.getGridTheme();
1124
+ return {
1125
+ defaultColDef: {
1126
+ floatingFilter: (component.floatingFilter === true),
1127
+ headerClass: (component.floatingFilter === true)
1128
+ ? 'show-filter' : 'hide-filter'
1129
+ },
1130
+ dataTypeDefinitions: this.getDataTypeDefinitions(),
1131
+ columnDefs: columnDefs,
1132
+ pagination: pagination,
1133
+ paginationPageSize: pageSize,
1134
+ cacheBlockSize: pageSize,
1135
+ paginationPageSizeSelector: [5, 10, 20, 50],
1136
+ localeText: texts,
1137
+ enableCellTextSelection: true,
1138
+ theme: theme,
1139
+ onGridReady: (params) => {
1140
+ params.api.autoSizeColumns(["actions"]);
1141
+ }
1142
+ };
1143
+ }
1144
+ getGridColumns(component, formGroup) {
1145
+ if (Array.isArray(component.columns)) {
1146
+ const columns = component.columns.map((column) => {
1147
+ const colDef = {
1148
+ field: column.key,
1149
+ headerName: column.label,
1150
+ };
1151
+ this.setCellDataType(column, colDef);
1152
+ const map = this.getMap(column, colDef, formGroup);
1153
+ this.setCellRenderer(column, colDef, map);
1154
+ this.setResizable(column, colDef);
1155
+ this.setSortable(column, colDef);
1156
+ this.setFilter(column, colDef, map);
1157
+ this.setFilterParams(column, colDef, map);
1158
+ this.setSuppressMovable(column, colDef);
1159
+ this.setFlex(column, colDef);
1160
+ this.setAlign(column, colDef);
1161
+ this.setPinned(column, colDef);
1162
+ this.setWidth(column, colDef);
1163
+ this.setValueFormatter(column, colDef, map);
1164
+ return colDef;
1165
+ });
1166
+ if (Array.isArray(component.actions) && component.actions.length > 0) {
1167
+ columns.push({
1168
+ colId: 'actions',
1169
+ headerName: Texts.Actions,
1170
+ resizable: false,
1171
+ cellDataType: false,
1172
+ pinned: "right",
1173
+ cellRendererParams: {
1174
+ component: component,
1175
+ formGroup: formGroup
1176
+ },
1177
+ cellRenderer: ActionsCellRenderer,
1178
+ suppressKeyboardEvent: this.navigateInsideCell
1179
+ });
1180
+ }
1181
+ return columns;
1182
+ }
1183
+ else {
1184
+ return [];
1185
+ }
1186
+ }
1187
+ setCellDataType(column, colDef) {
1188
+ if (typeof column.dataType === "string"
1189
+ && column.dataType.trim() !== ""
1190
+ && column.dataType !== "auto") {
1191
+ colDef.cellDataType = column.dataType;
1192
+ }
1193
+ }
1194
+ setCellRenderer(column, colDef, map) {
1195
+ if (column.format === "objectURL") {
1196
+ colDef.cellRenderer = ObjectURLRendererComponent;
1197
+ }
1198
+ if (column.format === "deleteRow") {
1199
+ colDef.cellRenderer = DeleteRowCellRenderer;
1200
+ }
1201
+ if (colDef.cellDataType === "boolean" && map) {
1202
+ colDef.cellRenderer = (params) => {
1203
+ return this.formatMap(params.value, map);
1204
+ };
1205
+ }
1206
+ }
1207
+ setResizable(column, colDef) {
1208
+ colDef.resizable = (column.resize === true);
1209
+ }
1210
+ setSortable(column, colDef) {
1211
+ colDef.sortable = (column.sort === true);
1212
+ }
1213
+ setFilter(column, colDef, map) {
1214
+ if (column.filter === true) {
1215
+ colDef.filter = true;
1216
+ if (map) {
1217
+ colDef.filter = SetFilterComponent;
1218
+ }
1219
+ }
1220
+ }
1221
+ setFilterParams(column, colDef, map) {
1222
+ const filterParams = {};
1223
+ if (column.dataType === 'uuid') {
1224
+ this.setUuidFilterParams(filterParams);
1225
+ }
1226
+ else if (column.dataType === 'integer') {
1227
+ this.setIntegerFilterParams(filterParams);
1228
+ }
1229
+ else if (column.dataType === 'date') {
1230
+ this.setDateFilterParams(filterParams);
1231
+ }
1232
+ else if (column.dataType === 'boolean') {
1233
+ this.setBooleanFilterParams(filterParams);
1234
+ }
1235
+ if (map) {
1236
+ filterParams.map = map;
1237
+ }
1238
+ colDef.filterParams = filterParams;
1239
+ }
1240
+ setUuidFilterParams(filterParams) {
1241
+ filterParams.filterOptions = ['equals', 'notEqual'];
1242
+ }
1243
+ setIntegerFilterParams(filterParams) {
1244
+ filterParams.allowedCharPattern = '\\d';
1245
+ }
1246
+ setDateFilterParams(filterParams) {
1247
+ filterParams.comparator = (filterLocalDateAtMidnight, cellValue) => {
1248
+ if (!cellValue)
1249
+ return -1;
1250
+ const cellDate = new Date(cellValue);
1251
+ if (isNaN(cellDate.getTime()))
1252
+ return -1;
1253
+ const cellDateNoTime = new Date(cellDate.getFullYear(), cellDate.getMonth(), cellDate.getDate());
1254
+ if (cellDateNoTime < filterLocalDateAtMidnight)
1255
+ return -1;
1256
+ if (cellDateNoTime > filterLocalDateAtMidnight)
1257
+ return 1;
1258
+ return 0;
1259
+ };
1260
+ }
1261
+ setBooleanFilterParams(filterParams) {
1262
+ filterParams.filterOptions = [
1263
+ {
1264
+ displayKey: 'includeAll',
1265
+ displayName: Texts.ChooseOne,
1266
+ numberOfInputs: 0,
1267
+ predicate: ([filter], value) => true
1268
+ },
1269
+ {
1270
+ displayKey: 'true',
1271
+ displayName: Texts.True,
1272
+ numberOfInputs: 0,
1273
+ predicate: ([filter], value) => value === true
1274
+ },
1275
+ {
1276
+ displayKey: 'false',
1277
+ displayName: Texts.False,
1278
+ numberOfInputs: 0,
1279
+ predicate: ([filter], value) => value === false
1280
+ },
1281
+ {
1282
+ displayKey: 'blank',
1283
+ displayName: Texts.Blank,
1284
+ numberOfInputs: 0,
1285
+ predicate: ([filter], value) => value === null
1286
+ },
1287
+ {
1288
+ displayKey: 'notBlank',
1289
+ displayName: Texts.NotBlank,
1290
+ numberOfInputs: 0,
1291
+ predicate: ([filter], value) => value !== null
1292
+ },
1293
+ ];
1294
+ filterParams.suppressAndOrCondition = true;
1295
+ }
1296
+ setSuppressMovable(column, colDef) {
1297
+ if (!(column.move === true)) {
1298
+ colDef.suppressMovable = true;
1299
+ }
1300
+ }
1301
+ setFlex(column, colDef) {
1302
+ if (column.flex === true) {
1303
+ colDef.flex = 1;
1304
+ }
1305
+ }
1306
+ setAlign(column, colDef) {
1307
+ if (column.align === "left") {
1308
+ colDef.cellStyle = { textAlign: 'left' };
1309
+ }
1310
+ else if (column.align === "center") {
1311
+ colDef.cellStyle = { textAlign: 'center' };
1312
+ }
1313
+ else if (column.align === "right") {
1314
+ colDef.cellStyle = { textAlign: 'right' };
1315
+ }
1316
+ }
1317
+ setPinned(column, colDef) {
1318
+ if (typeof column.pinned === "string") {
1319
+ colDef.pinned = column.pinned;
1320
+ }
1321
+ }
1322
+ setWidth(column, colDef) {
1323
+ if (typeof column.width === "number") {
1324
+ colDef.width = column.width;
1325
+ }
1326
+ if (typeof column.minWidth === "number") {
1327
+ colDef.minWidth = column.minWidth;
1328
+ }
1329
+ if (typeof column.maxWidth === "number") {
1330
+ colDef.maxWidth = column.maxWidth;
1331
+ }
1332
+ }
1333
+ setValueFormatter(column, colDef, map) {
1334
+ if (map) {
1335
+ colDef.valueFormatter = (params) => this.formatMap(params.value, map);
1336
+ }
1337
+ }
1338
+ getGridPaginable(component) {
1339
+ return (typeof component.rowCount === 'number' && component.rowCount > 0);
1340
+ }
1341
+ getGridPageSize(component) {
1342
+ if (typeof component.rowCount === 'number') {
1343
+ return component.rowCount;
1344
+ }
1345
+ }
1346
+ getGridTexts() {
1347
+ return {
1348
+ ...AG_GRID_LOCALE_IT,
1349
+ "pageSizeSelectorLabel": "Elementi per pagina:",
1350
+ "to": "-",
1351
+ };
1352
+ }
1353
+ getGridTheme() {
1354
+ return themeQuartz
1355
+ .withPart(iconSetAlpine)
1356
+ .withParams({
1357
+ backgroundColor: "#FAFAFA",
1358
+ borderColor: "#D9E4F7",
1359
+ browserColorScheme: "light",
1360
+ cellTextColor: "#00121A",
1361
+ columnBorder: true,
1362
+ fontFamily: "inherit",
1363
+ fontSize: 16,
1364
+ headerBackgroundColor: "#002460",
1365
+ headerColumnBorder: true,
1366
+ headerColumnResizeHandleColor: "#F2F6FC",
1367
+ headerColumnResizeHandleWidth: 2,
1368
+ headerFontSize: 16,
1369
+ headerFontWeight: 600,
1370
+ headerRowBorder: false,
1371
+ headerTextColor: "#F2F6FC",
1372
+ rowBorder: true
1373
+ });
1374
+ }
1375
+ getDataTypeDefinitions() {
1376
+ return {
1377
+ uuid: {
1378
+ baseDataType: 'text',
1379
+ extendsDataType: 'text'
1380
+ },
1381
+ date: {
1382
+ baseDataType: 'dateString',
1383
+ extendsDataType: 'dateString',
1384
+ dateParser: (value) => {
1385
+ return value ? new Date(value) : undefined;
1386
+ },
1387
+ valueFormatter: params => {
1388
+ return this.formatter.formatDate(params.value);
1389
+ }
1390
+ },
1391
+ dateTime: {
1392
+ baseDataType: 'dateString',
1393
+ extendsDataType: 'dateString',
1394
+ dateParser: (value) => {
1395
+ return value ? new Date(value) : undefined;
1396
+ },
1397
+ valueFormatter: params => {
1398
+ return this.formatter.formatDateTime(params.value);
1399
+ }
1400
+ },
1401
+ currency: {
1402
+ extendsDataType: 'number',
1403
+ baseDataType: 'number',
1404
+ valueFormatter: params => params.value == null
1405
+ ? ''
1406
+ : this.formatter.formatCurrency(params.value)
1407
+ },
1408
+ integer: {
1409
+ extendsDataType: 'number',
1410
+ baseDataType: 'number',
1411
+ valueFormatter: params => params.value == null
1412
+ ? ''
1413
+ : this.formatter.formatInteger(params.value)
1414
+ },
1415
+ percentage: {
1416
+ extendsDataType: 'number',
1417
+ baseDataType: 'number',
1418
+ valueFormatter: params => params.value == null
1419
+ ? ''
1420
+ : `${Math.round(params.value * 100)}%`,
1421
+ },
1422
+ flags: {
1423
+ extendsDataType: 'number',
1424
+ baseDataType: 'number'
1425
+ }
1426
+ };
1427
+ }
1428
+ getMap(column, colDef, formGroup) {
1429
+ const allowed = (colDef.cellDataType === "boolean"
1430
+ || colDef.cellDataType === "text"
1431
+ || colDef.cellDataType === "number"
1432
+ || colDef.cellDataType === "flags");
1433
+ if (allowed && column.map) {
1434
+ const map = this.programmability.evaluate(formGroup, column.mapValues);
1435
+ const valid = isRecord(map, key => typeof key === 'string' || typeof key === 'number', val => typeof val === 'string');
1436
+ if (!valid)
1437
+ return null;
1438
+ if (colDef.cellDataType === "flags") {
1439
+ map[getLabelSymbol] = (key) => this.formatFlags(key, map);
1440
+ }
1441
+ return map;
1442
+ }
1443
+ else {
1444
+ return null;
1445
+ }
1446
+ }
1447
+ formatMap(value, map) {
1448
+ if (value == null) {
1449
+ return '';
1450
+ }
1451
+ if (map) {
1452
+ var result = map[value];
1453
+ if (result === undefined) {
1454
+ const labeled = isLabeledRecord(map, key => typeof key === 'string' || typeof key === 'number', val => typeof val === 'string', getLabelSymbol);
1455
+ if (labeled) {
1456
+ result = map[getLabelSymbol](value);
1457
+ }
1458
+ }
1459
+ return result ?? value.toString();
1460
+ }
1461
+ else {
1462
+ return value.toString();
1463
+ }
1464
+ }
1465
+ formatFlags(value, map) {
1466
+ if (typeof value === 'number' &&
1467
+ isRecord(map, isNumericKey, val => typeof val === 'string')) {
1468
+ if (value == 0) {
1469
+ return map[0] ?? "0";
1470
+ }
1471
+ const availableFlags = Object.keys(map)
1472
+ .map(Number)
1473
+ .filter(flag => flag !== 0);
1474
+ const flags = availableFlags.filter(flag => (value & flag) === flag);
1475
+ const sumFlags = flags.reduce((sum, f) => sum | f, 0);
1476
+ if ((value & sumFlags) !== value) {
1477
+ return null;
1478
+ }
1479
+ return flags
1480
+ .map(flag => map[flag])
1481
+ .filter((label) => !!label)
1482
+ .join(', ');
1483
+ }
1484
+ else {
1485
+ return null;
1486
+ }
1487
+ }
1488
+ navigateInsideCell({ event }) {
1489
+ const GRID_CELL_CLASSNAME = "ag-cell";
1490
+ const { key, shiftKey } = event;
1491
+ const path = this.getEventPath(event);
1492
+ const isTabForward = key === "Tab" && shiftKey === false;
1493
+ const isTabBackward = key === "Tab" && shiftKey === true;
1494
+ let suppressEvent = false;
1495
+ // Handle cell children tabbing
1496
+ if (isTabForward || isTabBackward) {
1497
+ const eGridCell = path.find((el) => {
1498
+ if (el.classList === undefined)
1499
+ return false;
1500
+ return el.classList.contains(GRID_CELL_CLASSNAME);
1501
+ });
1502
+ if (!eGridCell) {
1503
+ return suppressEvent;
1504
+ }
1505
+ const focusableChildrenElements = this.getAllFocusableElementsOf(eGridCell);
1506
+ const lastCellChildEl = focusableChildrenElements[focusableChildrenElements.length - 1];
1507
+ const firstCellChildEl = focusableChildrenElements[0];
1508
+ // Suppress keyboard event if tabbing forward within the cell and the current focused element is not the last child
1509
+ if (focusableChildrenElements.length === 0) {
1510
+ return false;
1511
+ }
1512
+ const currentIndex = focusableChildrenElements.indexOf(document.activeElement);
1513
+ if (isTabForward) {
1514
+ const isLastChildFocused = lastCellChildEl && document.activeElement === lastCellChildEl;
1515
+ if (!isLastChildFocused) {
1516
+ suppressEvent = true;
1517
+ if (currentIndex !== -1 || document.activeElement === eGridCell) {
1518
+ event.preventDefault();
1519
+ focusableChildrenElements[currentIndex + 1].focus();
1520
+ }
1521
+ }
1522
+ }
1523
+ // Suppress keyboard event if tabbing backwards within the cell, and the current focused element is not the first child
1524
+ else {
1525
+ const cellHasFocusedChildren = eGridCell.contains(document.activeElement) &&
1526
+ eGridCell !== document.activeElement;
1527
+ // Manually set focus to the last child element if cell doesn't have focused children
1528
+ if (!cellHasFocusedChildren) {
1529
+ lastCellChildEl.focus();
1530
+ // Cancel keyboard press, so that it doesn't focus on the last child and then pass through the keyboard press to
1531
+ // move to the 2nd last child element
1532
+ event.preventDefault();
1533
+ }
1534
+ const isFirstChildFocused = firstCellChildEl && document.activeElement === firstCellChildEl;
1535
+ if (!isFirstChildFocused) {
1536
+ suppressEvent = true;
1537
+ if (currentIndex !== -1 || document.activeElement === eGridCell) {
1538
+ event.preventDefault();
1539
+ focusableChildrenElements[currentIndex - 1].focus();
1540
+ }
1541
+ }
1542
+ }
1543
+ }
1544
+ return suppressEvent;
731
1545
  }
732
- getForms() {
733
- return this.forms;
1546
+ getEventPath(event) {
1547
+ const path = [];
1548
+ let currentTarget = event.target;
1549
+ while (currentTarget) {
1550
+ path.push(currentTarget);
1551
+ currentTarget = currentTarget.parentElement;
1552
+ }
1553
+ return path;
734
1554
  }
735
- getFormByName(name) {
736
- return this.forms.find(form => form.name === name);
1555
+ getAllFocusableElementsOf(el) {
1556
+ return Array.from(el.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter((focusableEl) => {
1557
+ return focusableEl.tabIndex !== -1 && !focusableEl.hasAttribute('disabled');
1558
+ });
737
1559
  }
738
- schema = { forms: [] };
739
- forms = [];
740
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
741
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService });
1560
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridService, deps: [{ token: FormatterService }, { token: ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Injectable });
1561
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridService });
742
1562
  }
743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataService, decorators: [{
1563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridService, decorators: [{
744
1564
  type: Injectable
745
- }], ctorParameters: () => [] });
1565
+ }], ctorParameters: () => [{ type: FormatterService }, { type: ProgrammabilityService }] });
746
1566
 
747
1567
  class AdornerDirective {
748
1568
  el;
@@ -2259,26 +3079,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2259
3079
  type: Host
2260
3080
  }] }] });
2261
3081
 
2262
- const Texts = {
2263
- TypeToSearch: "Digita per cercare...",
2264
- Upload: "Upload",
2265
- ScrollLeft: "Scorri a sinistra",
2266
- ScrollRight: "Scorri a destra",
2267
- AddItem: "Aggiungi",
2268
- RemoveItem: "Rimuovi",
2269
- PreviousSection: "Sezione precedente",
2270
- NextSection: "Sezione successiva",
2271
- Show: "Visualizza",
2272
- Remove: "Rimuovi",
2273
- Close: "Chiudi",
2274
- Name: "Nome",
2275
- Size: "Dimensione",
2276
- Type: "Tipo",
2277
- Actions: "Azioni",
2278
- ReadMore: "Leggi di più",
2279
- ReadLess: "Leggi di meno"
2280
- };
2281
-
2282
3082
  class CollapseDirective {
2283
3083
  el;
2284
3084
  renderer;
@@ -2388,263 +3188,91 @@ class CollapseDirective {
2388
3188
  this.button.childNodes[0].textContent = Texts.ReadLess;
2389
3189
  this.updateIcon('fa-chevron-up', 'fa-chevron-down');
2390
3190
  }
2391
- collapse() {
2392
- const element = this.el.nativeElement;
2393
- this.renderer.setStyle(element, 'max-height', `${this.currentHeight}px`);
2394
- this.renderer.setStyle(element, 'overflow', 'hidden');
2395
- this.button.childNodes[0].textContent = Texts.ReadMore;
2396
- this.updateIcon('fa-chevron-down', 'fa-chevron-up');
2397
- }
2398
- updateIcon(add, remove) {
2399
- if (this.iconSpan) {
2400
- this.renderer.removeClass(this.iconSpan, remove);
2401
- this.renderer.addClass(this.iconSpan, add);
2402
- }
2403
- }
2404
- ngOnDestroy() {
2405
- this.resetButton();
2406
- this.resetFocusHandler();
2407
- }
2408
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
2409
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"] }, usesOnChanges: true, ngImport: i0 });
2410
- }
2411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapseDirective, decorators: [{
2412
- type: Directive,
2413
- args: [{
2414
- selector: '[collapse]',
2415
- standalone: true
2416
- }]
2417
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { maxHeight: [{
2418
- type: Input,
2419
- args: ['collapse']
2420
- }] } });
2421
-
2422
- class AccordionPanelDirective {
2423
- constructor(panel) {
2424
- panel.opened.subscribe((event) => {
2425
- const element = event.component.body.el.nativeElement;
2426
- // delay height calculation to allow for DOM updates
2427
- setTimeout(() => {
2428
- const scrollHeight = element.scrollHeight;
2429
- element.style.height = `${scrollHeight}px`;
2430
- }, 0);
2431
- });
2432
- }
2433
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPanelDirective, deps: [{ token: i1.SirioAccordionPanelComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
2434
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionPanelDirective, isStandalone: true, selector: "[accordionPanel]", ngImport: i0 });
2435
- }
2436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPanelDirective, decorators: [{
2437
- type: Directive,
2438
- args: [{
2439
- selector: '[accordionPanel]',
2440
- standalone: true
2441
- }]
2442
- }], ctorParameters: () => [{ type: i1.SirioAccordionPanelComponent, decorators: [{
2443
- type: Host
2444
- }] }] });
2445
-
2446
- class TemplateWrapperComponent {
2447
- template;
2448
- context = {};
2449
- constructor() { }
2450
- getTemplateRef() {
2451
- const result = {
2452
- createEmbeddedView: (context) => {
2453
- return this.template.createEmbeddedView(this.context);
2454
- }
2455
- };
2456
- result.createEmbeddedViewImpl = () => {
2457
- return this.template.createEmbeddedView(this.context);
2458
- };
2459
- return result;
2460
- }
2461
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplateWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TemplateWrapperComponent, isStandalone: true, selector: "app-template-wrapper", inputs: { template: "template", context: "context" }, ngImport: i0, template: '', isInline: true });
2463
- }
2464
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplateWrapperComponent, decorators: [{
2465
- type: Component,
2466
- args: [{
2467
- selector: 'app-template-wrapper',
2468
- template: '',
2469
- standalone: true
2470
- }]
2471
- }], ctorParameters: () => [], propDecorators: { template: [{
2472
- type: Input
2473
- }], context: [{
2474
- type: Input
2475
- }] } });
2476
-
2477
- class ObjectURLRendererComponent {
2478
- params;
2479
- Texts = Texts;
2480
- agInit(params) {
2481
- this.params = params;
2482
- }
2483
- onClick(event) {
2484
- const fileURL = URL.createObjectURL(this.params.data);
2485
- window.open(fileURL, '_blank');
2486
- setTimeout(() => {
2487
- URL.revokeObjectURL(fileURL);
2488
- }, 1000);
2489
- }
2490
- refresh() {
2491
- return false;
2492
- }
2493
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2494
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectURLRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" });
2495
- }
2496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, decorators: [{
2497
- type: Component,
2498
- args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" }]
2499
- }] });
2500
- class DeleteRowCellRenderer {
2501
- params;
2502
- Texts = Texts;
2503
- agInit(params) {
2504
- this.params = params;
2505
- }
2506
- onClick(event) {
2507
- if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {
2508
- this.params.data.remove();
2509
- }
2510
- }
2511
- refresh() {
2512
- return false;
2513
- }
2514
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component });
2515
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeleteRowCellRenderer, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" });
2516
- }
2517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowCellRenderer, decorators: [{
2518
- type: Component,
2519
- args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" }]
2520
- }] });
2521
- class ActionsCellRenderer {
2522
- programmability;
2523
- constructor(programmability) {
2524
- this.programmability = programmability;
2525
- }
2526
- params;
2527
- agInit(params) {
2528
- this.params = params;
2529
- }
2530
- refresh() {
2531
- return false;
2532
- }
2533
- evaluateBoolean(value) {
2534
- const options = {
2535
- proxyFn: (options) => {
2536
- options.extend["getParams"] = () => this.params;
2537
- options.extend["getData"] = () => this.getData();
2538
- }
2539
- };
2540
- return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);
2541
- }
2542
- evaluateString(value) {
2543
- return this.programmability.evaluateString(this.getFormGroup(), value);
2544
- }
2545
- clickButton(action, event) {
2546
- if (action.click) {
2547
- const options = {
2548
- cacheable: false,
2549
- proxyFn: (options) => {
2550
- options.extend["getParams"] = () => this.params;
2551
- options.extend["getAction"] = () => action;
2552
- options.extend["getData"] = () => this.getData();
2553
- }
2554
- };
2555
- return this.programmability.evaluate(this.getFormGroup(), action.click, options);
2556
- }
3191
+ collapse() {
3192
+ const element = this.el.nativeElement;
3193
+ this.renderer.setStyle(element, 'max-height', `${this.currentHeight}px`);
3194
+ this.renderer.setStyle(element, 'overflow', 'hidden');
3195
+ this.button.childNodes[0].textContent = Texts.ReadMore;
3196
+ this.updateIcon('fa-chevron-down', 'fa-chevron-up');
2557
3197
  }
2558
- getData() {
2559
- return this.params.data;
3198
+ updateIcon(add, remove) {
3199
+ if (this.iconSpan) {
3200
+ this.renderer.removeClass(this.iconSpan, remove);
3201
+ this.renderer.addClass(this.iconSpan, add);
3202
+ }
2560
3203
  }
2561
- getFormGroup() {
2562
- return this.params.formGroup;
3204
+ ngOnDestroy() {
3205
+ this.resetButton();
3206
+ this.resetFocusHandler();
2563
3207
  }
2564
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRenderer, deps: [{ token: ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Component });
2565
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionsCellRenderer, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }] });
3208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
3209
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"] }, usesOnChanges: true, ngImport: i0 });
2566
3210
  }
2567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRenderer, decorators: [{
2568
- type: Component,
2569
- args: [{ standalone: true, imports: [
2570
- CommonModule, SirioButtonComponent
2571
- ], template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n" }]
2572
- }], ctorParameters: () => [{ type: ProgrammabilityService }] });
3211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollapseDirective, decorators: [{
3212
+ type: Directive,
3213
+ args: [{
3214
+ selector: '[collapse]',
3215
+ standalone: true
3216
+ }]
3217
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { maxHeight: [{
3218
+ type: Input,
3219
+ args: ['collapse']
3220
+ }] } });
2573
3221
 
2574
- const GRID_CELL_CLASSNAME = "ag-cell";
2575
- function getEventPath(event) {
2576
- const path = [];
2577
- let currentTarget = event.target;
2578
- while (currentTarget) {
2579
- path.push(currentTarget);
2580
- currentTarget = currentTarget.parentElement;
3222
+ class AccordionPanelDirective {
3223
+ constructor(panel) {
3224
+ panel.opened.subscribe((event) => {
3225
+ const element = event.component.body.el.nativeElement;
3226
+ // delay height calculation to allow for DOM updates
3227
+ setTimeout(() => {
3228
+ const scrollHeight = element.scrollHeight;
3229
+ element.style.height = `${scrollHeight}px`;
3230
+ }, 0);
3231
+ });
2581
3232
  }
2582
- return path;
2583
- }
2584
- function getAllFocusableElementsOf(el) {
2585
- return Array.from(el.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter((focusableEl) => {
2586
- return focusableEl.tabIndex !== -1 && !focusableEl.hasAttribute('disabled');
2587
- });
3233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPanelDirective, deps: [{ token: i1.SirioAccordionPanelComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
3234
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccordionPanelDirective, isStandalone: true, selector: "[accordionPanel]", ngImport: i0 });
2588
3235
  }
2589
- const GridUtils = {
2590
- navigateInsideCell({ event }) {
2591
- const { key, shiftKey } = event;
2592
- const path = getEventPath(event);
2593
- const isTabForward = key === "Tab" && shiftKey === false;
2594
- const isTabBackward = key === "Tab" && shiftKey === true;
2595
- let suppressEvent = false;
2596
- // Handle cell children tabbing
2597
- if (isTabForward || isTabBackward) {
2598
- const eGridCell = path.find((el) => {
2599
- if (el.classList === undefined)
2600
- return false;
2601
- return el.classList.contains(GRID_CELL_CLASSNAME);
2602
- });
2603
- if (!eGridCell) {
2604
- return suppressEvent;
2605
- }
2606
- const focusableChildrenElements = getAllFocusableElementsOf(eGridCell);
2607
- const lastCellChildEl = focusableChildrenElements[focusableChildrenElements.length - 1];
2608
- const firstCellChildEl = focusableChildrenElements[0];
2609
- // Suppress keyboard event if tabbing forward within the cell and the current focused element is not the last child
2610
- if (focusableChildrenElements.length === 0) {
2611
- return false;
2612
- }
2613
- const currentIndex = focusableChildrenElements.indexOf(document.activeElement);
2614
- if (isTabForward) {
2615
- const isLastChildFocused = lastCellChildEl && document.activeElement === lastCellChildEl;
2616
- if (!isLastChildFocused) {
2617
- suppressEvent = true;
2618
- if (currentIndex !== -1 || document.activeElement === eGridCell) {
2619
- event.preventDefault();
2620
- focusableChildrenElements[currentIndex + 1].focus();
2621
- }
2622
- }
2623
- }
2624
- // Suppress keyboard event if tabbing backwards within the cell, and the current focused element is not the first child
2625
- else {
2626
- const cellHasFocusedChildren = eGridCell.contains(document.activeElement) &&
2627
- eGridCell !== document.activeElement;
2628
- // Manually set focus to the last child element if cell doesn't have focused children
2629
- if (!cellHasFocusedChildren) {
2630
- lastCellChildEl.focus();
2631
- // Cancel keyboard press, so that it doesn't focus on the last child and then pass through the keyboard press to
2632
- // move to the 2nd last child element
2633
- event.preventDefault();
2634
- }
2635
- const isFirstChildFocused = firstCellChildEl && document.activeElement === firstCellChildEl;
2636
- if (!isFirstChildFocused) {
2637
- suppressEvent = true;
2638
- if (currentIndex !== -1 || document.activeElement === eGridCell) {
2639
- event.preventDefault();
2640
- focusableChildrenElements[currentIndex - 1].focus();
2641
- }
2642
- }
3236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccordionPanelDirective, decorators: [{
3237
+ type: Directive,
3238
+ args: [{
3239
+ selector: '[accordionPanel]',
3240
+ standalone: true
3241
+ }]
3242
+ }], ctorParameters: () => [{ type: i1.SirioAccordionPanelComponent, decorators: [{
3243
+ type: Host
3244
+ }] }] });
3245
+
3246
+ class TemplateWrapperComponent {
3247
+ template;
3248
+ context = {};
3249
+ constructor() { }
3250
+ getTemplateRef() {
3251
+ const result = {
3252
+ createEmbeddedView: (context) => {
3253
+ return this.template.createEmbeddedView(this.context);
2643
3254
  }
2644
- }
2645
- return suppressEvent;
2646
- },
2647
- };
3255
+ };
3256
+ result.createEmbeddedViewImpl = () => {
3257
+ return this.template.createEmbeddedView(this.context);
3258
+ };
3259
+ return result;
3260
+ }
3261
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplateWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3262
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TemplateWrapperComponent, isStandalone: true, selector: "app-template-wrapper", inputs: { template: "template", context: "context" }, ngImport: i0, template: '', isInline: true });
3263
+ }
3264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TemplateWrapperComponent, decorators: [{
3265
+ type: Component,
3266
+ args: [{
3267
+ selector: 'app-template-wrapper',
3268
+ template: '',
3269
+ standalone: true
3270
+ }]
3271
+ }], ctorParameters: () => [], propDecorators: { template: [{
3272
+ type: Input
3273
+ }], context: [{
3274
+ type: Input
3275
+ }] } });
2648
3276
 
2649
3277
  class SanitizeService {
2650
3278
  sanitizer;
@@ -2739,88 +3367,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2739
3367
  }]
2740
3368
  }], ctorParameters: () => [] });
2741
3369
 
2742
- //import { FeelService } from '../services/feel.service';
2743
- class FormatterService {
2744
- //constructor(private feelService: FeelService) { }
2745
- constructor() { }
2746
- formatCurrency(value, symbol = null) {
2747
- if (isNaN(value) || value === null || value === undefined) {
2748
- return value;
2749
- }
2750
- const numberValue = parseFloat(value);
2751
- if (isNaN(numberValue)) {
2752
- return value;
2753
- }
2754
- const result = numberValue.toFixed(2).replace(".", ",").replace(/\B(?=(\d{3})+(?!\d))/g, ".");
2755
- if (symbol) {
2756
- return symbol + ' ' + result;
2757
- }
2758
- else {
2759
- return result;
2760
- }
2761
- }
2762
- formatDate(value) {
2763
- if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}(T|$)/.test(value)) {
2764
- return value;
2765
- }
2766
- const date = new Date(value);
2767
- if (isNaN(date.getTime())) {
2768
- return value;
2769
- }
2770
- const day = date.getDate().toString().padStart(2, '0');
2771
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
2772
- const year = date.getFullYear();
2773
- return `${day}/${month}/${year}`;
2774
- }
2775
- formatInteger(value) {
2776
- if (isNaN(value) || value === null || value === undefined) {
2777
- return value;
2778
- }
2779
- const numberValue = parseInt(value, 10);
2780
- if (isNaN(numberValue)) {
2781
- return value;
2782
- }
2783
- return numberValue.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
2784
- }
2785
- formatExpression(value, expression) {
2786
- return value;
2787
- //const result = this.feelService.evalExpression(expression, { value: value }) as string;
2788
- //return result;
2789
- }
2790
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2791
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, providedIn: 'root' });
2792
- }
2793
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormatterService, decorators: [{
2794
- type: Injectable,
2795
- args: [{
2796
- providedIn: 'root'
2797
- }]
2798
- }], ctorParameters: () => [] });
2799
-
2800
3370
  class DynamicFieldsComponent {
2801
3371
  sanitizer;
2802
3372
  markdown;
2803
3373
  mime;
2804
3374
  programmability;
2805
3375
  events;
2806
- formatter;
2807
3376
  weak;
2808
3377
  register;
2809
3378
  metadata;
3379
+ grid;
2810
3380
  el;
2811
3381
  rows;
2812
3382
  formGroup;
2813
3383
  Texts = Texts;
2814
- constructor(sanitizer, markdown, mime, programmability, events, formatter, weak, register, metadata, el) {
3384
+ constructor(sanitizer, markdown, mime, programmability, events, weak, register, metadata, grid, el) {
2815
3385
  this.sanitizer = sanitizer;
2816
3386
  this.markdown = markdown;
2817
3387
  this.mime = mime;
2818
3388
  this.programmability = programmability;
2819
3389
  this.events = events;
2820
- this.formatter = formatter;
2821
3390
  this.weak = weak;
2822
3391
  this.register = register;
2823
3392
  this.metadata = metadata;
3393
+ this.grid = grid;
2824
3394
  this.el = el;
2825
3395
  }
2826
3396
  ngOnInit() {
@@ -2965,48 +3535,10 @@ class DynamicFieldsComponent {
2965
3535
  }
2966
3536
  }
2967
3537
  getGridOptions(component) {
2968
- return this.weak.call(component, 'getGridOptions', () => {
2969
- const columnDefs = this.getGridColumns(component);
2970
- const pagination = this.getGridPaginable(component);
2971
- const pageSize = this.getGridPageSize(component);
2972
- const texts = this.getGridTexts();
2973
- const theme = this.getGridTheme();
2974
- return {
2975
- defaultColDef: {
2976
- floatingFilter: (component.floatingFilter === true),
2977
- headerClass: (component.floatingFilter === true)
2978
- ? 'show-filter' : 'hide-filter'
2979
- },
2980
- columnDefs: columnDefs,
2981
- pagination: pagination,
2982
- paginationPageSize: pageSize,
2983
- paginationPageSizeSelector: [5, 10, 20, 50],
2984
- localeText: texts,
2985
- enableCellTextSelection: true,
2986
- theme: theme,
2987
- onGridReady: (params) => {
2988
- params.api.autoSizeColumns(["actions"]);
2989
- }
2990
- };
2991
- });
3538
+ return this.weak.call(component, 'getGridOptions', () => this.grid.getGridOptions(component, this.formGroup));
2992
3539
  }
2993
3540
  getGridModules(component) {
2994
- return this.weak.call(component, 'getGridModules', () => {
2995
- return [
2996
- ClientSideRowModelModule,
2997
- InfiniteRowModelModule,
2998
- PaginationModule,
2999
- LocaleModule,
3000
- CellStyleModule,
3001
- ClientSideRowModelApiModule,
3002
- TextFilterModule,
3003
- NumberFilterModule,
3004
- DateFilterModule,
3005
- ColumnAutoSizeModule,
3006
- ColumnApiModule,
3007
- ValidationModule
3008
- ];
3009
- });
3541
+ return this.weak.call(component, 'getGridModules', () => this.grid.getGridModules());
3010
3542
  }
3011
3543
  getGridData(component) {
3012
3544
  if (component.dataSource) {
@@ -3111,111 +3643,6 @@ class DynamicFieldsComponent {
3111
3643
  }
3112
3644
  }
3113
3645
  }
3114
- gridTexts = {
3115
- ...AG_GRID_LOCALE_IT,
3116
- "pageSizeSelectorLabel": "Elementi per pagina:",
3117
- "to": "-",
3118
- };
3119
- gridTheme = themeQuartz
3120
- .withPart(iconSetAlpine)
3121
- .withParams({
3122
- backgroundColor: "#FAFAFA",
3123
- borderColor: "#D9E4F7",
3124
- browserColorScheme: "light",
3125
- cellTextColor: "#00121A",
3126
- columnBorder: true,
3127
- fontFamily: "inherit",
3128
- fontSize: 16,
3129
- headerBackgroundColor: "#002460",
3130
- headerColumnBorder: true,
3131
- headerColumnResizeHandleColor: "#F2F6FC",
3132
- headerColumnResizeHandleWidth: 2,
3133
- headerFontSize: 16,
3134
- headerFontWeight: 600,
3135
- headerRowBorder: false,
3136
- headerTextColor: "#F2F6FC",
3137
- rowBorder: true
3138
- });
3139
- getGridColumns(component) {
3140
- if (Array.isArray(component.columns)) {
3141
- const columns = component.columns.map((column) => ({
3142
- field: column.key,
3143
- headerName: column.label,
3144
- resizable: column.resize === true,
3145
- sortable: column.sort === true,
3146
- filter: column.filter === true,
3147
- suppressMovable: !(column.move === true),
3148
- ...(column.flex === true && { flex: 1 }),
3149
- ...(column.align === "left" && { cellStyle: { textAlign: 'left' } }),
3150
- ...(column.align === "center" && { cellStyle: { textAlign: 'center' } }),
3151
- ...(column.align === "right" && { cellStyle: { textAlign: 'right' } }),
3152
- ...(typeof column.pinned === "string" && { pinned: column.pinned }),
3153
- ...(typeof column.flex === "number" && { flex: column.flex }),
3154
- ...(typeof column.width === "number" && { width: column.width }),
3155
- ...(typeof column.minWidth === "number" && { minWidth: column.minWidth }),
3156
- ...(typeof column.maxWidth === "number" && { maxWidth: column.maxWidth }),
3157
- valueFormatter: this.getGridFormatter(column),
3158
- cellRenderer: this.getGridRenderer(column)
3159
- }));
3160
- if (Array.isArray(component.actions) && component.actions.length > 0) {
3161
- columns.push({
3162
- colId: 'actions',
3163
- headerName: Texts.Actions,
3164
- resizable: false,
3165
- cellDataType: false,
3166
- pinned: "right",
3167
- cellRendererParams: {
3168
- component: component,
3169
- formGroup: this.formGroup
3170
- },
3171
- cellRenderer: ActionsCellRenderer,
3172
- suppressKeyboardEvent: GridUtils.navigateInsideCell
3173
- });
3174
- }
3175
- return columns;
3176
- }
3177
- else {
3178
- return [];
3179
- }
3180
- }
3181
- getGridPaginable(component) {
3182
- return (typeof component.rowCount === 'number' && component.rowCount > 0);
3183
- }
3184
- getGridPageSize(component) {
3185
- if (typeof component.rowCount === 'number') {
3186
- return component.rowCount;
3187
- }
3188
- }
3189
- getGridTexts() {
3190
- return this.gridTexts;
3191
- }
3192
- getGridTheme() {
3193
- return this.gridTheme;
3194
- }
3195
- getGridFormatter(column) {
3196
- if (column.format) {
3197
- switch (column.format) {
3198
- case 'integer':
3199
- return params => this.formatter.formatInteger(params.value);
3200
- case 'currency':
3201
- return params => this.formatter.formatCurrency(params.value);
3202
- case 'date':
3203
- return params => this.formatter.formatDate(params.value);
3204
- }
3205
- }
3206
- return undefined;
3207
- }
3208
- getGridRenderer(column) {
3209
- if (column.format) {
3210
- switch (column.format) {
3211
- case 'objectURL':
3212
- return ObjectURLRendererComponent;
3213
- case "deleteRow":
3214
- return DeleteRowCellRenderer;
3215
- }
3216
- }
3217
- return undefined;
3218
- }
3219
3646
  getAsObservable(value) {
3220
3647
  if (isObservable(value))
3221
3648
  return value;
@@ -3268,10 +3695,11 @@ class DynamicFieldsComponent {
3268
3695
  };
3269
3696
  }
3270
3697
  ;
3271
- 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: MetadataService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3698
+ 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: WeakService }, { token: RegisterService }, { token: MetadataService }, { token: GridService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3272
3699
  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: [
3273
3700
  RegisterService,
3274
- ProgrammabilityService
3701
+ ProgrammabilityService,
3702
+ GridService
3275
3703
  ], 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 [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 [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\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 number\r\n [defaultValue]=\"evaluateNumber(component.defaultValue)\"\r\n [minimum]=\"evaluateNumber(component.minimum)\"\r\n [maximum]=\"evaluateNumber(component.maximum)\"\r\n [decimalDigits]=\"evaluateNumber(component.decimalDigits)\"\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 isoDate\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 [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\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 [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [collapse]=\"component.collapseTo\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n <!--Reset View Context-->\r\n <div tabindex=\"0\" style=\"display:none\"></div>\r\n <div class=\"flex\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n <ng-container *ngIf=\"component.tooltip\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.tooltip))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\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 *ngIf=\"i === dynamiclisttab.activeIndex\">\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 </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 #panel accordionPanel>\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 *ngIf=\"panel.panelIsOpen\">\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 </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)=\"addItem(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 <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\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 </div>\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 [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 <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(component.title) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <ngx-sirio-tab #tab\r\n [register]=\"component\"\r\n [componentRef]=\"tab\"\r\n [leftArrowLabel]=\"Texts.ScrollLeft\"\r\n [rightArrowLabel]=\"Texts.ScrollRight\"\r\n tabControl>\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-tab-item [label]=\"evaluateString(panel.label)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\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(getControlFromPath(panel.path))\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <ngx-sirio-accordion\r\n #accordion\r\n [register]=\"component\"\r\n [componentRef]=\"accordion\">\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-accordion-panel *ngIf=\"evaluateConditional(panel.conditional)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled)\">\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(panel.label)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\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(getControlFromPath(panel.path))\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"></app-dynamic-fields>\r\n </div>\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 </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: [".flex{display:flex}.field-set{align-items:start}.field-set>.col-host>*{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-control.fp-disabled .sirio-input-group .sirio-input-group-text,.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text{border:0px}.sirio-control.fp-readonly label:hover{color:#454d56}.sirio-control.fp-readonly input.sirio-form-control,.sirio-control.fp-readonly .sirio-dropdown .sirio-dropdown-select,.sirio-control.fp-readonly textarea.sirio-form-control{background:none!important;border:0px;padding:0}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text{background:none}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text span{color:#5b6571}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text.prefix{padding-left:0}.sirio-upload.sirio-control.fp-readonly label,.sirio-upload.sirio-control.fp-disabled label{pointer-events:none}.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-header-cell.hide-filter .ag-header-cell-filter-button{display:none}.sirio-tab.sirio-tab-scroll{display:block}.sirio-dropdown .searchable{position:absolute;width:100%;display:none;left:0}.ag-cell-value .btn-small-group{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ag-cell-value .btn-small .sirio-btn{padding:.25rem .0625rem;margin:2px}\n"], dependencies: [{ kind: "component", type: DynamicFieldsComponent, selector: "app-dynamic-fields", inputs: ["rows", "formGroup"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i10.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.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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", "placeholder", "componentRef"] }, { 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: "directive", type: DateDirective, selector: "[isoDate]" }, { kind: "directive", type: NumberDirective, selector: "[number]", inputs: ["defaultValue", "minimum", "maximum", "decimalDigits"] }, { kind: "directive", type: TextDirective, selector: "[textcase], [maxlength]", inputs: ["textcase", "maxlength"] }, { kind: "directive", type: DisableFormDirective, selector: "[disableForm]", inputs: ["disableForm"] }, { kind: "directive", type: TabControlDirective, selector: "[tabControl]" }, { kind: "directive", type: CollapseDirective, selector: "[collapse]", inputs: ["collapse"] }, { kind: "directive", type: AccordionPanelDirective, selector: "[accordionPanel]" }, { 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: "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: "directive", type: SirioTooltipDirective, selector: "[sirioTooltip]", inputs: ["sirioTooltip", "content", "hasAction", "hasPopover", "actionLabel", "actionIconClass", "clickOutside", "position", "customTemplate"], outputs: ["clickEvent"] }, { kind: "component", type: TemplateWrapperComponent, selector: "app-template-wrapper", inputs: ["template", "context"] }, { 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 });
3276
3704
  }
3277
3705
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicFieldsComponent, decorators: [{
@@ -3294,9 +3722,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3294
3722
  TemplateWrapperComponent,
3295
3723
  AgGridAngular], providers: [
3296
3724
  RegisterService,
3297
- ProgrammabilityService
3725
+ ProgrammabilityService,
3726
+ GridService
3298
3727
  ], 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 [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 [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\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 number\r\n [defaultValue]=\"evaluateNumber(component.defaultValue)\"\r\n [minimum]=\"evaluateNumber(component.minimum)\"\r\n [maximum]=\"evaluateNumber(component.maximum)\"\r\n [decimalDigits]=\"evaluateNumber(component.decimalDigits)\"\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 isoDate\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 [textcase]=\"component.textCase\"\r\n [maxlength]=\"evaluateNumber(component.maxLength)\"\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 [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n [collapse]=\"component.collapseTo\"\r\n #text\r\n [register]=\"component\"\r\n [componentRef]=\"text\">\r\n <!--Reset View Context-->\r\n <div tabindex=\"0\" style=\"display:none\"></div>\r\n <div class=\"flex\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n <ng-container *ngIf=\"component.tooltip\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.tooltip))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\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 *ngIf=\"i === dynamiclisttab.activeIndex\">\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 </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 #panel accordionPanel>\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 *ngIf=\"panel.panelIsOpen\">\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 </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)=\"addItem(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 <div [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\">\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <label>{{ evaluateString(component.label) }}</label>\r\n <ag-grid-angular [modules]=\"getGridModules(component)\"\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 </div>\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 [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 <!-- #region tooltip -->\r\n <ng-container *ngSwitchCase=\"'tooltip'\">\r\n <app-template-wrapper #tooltipWrapper [template]=\"tooltipTemplate\" [context]=\"{ component: component }\"></app-template-wrapper>\r\n <button class=\"sirio-label-popover fas fa-info-circle\"\r\n [hide]=\"evaluateBoolean(component.conditional?.hide)\"\r\n [show]=\"evaluateBoolean(component.conditional?.show)\"\r\n sirioTooltip\r\n [hasPopover]=\"true\"\r\n [customTemplate]=\"tooltipWrapper.getTemplateRef()\"\r\n #tooltip\r\n [register]=\"component\"\r\n [componentRef]=\"tooltip\"></button>\r\n <ng-template #tooltipTemplate let-component=\"component\">\r\n <div class=\"sirio-tooltip-body\">\r\n <p *ngIf=\"component.title\" class=\"sirio-tooltip-heading sirio-space-down\">\r\n {{ evaluateString(component.title) }}\r\n </p>\r\n <div class=\"text-paragraph\"\r\n [innerHTML]=\"toHTML(evaluateTemplate(component.text))\">\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region tab -->\r\n <ng-container *ngSwitchCase=\"'tab'\">\r\n <ngx-sirio-tab #tab\r\n [register]=\"component\"\r\n [componentRef]=\"tab\"\r\n [leftArrowLabel]=\"Texts.ScrollLeft\"\r\n [rightArrowLabel]=\"Texts.ScrollRight\"\r\n tabControl>\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-tab-item [label]=\"evaluateString(panel.label)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled) ?? false\"\r\n *ngIf=\"evaluateConditional(panel.conditional)\">\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(getControlFromPath(panel.path))\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"></app-dynamic-fields>\r\n </div>\r\n </div>\r\n </ngx-sirio-tab-item>\r\n </ng-container>\r\n </ngx-sirio-tab>\r\n </ng-container>\r\n <!-- #endregion -->\r\n <!-- #region accordion -->\r\n <ng-container *ngSwitchCase=\"'accordion'\">\r\n <ngx-sirio-accordion\r\n #accordion\r\n [register]=\"component\"\r\n [componentRef]=\"accordion\">\r\n <ng-container *ngFor=\"let panel of component.panels\">\r\n <ng-container *disableForm=\"{\r\n disabled: evaluateBoolean(panel.disabled),\r\n formGroup: formGroup,\r\n path: panel.path\r\n }\">\r\n </ng-container>\r\n <ngx-sirio-accordion-panel *ngIf=\"evaluateConditional(panel.conditional)\"\r\n [disabled]=\"evaluateBoolean(panel.disabled)\">\r\n <ngx-sirio-accordion-header>\r\n <span [innerText]=\"evaluateString(panel.label)\"></span>\r\n </ngx-sirio-accordion-header>\r\n <ngx-sirio-accordion-body>\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(getControlFromPath(panel.path))\"\r\n [rows]=\"getTemplate(panel.template)?.rows\"></app-dynamic-fields>\r\n </div>\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 </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: [".flex{display:flex}.field-set{align-items:start}.field-set>.col-host>*{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-control.fp-disabled .sirio-input-group .sirio-input-group-text,.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text{border:0px}.sirio-control.fp-readonly label:hover{color:#454d56}.sirio-control.fp-readonly input.sirio-form-control,.sirio-control.fp-readonly .sirio-dropdown .sirio-dropdown-select,.sirio-control.fp-readonly textarea.sirio-form-control{background:none!important;border:0px;padding:0}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text{background:none}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text span{color:#5b6571}.sirio-control.fp-readonly .sirio-input-group .sirio-input-group-text.prefix{padding-left:0}.sirio-upload.sirio-control.fp-readonly label,.sirio-upload.sirio-control.fp-disabled label{pointer-events:none}.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-header-cell.hide-filter .ag-header-cell-filter-button{display:none}.sirio-tab.sirio-tab-scroll{display:block}.sirio-dropdown .searchable{position:absolute;width:100%;display:none;left:0}.ag-cell-value .btn-small-group{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.ag-cell-value .btn-small .sirio-btn{padding:.25rem .0625rem;margin:2px}\n"] }]
3299
- }], ctorParameters: () => [{ type: SanitizeService }, { type: MarkdownService }, { type: MimeService }, { type: ProgrammabilityService }, { type: EventService }, { type: FormatterService }, { type: WeakService }, { type: RegisterService }, { type: MetadataService }, { type: i0.ElementRef }], propDecorators: { rows: [{
3728
+ }], ctorParameters: () => [{ type: SanitizeService }, { type: MarkdownService }, { type: MimeService }, { type: ProgrammabilityService }, { type: EventService }, { type: WeakService }, { type: RegisterService }, { type: MetadataService }, { type: GridService }, { type: i0.ElementRef }], propDecorators: { rows: [{
3300
3729
  type: Input
3301
3730
  }], formGroup: [{
3302
3731
  type: Input
@@ -3913,6 +4342,12 @@ class ODataSource {
3913
4342
  else if (filter.type === "notBlank") {
3914
4343
  return `${column} ne null`;
3915
4344
  }
4345
+ else if (filter.type === "true") {
4346
+ return `${column} eq true`;
4347
+ }
4348
+ else if (filter.type === "false") {
4349
+ return `${column} eq false`;
4350
+ }
3916
4351
  break;
3917
4352
  case "number":
3918
4353
  if (filter.type === "equals") {
@@ -4014,10 +4449,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
4014
4449
  }]
4015
4450
  }], ctorParameters: () => [{ type: i1$4.HttpClient }] });
4016
4451
 
4017
- /*
4018
- * Public API Surface of sirio
4019
- */
4020
-
4021
4452
  /**
4022
4453
  * Generated bundle index. Do not edit.
4023
4454
  */