spiderly 19.0.2 → 19.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/fesm2022/spiderly.mjs +548 -532
  2. package/fesm2022/spiderly.mjs.map +1 -1
  3. package/lib/components/layout/{layout-base.component.d.ts → layout.component.d.ts} +14 -6
  4. package/lib/components/layout/profile-avatar/profile-avatar.component.d.ts +42 -0
  5. package/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.d.ts +18 -0
  6. package/lib/components/layout/topbar/topbar.component.d.ts +9 -40
  7. package/lib/components/not-found/not-found.component.d.ts +1 -0
  8. package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +2 -2
  9. package/lib/components/spiderly-data-view/spiderly-data-view.component.d.ts +59 -0
  10. package/lib/components/spiderly-form-control/spiderly-form-control.d.ts +7 -6
  11. package/lib/components/spiderly-panels/spiderly-panels.module.d.ts +3 -2
  12. package/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.d.ts +10 -3
  13. package/lib/directives/template-type.directive.d.ts +7 -0
  14. package/lib/entities/base-entity.d.ts +0 -10
  15. package/lib/entities/table-filter-context.d.ts +7 -4
  16. package/lib/entities/table-filter-sort-meta.d.ts +2 -2
  17. package/lib/entities/table-filter.d.ts +14 -4
  18. package/lib/enums/match-mode-enum-codes.d.ts +8 -0
  19. package/lib/services/config-base.service.d.ts +1 -0
  20. package/package.json +1 -1
  21. package/public-api.d.ts +5 -2
  22. package/styles/components/layout/topbar/topbar.component.scss +33 -0
  23. package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +50 -0
  24. package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +1 -1
  25. package/styles/styles/layout/_main.scss +4 -0
  26. package/styles/styles/layout/_menu.scss +1 -1
  27. package/styles/styles/layout/_topbar.scss +2 -2
  28. package/styles/styles/layout/layout.scss +0 -1
  29. package/styles/styles/shared.scss +13 -10
  30. package/lib/modules/primeng.module.d.ts +0 -42
  31. package/styles/styles/layout/_config.scss +0 -42
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, makeEnvironmentProviders, APP_INITIALIZER, ErrorHandler, NgModule, importProvidersFrom, Input, Component, EventEmitter, Output, ViewChild, LOCALE_ID, Inject, HostBinding, inject } from '@angular/core';
2
+ import { Injectable, makeEnvironmentProviders, APP_INITIALIZER, ErrorHandler, importProvidersFrom, NgModule, Input, Component, EventEmitter, Output, ViewChild, LOCALE_ID, Inject, TemplateRef, ContentChild, HostBinding, inject, Directive } from '@angular/core';
3
3
  import * as i1$1 from 'primeng/api';
4
4
  import { MessageService, ConfirmationService } from 'primeng/api';
5
5
  import { BehaviorSubject, Subject, of, map as map$1, throttleTime, combineLatest, forkJoin, delay as delay$1, withLatestFrom, firstValueFrom, filter as filter$1, finalize as finalize$1, tap as tap$1, throwError } from 'rxjs';
@@ -11,78 +11,63 @@ import { HttpParams, HttpHeaders, HttpErrorResponse, HttpResponse } from '@angul
11
11
  import * as i3$1 from '@abacritt/angularx-social-login';
12
12
  import * as i1$2 from '@jsverse/transloco';
13
13
  import { provideTransloco, TranslocoModule, TranslocoDirective, TranslocoService } from '@jsverse/transloco';
14
- import * as i1$3 from 'primeng/button';
15
- import { ButtonModule } from 'primeng/button';
16
- import * as i5$2 from 'primeng/checkbox';
17
- import { CheckboxModule } from 'primeng/checkbox';
18
- import { DialogModule } from 'primeng/dialog';
19
- import * as i3$3 from 'primeng/select';
20
- import { SelectModule } from 'primeng/select';
21
- import { InputSwitchModule } from 'primeng/inputswitch';
22
- import * as i4$2 from 'primeng/inputtext';
23
- import { InputTextModule } from 'primeng/inputtext';
24
- import * as i4$5 from 'primeng/textarea';
25
- import { TextareaModule } from 'primeng/textarea';
26
- import * as i4$4 from 'primeng/multiselect';
27
- import { MultiSelectModule } from 'primeng/multiselect';
28
- import * as i5$5 from 'primeng/password';
29
- import { PasswordModule } from 'primeng/password';
30
- import * as i7 from 'primeng/table';
31
- import { TableModule } from 'primeng/table';
32
- import { ToastModule } from 'primeng/toast';
33
- import * as i4 from 'primeng/tooltip';
34
- import { TooltipModule, Tooltip } from 'primeng/tooltip';
35
- import * as i2$1 from 'primeng/confirmdialog';
36
- import { ConfirmDialogModule } from 'primeng/confirmdialog';
37
- import { SidebarModule } from 'primeng/sidebar';
38
- import * as i8$1 from 'primeng/badge';
39
- import { BadgeModule } from 'primeng/badge';
40
- import { RadioButtonModule } from 'primeng/radiobutton';
41
- import * as i8 from 'primeng/ripple';
42
- import { RippleModule } from 'primeng/ripple';
43
14
  import * as i1$6 from 'primeng/dynamicdialog';
44
15
  import { DialogService } from 'primeng/dynamicdialog';
45
- import * as i3$4 from 'primeng/panel';
46
- import { PanelModule } from 'primeng/panel';
47
- import * as i4$1 from 'primeng/autocomplete';
48
- import { AutoCompleteModule } from 'primeng/autocomplete';
49
- import * as i9 from 'primeng/avatar';
50
- import { AvatarModule } from 'primeng/avatar';
51
- import { AvatarGroupModule } from 'primeng/avatargroup';
52
- import { ProgressBarModule } from 'primeng/progressbar';
53
- import { DividerModule } from 'primeng/divider';
54
- import * as i5$4 from 'primeng/inputnumber';
55
- import { InputNumberModule } from 'primeng/inputnumber';
56
- import { OverlayPanelModule } from 'primeng/overlaypanel';
57
- import * as i4$6 from 'primeng/menu';
58
- import { MenuModule } from 'primeng/menu';
59
- import { PaginatorModule } from 'primeng/paginator';
60
- import * as i5$3 from 'primeng/editor';
61
- import { EditorModule, Editor } from 'primeng/editor';
62
- import * as i5 from 'primeng/inputgroup';
63
- import { InputGroupModule } from 'primeng/inputgroup';
64
- import * as i6 from 'primeng/inputgroupaddon';
65
- import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
66
- import { TimelineModule } from 'primeng/timeline';
67
- import { CardModule } from 'primeng/card';
68
- import * as i6$1 from 'primeng/colorpicker';
69
- import { ColorPickerModule } from 'primeng/colorpicker';
70
- import * as i4$3 from 'primeng/fileupload';
71
- import { FileUploadModule } from 'primeng/fileupload';
72
- import { DataViewModule } from 'primeng/dataview';
73
- import * as i5$1 from 'primeng/datepicker';
74
- import { DatePickerModule } from 'primeng/datepicker';
75
16
  import { provideTranslocoPreloadLangs } from '@jsverse/transloco-preload-langs';
17
+ import * as i4 from 'primeng/autocomplete';
18
+ import { AutoCompleteModule } from 'primeng/autocomplete';
76
19
  import * as i2 from '@angular/common';
77
20
  import { CommonModule, formatDate } from '@angular/common';
78
21
  import * as i3$2 from '@angular/forms';
79
- import { ReactiveFormsModule, FormsModule, FormControl, FormGroup, FormArray } from '@angular/forms';
22
+ import { FormControl, FormGroup, FormArray, ReactiveFormsModule, FormsModule } from '@angular/forms';
23
+ import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
24
+ import * as i5 from 'primeng/tooltip';
25
+ import { TooltipModule, Tooltip } from 'primeng/tooltip';
26
+ import { InputGroupModule } from 'primeng/inputgroup';
27
+ import * as i4$1 from 'primeng/datepicker';
28
+ import { DatePickerModule } from 'primeng/datepicker';
29
+ import * as i4$2 from 'primeng/checkbox';
30
+ import { CheckboxModule } from 'primeng/checkbox';
31
+ import * as i4$3 from 'primeng/colorpicker';
32
+ import { ColorPickerModule } from 'primeng/colorpicker';
33
+ import * as i3$3 from 'primeng/select';
34
+ import { SelectModule } from 'primeng/select';
35
+ import * as i4$4 from 'primeng/editor';
36
+ import { EditorModule, Editor } from 'primeng/editor';
37
+ import * as i3$4 from 'primeng/fileupload';
38
+ import { FileUploadModule } from 'primeng/fileupload';
80
39
  import * as FileSaver from 'file-saver';
40
+ import * as i1$3 from 'primeng/button';
41
+ import { ButtonModule } from 'primeng/button';
81
42
  import * as i1$5 from 'primeng/splitbutton';
82
43
  import { SplitButtonModule } from 'primeng/splitbutton';
44
+ import * as i4$5 from 'primeng/multiselect';
45
+ import { MultiSelectModule } from 'primeng/multiselect';
46
+ import * as i4$6 from 'primeng/inputnumber';
47
+ import { InputNumberModule } from 'primeng/inputnumber';
48
+ import * as i4$7 from 'primeng/password';
49
+ import { PasswordModule } from 'primeng/password';
50
+ import * as i4$8 from 'primeng/textarea';
51
+ import { TextareaModule } from 'primeng/textarea';
52
+ import * as i4$9 from 'primeng/inputtext';
53
+ import { InputTextModule } from 'primeng/inputtext';
54
+ import * as i2$1 from 'primeng/menu';
55
+ import { MenuModule } from 'primeng/menu';
56
+ import * as i4$a from 'primeng/panel';
57
+ import { PanelModule } from 'primeng/panel';
83
58
  import * as i1$4 from 'primeng/skeleton';
84
59
  import { SkeletonModule } from 'primeng/skeleton';
60
+ import * as i9 from 'primeng/table';
61
+ import { TableModule } from 'primeng/table';
62
+ import * as i2$2 from 'primeng/confirmdialog';
63
+ import { ConfirmDialogModule } from 'primeng/confirmdialog';
85
64
  import { trigger, state, transition, style, animate } from '@angular/animations';
65
+ import * as i7 from 'primeng/avatar';
66
+ import { AvatarModule } from 'primeng/avatar';
67
+ import * as i8 from 'primeng/badge';
68
+ import { BadgeModule } from 'primeng/badge';
69
+ import * as i3$5 from 'primeng/menubar';
70
+ import { MenubarModule } from 'primeng/menubar';
86
71
  import { NgxSpinnerService } from 'ngx-spinner';
87
72
 
88
73
  function authInitializer(authService) {
@@ -93,21 +78,9 @@ function authInitializer(authService) {
93
78
 
94
79
  class BaseEntity {
95
80
  constructor(typeName) {
96
- this.pipedProperties = [];
97
81
  this.typeName = typeName;
98
82
  }
99
83
  }
100
- class PipedProperty {
101
- constructor(p, c) {
102
- this.pipe = p;
103
- this.control = c;
104
- }
105
- }
106
- var PropertyPipes;
107
- (function (PropertyPipes) {
108
- PropertyPipes[PropertyPipes["IntegerPipe"] = 0] = "IntegerPipe";
109
- PropertyPipes[PropertyPipes["DecimalPipe"] = 1] = "DecimalPipe";
110
- })(PropertyPipes || (PropertyPipes = {}));
111
84
 
112
85
  class User extends BaseEntity {
113
86
  constructor({ id, email, } = {}) {
@@ -304,6 +277,7 @@ class ConfigBaseService {
304
277
  headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
305
278
  params: new HttpParams().set('X-Skip-Spinner', 'true')
306
279
  };
280
+ this.logoPath = 'assets/images/logo/logo.svg';
307
281
  }
308
282
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
309
283
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, providedIn: 'root' }); }
@@ -444,7 +418,7 @@ class AuthBaseService {
444
418
  };
445
419
  this.initCompanyAuthDialogDetails = () => {
446
420
  return of(new InitCompanyAuthDialogDetails({
447
- image: `assets/images/logo/logo.svg`,
421
+ image: this.config.logoPath,
448
422
  companyName: this.config.companyName,
449
423
  }));
450
424
  };
@@ -694,6 +668,7 @@ function provideSpiderlyCore() {
694
668
  return makeEnvironmentProviders([
695
669
  MessageService,
696
670
  ConfirmationService,
671
+ DialogService,
697
672
  {
698
673
  provide: APP_INITIALIZER,
699
674
  useFactory: authInitializer,
@@ -707,239 +682,6 @@ function provideSpiderlyCore() {
707
682
  ]);
708
683
  }
709
684
 
710
- class PrimengModule {
711
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PrimengModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
712
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: PrimengModule, imports: [TableModule,
713
- ButtonModule,
714
- MultiSelectModule,
715
- InputTextModule,
716
- TextareaModule,
717
- SelectModule,
718
- TooltipModule,
719
- InputSwitchModule,
720
- DialogModule,
721
- DatePickerModule,
722
- CheckboxModule,
723
- PasswordModule,
724
- ToastModule,
725
- ConfirmDialogModule,
726
- SidebarModule,
727
- BadgeModule,
728
- RadioButtonModule,
729
- RippleModule,
730
- PanelModule,
731
- AutoCompleteModule,
732
- AvatarModule,
733
- AvatarGroupModule,
734
- ProgressBarModule,
735
- DividerModule,
736
- InputNumberModule,
737
- OverlayPanelModule,
738
- MenuModule,
739
- PaginatorModule,
740
- EditorModule,
741
- InputGroupModule,
742
- InputGroupAddonModule,
743
- TimelineModule,
744
- CardModule,
745
- ColorPickerModule,
746
- FileUploadModule,
747
- DataViewModule], exports: [TableModule,
748
- ButtonModule,
749
- MultiSelectModule,
750
- InputTextModule,
751
- TextareaModule,
752
- SelectModule,
753
- TooltipModule,
754
- InputSwitchModule,
755
- DialogModule,
756
- DatePickerModule,
757
- CheckboxModule,
758
- PasswordModule,
759
- ToastModule,
760
- ConfirmDialogModule,
761
- SidebarModule,
762
- BadgeModule,
763
- RadioButtonModule,
764
- RippleModule,
765
- PanelModule,
766
- AutoCompleteModule,
767
- AvatarModule,
768
- AvatarGroupModule,
769
- ProgressBarModule,
770
- DividerModule,
771
- InputNumberModule,
772
- OverlayPanelModule,
773
- MenuModule,
774
- PaginatorModule,
775
- EditorModule,
776
- InputGroupModule,
777
- InputGroupAddonModule,
778
- TimelineModule,
779
- CardModule,
780
- ColorPickerModule,
781
- FileUploadModule,
782
- DataViewModule] }); }
783
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PrimengModule, providers: [
784
- DialogService,
785
- ], imports: [TableModule,
786
- ButtonModule,
787
- MultiSelectModule,
788
- InputTextModule,
789
- TextareaModule,
790
- SelectModule,
791
- TooltipModule,
792
- InputSwitchModule,
793
- DialogModule,
794
- DatePickerModule,
795
- CheckboxModule,
796
- PasswordModule,
797
- ToastModule,
798
- ConfirmDialogModule,
799
- SidebarModule,
800
- BadgeModule,
801
- RadioButtonModule,
802
- RippleModule,
803
- PanelModule,
804
- AutoCompleteModule,
805
- AvatarModule,
806
- AvatarGroupModule,
807
- ProgressBarModule,
808
- DividerModule,
809
- InputNumberModule,
810
- OverlayPanelModule,
811
- MenuModule,
812
- PaginatorModule,
813
- EditorModule,
814
- InputGroupModule,
815
- InputGroupAddonModule,
816
- TimelineModule,
817
- CardModule,
818
- ColorPickerModule,
819
- FileUploadModule,
820
- DataViewModule, TableModule,
821
- ButtonModule,
822
- MultiSelectModule,
823
- InputTextModule,
824
- TextareaModule,
825
- SelectModule,
826
- TooltipModule,
827
- InputSwitchModule,
828
- DialogModule,
829
- DatePickerModule,
830
- CheckboxModule,
831
- PasswordModule,
832
- ToastModule,
833
- ConfirmDialogModule,
834
- SidebarModule,
835
- BadgeModule,
836
- RadioButtonModule,
837
- RippleModule,
838
- PanelModule,
839
- AutoCompleteModule,
840
- AvatarModule,
841
- AvatarGroupModule,
842
- ProgressBarModule,
843
- DividerModule,
844
- InputNumberModule,
845
- OverlayPanelModule,
846
- MenuModule,
847
- PaginatorModule,
848
- EditorModule,
849
- InputGroupModule,
850
- InputGroupAddonModule,
851
- TimelineModule,
852
- CardModule,
853
- ColorPickerModule,
854
- FileUploadModule,
855
- DataViewModule] }); }
856
- }
857
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PrimengModule, decorators: [{
858
- type: NgModule,
859
- args: [{
860
- imports: [
861
- TableModule,
862
- ButtonModule,
863
- MultiSelectModule,
864
- InputTextModule,
865
- TextareaModule,
866
- SelectModule,
867
- TooltipModule,
868
- InputSwitchModule,
869
- DialogModule,
870
- DatePickerModule,
871
- CheckboxModule,
872
- PasswordModule,
873
- ToastModule,
874
- ConfirmDialogModule,
875
- SidebarModule,
876
- BadgeModule,
877
- RadioButtonModule,
878
- RippleModule,
879
- PanelModule,
880
- AutoCompleteModule,
881
- AvatarModule,
882
- AvatarGroupModule,
883
- ProgressBarModule,
884
- DividerModule,
885
- InputNumberModule,
886
- OverlayPanelModule,
887
- MenuModule,
888
- PaginatorModule,
889
- EditorModule,
890
- InputGroupModule,
891
- InputGroupAddonModule,
892
- TimelineModule,
893
- CardModule,
894
- ColorPickerModule,
895
- FileUploadModule,
896
- DataViewModule,
897
- ],
898
- exports: [
899
- TableModule,
900
- ButtonModule,
901
- MultiSelectModule,
902
- InputTextModule,
903
- TextareaModule,
904
- SelectModule,
905
- TooltipModule,
906
- InputSwitchModule,
907
- DialogModule,
908
- DatePickerModule,
909
- CheckboxModule,
910
- PasswordModule,
911
- ToastModule,
912
- ConfirmDialogModule,
913
- SidebarModule,
914
- BadgeModule,
915
- RadioButtonModule,
916
- RippleModule,
917
- PanelModule,
918
- AutoCompleteModule,
919
- AvatarModule,
920
- AvatarGroupModule,
921
- ProgressBarModule,
922
- DividerModule,
923
- InputNumberModule,
924
- OverlayPanelModule,
925
- MenuModule,
926
- PaginatorModule,
927
- EditorModule,
928
- InputGroupModule,
929
- InputGroupAddonModule,
930
- TimelineModule,
931
- CardModule,
932
- ColorPickerModule,
933
- FileUploadModule,
934
- DataViewModule
935
- ],
936
- declarations: [],
937
- providers: [
938
- DialogService,
939
- ],
940
- }]
941
- }] });
942
-
943
685
  class SpiderlyTranslocoLoader {
944
686
  constructor(http) {
945
687
  this.http = http;
@@ -1012,9 +754,6 @@ class BaseControl {
1012
754
  ngOnInit() {
1013
755
  if (this.control != null && this.disabled == true)
1014
756
  this.control.disable();
1015
- // TODO FT: Delete if you don't need
1016
- // if(this.control?.validator?.hasNotEmptyRule == true) // FT HACK: Be carefull with this name, if you change it in generator you need to change it here also
1017
- // this.control.required = true;
1018
757
  this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus';
1019
758
  }
1020
759
  ngAfterViewInit() {
@@ -1024,7 +763,7 @@ class BaseControl {
1024
763
  }
1025
764
  getValidationErrrorMessages() {
1026
765
  if (this.control?.errors && this.control?.dirty) {
1027
- // FT: it should always be one error message for single form control,
766
+ // It should always be one error message for single form control,
1028
767
  // also i don't need to reassign it to null because it will be shown only when control.valid == false
1029
768
  return this.control.errors['_'];
1030
769
  }
@@ -1114,20 +853,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1114
853
  args: [{ selector: 'required', standalone: true, template: "<span style=\"color: red; margin-left: 4px;\">*</span>" }]
1115
854
  }], ctorParameters: () => [] });
1116
855
 
1117
- class SpiderlyAutocompleteComponent extends BaseAutocompleteControl {
856
+ // It's made like generic type because of <number>, <string> etc. not to put class like User.
857
+ class SpiderlyFormControl extends FormControl {
858
+ constructor(value, opts = null, required = false) {
859
+ opts = opts ?? { updateOn: 'blur' };
860
+ super(value, opts);
861
+ this.required = required;
862
+ }
863
+ getRawValue() {
864
+ return super.getRawValue();
865
+ }
866
+ get validator() {
867
+ return this._spiderlyValidator;
868
+ }
869
+ set validator(validator) {
870
+ this._spiderlyValidator = validator;
871
+ this.setValidators(validator);
872
+ }
873
+ }
874
+ class SpiderlyFormGroup extends FormGroup {
875
+ constructor(controls) {
876
+ super(controls);
877
+ this.initSaveBody = () => null;
878
+ this.controlNamesFromHtml = [];
879
+ }
880
+ getRawValue() {
881
+ return super.getRawValue();
882
+ }
883
+ }
884
+ class SpiderlyFormArray extends FormArray {
885
+ constructor() {
886
+ super(...arguments);
887
+ this.controlNamesFromHtml = [];
888
+ }
889
+ }
890
+
891
+ class ValidatorAbstractService {
1118
892
  constructor(translocoService) {
893
+ this.translocoService = translocoService;
894
+ this.isArrayEmpty = (control) => {
895
+ const validator = () => {
896
+ const value = control.value;
897
+ const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
898
+ const arrayValid = notEmptyRule;
899
+ return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
900
+ };
901
+ validator.hasNotEmptyRule = true;
902
+ control.required = true;
903
+ return validator;
904
+ };
905
+ this.notEmpty = (control) => {
906
+ const validator = () => {
907
+ const value = control.value;
908
+ const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';
909
+ const arrayValid = notEmptyRule;
910
+ return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
911
+ };
912
+ validator.hasNotEmptyRule = true;
913
+ control.required = true;
914
+ control.validator = validator;
915
+ control.updateValueAndValidity();
916
+ };
917
+ this.isFormArrayEmpty = (control) => {
918
+ const validator = () => {
919
+ const value = control;
920
+ const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
921
+ const arrayValid = notEmptyRule;
922
+ return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
923
+ };
924
+ validator.hasNotEmptyRule = true;
925
+ control.required = true;
926
+ return validator;
927
+ };
928
+ }
929
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
930
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, providedIn: 'root' }); }
931
+ }
932
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, decorators: [{
933
+ type: Injectable,
934
+ args: [{
935
+ providedIn: 'root',
936
+ }]
937
+ }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
938
+
939
+ class SpiderlyAutocompleteComponent extends BaseAutocompleteControl {
940
+ constructor(translocoService, validatorService) {
1119
941
  super(translocoService);
1120
942
  this.translocoService = translocoService;
943
+ this.validatorService = validatorService;
1121
944
  this.appendTo = 'body';
1122
945
  this.showClear = true;
946
+ this.helperFormControl = new SpiderlyFormControl(null, { updateOn: 'change' });
1123
947
  }
1124
948
  ngOnInit() {
1125
949
  super.ngOnInit();
1126
- if (this.options == null && this.control.value != null) {
1127
- this.options = [
1128
- { label: this.displayName, code: this.control.value }
1129
- ];
1130
- }
950
+ this.helperFormControl.label = this.control.label;
951
+ this.validatorService.setValidator(this.helperFormControl, this.control.parentClassName);
952
+ if (this.control.value != null)
953
+ this.helperFormControl.setValue({ label: this.displayName, code: this.control.value });
1131
954
  if (this.emptyMessage == null) {
1132
955
  this.emptyMessage = this.translocoService.translate('EmptyMessage');
1133
956
  }
@@ -1136,21 +959,32 @@ class SpiderlyAutocompleteComponent extends BaseAutocompleteControl {
1136
959
  this.onTextInput.next(event);
1137
960
  }
1138
961
  select(event) {
962
+ this.control.setValue(event.value.code);
963
+ }
964
+ clear() {
965
+ this.control.setValue(null);
1139
966
  }
1140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1141
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyAutocompleteComponent, isStandalone: true, selector: "spiderly-autocomplete", inputs: { appendTo: "appendTo", showClear: "showClear", emptyMessage: "emptyMessage", displayName: "displayName" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <p-inputgroup>\r\n <p-autocomplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n [completeOnFocus]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n [fluid]=\"true\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n />\r\n <p-inputgroup-addon *ngIf=\"showAddon\" (click)=\"addonClick()\" [style]=\"{'cursor': 'pointer', 'background-color': 'var(--p-primary-color)', 'border-color': 'var(--p-primary-color)'}\">\r\n <i class=\"{{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4$1.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i5.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["style", "styleClass"] }, { kind: "component", type: i6.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
967
+ autocompleteMarkAsDirty() {
968
+ this.dropdownMarkAsDirty();
969
+ this.helperFormControl.markAsDirty();
970
+ }
971
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, deps: [{ token: i1$2.TranslocoService }, { token: ValidatorAbstractService }], target: i0.ɵɵFactoryTarget.Component }); }
972
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyAutocompleteComponent, isStandalone: true, selector: "spiderly-autocomplete", inputs: { appendTo: "appendTo", showClear: "showClear", emptyMessage: "emptyMessage", displayName: "displayName" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <!-- Don't support p-inputgroup -->\r\n <p-autocomplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"helperFormControl\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"autocompleteMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n (onClear)=\"clear()\"\r\n [completeOnFocus]=\"true\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n ></p-autocomplete>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
1142
973
  }
1143
974
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, decorators: [{
1144
975
  type: Component,
1145
976
  args: [{ selector: 'spiderly-autocomplete', imports: [
1146
977
  ReactiveFormsModule,
1147
978
  FormsModule,
1148
- PrimengModule,
979
+ AutoCompleteModule,
980
+ InputGroupAddonModule,
981
+ InputGroupModule,
982
+ TooltipModule,
1149
983
  CommonModule,
1150
984
  RequiredComponent,
1151
985
  TranslocoDirective,
1152
- ], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <p-inputgroup>\r\n <p-autocomplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n [completeOnFocus]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n [fluid]=\"true\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n />\r\n <p-inputgroup-addon *ngIf=\"showAddon\" (click)=\"addonClick()\" [style]=\"{'cursor': 'pointer', 'background-color': 'var(--p-primary-color)', 'border-color': 'var(--p-primary-color)'}\">\r\n <i class=\"{{addonIcon}}\" style=\"color: #fff;\"></i>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n </div>\r\n</ng-container>" }]
1153
- }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { appendTo: [{
986
+ ], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n \r\n <!-- Don't support p-inputgroup -->\r\n <p-autocomplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"helperFormControl\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"autocompleteMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n (onClear)=\"clear()\"\r\n [completeOnFocus]=\"true\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n ></p-autocomplete>\r\n </div>\r\n</ng-container>" }]
987
+ }], ctorParameters: () => [{ type: i1$2.TranslocoService }, { type: ValidatorAbstractService }], propDecorators: { appendTo: [{
1154
988
  type: Input
1155
989
  }], showClear: [{
1156
990
  type: Input
@@ -1172,7 +1006,7 @@ class SpiderlyCalendarComponent extends BaseControl {
1172
1006
  setDate(event) {
1173
1007
  }
1174
1008
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCalendarComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCalendarComponent, isStandalone: true, selector: "spiderly-calendar", inputs: { showTime: "showTime" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-datepicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "size", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1009
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCalendarComponent, isStandalone: true, selector: "spiderly-calendar", inputs: { showTime: "showTime" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-datepicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i4$1.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "size", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1176
1010
  }
1177
1011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCalendarComponent, decorators: [{
1178
1012
  type: Component,
@@ -1180,7 +1014,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1180
1014
  CommonModule,
1181
1015
  ReactiveFormsModule,
1182
1016
  FormsModule,
1183
- PrimengModule,
1017
+ DatePickerModule,
1018
+ TooltipModule,
1184
1019
  RequiredComponent
1185
1020
  ], template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-datepicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n" }]
1186
1021
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { showTime: [{
@@ -1201,7 +1036,7 @@ class SpiderlyCheckboxComponent extends BaseControl {
1201
1036
  super.ngOnInit();
1202
1037
  }
1203
1038
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCheckboxComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCheckboxComponent, isStandalone: true, selector: "spiderly-checkbox", inputs: { fakeLabel: "fakeLabel", initializeToFalse: "initializeToFalse", inlineLabel: "inlineLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\" style=\"margin-top: 0.5rem;\">\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n />\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1039
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyCheckboxComponent, isStandalone: true, selector: "spiderly-checkbox", inputs: { fakeLabel: "fakeLabel", initializeToFalse: "initializeToFalse", inlineLabel: "inlineLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\" style=\"margin-top: 0.5rem;\">\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n />\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i4$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1205
1040
  }
1206
1041
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCheckboxComponent, decorators: [{
1207
1042
  type: Component,
@@ -1209,7 +1044,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1209
1044
  CommonModule,
1210
1045
  ReactiveFormsModule,
1211
1046
  FormsModule,
1212
- PrimengModule,
1047
+ CheckboxModule,
1048
+ TooltipModule,
1213
1049
  RequiredComponent
1214
1050
  ], template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup p-fluid\" style=\"margin-top: 0.5rem;\">\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n />\r\n </div>\r\n</div>" }]
1215
1051
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { fakeLabel: [{
@@ -1234,7 +1070,7 @@ class SpiderlyColorpickComponent extends BaseControl {
1234
1070
  super.ngOnInit();
1235
1071
  }
1236
1072
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyColorpickComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1237
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyColorpickComponent, isStandalone: true, selector: "spiderly-colorpick", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <div class=\"p-inputgroup p-fluid\">\r\n <!-- <span class=\"p-inputgroup-addon\">\r\n #\r\n </span> -->\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [style]=\"{'width':'100%', 'position': 'relative'}\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n />\r\n </div>\r\n <p-colorpicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorpicker>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4$2.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i6$1.ColorPicker, selector: "p-colorPicker, p-colorpicker, p-color-picker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "autofocus"], outputs: ["onChange", "onShow", "onHide"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1073
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyColorpickComponent, isStandalone: true, selector: "spiderly-colorpick", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <div class=\"p-inputgroup p-fluid\">\r\n <!-- <span class=\"p-inputgroup-addon\">\r\n #\r\n </span> -->\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [style]=\"{'width':'100%', 'position': 'relative'}\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n />\r\n </div>\r\n <p-colorpicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorpicker>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ColorPickerModule }, { kind: "component", type: i4$3.ColorPicker, selector: "p-colorPicker, p-colorpicker, p-color-picker", inputs: ["style", "styleClass", "inline", "format", "appendTo", "disabled", "tabindex", "inputId", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "autofocus"], outputs: ["onChange", "onShow", "onHide"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1238
1074
  }
1239
1075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyColorpickComponent, decorators: [{
1240
1076
  type: Component,
@@ -1242,7 +1078,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1242
1078
  CommonModule,
1243
1079
  ReactiveFormsModule,
1244
1080
  FormsModule,
1245
- PrimengModule,
1081
+ ColorPickerModule,
1082
+ TooltipModule,
1246
1083
  RequiredComponent
1247
1084
  ], template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <div class=\"p-inputgroup p-fluid\">\r\n <!-- <span class=\"p-inputgroup-addon\">\r\n #\r\n </span> -->\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [style]=\"{'width':'100%', 'position': 'relative'}\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n />\r\n </div>\r\n <p-colorpicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorpicker>\r\n </div>\r\n</div>" }]
1248
1085
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
@@ -1260,16 +1097,17 @@ class SpiderlyDropdownComponent extends BaseDropdownControl {
1260
1097
  this.onChange.next(event);
1261
1098
  }
1262
1099
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDropdownComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDropdownComponent, isStandalone: true, selector: "spiderly-dropdown", outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <p-select\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n \r\n</div>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "component", type: i3$3.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDropdownComponent, isStandalone: true, selector: "spiderly-dropdown", outputs: { onChange: "onChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <p-select\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n \r\n</div>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i3$3.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1264
1101
  }
1265
1102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDropdownComponent, decorators: [{
1266
1103
  type: Component,
1267
1104
  args: [{ selector: 'spiderly-dropdown', imports: [
1268
1105
  ReactiveFormsModule,
1269
1106
  FormsModule,
1270
- PrimengModule,
1107
+ SelectModule,
1108
+ TooltipModule,
1271
1109
  CommonModule,
1272
- RequiredComponent
1110
+ RequiredComponent,
1273
1111
  ], template: "<div class=\"flex flex-column gap-2\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <p-select\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n \r\n</div>" }]
1274
1112
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { onChange: [{
1275
1113
  type: Output
@@ -1301,7 +1139,7 @@ class SpiderlyEditorComponent extends BaseControl {
1301
1139
  };
1302
1140
  }
1303
1141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyEditorComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1304
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyEditorComponent, isStandalone: true, selector: "spiderly-editor", viewQueries: [{ propertyName: "editor", first: true, predicate: Editor, descendants: true }, { propertyName: "tooltip", first: true, predicate: Tooltip, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$3.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyEditorComponent, isStandalone: true, selector: "spiderly-editor", viewQueries: [{ propertyName: "editor", first: true, predicate: Editor, descendants: true }, { propertyName: "tooltip", first: true, predicate: Tooltip, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i4$4.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1305
1143
  }
1306
1144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyEditorComponent, decorators: [{
1307
1145
  type: Component,
@@ -1309,7 +1147,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1309
1147
  CommonModule,
1310
1148
  ReactiveFormsModule,
1311
1149
  FormsModule,
1312
- PrimengModule,
1150
+ EditorModule,
1151
+ TooltipModule,
1313
1152
  RequiredComponent
1314
1153
  ], template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>" }]
1315
1154
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { editor: [{
@@ -1674,7 +1513,7 @@ class SpiderlyFileComponent extends BaseControl {
1674
1513
  return isExcelFileType(mimeType);
1675
1514
  }
1676
1515
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyFileComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1677
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyFileComponent, isStandalone: true, selector: "spiderly-file", inputs: { objectId: "objectId", fileData: "fileData", acceptedFileTypes: "acceptedFileTypes", required: "required", multiple: "multiple", files: "files" }, outputs: { onFileSelected: "onFileSelected", onFileRemoved: "onFileRemoved" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n <!-- <p-button (onClick)=\"clearCallback()\" icon=\"pi pi-times\" [rounded]=\"true\" [outlined]=\"true\" severity=\"danger\" [disabled]=\"!files || files.length === 0\" /> -->\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$3.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
1516
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyFileComponent, isStandalone: true, selector: "spiderly-file", inputs: { objectId: "objectId", fileData: "fileData", acceptedFileTypes: "acceptedFileTypes", required: "required", multiple: "multiple", files: "files" }, outputs: { onFileSelected: "onFileSelected", onFileRemoved: "onFileRemoved" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i3$4.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
1678
1517
  }
1679
1518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyFileComponent, decorators: [{
1680
1519
  type: Component,
@@ -1682,11 +1521,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1682
1521
  CommonModule,
1683
1522
  ReactiveFormsModule,
1684
1523
  FormsModule,
1685
- PrimengModule,
1524
+ FileUploadModule,
1686
1525
  RequiredComponent,
1687
1526
  SpiderlyButtonComponent,
1688
1527
  TranslocoDirective
1689
- ], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- FT: It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n <!-- <p-button (onClick)=\"clearCallback()\" icon=\"pi pi-times\" [rounded]=\"true\" [outlined]=\"true\" severity=\"danger\" [disabled]=\"!files || files.length === 0\" /> -->\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>" }]
1528
+ ], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files?.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>" }]
1690
1529
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { onFileSelected: [{
1691
1530
  type: Output
1692
1531
  }], onFileRemoved: [{
@@ -1724,14 +1563,15 @@ class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl {
1724
1563
  this.onTextInput.next(event);
1725
1564
  }
1726
1565
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiAutocompleteComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1727
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiAutocompleteComponent, isStandalone: true, selector: "spiderly-multiautocomplete", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\r\n <p-autocomplete \r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [multiple]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n [completeOnFocus]=\"true\"\r\n dropdownIcon=\"pi pi-plus\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n >\r\n </p-autocomplete>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4$1.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
1566
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiAutocompleteComponent, isStandalone: true, selector: "spiderly-multiautocomplete", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\r\n <p-autocomplete \r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [multiple]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n [completeOnFocus]=\"true\"\r\n dropdownIcon=\"pi pi-plus\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n >\r\n </p-autocomplete>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "variant", "fluid"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequiredComponent, selector: "required" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
1728
1567
  }
1729
1568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiAutocompleteComponent, decorators: [{
1730
1569
  type: Component,
1731
1570
  args: [{ selector: 'spiderly-multiautocomplete', imports: [
1732
1571
  ReactiveFormsModule,
1733
1572
  FormsModule,
1734
- PrimengModule,
1573
+ AutoCompleteModule,
1574
+ TooltipModule,
1735
1575
  CommonModule,
1736
1576
  RequiredComponent,
1737
1577
  TranslocoDirective,
@@ -1747,7 +1587,7 @@ class SpiderlyMultiSelectComponent extends BaseDropdownControl {
1747
1587
  super.ngOnInit();
1748
1588
  }
1749
1589
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiSelectComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1750
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiSelectComponent, isStandalone: true, selector: "spiderly-multiselect", usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "component", type: i4$4.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1590
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyMultiSelectComponent, isStandalone: true, selector: "spiderly-multiselect", usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1751
1591
  }
1752
1592
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiSelectComponent, decorators: [{
1753
1593
  type: Component,
@@ -1755,7 +1595,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1755
1595
  CommonModule,
1756
1596
  ReactiveFormsModule,
1757
1597
  FormsModule,
1758
- PrimengModule,
1598
+ MultiSelectModule,
1599
+ TooltipModule,
1759
1600
  RequiredComponent
1760
1601
  ], template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n</div>" }]
1761
1602
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
@@ -1771,7 +1612,7 @@ class SpiderlyNumberComponent extends BaseControl {
1771
1612
  super.ngOnInit();
1772
1613
  }
1773
1614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyNumberComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1774
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyNumberComponent, isStandalone: true, selector: "spiderly-number", inputs: { prefix: "prefix", showButtons: "showButtons", decimal: "decimal", maxFractionDigits: "maxFractionDigits" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$4.InputNumber, selector: "p-inputNumber, p-inputnumber, p-input-number", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled", "fluid"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1615
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyNumberComponent, isStandalone: true, selector: "spiderly-number", inputs: { prefix: "prefix", showButtons: "showButtons", decimal: "decimal", maxFractionDigits: "maxFractionDigits" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i4$6.InputNumber, selector: "p-inputNumber, p-inputnumber, p-input-number", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled", "fluid"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1775
1616
  }
1776
1617
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyNumberComponent, decorators: [{
1777
1618
  type: Component,
@@ -1779,7 +1620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1779
1620
  CommonModule,
1780
1621
  ReactiveFormsModule,
1781
1622
  FormsModule,
1782
- PrimengModule,
1623
+ InputNumberModule,
1624
+ TooltipModule,
1783
1625
  RequiredComponent
1784
1626
  ], template: "<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>" }]
1785
1627
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { prefix: [{
@@ -1802,7 +1644,7 @@ class SpiderlyPasswordComponent extends BaseControl {
1802
1644
  super.ngOnInit();
1803
1645
  }
1804
1646
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPasswordComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1805
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPasswordComponent, isStandalone: true, selector: "spiderly-password", inputs: { showPasswordStrength: "showPasswordStrength" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$5.Password, selector: "p-password", inputs: ["ariaLabel", "fluid", "ariaLabelledBy", "label", "disabled", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "appendTo", "toggleMask", "size", "inputStyleClass", "styleClass", "style", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "variant"], outputs: ["onFocus", "onBlur", "onClear"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1647
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPasswordComponent, isStandalone: true, selector: "spiderly-password", inputs: { showPasswordStrength: "showPasswordStrength" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i4$7.Password, selector: "p-password", inputs: ["ariaLabel", "fluid", "ariaLabelledBy", "label", "disabled", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "appendTo", "toggleMask", "size", "inputStyleClass", "styleClass", "style", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "variant"], outputs: ["onFocus", "onBlur", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1806
1648
  }
1807
1649
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPasswordComponent, decorators: [{
1808
1650
  type: Component,
@@ -1810,7 +1652,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1810
1652
  CommonModule,
1811
1653
  ReactiveFormsModule,
1812
1654
  FormsModule,
1813
- PrimengModule,
1655
+ PasswordModule,
1656
+ TooltipModule,
1814
1657
  RequiredComponent
1815
1658
  ], template: "<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n" }]
1816
1659
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { showPasswordStrength: [{
@@ -1826,7 +1669,7 @@ class SpiderlyTextareaComponent extends BaseControl {
1826
1669
  super.ngOnInit();
1827
1670
  }
1828
1671
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextareaComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1829
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextareaComponent, isStandalone: true, selector: "spiderly-textarea", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4$5.Textarea, selector: "[pTextarea]", inputs: ["autoResize", "variant", "fluid", "pSize"], outputs: ["onResize"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1672
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextareaComponent, isStandalone: true, selector: "spiderly-textarea", usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TextareaModule }, { kind: "directive", type: i4$8.Textarea, selector: "[pTextarea]", inputs: ["autoResize", "variant", "fluid", "pSize"], outputs: ["onResize"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1830
1673
  }
1831
1674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextareaComponent, decorators: [{
1832
1675
  type: Component,
@@ -1834,7 +1677,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1834
1677
  CommonModule,
1835
1678
  ReactiveFormsModule,
1836
1679
  FormsModule,
1837
- PrimengModule,
1680
+ TextareaModule,
1681
+ TooltipModule,
1838
1682
  RequiredComponent
1839
1683
  ], template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>" }]
1840
1684
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
@@ -1853,7 +1697,7 @@ class SpiderlyTextboxComponent extends BaseControl {
1853
1697
  this.onButtonClick.next(null);
1854
1698
  }
1855
1699
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextboxComponent, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1856
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextboxComponent, isStandalone: true, selector: "spiderly-textbox", inputs: { showButton: "showButton", buttonIcon: "buttonIcon" }, outputs: { onButtonClick: "onButtonClick" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--p-primary-color); border-color: var(--p-primary-color);\">\r\n <i class=\"pi {{buttonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i4$2.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1700
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTextboxComponent, isStandalone: true, selector: "spiderly-textbox", inputs: { showButton: "showButton", buttonIcon: "buttonIcon" }, outputs: { onButtonClick: "onButtonClick" }, usesInheritance: true, ngImport: i0, template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--p-primary-color); border-color: var(--p-primary-color);\">\r\n <i class=\"pi {{buttonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$9.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: RequiredComponent, selector: "required" }] }); }
1857
1701
  }
1858
1702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextboxComponent, decorators: [{
1859
1703
  type: Component,
@@ -1861,7 +1705,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1861
1705
  CommonModule,
1862
1706
  ReactiveFormsModule,
1863
1707
  FormsModule,
1864
- PrimengModule,
1708
+ InputTextModule,
1709
+ TooltipModule,
1865
1710
  RequiredComponent
1866
1711
  ], template: "<!-- Can't put (onBlur) in this control -->\r\n\r\n<div class=\"flex flex-column gap-2\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required\"></required>\r\n </div>\r\n <div class=\"p-inputgroup\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"p-inputgroup-addon\" style=\"cursor: pointer; background-color: var(--p-primary-color); border-color: var(--p-primary-color);\">\r\n <i class=\"pi {{buttonIcon}}\" style=\"color: #fff;\"></i>\r\n </span>\r\n </div>\r\n</div>" }]
1867
1712
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { showButton: [{
@@ -1893,11 +1738,11 @@ class PanelFooterComponent {
1893
1738
  ngOnInit() {
1894
1739
  }
1895
1740
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1896
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelFooterComponent, isStandalone: false, selector: "panel-footer", ngImport: i0, template: "<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #dee2e6;border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}\n"] }); }
1741
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: PanelFooterComponent, isStandalone: false, selector: "panel-footer", ngImport: i0, template: "<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--p-content-border-color);border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}\n"] }); }
1897
1742
  }
1898
1743
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, decorators: [{
1899
1744
  type: Component,
1900
- args: [{ selector: 'panel-footer', standalone: false, template: "<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #dee2e6;border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}\n"] }]
1745
+ args: [{ selector: 'panel-footer', standalone: false, template: "<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>", styles: [".spiderly-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--p-content-border-color);border-bottom-right-radius:var(--p-content-border-radius);border-bottom-left-radius:var(--p-content-border-radius);padding:18px}\n"] }]
1901
1746
  }], ctorParameters: () => [] });
1902
1747
 
1903
1748
  class PanelHeaderComponent {
@@ -1968,7 +1813,7 @@ class SpiderlyPanelComponent {
1968
1813
  this.onRemoveIconClick.next(null);
1969
1814
  }
1970
1815
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1971
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPanelComponent, isStandalone: false, selector: "spiderly-panel", inputs: { isFirstMultiplePanel: "isFirstMultiplePanel", isMiddleMultiplePanel: "isMiddleMultiplePanel", isLastMultiplePanel: "isLastMultiplePanel", toggleable: "toggleable", collapsed: "collapsed", crudMenu: "crudMenu", showCrudMenu: "showCrudMenu", showRemoveIcon: "showRemoveIcon", index: "index", showPanelHeader: "showPanelHeader" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<p-panel \r\n[showHeader]=\"showPanelHeader\"\r\n[ngClass]=\"{\r\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-first': isFirstMultiplePanel,\r\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-middle': isMiddleMultiplePanel,\r\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-last': isLastMultiplePanel,\r\n 'panel-border': !isFirstMultiplePanel,\r\n 'spiderly-panel': true,\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[collapsed]=\"toggleable && collapsed\"\r\nexpandIcon=\"pi pi-chevron-up\"\r\ncollapseIcon=\"pi pi-chevron-down\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <ng-content select=\"panel-header\"></ng-content>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"icons\">\r\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\r\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n </div>\r\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\r\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"panel-body-wrapper\">\r\n <ng-content select=\"panel-body\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"panel-footer\"></ng-content>\r\n\r\n</p-panel>\r\n", styles: [":host ::ng-deep .p-panel{overflow:hidden}:host ::ng-deep .p-panel-icons{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3$4.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i4$6.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }] }); }
1816
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyPanelComponent, isStandalone: false, selector: "spiderly-panel", inputs: { isFirstMultiplePanel: "isFirstMultiplePanel", isMiddleMultiplePanel: "isMiddleMultiplePanel", isLastMultiplePanel: "isLastMultiplePanel", toggleable: "toggleable", collapsed: "collapsed", crudMenu: "crudMenu", showCrudMenu: "showCrudMenu", showRemoveIcon: "showRemoveIcon", index: "index", showPanelHeader: "showPanelHeader" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<p-panel \r\n[showHeader]=\"showPanelHeader\"\r\n[ngClass]=\"{\r\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-first': isFirstMultiplePanel,\r\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-middle': isMiddleMultiplePanel,\r\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-last': isLastMultiplePanel,\r\n 'panel-border': !isFirstMultiplePanel,\r\n 'spiderly-panel': true,\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[collapsed]=\"toggleable && collapsed\"\r\nexpandIcon=\"pi pi-chevron-up\"\r\ncollapseIcon=\"pi pi-chevron-down\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <ng-content select=\"panel-header\"></ng-content>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"icons\">\r\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\r\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\"></p-menu>\r\n </div>\r\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\r\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"panel-body-wrapper\">\r\n <ng-content select=\"panel-body\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"panel-footer\"></ng-content>\r\n\r\n</p-panel>\r\n", styles: [":host ::ng-deep .p-panel{overflow:hidden}:host ::ng-deep .p-panel-icons{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$a.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }] }); }
1972
1817
  }
1973
1818
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelComponent, decorators: [{
1974
1819
  type: Component,
@@ -2027,20 +1872,23 @@ class SpiderlyPanelsModule {
2027
1872
  PanelFooterComponent,
2028
1873
  SpiderlyPanelComponent,
2029
1874
  SpiderlyCardComponent], imports: [CommonModule,
2030
- PrimengModule], exports: [PanelHeaderComponent,
1875
+ MenuModule,
1876
+ PanelModule], exports: [PanelHeaderComponent,
2031
1877
  PanelBodyComponent,
2032
1878
  PanelFooterComponent,
2033
1879
  SpiderlyPanelComponent,
2034
1880
  SpiderlyCardComponent] }); }
2035
1881
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelsModule, imports: [CommonModule,
2036
- PrimengModule] }); }
1882
+ MenuModule,
1883
+ PanelModule] }); }
2037
1884
  }
2038
1885
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPanelsModule, decorators: [{
2039
1886
  type: NgModule,
2040
1887
  args: [{
2041
1888
  imports: [
2042
1889
  CommonModule,
2043
- PrimengModule,
1890
+ MenuModule,
1891
+ PanelModule
2044
1892
  ],
2045
1893
  exports: [
2046
1894
  PanelHeaderComponent,
@@ -2204,41 +2052,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
2204
2052
  type: Input
2205
2053
  }] } });
2206
2054
 
2207
- // It's made like generic type because of <number>, <string> etc. not to put class like User.
2208
- class SpiderlyFormControl extends FormControl {
2209
- constructor(value, opts = null, required = false) {
2210
- opts = opts ?? { updateOn: 'blur' };
2211
- super(value, opts);
2212
- this.required = required;
2213
- }
2214
- getRawValue() {
2215
- return super.getRawValue();
2216
- }
2217
- get validator() {
2218
- return this._spiderlyValidator;
2219
- }
2220
- set validator(validator) {
2221
- this._spiderlyValidator = validator;
2222
- this.setValidators(validator);
2223
- }
2224
- }
2225
- class SpiderlyFormGroup extends FormGroup {
2226
- constructor(controls) {
2227
- super(controls);
2228
- this.initSaveBody = () => null;
2229
- this.controlNamesFromHtml = [];
2230
- }
2231
- getRawValue() {
2232
- return super.getRawValue();
2233
- }
2234
- }
2235
- class SpiderlyFormArray extends FormArray {
2236
- constructor() {
2237
- super(...arguments);
2238
- this.controlNamesFromHtml = [];
2239
- }
2240
- }
2241
-
2242
2055
  class IsAuthorizedForSaveEvent extends BaseEntity {
2243
2056
  constructor({ isAuthorizedForSave, currentUserPermissionCodes, } = {}) {
2244
2057
  super('IsAuthorizedForSaveEvent');
@@ -2260,54 +2073,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
2260
2073
  }]
2261
2074
  }], ctorParameters: () => [] });
2262
2075
 
2263
- class ValidatorAbstractService {
2264
- constructor(translocoService) {
2265
- this.translocoService = translocoService;
2266
- this.isArrayEmpty = (control) => {
2267
- const validator = () => {
2268
- const value = control.value;
2269
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
2270
- const arrayValid = notEmptyRule;
2271
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2272
- };
2273
- validator.hasNotEmptyRule = true;
2274
- control.required = true;
2275
- return validator;
2276
- };
2277
- this.notEmpty = (control) => {
2278
- const validator = () => {
2279
- const value = control.value;
2280
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';
2281
- const arrayValid = notEmptyRule;
2282
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2283
- };
2284
- validator.hasNotEmptyRule = true;
2285
- control.required = true;
2286
- control.validator = validator;
2287
- control.updateValueAndValidity();
2288
- };
2289
- this.isFormArrayEmpty = (control) => {
2290
- const validator = () => {
2291
- const value = control;
2292
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
2293
- const arrayValid = notEmptyRule;
2294
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2295
- };
2296
- validator.hasNotEmptyRule = true;
2297
- control.required = true;
2298
- return validator;
2299
- };
2300
- }
2301
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, deps: [{ token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2302
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, providedIn: 'root' }); }
2303
- }
2304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, decorators: [{
2305
- type: Injectable,
2306
- args: [{
2307
- providedIn: 'root',
2308
- }]
2309
- }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
2310
-
2311
2076
  class BaseFormService {
2312
2077
  constructor(translateLabelsService, validatorService, messageService, translocoService) {
2313
2078
  this.translateLabelsService = translateLabelsService;
@@ -2318,14 +2083,14 @@ class BaseFormService {
2318
2083
  if (modelConstructor == null)
2319
2084
  return null;
2320
2085
  if (formGroup == null)
2321
- console.error('FT: You need to instantiate the form group.');
2086
+ console.error('Spiderly: You need to instantiate the form group.');
2322
2087
  this.initFormGroup(formGroup, modelConstructor, updateOnChangeControls);
2323
2088
  parentFormGroup.setControl(propertyNameInSaveBody, formGroup); // FT: Use setControl because it will update formGroup if it already exists
2324
2089
  return formGroup;
2325
2090
  };
2326
2091
  this.initFormGroup = (formGroup, modelConstructor, updateOnChangeControls) => {
2327
2092
  if (formGroup == null)
2328
- console.error('FT: You need to instantiate the form group.');
2093
+ console.error('Spiderly: You need to instantiate the form group.');
2329
2094
  Object.keys(modelConstructor).forEach((formControlName) => {
2330
2095
  let formControl;
2331
2096
  const formControlValue = modelConstructor[formControlName];
@@ -2338,13 +2103,14 @@ class BaseFormService {
2338
2103
  }
2339
2104
  formControl.label = formControlName;
2340
2105
  formControl.labelForDisplay = this.getTranslatedLabel(formControlName);
2106
+ formControl.parentClassName = modelConstructor.typeName;
2341
2107
  formGroup.setControl(formControlName, formControl); // FT: Use setControl because it will update formControl if it already exists
2342
2108
  this.validatorService.setValidator(formControl, modelConstructor.typeName);
2343
2109
  });
2344
2110
  return formGroup;
2345
2111
  };
2346
2112
  //#region Helpers
2347
- // FT: If you want to call single method
2113
+ // If you want to call single method
2348
2114
  this.checkFormGroupValidity = (formGroup) => {
2349
2115
  if (formGroup.invalid) {
2350
2116
  Object.keys(formGroup.controls).forEach(key => {
@@ -2527,7 +2293,7 @@ class RoleBaseDetailsComponent {
2527
2293
  }
2528
2294
  }
2529
2295
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RoleBaseDetailsComponent, deps: [{ token: ApiSecurityService }, { token: i3.ActivatedRoute }, { token: BaseFormService }, { token: AuthBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
2530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: RoleBaseDetailsComponent, isStandalone: true, selector: "role-base-details", inputs: { getCrudMenuForOrderedData: "getCrudMenuForOrderedData", formGroup: "formGroup", roleFormGroup: "roleFormGroup", additionalButtons: "additionalButtons", authorizedForSaveObservable: "authorizedForSaveObservable" }, outputs: { onSave: "onSave", onRoleFormGroupInitFinish: "onRoleFormGroupInitFinish", onIsAuthorizedForSaveChange: "onIsAuthorizedForSaveChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CardSkeletonComponent, selector: "card-skeleton", inputs: ["height"] }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyTextareaComponent, selector: "spiderly-textarea" }, { kind: "component", type: SpiderlyMultiAutocompleteComponent, selector: "spiderly-multiautocomplete" }, { kind: "component", type: SpiderlyMultiSelectComponent, selector: "spiderly-multiselect" }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: SpiderlyReturnButtonComponent, selector: "return-button", inputs: ["navigateUrl"] }] }); }
2296
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: RoleBaseDetailsComponent, isStandalone: true, selector: "role-base-details", inputs: { getCrudMenuForOrderedData: "getCrudMenuForOrderedData", formGroup: "formGroup", roleFormGroup: "roleFormGroup", additionalButtons: "additionalButtons", authorizedForSaveObservable: "authorizedForSaveObservable" }, outputs: { onSave: "onSave", onRoleFormGroupInitFinish: "onRoleFormGroupInitFinish", onIsAuthorizedForSaveChange: "onIsAuthorizedForSaveChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CardSkeletonComponent, selector: "card-skeleton", inputs: ["height"] }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyTextareaComponent, selector: "spiderly-textarea" }, { kind: "component", type: SpiderlyMultiAutocompleteComponent, selector: "spiderly-multiautocomplete" }, { kind: "component", type: SpiderlyMultiSelectComponent, selector: "spiderly-multiselect" }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: SpiderlyReturnButtonComponent, selector: "return-button", inputs: ["navigateUrl"] }] }); }
2531
2297
  }
2532
2298
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RoleBaseDetailsComponent, decorators: [{
2533
2299
  type: Component,
@@ -2535,7 +2301,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
2535
2301
  CommonModule,
2536
2302
  FormsModule,
2537
2303
  ReactiveFormsModule,
2538
- PrimengModule,
2539
2304
  TranslocoDirective,
2540
2305
  CardSkeletonComponent,
2541
2306
  SpiderlyTextboxComponent,
@@ -2605,7 +2370,7 @@ class BaseFormCopy {
2605
2370
  formArray.clear();
2606
2371
  }
2607
2372
  else {
2608
- // FT: This is okay because when we have M2M association with additional fields, we will not give back the list because we are not checking version on the server.
2373
+ // This is okay because when we have M2M association with additional fields, we will not give back the list because we are not checking version on the server.
2609
2374
  // console.error(`You returned empty array for control: ${formArray.translationKey}.`);
2610
2375
  }
2611
2376
  res[key].forEach((model) => {
@@ -2625,7 +2390,7 @@ class BaseFormCopy {
2625
2390
  }
2626
2391
  }
2627
2392
  else {
2628
- // FT: It's okay to do this.
2393
+ // It's okay to do this.
2629
2394
  // console.error('You returned something that is not in the save DTO.');
2630
2395
  }
2631
2396
  });
@@ -2643,7 +2408,6 @@ class BaseFormCopy {
2643
2408
  };
2644
2409
  this.rerouteToSavedObject = (rerouteId) => {
2645
2410
  if (rerouteId == null) {
2646
- // console.error('You do not have rerouteId in your DTO.')
2647
2411
  const currentUrl = this.router.url;
2648
2412
  const parentUrl = getParentUrl(currentUrl);
2649
2413
  this.router.navigateByUrl(parentUrl);
@@ -2833,16 +2597,17 @@ class VerificationWrapperComponent extends BaseFormCopy {
2833
2597
  this.onResendVerificationToken.next(null);
2834
2598
  }
2835
2599
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i1$2.TranslocoService }, { token: BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
2836
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: VerificationWrapperComponent, isStandalone: true, selector: "verification-wrapper", inputs: { email: "email" }, outputs: { onResendVerificationToken: "onResendVerificationToken", onCodeSubmit: "onCodeSubmit" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"header\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('verificationCode', verificationTokenRequestFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i1$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
2600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: VerificationWrapperComponent, isStandalone: true, selector: "verification-wrapper", inputs: { email: "email" }, outputs: { onResendVerificationToken: "onResendVerificationToken", onCodeSubmit: "onCodeSubmit" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"header\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('verificationCode', verificationTokenRequestFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
2837
2601
  }
2838
2602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: VerificationWrapperComponent, decorators: [{
2839
2603
  type: Component,
2840
2604
  args: [{ selector: 'verification-wrapper', imports: [
2841
2605
  CommonModule,
2842
- PrimengModule,
2843
2606
  FormsModule,
2844
2607
  ReactiveFormsModule,
2845
2608
  SpiderlyControlsModule,
2609
+ SpiderlyPanelsModule,
2610
+ ButtonModule,
2846
2611
  TranslocoDirective,
2847
2612
  ], template: "<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"header\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('verificationCode', verificationTokenRequestFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>" }]
2848
2613
  }], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1.HttpClient }, { type: SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i1$2.TranslocoService }, { type: BaseFormService }], propDecorators: { email: [{
@@ -3035,7 +2800,7 @@ class LoginComponent extends BaseFormCopy {
3035
2800
  });
3036
2801
  }
3037
2802
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i1$2.TranslocoService }, { token: BaseFormService }, { token: AuthBaseService }, { token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
3038
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: LoginComponent, isStandalone: true, selector: "app-login", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n @if (loginFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0; margin-bottom: 32px;\">\r\n <spiderly-textbox [control]=\"control('email', loginFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button *ngIf=\"usersCanRegister\" [label]=\"t('NewToJoinNow', {companyName: companyName})\" routerLink=\"/registration\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: AuthComponent, selector: "auth", inputs: ["showGoogleAuth"], outputs: ["onCompanyNameChange"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: LoginVerificationComponent, selector: "login-verification", inputs: ["email", "userId"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
2803
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: LoginComponent, isStandalone: true, selector: "app-login", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n @if (loginFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0; margin-bottom: 32px;\">\r\n <spiderly-textbox [control]=\"control('email', loginFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button *ngIf=\"usersCanRegister\" [label]=\"t('NewToJoinNow', {companyName: companyName})\" routerLink=\"/registration\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: AuthComponent, selector: "auth", inputs: ["showGoogleAuth"], outputs: ["onCompanyNameChange"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: LoginVerificationComponent, selector: "login-verification", inputs: ["email", "userId"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
3039
2804
  }
3040
2805
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LoginComponent, decorators: [{
3041
2806
  type: Component,
@@ -3043,7 +2808,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3043
2808
  CommonModule,
3044
2809
  ReactiveFormsModule,
3045
2810
  AuthComponent,
3046
- PrimengModule,
3047
2811
  SpiderlyControlsModule,
3048
2812
  LoginVerificationComponent,
3049
2813
  TranslocoDirective,
@@ -3221,7 +2985,7 @@ class RegistrationComponent extends BaseFormCopy {
3221
2985
  });
3222
2986
  }
3223
2987
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RegistrationComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.HttpClient }, { token: SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i1$2.TranslocoService }, { token: BaseFormService }, { token: LayoutBaseService }, { token: AuthBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
3224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: RegistrationComponent, isStandalone: true, selector: "app-registration", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n @if (registrationFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\r\n <spiderly-textbox [control]=\"control('email', registrationFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div class=\"mb-4 gap-5\">\r\n <div class=\"text-center\" style=\"font-size: smaller;\">\r\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\r\n </div>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('AgreeAndJoin')\" (onClick)=\"sendRegistrationVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button [label]=\"t('AlreadyHasAccount', {companyName: companyName})\" routerLink=\"/login\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <registration-verification [email]=\"registrationFormGroup.controls.email.getRawValue()\"></registration-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: AuthComponent, selector: "auth", inputs: ["showGoogleAuth"], outputs: ["onCompanyNameChange"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: RegistrationVerificationComponent, selector: "registration-verification", inputs: ["email"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
2988
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: RegistrationComponent, isStandalone: true, selector: "app-registration", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n @if (registrationFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"formGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\r\n <spiderly-textbox [control]=\"control('email', registrationFormGroup)\"></spiderly-textbox>\r\n </div>\r\n \r\n <div class=\"mb-4 gap-5\">\r\n <div class=\"text-center\" style=\"font-size: smaller;\">\r\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\r\n </div>\r\n </div>\r\n \r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('AgreeAndJoin')\" (onClick)=\"sendRegistrationVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n <!-- TODO FT: Add possibility to change this name from the specific project -->\r\n <spiderly-button [label]=\"t('AlreadyHasAccount', {companyName: companyName})\" routerLink=\"/login\" [style]=\"{width: '100%'}\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <registration-verification [email]=\"registrationFormGroup.controls.email.getRawValue()\"></registration-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: AuthComponent, selector: "auth", inputs: ["showGoogleAuth"], outputs: ["onCompanyNameChange"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: RegistrationVerificationComponent, selector: "registration-verification", inputs: ["email"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
3225
2989
  }
3226
2990
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RegistrationComponent, decorators: [{
3227
2991
  type: Component,
@@ -3229,7 +2993,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3229
2993
  CommonModule,
3230
2994
  ReactiveFormsModule,
3231
2995
  AuthComponent,
3232
- PrimengModule,
3233
2996
  SpiderlyControlsModule,
3234
2997
  RegistrationVerificationComponent,
3235
2998
  TranslocoDirective,
@@ -3267,13 +3030,12 @@ class IndexCardComponent {
3267
3030
  this.onRemoveIconClick.next(null);
3268
3031
  }
3269
3032
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: IndexCardComponent, deps: [{ token: i3$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
3270
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: IndexCardComponent, isStandalone: true, selector: "index-card", inputs: { last: "last", index: "index", header: "header", description: "description", showRemoveIcon: "showRemoveIcon", showCrudMenu: "showCrudMenu", crudMenu: "crudMenu" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, ngImport: i0, template: "<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }] }); }
3033
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: IndexCardComponent, isStandalone: true, selector: "index-card", inputs: { last: "last", index: "index", header: "header", description: "description", showRemoveIcon: "showRemoveIcon", showCrudMenu: "showCrudMenu", crudMenu: "crudMenu" }, outputs: { onMenuIconClick: "onMenuIconClick", onRemoveIconClick: "onRemoveIconClick" }, ngImport: i0, template: "<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }] }); }
3271
3034
  }
3272
3035
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: IndexCardComponent, decorators: [{
3273
3036
  type: Component,
3274
3037
  args: [{ selector: 'index-card', imports: [
3275
3038
  CommonModule,
3276
- PrimengModule,
3277
3039
  SpiderlyPanelsModule
3278
3040
  ], template: "<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n" }]
3279
3041
  }], ctorParameters: () => [{ type: i3$2.FormBuilder }], propDecorators: { last: [{
@@ -3304,13 +3066,12 @@ class InfoCardComponent {
3304
3066
  ngOnInit() {
3305
3067
  }
3306
3068
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: InfoCardComponent, deps: [{ token: i3$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
3307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: InfoCardComponent, isStandalone: true, selector: "info-card", inputs: { header: "header", description: "description" }, ngImport: i0, template: "<div class=\"card responsive-card-padding\" style=\"background-color: var(--p-primary-100); position: relative; overflow: hidden;\">\r\n <!-- TODO FT: Translate -->\r\n <div style=\"display: flex; align-items: center; gap: 21px; position: relative; z-index: 2;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 26px; color: var(--p-primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--p-primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"text-align: left; margin-top: 8px;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-overflow-icon\" style=\"position: absolute; overflow: hidden; right: 8px; top: -25px; z-index: 1;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 270px;\"></i>\r\n </div>\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "ngmodule", type: SpiderlyPanelsModule }] }); }
3069
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: InfoCardComponent, isStandalone: true, selector: "info-card", inputs: { header: "header", description: "description" }, ngImport: i0, template: "<div class=\"card responsive-card-padding\" style=\"background-color: var(--p-primary-100); position: relative; overflow: hidden;\">\r\n <!-- TODO FT: Translate -->\r\n <div style=\"display: flex; align-items: center; gap: 21px; position: relative; z-index: 2;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 26px; color: var(--p-primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--p-primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"text-align: left; margin-top: 8px;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-overflow-icon\" style=\"position: absolute; overflow: hidden; right: 8px; top: -25px; z-index: 1;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 270px;\"></i>\r\n </div>\r\n </div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SpiderlyPanelsModule }] }); }
3308
3070
  }
3309
3071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: InfoCardComponent, decorators: [{
3310
3072
  type: Component,
3311
3073
  args: [{ selector: 'info-card', imports: [
3312
3074
  CommonModule,
3313
- PrimengModule,
3314
3075
  SpiderlyPanelsModule
3315
3076
  ], template: "<div class=\"card responsive-card-padding\" style=\"background-color: var(--p-primary-100); position: relative; overflow: hidden;\">\r\n <!-- TODO FT: Translate -->\r\n <div style=\"display: flex; align-items: center; gap: 21px; position: relative; z-index: 2;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 26px; color: var(--p-primary-color);\"></i>\r\n <div>\r\n <div class=\"header\" style=\"color:var(--p-primary-color); font-weight: 600; text-align: left;\">\r\n {{header}}\r\n </div>\r\n <div style=\"text-align: left; margin-top: 8px;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-overflow-icon\" style=\"position: absolute; overflow: hidden; right: 8px; top: -25px; z-index: 1;\">\r\n <i class=\"pi pi-info-circle\" style=\"font-size: 270px;\"></i>\r\n </div>\r\n </div>" }]
3316
3077
  }], ctorParameters: () => [{ type: i3$2.FormBuilder }], propDecorators: { header: [{
@@ -3323,16 +3084,17 @@ class NotFoundComponent {
3323
3084
  constructor(config) {
3324
3085
  this.config = config;
3325
3086
  this.companyName = this.config.companyName;
3087
+ this.logoPath = this.config.logoPath;
3326
3088
  }
3327
3089
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, deps: [{ token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
3328
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: NotFoundComponent, isStandalone: true, selector: "not-found", ngImport: i0, template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\">\r\n <img \r\n src=\"assets/images/logo/logo.svg\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-2 w-6rem flex-shrink-0\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
3090
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: NotFoundComponent, isStandalone: true, selector: "not-found", ngImport: i0, template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\">\r\n <img \r\n [src]=\"logoPath\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-4\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }] }); }
3329
3091
  }
3330
3092
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, decorators: [{
3331
3093
  type: Component,
3332
3094
  args: [{ selector: 'not-found', imports: [
3333
3095
  RouterModule,
3334
3096
  ButtonModule,
3335
- ], template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\">\r\n <img \r\n src=\"assets/images/logo/logo.svg\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-2 w-6rem flex-shrink-0\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
3097
+ ], template: "<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\">\r\n <img \r\n [src]=\"logoPath\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-4\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
3336
3098
  }], ctorParameters: () => [{ type: ConfigBaseService }] });
3337
3099
 
3338
3100
  class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {
@@ -3371,19 +3133,29 @@ class SpiderlyDeleteConfirmationComponent {
3371
3133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDeleteConfirmationComponent, deps: [{ token: i1$6.DynamicDialogRef }, { token: i1$6.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component }); }
3372
3134
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDeleteConfirmationComponent, isStandalone: true, selector: "spiderly-delete-confirmation", providers: [
3373
3135
  ConfirmationService
3374
- ], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 5px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancle')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "ngmodule", type: PrimengModule }, { kind: "component", type: i2$1.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
3136
+ ], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 5px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancle')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i2$2.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }] }); }
3375
3137
  }
3376
3138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDeleteConfirmationComponent, decorators: [{
3377
3139
  type: Component,
3378
3140
  args: [{ selector: 'spiderly-delete-confirmation', imports: [
3379
- PrimengModule,
3380
3141
  SpiderlyButtonComponent,
3381
3142
  TranslocoDirective,
3143
+ ConfirmDialogModule,
3382
3144
  ], providers: [
3383
3145
  ConfirmationService
3384
3146
  ], template: "<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 5px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancle')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n" }]
3385
3147
  }], ctorParameters: () => [{ type: i1$6.DynamicDialogRef }, { type: i1$6.DynamicDialogConfig }] });
3386
3148
 
3149
+ var MatchModeCodes;
3150
+ (function (MatchModeCodes) {
3151
+ MatchModeCodes[MatchModeCodes["StartsWith"] = 0] = "StartsWith";
3152
+ MatchModeCodes[MatchModeCodes["Contains"] = 1] = "Contains";
3153
+ MatchModeCodes[MatchModeCodes["Equals"] = 2] = "Equals";
3154
+ MatchModeCodes[MatchModeCodes["LessThan"] = 3] = "LessThan";
3155
+ MatchModeCodes[MatchModeCodes["GreaterThan"] = 4] = "GreaterThan";
3156
+ MatchModeCodes[MatchModeCodes["In"] = 5] = "In";
3157
+ })(MatchModeCodes || (MatchModeCodes = {}));
3158
+
3387
3159
  class SpiderlyDataTableComponent {
3388
3160
  constructor(router, dialogService, route, messageService, translocoService, locale) {
3389
3161
  this.router = router;
@@ -3394,19 +3166,19 @@ class SpiderlyDataTableComponent {
3394
3166
  this.locale = locale;
3395
3167
  this.tableIcon = 'pi pi-list';
3396
3168
  this.rows = 10;
3397
- this.showPaginator = true; // FT: Pass only when hasLazyLoad === false
3398
- this.showCardWrapper = true;
3169
+ this.showPaginator = true; // Pass only when hasLazyLoad === false
3170
+ this.showCardWrapper = false;
3399
3171
  this.readonly = false;
3400
3172
  this.onTotalRecordsChange = new EventEmitter();
3401
3173
  this.loading = true;
3402
3174
  this.newlySelectedItems = [];
3403
- this.fakeSelectedItems = []; // FT: Only for showing checkboxes, we will not send this to the backend
3404
- this.currentPageSelectedItemsFromDb = []; // FT: Made so we can add only newly selected items to the newlySelectedItems
3175
+ this.fakeSelectedItems = []; // Only for showing checkboxes, we will not send this to the backend
3176
+ this.currentPageSelectedItemsFromDb = []; // Made so we can add only newly selected items to the newlySelectedItems
3405
3177
  this.unselectedItems = [];
3406
3178
  this.onLazyLoad = new EventEmitter();
3407
3179
  this.rowsSelectedNumber = 0;
3408
3180
  this.isAllSelected = null;
3409
- this.fakeIsAllSelected = false; // FT: Only for showing checkboxes, we will not send this to the backend
3181
+ this.fakeIsAllSelected = false; // Only for showing checkboxes, we will not send this to the backend
3410
3182
  this.isFirstTimeLazyLoad = true;
3411
3183
  this.onIsAllSelectedChange = new EventEmitter();
3412
3184
  this.matchModeDateOptions = [];
@@ -3415,22 +3187,22 @@ class SpiderlyDataTableComponent {
3415
3187
  this.showExportToExcelButton = true;
3416
3188
  this.showReloadTableButton = false;
3417
3189
  this.hasLazyLoad = true;
3418
- this.selectedItemIds = []; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields
3419
- this.selectedItems = []; // FT: Pass only when hasLazyLoad === false
3190
+ this.selectedItemIds = []; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields
3191
+ this.selectedItems = []; // Pass only when hasLazyLoad === false
3420
3192
  this.onRowSelect = new EventEmitter();
3421
3193
  this.onRowUnselect = new EventEmitter();
3422
3194
  this.clientFilterCount = 0;
3423
3195
  }
3424
3196
  ngOnInit() {
3425
3197
  this.matchModeDateOptions = [
3426
- { label: this.translocoService.translate('OnDate'), value: 'equals' },
3427
- { label: this.translocoService.translate('DatesBefore'), value: 'dateBefore' },
3428
- { label: this.translocoService.translate('DatesAfter'), value: 'dateAfter' },
3198
+ { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },
3199
+ { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },
3200
+ { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },
3429
3201
  ];
3430
3202
  this.matchModeNumberOptions = [
3431
- { label: this.translocoService.translate('Equals'), value: 'equals' },
3432
- { label: this.translocoService.translate('MoreThan'), value: 'gte' },
3433
- { label: this.translocoService.translate('LessThan'), value: 'lte' },
3203
+ { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },
3204
+ { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },
3205
+ { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },
3434
3206
  ];
3435
3207
  if (this.hasLazyLoad === false) {
3436
3208
  this.clientLoad();
@@ -3457,10 +3229,10 @@ class SpiderlyDataTableComponent {
3457
3229
  if (this.isAllSelected == true) {
3458
3230
  let idsToInsert = [...this.items.map(x => x.id)];
3459
3231
  idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);
3460
- this.fakeSelectedItems = [...idsToInsert]; // FT: Only for showing checkboxes, we will not send this to the backend
3232
+ this.fakeSelectedItems = [...idsToInsert]; // Only for showing checkboxes, we will not send this to the backend
3461
3233
  }
3462
3234
  else if (this.isAllSelected == false) {
3463
- this.fakeSelectedItems = [...this.newlySelectedItems]; // FT: Only for showing checkboxes, we will not send this to the backend
3235
+ this.fakeSelectedItems = [...this.newlySelectedItems]; // Only for showing checkboxes, we will not send this to the backend
3464
3236
  }
3465
3237
  else if (this.isAllSelected == null) {
3466
3238
  let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];
@@ -3491,7 +3263,7 @@ class SpiderlyDataTableComponent {
3491
3263
  }
3492
3264
  filter(event) {
3493
3265
  if (this.hasLazyLoad && this.selectionMode === 'multiple')
3494
- this.selectAll(false); // FT: We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true
3266
+ this.selectAll(false); // We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true
3495
3267
  if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {
3496
3268
  if (this.clientFilterCount === 0) {
3497
3269
  this.loadFormArrayItems();
@@ -3543,15 +3315,15 @@ class SpiderlyDataTableComponent {
3543
3315
  getColMatchMode(filterType) {
3544
3316
  switch (filterType) {
3545
3317
  case 'text':
3546
- return 'contains';
3318
+ return MatchModeCodes.Contains;
3547
3319
  case 'date':
3548
- return null;
3320
+ return MatchModeCodes.Equals;
3549
3321
  case 'multiselect':
3550
- return 'in';
3322
+ return MatchModeCodes.In;
3551
3323
  case 'boolean':
3552
- return 'equals';
3324
+ return MatchModeCodes.Equals;
3553
3325
  case 'numeric':
3554
- return null;
3326
+ return MatchModeCodes.Equals;
3555
3327
  default:
3556
3328
  return null;
3557
3329
  }
@@ -3632,7 +3404,7 @@ class SpiderlyDataTableComponent {
3632
3404
  case 'boolean':
3633
3405
  return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');
3634
3406
  case 'numeric':
3635
- // TODO FT: make decimal pipe
3407
+ // TODO make decimal pipe
3636
3408
  return rowData[col.field];
3637
3409
  default:
3638
3410
  return null;
@@ -3710,7 +3482,7 @@ class SpiderlyDataTableComponent {
3710
3482
  this.rowsSelectedNumber++;
3711
3483
  const index = this.unselectedItems.indexOf(id);
3712
3484
  if (index !== -1) {
3713
- this.unselectedItems.splice(index, 1); // FT: Splice is mutating the array
3485
+ this.unselectedItems.splice(index, 1); // Splice is mutating the array
3714
3486
  }
3715
3487
  this.setFakeIsAllSelected();
3716
3488
  }
@@ -3723,19 +3495,19 @@ class SpiderlyDataTableComponent {
3723
3495
  const fakeIndex = this.fakeSelectedItems.indexOf(id);
3724
3496
  const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);
3725
3497
  if (index !== -1) {
3726
- this.newlySelectedItems.splice(index, 1); // FT: Splice is mutating the array
3498
+ this.newlySelectedItems.splice(index, 1); // Splice is mutating the array
3727
3499
  }
3728
3500
  if (fakeIndex !== -1) {
3729
- this.fakeSelectedItems.splice(fakeIndex, 1); // FT: Splice is mutating the array
3501
+ this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array
3730
3502
  }
3731
3503
  if (nonLazyLoadIndex !== -1) {
3732
- this.selectedItemIds.splice(nonLazyLoadIndex, 1); // FT: Splice is mutating the array
3504
+ this.selectedItemIds.splice(nonLazyLoadIndex, 1); // Splice is mutating the array
3733
3505
  }
3734
3506
  this.setFakeIsAllSelected();
3735
3507
  }
3736
3508
  //#endregion
3737
3509
  //#region Client side table
3738
- // FT: Can do it with Id also, because we are never adding the new record in the table at the same page.
3510
+ // Can do it with Id also, because we are never adding the new record in the table at the same page.
3739
3511
  getFormArrayControlByIndex(formControlName, index) {
3740
3512
  if (this.getFormControl) {
3741
3513
  return this.getFormControl(formControlName, index, this.additionalIndexes);
@@ -3745,17 +3517,21 @@ class SpiderlyDataTableComponent {
3745
3517
  }
3746
3518
  }
3747
3519
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataTableComponent, deps: [{ token: i3.Router }, { token: i1$6.DialogService }, { token: i3.ActivatedRoute }, { token: SpiderlyMessageService }, { token: i1$2.TranslocoService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
3748
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDataTableComponent, isStandalone: true, selector: "spiderly-data-table", inputs: { tableTitle: "tableTitle", tableIcon: "tableIcon", items: "items", rows: "rows", cols: "cols", showPaginator: "showPaginator", showCardWrapper: "showCardWrapper", readonly: "readonly", getTableDataObservableMethod: "getTableDataObservableMethod", exportTableDataToExcelObservableMethod: "exportTableDataToExcelObservableMethod", deleteItemFromTableObservableMethod: "deleteItemFromTableObservableMethod", newlySelectedItems: "newlySelectedItems", unselectedItems: "unselectedItems", selectionMode: "selectionMode", selectedLazyLoadObservableMethod: "selectedLazyLoadObservableMethod", additionalFilterIdLong: "additionalFilterIdLong", showAddButton: "showAddButton", showExportToExcelButton: "showExportToExcelButton", showReloadTableButton: "showReloadTableButton", getFormArrayItems: "getFormArrayItems", hasLazyLoad: "hasLazyLoad", getAlreadySelectedItemIds: "getAlreadySelectedItemIds", getAlreadySelectedItems: "getAlreadySelectedItems", getFormControl: "getFormControl", additionalIndexes: "additionalIndexes" }, outputs: { onTotalRecordsChange: "onTotalRecordsChange", onLazyLoad: "onLazyLoad", onIsAllSelectedChange: "onIsAllSelectedChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <!-- <p-sortIcon field=\"\"></p-sortIcon> -->\r\n <!-- <p-columnFilter type=\"date\" field=\"date\" display=\"menu\"></p-columnFilter> -->\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n", ":is() .remove-button-border-focus:focus,:is() .remove-button-border-focus:enabled:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;background-color:var(--gray-200)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "component", type: i7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i1$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "component", type: i4$4.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: SpiderlyNumberComponent, selector: "spiderly-number", inputs: ["prefix", "showButtons", "decimal", "maxFractionDigits"] }] }); }
3520
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyDataTableComponent, isStandalone: true, selector: "spiderly-data-table", inputs: { tableTitle: "tableTitle", tableIcon: "tableIcon", items: "items", rows: "rows", cols: "cols", showPaginator: "showPaginator", showCardWrapper: "showCardWrapper", readonly: "readonly", getTableDataObservableMethod: "getTableDataObservableMethod", exportTableDataToExcelObservableMethod: "exportTableDataToExcelObservableMethod", deleteItemFromTableObservableMethod: "deleteItemFromTableObservableMethod", newlySelectedItems: "newlySelectedItems", unselectedItems: "unselectedItems", selectionMode: "selectionMode", selectedLazyLoadObservableMethod: "selectedLazyLoadObservableMethod", additionalFilterIdLong: "additionalFilterIdLong", showAddButton: "showAddButton", showExportToExcelButton: "showExportToExcelButton", showReloadTableButton: "showReloadTableButton", getFormArrayItems: "getFormArrayItems", hasLazyLoad: "hasLazyLoad", getAlreadySelectedItemIds: "getAlreadySelectedItemIds", getAlreadySelectedItems: "getAlreadySelectedItems", getFormControl: "getFormControl", additionalIndexes: "additionalIndexes" }, outputs: { onTotalRecordsChange: "onTotalRecordsChange", onLazyLoad: "onLazyLoad", onIsAllSelectedChange: "onIsAllSelectedChange", onRowSelect: "onRowSelect", onRowUnselect: "onRowUnselect" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: SpiderlyNumberComponent, selector: "spiderly-number", inputs: ["prefix", "showButtons", "decimal", "maxFractionDigits"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i4$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
3749
3521
  }
3750
3522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataTableComponent, decorators: [{
3751
3523
  type: Component,
3752
3524
  args: [{ selector: 'spiderly-data-table', imports: [
3753
3525
  FormsModule,
3754
3526
  CommonModule,
3755
- PrimengModule,
3756
3527
  TranslocoDirective,
3757
3528
  SpiderlyControlsModule,
3758
- ], template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined remove-button-border-focus\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <!-- <p-sortIcon field=\"\"></p-sortIcon> -->\r\n <!-- <p-columnFilter type=\"date\" field=\"date\" display=\"menu\"></p-columnFilter> -->\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n", ":is() .remove-button-border-focus:focus,:is() .remove-button-border-focus:enabled:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none;background-color:var(--gray-200)}\n"] }]
3529
+ TableModule,
3530
+ ButtonModule,
3531
+ MultiSelectModule,
3532
+ CheckboxModule,
3533
+ TooltipModule,
3534
+ ], template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}} text-2xl primary-color\"></i>\r\n <h5 style=\"margin: 0px;\">{{tableTitle}}</h5>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <p-columnFilter *ngIf=\"col.filterType != null\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-container *ngIf=\"isDropOrMulti(col.filterType)\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData.id, rowData.index)\" [ngModel]=\"isRowSelected(rowData.id)\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [pTooltip]=\"getRowData(rowData, col)\" [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n {{getRowData(rowData, col)}}\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: [".table-header{display:flex;justify-content:space-between;align-items:center}@media (max-width: 640px){.table-header{display:flex;flex-direction:column;align-items:start;gap:14px}}.spiderly-table .p-paginator{padding:1rem}@media (min-width: 1400px){.spiderly-table .p-paginator-left-content{position:absolute;padding:14px;left:0}}@media (min-width: 1400px){.spiderly-table .p-paginator-right-content{position:absolute;padding:14px;right:0}}:host ::ng-deep .p-datatable-thead{position:unset!important}:host ::ng-deep .p-datatable-header{border-radius:6px 6px 0 0}:host ::ng-deep .p-datatable{border-radius:var(--p-content-border-radius);border:1px solid var(--p-datatable-border-color)}\n"] }]
3759
3535
  }], ctorParameters: () => [{ type: i3.Router }, { type: i1$6.DialogService }, { type: i3.ActivatedRoute }, { type: SpiderlyMessageService }, { type: i1$2.TranslocoService }, { type: undefined, decorators: [{
3760
3536
  type: Inject,
3761
3537
  args: [LOCALE_ID]
@@ -3861,6 +3637,158 @@ class AllClickEvent {
3861
3637
  }
3862
3638
  }
3863
3639
 
3640
+ class SpiderlyDataViewComponent {
3641
+ constructor(router, route, translocoService, locale) {
3642
+ this.router = router;
3643
+ this.route = route;
3644
+ this.translocoService = translocoService;
3645
+ this.locale = locale;
3646
+ this.rows = 10;
3647
+ this.filters = [];
3648
+ this.showCardWrapper = true;
3649
+ this.onLazyLoad = new EventEmitter();
3650
+ this.loading = true;
3651
+ this.matchModeDateOptions = [];
3652
+ this.matchModeNumberOptions = [];
3653
+ this.applyFilters = () => {
3654
+ this.table._filter();
3655
+ };
3656
+ }
3657
+ ngOnInit() {
3658
+ this.matchModeDateOptions = [
3659
+ { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },
3660
+ { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },
3661
+ { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },
3662
+ ];
3663
+ this.matchModeNumberOptions = [
3664
+ { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },
3665
+ { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },
3666
+ { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },
3667
+ ];
3668
+ }
3669
+ lazyLoad(event) {
3670
+ this.lastLazyLoadEvent = event;
3671
+ const transformedFilter = {};
3672
+ for (const key in event.filters) {
3673
+ const filterMeta = event.filters[key];
3674
+ if (Array.isArray(filterMeta)) {
3675
+ transformedFilter[key] = filterMeta;
3676
+ }
3677
+ else {
3678
+ transformedFilter[key] = [{
3679
+ value: filterMeta.value,
3680
+ matchMode: filterMeta.matchMode
3681
+ }];
3682
+ }
3683
+ }
3684
+ let tableFilter = event;
3685
+ tableFilter.filters = transformedFilter;
3686
+ this.onLazyLoad.next(tableFilter);
3687
+ this.getTableDataObservableMethod(tableFilter).subscribe({
3688
+ next: async (res) => {
3689
+ this.items = res.data;
3690
+ this.totalRecords = res.totalRecords;
3691
+ this.loading = false;
3692
+ },
3693
+ error: () => {
3694
+ this.loading = false;
3695
+ },
3696
+ });
3697
+ }
3698
+ filter(event) {
3699
+ }
3700
+ getDefaultMatchMode(filterType) {
3701
+ switch (filterType) {
3702
+ case 'text':
3703
+ return MatchModeCodes.Contains;
3704
+ case 'date':
3705
+ return MatchModeCodes.Equals;
3706
+ case 'multiselect':
3707
+ return MatchModeCodes.In;
3708
+ case 'boolean':
3709
+ return MatchModeCodes.Equals;
3710
+ case 'numeric':
3711
+ return MatchModeCodes.Equals;
3712
+ default:
3713
+ return null;
3714
+ }
3715
+ }
3716
+ getMatchModeOptions(filterType) {
3717
+ switch (filterType) {
3718
+ case 'text':
3719
+ return [];
3720
+ case 'date':
3721
+ return this.matchModeDateOptions;
3722
+ case 'multiselect':
3723
+ return [];
3724
+ case 'boolean':
3725
+ return [];
3726
+ case 'numeric':
3727
+ return this.matchModeNumberOptions;
3728
+ default:
3729
+ return [];
3730
+ }
3731
+ }
3732
+ navigateToDetails(rowId) {
3733
+ this.router.navigate([rowId], { relativeTo: this.route });
3734
+ }
3735
+ reload() {
3736
+ this.loading = true;
3737
+ this.items = null;
3738
+ this.lazyLoad(this.lastLazyLoadEvent);
3739
+ }
3740
+ colTrackByFn(index, item) {
3741
+ return item.field;
3742
+ }
3743
+ actionTrackByFn(index, item) {
3744
+ return `${index}${item.field}`;
3745
+ }
3746
+ clearFilters() {
3747
+ this.table.clear();
3748
+ }
3749
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataViewComponent, deps: [{ token: i3.Router }, { token: i3.ActivatedRoute }, { token: i1$2.TranslocoService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
3750
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.13", type: SpiderlyDataViewComponent, isStandalone: true, selector: "spiderly-data-view", inputs: { items: "items", rows: "rows", filters: "filters", showCardWrapper: "showCardWrapper", getTableDataObservableMethod: "getTableDataObservableMethod" }, outputs: { onLazyLoad: "onLazyLoad" }, queries: [{ propertyName: "cardBody", first: true, predicate: ["cardBody"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "table", first: true, predicate: ["dt"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"true\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.name}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.filterType != null\" [type]=\"filter.filterType\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.filterType)\" [matchModeOptions]=\"getMatchModeOptions(filter.filterType)\" \r\n >\r\n <!-- Multiselect -->\r\n <ng-container *ngIf=\"filter.filterType == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" icon=\"pi pi-search\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" icon=\"pi pi-filter-slash\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr class=\"card\" style=\"padding: 0; margin-bottom: 0;\">\r\n <td (click)=\"navigateToDetails(rowData.id)\" style=\"display: block; border: 0; cursor: pointer;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: ["::ng-deep .p-datatable-tbody{display:flex;flex-direction:column;gap:18px}::ng-deep .p-datatable-header{margin-bottom:36px;border:0!important;padding:0!important;background-color:transparent!important}::ng-deep .p-fluid{width:100%!important}::ng-deep .p-inputtext{width:100%!important}::ng-deep .p-inputnumber{width:100%!important}::ng-deep .p-datepicker{width:100%!important}.data-view-grid{display:grid;gap:18px;grid-template-columns:1fr 1fr 1fr;margin-bottom:18px}@media (max-width: 1080px){.data-view-grid{gap:12px;grid-template-columns:1fr 1fr}}@media (max-width: 500px){.data-view-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "virtualRowHeight", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$5.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: InputNumberModule }, { kind: "ngmodule", type: SelectModule }] }); }
3751
+ }
3752
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataViewComponent, decorators: [{
3753
+ type: Component,
3754
+ args: [{ selector: 'spiderly-data-view', imports: [
3755
+ FormsModule,
3756
+ CommonModule,
3757
+ TranslocoDirective,
3758
+ SpiderlyControlsModule,
3759
+ TableModule,
3760
+ ButtonModule,
3761
+ MultiSelectModule,
3762
+ CheckboxModule,
3763
+ TooltipModule,
3764
+ DatePickerModule,
3765
+ InputTextModule,
3766
+ InputNumberModule,
3767
+ SelectModule,
3768
+ ], template: "<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"true\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.name}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.filterType != null\" [type]=\"filter.filterType\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.filterType)\" [matchModeOptions]=\"getMatchModeOptions(filter.filterType)\" \r\n >\r\n <!-- Multiselect -->\r\n <ng-container *ngIf=\"filter.filterType == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" icon=\"pi pi-search\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" icon=\"pi pi-filter-slash\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr class=\"card\" style=\"padding: 0; margin-bottom: 0;\">\r\n <td (click)=\"navigateToDetails(rowData.id)\" style=\"display: block; border: 0; cursor: pointer;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>", styles: ["::ng-deep .p-datatable-tbody{display:flex;flex-direction:column;gap:18px}::ng-deep .p-datatable-header{margin-bottom:36px;border:0!important;padding:0!important;background-color:transparent!important}::ng-deep .p-fluid{width:100%!important}::ng-deep .p-inputtext{width:100%!important}::ng-deep .p-inputnumber{width:100%!important}::ng-deep .p-datepicker{width:100%!important}.data-view-grid{display:grid;gap:18px;grid-template-columns:1fr 1fr 1fr;margin-bottom:18px}@media (max-width: 1080px){.data-view-grid{gap:12px;grid-template-columns:1fr 1fr}}@media (max-width: 500px){.data-view-grid{grid-template-columns:1fr}}\n"] }]
3769
+ }], ctorParameters: () => [{ type: i3.Router }, { type: i3.ActivatedRoute }, { type: i1$2.TranslocoService }, { type: undefined, decorators: [{
3770
+ type: Inject,
3771
+ args: [LOCALE_ID]
3772
+ }] }], propDecorators: { table: [{
3773
+ type: ViewChild,
3774
+ args: ['dt']
3775
+ }], items: [{
3776
+ type: Input
3777
+ }], rows: [{
3778
+ type: Input
3779
+ }], filters: [{
3780
+ type: Input
3781
+ }], showCardWrapper: [{
3782
+ type: Input
3783
+ }], onLazyLoad: [{
3784
+ type: Output
3785
+ }], getTableDataObservableMethod: [{
3786
+ type: Input
3787
+ }], cardBody: [{
3788
+ type: ContentChild,
3789
+ args: ['cardBody', { read: TemplateRef }]
3790
+ }] } });
3791
+
3864
3792
  class SidebarMenuService {
3865
3793
  constructor() {
3866
3794
  this.menuSource = new Subject();
@@ -3961,7 +3889,7 @@ class MenuitemComponent {
3961
3889
  get activeClass() {
3962
3890
  return this.active && !this.root;
3963
3891
  }
3964
- //#region FT HACK: Partner
3892
+ //#region HACK: Partner
3965
3893
  searchPartners(event) {
3966
3894
  this.layoutService.searchPartners(event).subscribe(po => {
3967
3895
  this.partnerOptions = po;
@@ -3980,7 +3908,7 @@ class MenuitemComponent {
3980
3908
  }
3981
3909
  }
3982
3910
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: MenuitemComponent, deps: [{ token: LayoutBaseService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: SidebarMenuService }, { token: AuthBaseService }, { token: ApiSecurityService }, { token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
3983
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: MenuitemComponent, isStandalone: true, selector: "[menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>", dependencies: [{ kind: "component", type: MenuitemComponent, selector: "[menuitem]", inputs: ["item", "index", "root", "parentKey"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i8.Ripple, selector: "[pRipple]" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyAutocompleteComponent, selector: "spiderly-autocomplete", inputs: ["appendTo", "showClear", "emptyMessage", "displayName"] }], animations: [
3911
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: MenuitemComponent, isStandalone: true, selector: "[menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>", dependencies: [{ kind: "component", type: MenuitemComponent, selector: "[menuitem]", inputs: ["item", "index", "root", "parentKey"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SpiderlyControlsModule }, { kind: "component", type: SpiderlyAutocompleteComponent, selector: "spiderly-autocomplete", inputs: ["appendTo", "showClear", "emptyMessage", "displayName"] }], animations: [
3984
3912
  trigger('children', [
3985
3913
  state('collapsed', style({
3986
3914
  height: '0'
@@ -4007,7 +3935,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
4007
3935
  ], imports: [
4008
3936
  CommonModule,
4009
3937
  RouterModule,
4010
- PrimengModule,
4011
3938
  TranslocoDirective,
4012
3939
  SpiderlyControlsModule,
4013
3940
  ], template: "<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>" }]
@@ -4069,14 +3996,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
4069
3996
  type: Input
4070
3997
  }] } });
4071
3998
 
4072
- class AppTopBarComponent {
4073
- constructor(layoutService, authService, apiService, router, translocoService, config) {
3999
+ class ProfileAvatarComponent {
4000
+ constructor(layoutService, authService, router, translocoService, config) {
4074
4001
  this.layoutService = layoutService;
4075
4002
  this.authService = authService;
4076
- this.apiService = apiService;
4077
4003
  this.router = router;
4078
4004
  this.translocoService = translocoService;
4079
4005
  this.config = config;
4006
+ this.isSideMenuLayout = true;
4080
4007
  this.initTopBarSubscription = null;
4081
4008
  this.menuItems = [];
4082
4009
  this.showProfileIcon = false;
@@ -4091,7 +4018,6 @@ class AppTopBarComponent {
4091
4018
  this.onAfterNgOnInit = () => {
4092
4019
  this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {
4093
4020
  this.userProfilePath = initTopBarData.userProfilePath;
4094
- this.companyName = initTopBarData.companyName;
4095
4021
  this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;
4096
4022
  this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;
4097
4023
  this.showProfileIcon = initTopBarData.showProfileIcon;
@@ -4111,13 +4037,6 @@ class AppTopBarComponent {
4111
4037
  }
4112
4038
  },
4113
4039
  this.notificationMenuItem,
4114
- // {
4115
- // label: this.translocoService.translate('Settings'),
4116
- // icon: 'pi-cog',
4117
- // onClick: () => {
4118
- // this.router.navigateByUrl(`/administration/users`);
4119
- // }
4120
- // },
4121
4040
  {
4122
4041
  label: this.translocoService.translate('Logout'),
4123
4042
  icon: 'pi-sign-out',
@@ -4149,19 +4068,21 @@ class AppTopBarComponent {
4149
4068
  this.initTopBarSubscription.unsubscribe();
4150
4069
  }
4151
4070
  }
4152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AppTopBarComponent, deps: [{ token: LayoutBaseService }, { token: AuthBaseService }, { token: ApiSecurityService }, { token: i3.Router }, { token: i1$2.TranslocoService }, { token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
4153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: AppTopBarComponent, isStandalone: true, selector: "topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "menu", first: true, predicate: ["topbarmenu"], descendants: true }, { propertyName: "topbarProfileDropdownMenuButton", first: true, predicate: ["topbarprofiledropdownmenubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div\r\n #topbarmenu\r\n class=\"profile-button\"\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" style=\"width: 280px; position: absolute; right: 26px; top: 60px; padding: 15px;\" class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'margin': 'auto' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div>{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type: i8$1.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: i9.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
4071
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ProfileAvatarComponent, deps: [{ token: LayoutBaseService }, { token: AuthBaseService }, { token: i3.Router }, { token: i1$2.TranslocoService }, { token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
4072
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: ProfileAvatarComponent, isStandalone: true, selector: "spiderly-profile-avatar", inputs: { isSideMenuLayout: "isSideMenuLayout" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["topbarmenu"], descendants: true }, { propertyName: "topbarProfileDropdownMenuButton", first: true, predicate: ["topbarprofiledropdownmenubutton"], descendants: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"this.currentUser != null\"\r\n #topbarmenu\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div \r\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \r\n [ngStyle]=\"{'right': isSideMenuLayout ? '26px' : '0', 'top': isSideMenuLayout ? '60px' : '40px'}\" \r\n style=\"width: 280px; position: absolute; padding: 15px;\" \r\n class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'margin': 'auto' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"this.currentUser == null\">\r\n <spiderly-button [label]=\"t('Login')\" icon=\"pi pi-sign-in\" [routerLink]=\"this.config.loginSlug\"></spiderly-button>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i7.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
4154
4073
  }
4155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AppTopBarComponent, decorators: [{
4074
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ProfileAvatarComponent, decorators: [{
4156
4075
  type: Component,
4157
- args: [{ selector: 'topbar', imports: [
4076
+ args: [{ selector: 'spiderly-profile-avatar', imports: [
4158
4077
  CommonModule,
4159
- PrimengModule,
4160
- RouterModule
4161
- ], template: "<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div\r\n #topbarmenu\r\n class=\"profile-button\"\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" style=\"width: 280px; position: absolute; right: 26px; top: 60px; padding: 15px;\" class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'margin': 'auto' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div>{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n " }]
4162
- }], ctorParameters: () => [{ type: LayoutBaseService }, { type: AuthBaseService }, { type: ApiSecurityService }, { type: i3.Router }, { type: i1$2.TranslocoService }, { type: ConfigBaseService }], propDecorators: { menuButton: [{
4163
- type: ViewChild,
4164
- args: ['menubutton']
4078
+ RouterModule,
4079
+ AvatarModule,
4080
+ BadgeModule,
4081
+ SpiderlyButtonComponent,
4082
+ TranslocoDirective,
4083
+ ], template: "<ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"this.currentUser != null\"\r\n #topbarmenu\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div \r\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \r\n [ngStyle]=\"{'right': isSideMenuLayout ? '26px' : '0', 'top': isSideMenuLayout ? '60px' : '40px'}\" \r\n style=\"width: 280px; position: absolute; padding: 15px;\" \r\n class=\"card\">\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'margin': 'auto' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 5px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}} primary-color\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"this.currentUser == null\">\r\n <spiderly-button [label]=\"t('Login')\" icon=\"pi pi-sign-in\" [routerLink]=\"this.config.loginSlug\"></spiderly-button>\r\n </div>\r\n</ng-container>" }]
4084
+ }], ctorParameters: () => [{ type: LayoutBaseService }, { type: AuthBaseService }, { type: i3.Router }, { type: i1$2.TranslocoService }, { type: ConfigBaseService }], propDecorators: { isSideMenuLayout: [{
4085
+ type: Input
4165
4086
  }], menu: [{
4166
4087
  type: ViewChild,
4167
4088
  args: ['topbarmenu']
@@ -4170,19 +4091,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
4170
4091
  args: ['topbarprofiledropdownmenubutton']
4171
4092
  }] } });
4172
4093
 
4173
- class LayoutBaseComponent {
4094
+ class SideMenuTopBarComponent {
4095
+ constructor(layoutService, router, config, translocoService) {
4096
+ this.layoutService = layoutService;
4097
+ this.router = router;
4098
+ this.config = config;
4099
+ this.translocoService = translocoService;
4100
+ this.companyName = this.config.companyName;
4101
+ }
4102
+ async ngOnInit() {
4103
+ this.router.events
4104
+ .pipe(filter$1(event => event instanceof NavigationEnd))
4105
+ .subscribe((event) => {
4106
+ this.layoutService.state.profileDropdownSidebarVisible = false;
4107
+ });
4108
+ }
4109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SideMenuTopBarComponent, deps: [{ token: LayoutBaseService }, { token: i3.Router }, { token: ConfigBaseService }, { token: i1$2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
4110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SideMenuTopBarComponent, isStandalone: true, selector: "spiderly-sidemenu-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div class=\"profile-button\">\r\n <spiderly-profile-avatar\r\n ></spiderly-profile-avatar>\r\n </div>\r\n\r\n</div>\r\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: ProfileAvatarComponent, selector: "spiderly-profile-avatar", inputs: ["isSideMenuLayout"] }] }); }
4111
+ }
4112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SideMenuTopBarComponent, decorators: [{
4113
+ type: Component,
4114
+ args: [{ selector: 'spiderly-sidemenu-topbar', imports: [
4115
+ CommonModule,
4116
+ RouterModule,
4117
+ AvatarModule,
4118
+ BadgeModule,
4119
+ ProfileAvatarComponent,
4120
+ ], template: "<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div class=\"profile-button\">\r\n <spiderly-profile-avatar\r\n ></spiderly-profile-avatar>\r\n </div>\r\n\r\n</div>\r\n " }]
4121
+ }], ctorParameters: () => [{ type: LayoutBaseService }, { type: i3.Router }, { type: ConfigBaseService }, { type: i1$2.TranslocoService }], propDecorators: { menuButton: [{
4122
+ type: ViewChild,
4123
+ args: ['menubutton']
4124
+ }] } });
4125
+
4126
+ class TopBarComponent {
4127
+ constructor(config) {
4128
+ this.config = config;
4129
+ this.companyName = this.config.companyName;
4130
+ this.logoPath = this.config.logoPath;
4131
+ this.isSideMenuActive = false;
4132
+ }
4133
+ ngOnInit() {
4134
+ }
4135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TopBarComponent, deps: [{ token: ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
4136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: TopBarComponent, isStandalone: true, selector: "spiderly-topbar", inputs: { menu: "menu" }, ngImport: i0, template: "<div class=\"topbar-wrapper\">\r\n <nav class=\"topbar\">\r\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\r\n <ng-template #start>\r\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\r\n </ng-template>\r\n <ng-template #end>\r\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\r\n <div>\r\n <ng-content select=\"[ACTIONS]\"></ng-content>\r\n </div>\r\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\r\n </div>\r\n </ng-template>\r\n </p-menubar>\r\n </nav>\r\n</div>", styles: [".topbar-wrapper{background-color:var(--p-content-background);width:100%;border-bottom:1px solid var(--p-content-border-color);box-shadow:0 4px 6px #0000001a;position:sticky;top:0;left:0;z-index:1000}.topbar{max-width:1100px;margin:auto}::ng-deep .p-menubar-item-link{padding:10px!important;font-size:15px!important}::ng-deep .p-menubar-item-link .pi{font-size:15px}::ng-deep .p-menubar-button{width:35px!important;height:35px!important}::ng-deep .p-menubar-button .p-icon{width:16px;height:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i3$5.Menubar, selector: "p-menubar", inputs: ["model", "style", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: ProfileAvatarComponent, selector: "spiderly-profile-avatar", inputs: ["isSideMenuLayout"] }] }); }
4137
+ }
4138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: TopBarComponent, decorators: [{
4139
+ type: Component,
4140
+ args: [{ selector: 'spiderly-topbar', imports: [
4141
+ CommonModule,
4142
+ RouterModule,
4143
+ MenubarModule,
4144
+ AvatarModule,
4145
+ ProfileAvatarComponent,
4146
+ ], template: "<div class=\"topbar-wrapper\">\r\n <nav class=\"topbar\">\r\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\r\n <ng-template #start>\r\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\r\n </ng-template>\r\n <ng-template #end>\r\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\r\n <div>\r\n <ng-content select=\"[ACTIONS]\"></ng-content>\r\n </div>\r\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\r\n </div>\r\n </ng-template>\r\n </p-menubar>\r\n </nav>\r\n</div>", styles: [".topbar-wrapper{background-color:var(--p-content-background);width:100%;border-bottom:1px solid var(--p-content-border-color);box-shadow:0 4px 6px #0000001a;position:sticky;top:0;left:0;z-index:1000}.topbar{max-width:1100px;margin:auto}::ng-deep .p-menubar-item-link{padding:10px!important;font-size:15px!important}::ng-deep .p-menubar-item-link .pi{font-size:15px}::ng-deep .p-menubar-button{width:35px!important;height:35px!important}::ng-deep .p-menubar-button .p-icon{width:16px;height:16px}\n"] }]
4147
+ }], ctorParameters: () => [{ type: ConfigBaseService }], propDecorators: { menu: [{
4148
+ type: Input
4149
+ }] } });
4150
+
4151
+ class SpiderlyLayoutComponent {
4174
4152
  constructor(layoutService, renderer, router) {
4175
4153
  this.layoutService = layoutService;
4176
4154
  this.renderer = renderer;
4177
4155
  this.router = router;
4156
+ this.menu = [];
4157
+ this.sideMenu = [];
4158
+ this.topMenu = [];
4159
+ this.isSideMenuLayout = true;
4178
4160
  this.onAfterNgDestroy = () => { };
4179
4161
  this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {
4180
4162
  if (!this.menuOutsideClickListener) {
4181
4163
  this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {
4182
- const isOutsideClicked = !(this.appSidebar.el.nativeElement.isSameNode(event.target) ||
4183
- this.appSidebar.el.nativeElement.contains(event.target) ||
4184
- this.appTopbar.menuButton.nativeElement.isSameNode(event.target) ||
4185
- this.appTopbar.menuButton.nativeElement.contains(event.target) ||
4164
+ const isOutsideClicked = !(this.appSidebar?.el.nativeElement.isSameNode(event.target) ||
4165
+ this.appSidebar?.el.nativeElement.contains(event.target) ||
4166
+ this.sidemenuTopbar?.menuButton?.nativeElement.isSameNode(event.target) ||
4167
+ this.sidemenuTopbar?.menuButton?.nativeElement.contains(event.target) ||
4186
4168
  (event.target.closest('.p-autocomplete-items')) ||
4187
4169
  (event.target.closest('.p-autocomplete-clear-icon')));
4188
4170
  if (isOutsideClicked) {
@@ -4192,8 +4174,8 @@ class LayoutBaseComponent {
4192
4174
  }
4193
4175
  if (!this.profileMenuOutsideClickListener) {
4194
4176
  this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {
4195
- const isOutsideClicked = !(this.appTopbar.menu.nativeElement.isSameNode(event.target) ||
4196
- this.appTopbar.menu.nativeElement.contains(event.target));
4177
+ const isOutsideClicked = !(this.topbarmenu?.nativeElement.isSameNode(event.target) ||
4178
+ this.topbarmenu?.nativeElement.contains(event.target));
4197
4179
  if (isOutsideClicked) {
4198
4180
  this.hideProfileMenu();
4199
4181
  }
@@ -4209,6 +4191,14 @@ class LayoutBaseComponent {
4209
4191
  this.hideProfileMenu();
4210
4192
  });
4211
4193
  }
4194
+ ngOnInit() {
4195
+ if (this.isSideMenuLayout) {
4196
+ this.sideMenu = [...this.menu];
4197
+ }
4198
+ else {
4199
+ this.topMenu = [...this.menu[0].items];
4200
+ }
4201
+ }
4212
4202
  hideMenu() {
4213
4203
  this.layoutService.state.overlayMenuActive = false;
4214
4204
  this.layoutService.state.staticMenuMobileActive = false;
@@ -4265,22 +4255,32 @@ class LayoutBaseComponent {
4265
4255
  }
4266
4256
  this.onAfterNgDestroy();
4267
4257
  }
4268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LayoutBaseComponent, deps: [{ token: LayoutBaseService }, { token: i0.Renderer2 }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
4269
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: LayoutBaseComponent, isStandalone: true, selector: "layout-base", viewQueries: [{ propertyName: "appSidebar", first: true, predicate: AppSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopBarComponent, descendants: true }], ngImport: i0, template: '', isInline: true }); }
4258
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyLayoutComponent, deps: [{ token: LayoutBaseService }, { token: i0.Renderer2 }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
4259
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyLayoutComponent, isStandalone: true, selector: "spiderly-layout", inputs: { menu: "menu", isSideMenuLayout: "isSideMenuLayout" }, viewQueries: [{ propertyName: "appSidebar", first: true, predicate: AppSidebarComponent, descendants: true }, { propertyName: "sidemenuTopbar", first: true, predicate: SideMenuTopBarComponent, descendants: true }, { propertyName: "topbarmenu", first: true, predicate: ["topbarmenu"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\r\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\r\n <div class=\"layout-sidebar\">\r\n <sidebar [menu]=\"sideMenu\"></sidebar>\r\n </div>\r\n <div class=\"layout-main-container\">\r\n <div class=\"layout-main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <footer></footer>\r\n </div>\r\n <div class=\"layout-mask\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"isSideMenuLayout === false\">\r\n <spiderly-topbar [menu]=\"topMenu\">\r\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\r\n </spiderly-topbar>\r\n <main style=\"max-width: 1100px; margin: auto; padding: 18px;\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AppSidebarComponent, selector: "sidebar", inputs: ["menu"] }, { kind: "component", type: FooterComponent, selector: "footer" }, { kind: "component", type: SideMenuTopBarComponent, selector: "spiderly-sidemenu-topbar" }, { kind: "component", type: TopBarComponent, selector: "spiderly-topbar", inputs: ["menu"] }] }); }
4270
4260
  }
4271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: LayoutBaseComponent, decorators: [{
4261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyLayoutComponent, decorators: [{
4272
4262
  type: Component,
4273
- args: [{
4274
- selector: 'layout-base',
4275
- template: '',
4276
- standalone: true
4277
- }]
4278
- }], ctorParameters: () => [{ type: LayoutBaseService }, { type: i0.Renderer2 }, { type: i3.Router }], propDecorators: { appSidebar: [{
4263
+ args: [{ selector: 'spiderly-layout', imports: [
4264
+ CommonModule,
4265
+ RouterModule,
4266
+ AppSidebarComponent,
4267
+ FooterComponent,
4268
+ SideMenuTopBarComponent,
4269
+ TopBarComponent,
4270
+ ], template: "<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\r\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\r\n <div class=\"layout-sidebar\">\r\n <sidebar [menu]=\"sideMenu\"></sidebar>\r\n </div>\r\n <div class=\"layout-main-container\">\r\n <div class=\"layout-main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <footer></footer>\r\n </div>\r\n <div class=\"layout-mask\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"isSideMenuLayout === false\">\r\n <spiderly-topbar [menu]=\"topMenu\">\r\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\r\n </spiderly-topbar>\r\n <main style=\"max-width: 1100px; margin: auto; padding: 18px;\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</div>" }]
4271
+ }], ctorParameters: () => [{ type: LayoutBaseService }, { type: i0.Renderer2 }, { type: i3.Router }], propDecorators: { menu: [{
4272
+ type: Input
4273
+ }], isSideMenuLayout: [{
4274
+ type: Input
4275
+ }], appSidebar: [{
4279
4276
  type: ViewChild,
4280
4277
  args: [AppSidebarComponent]
4281
- }], appTopbar: [{
4278
+ }], sidemenuTopbar: [{
4279
+ type: ViewChild,
4280
+ args: [SideMenuTopBarComponent]
4281
+ }], topbarmenu: [{
4282
4282
  type: ViewChild,
4283
- args: [AppTopBarComponent]
4283
+ args: ['topbarmenu']
4284
4284
  }] } });
4285
4285
 
4286
4286
  // FT HACK: Fake class, because of api imports
@@ -4600,6 +4600,22 @@ const unauthorizedInterceptor = (req, next) => {
4600
4600
  }));
4601
4601
  };
4602
4602
 
4603
+ class SpiderlyTemplateTypeDirective {
4604
+ static ngTemplateContextGuard(dir, ctx) {
4605
+ return true;
4606
+ }
4607
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTemplateTypeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4608
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.13", type: SpiderlyTemplateTypeDirective, isStandalone: true, selector: "[templateType]", inputs: { templateType: "templateType" }, ngImport: i0 }); }
4609
+ }
4610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTemplateTypeDirective, decorators: [{
4611
+ type: Directive,
4612
+ args: [{
4613
+ selector: '[templateType]',
4614
+ }]
4615
+ }], propDecorators: { templateType: [{
4616
+ type: Input
4617
+ }] } });
4618
+
4603
4619
  /*
4604
4620
  * Public API Surface of spiderly
4605
4621
  */
@@ -4608,5 +4624,5 @@ const unauthorizedInterceptor = (req, next) => {
4608
4624
  * Generated bundle index. Do not edit.
4609
4625
  */
4610
4626
 
4611
- export { Action, AllClickEvent, ApiSecurityService, AppSidebarComponent, AppTopBarComponent, AuthBaseService, AuthGuard, AuthResult, BaseAutocompleteControl, BaseControl, BaseDropdownControl, BaseEntity, BaseFormCopy, BaseFormService, CardSkeletonComponent, Codebook, Column, ConfigBaseService, ExternalProvider, FooterComponent, GoogleButtonComponent, IndexCardComponent, InfoCardComponent, InitCompanyAuthDialogDetails, InitTopBarData, IsAuthorizedForSaveEvent, JwtAuthResult, LastMenuIconIndexClicked, LayoutBaseComponent, LayoutBaseService, LazyLoadSelectedIdsResult, Login, LoginComponent, LoginVerificationComponent, LoginVerificationResultStatusCodes, LoginVerificationToken, MenuChangeEvent, MenuitemComponent, MimeTypes, Namebook, NotAuthGuard, NotFoundComponent, PanelBodyComponent, PanelFooterComponent, PanelHeaderComponent, Permission, PermissionSaveBody, PipedProperty, PrimengModule, PrimengOption, PropertyPipes, RefreshToken, RefreshTokenRequest, Registration, RegistrationComponent, RegistrationVerificationComponent, RegistrationVerificationResult, RegistrationVerificationResultStatusCodes, RegistrationVerificationToken, RequiredComponent, Role, RoleBaseDetailsComponent, RoleMainUIForm, RolePermission, RolePermissionSaveBody, RoleSaveBody, RowClickEvent, SecurityPermissionCodes, SidebarMenuComponent, SimpleSaveResult, SpiderlyAutocompleteComponent, SpiderlyButton, SpiderlyButtonBaseComponent, SpiderlyButtonComponent, SpiderlyCalendarComponent, SpiderlyCardComponent, SpiderlyCheckboxComponent, SpiderlyColorpickComponent, SpiderlyControlsModule, SpiderlyDataTableComponent, SpiderlyDeleteConfirmationComponent, SpiderlyDropdownComponent, SpiderlyEditorComponent, SpiderlyErrorHandler, SpiderlyFileComponent, SpiderlyFileSelectEvent, SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup, SpiderlyMessageService, SpiderlyMultiAutocompleteComponent, SpiderlyMultiSelectComponent, SpiderlyNumberComponent, SpiderlyPanelComponent, SpiderlyPanelsModule, SpiderlyPasswordComponent, SpiderlyReturnButtonComponent, SpiderlySplitButtonComponent, SpiderlyTab, SpiderlyTextareaComponent, SpiderlyTextboxComponent, SpiderlyTranslocoFallbackStrategy, SpiderlyTranslocoLoader, SpiderlyTranslocoMissingHandler, SpiderlyTranslocoModule, TableFilter, TableFilterContext, TableFilterSortMeta, TableResponse, TranslateLabelsAbstractService, User, UserRole, UserRoleSaveBody, ValidatorAbstractService, VerificationTokenRequest, VerificationTypeCodes, VerificationWrapperComponent, adjustColor, authInitializer, capitalizeFirstLetter, deleteAction, exportListToExcel, getControl, getFileNameFromContentDisposition, getHtmlImgDisplayString64, getMimeTypeForFileName, getMonth, getParentUrl, getPrimengAutocompleteCodebookOptions, getPrimengAutocompleteNamebookOptions, getPrimengDropdownCodebookOptions, getPrimengDropdownNamebookOptions, httpLoadingInterceptor, isExcelFileType, isImageFileType, isNullOrEmpty, jsonHttpInterceptor, jwtInterceptor, nameOf, nameof, provideSpiderlyCore, provideSpiderlyTransloco, pushAction, selectedTab, singleOrDefault, toCommaSeparatedString, unauthorizedInterceptor, validatePrecisionScale };
4627
+ export { Action, AllClickEvent, ApiSecurityService, AppSidebarComponent, AuthBaseService, AuthGuard, AuthResult, BaseAutocompleteControl, BaseControl, BaseDropdownControl, BaseEntity, BaseFormCopy, BaseFormService, CardSkeletonComponent, Codebook, Column, ConfigBaseService, ExternalProvider, FooterComponent, GoogleButtonComponent, IndexCardComponent, InfoCardComponent, InitCompanyAuthDialogDetails, InitTopBarData, IsAuthorizedForSaveEvent, JwtAuthResult, LastMenuIconIndexClicked, LayoutBaseService, LazyLoadSelectedIdsResult, Login, LoginComponent, LoginVerificationComponent, LoginVerificationResultStatusCodes, LoginVerificationToken, MatchModeCodes, MenuChangeEvent, MenuitemComponent, MimeTypes, Namebook, NotAuthGuard, NotFoundComponent, PanelBodyComponent, PanelFooterComponent, PanelHeaderComponent, Permission, PermissionSaveBody, PrimengOption, RefreshToken, RefreshTokenRequest, Registration, RegistrationComponent, RegistrationVerificationComponent, RegistrationVerificationResult, RegistrationVerificationResultStatusCodes, RegistrationVerificationToken, RequiredComponent, Role, RoleBaseDetailsComponent, RoleMainUIForm, RolePermission, RolePermissionSaveBody, RoleSaveBody, RowClickEvent, SecurityPermissionCodes, SideMenuTopBarComponent, SidebarMenuComponent, SimpleSaveResult, SpiderlyAutocompleteComponent, SpiderlyButton, SpiderlyButtonBaseComponent, SpiderlyButtonComponent, SpiderlyCalendarComponent, SpiderlyCardComponent, SpiderlyCheckboxComponent, SpiderlyColorpickComponent, SpiderlyControlsModule, SpiderlyDataTableComponent, SpiderlyDataViewComponent, SpiderlyDeleteConfirmationComponent, SpiderlyDropdownComponent, SpiderlyEditorComponent, SpiderlyErrorHandler, SpiderlyFileComponent, SpiderlyFileSelectEvent, SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup, SpiderlyLayoutComponent, SpiderlyMessageService, SpiderlyMultiAutocompleteComponent, SpiderlyMultiSelectComponent, SpiderlyNumberComponent, SpiderlyPanelComponent, SpiderlyPanelsModule, SpiderlyPasswordComponent, SpiderlyReturnButtonComponent, SpiderlySplitButtonComponent, SpiderlyTab, SpiderlyTemplateTypeDirective, SpiderlyTextareaComponent, SpiderlyTextboxComponent, SpiderlyTranslocoFallbackStrategy, SpiderlyTranslocoLoader, SpiderlyTranslocoMissingHandler, SpiderlyTranslocoModule, TableFilter, TableFilterContext, TableFilterSortMeta, TableResponse, TopBarComponent, TranslateLabelsAbstractService, User, UserRole, UserRoleSaveBody, ValidatorAbstractService, VerificationTokenRequest, VerificationTypeCodes, VerificationWrapperComponent, adjustColor, authInitializer, capitalizeFirstLetter, deleteAction, exportListToExcel, getControl, getFileNameFromContentDisposition, getHtmlImgDisplayString64, getMimeTypeForFileName, getMonth, getParentUrl, getPrimengAutocompleteCodebookOptions, getPrimengAutocompleteNamebookOptions, getPrimengDropdownCodebookOptions, getPrimengDropdownNamebookOptions, httpLoadingInterceptor, isExcelFileType, isImageFileType, isNullOrEmpty, jsonHttpInterceptor, jwtInterceptor, nameOf, nameof, provideSpiderlyCore, provideSpiderlyTransloco, pushAction, selectedTab, singleOrDefault, toCommaSeparatedString, unauthorizedInterceptor, validatePrecisionScale };
4612
4628
  //# sourceMappingURL=spiderly.mjs.map