spiderly 19.0.3 → 19.0.5

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 (29) hide show
  1. package/fesm2022/spiderly.mjs +456 -210
  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/controls/spiderly-autocomplete/spiderly-autocomplete.component.d.ts +10 -3
  12. package/lib/directives/template-type.directive.d.ts +7 -0
  13. package/lib/entities/base-entity.d.ts +0 -10
  14. package/lib/entities/table-filter-context.d.ts +7 -4
  15. package/lib/entities/table-filter-sort-meta.d.ts +2 -2
  16. package/lib/entities/table-filter.d.ts +14 -4
  17. package/lib/enums/match-mode-enum-codes.d.ts +8 -0
  18. package/lib/services/config-base.service.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/public-api.d.ts +5 -1
  21. package/styles/components/layout/topbar/topbar.component.scss +33 -0
  22. package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +50 -0
  23. package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +1 -1
  24. package/styles/styles/layout/_main.scss +4 -0
  25. package/styles/styles/layout/_menu.scss +1 -1
  26. package/styles/styles/layout/_topbar.scss +2 -2
  27. package/styles/styles/layout/layout.scss +0 -1
  28. package/styles/styles/shared.scss +10 -4
  29. 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, importProvidersFrom, NgModule, 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';
@@ -14,17 +14,15 @@ import { provideTransloco, TranslocoModule, TranslocoDirective, TranslocoService
14
14
  import * as i1$6 from 'primeng/dynamicdialog';
15
15
  import { DialogService } from 'primeng/dynamicdialog';
16
16
  import { provideTranslocoPreloadLangs } from '@jsverse/transloco-preload-langs';
17
- import * as i3$3 from 'primeng/autocomplete';
17
+ import * as i4 from 'primeng/autocomplete';
18
18
  import { AutoCompleteModule } from 'primeng/autocomplete';
19
19
  import * as i2 from '@angular/common';
20
20
  import { CommonModule, formatDate } from '@angular/common';
21
21
  import * as i3$2 from '@angular/forms';
22
- import { ReactiveFormsModule, FormsModule, FormControl, FormGroup, FormArray } from '@angular/forms';
23
- import * as i4 from 'primeng/inputgroupaddon';
22
+ import { FormControl, FormGroup, FormArray, ReactiveFormsModule, FormsModule } from '@angular/forms';
24
23
  import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
25
- import * as i5$1 from 'primeng/tooltip';
24
+ import * as i5 from 'primeng/tooltip';
26
25
  import { TooltipModule, Tooltip } from 'primeng/tooltip';
27
- import * as i5 from 'primeng/inputgroup';
28
26
  import { InputGroupModule } from 'primeng/inputgroup';
29
27
  import * as i4$1 from 'primeng/datepicker';
30
28
  import { DatePickerModule } from 'primeng/datepicker';
@@ -32,11 +30,11 @@ import * as i4$2 from 'primeng/checkbox';
32
30
  import { CheckboxModule } from 'primeng/checkbox';
33
31
  import * as i4$3 from 'primeng/colorpicker';
34
32
  import { ColorPickerModule } from 'primeng/colorpicker';
35
- import * as i3$4 from 'primeng/select';
33
+ import * as i3$3 from 'primeng/select';
36
34
  import { SelectModule } from 'primeng/select';
37
35
  import * as i4$4 from 'primeng/editor';
38
36
  import { EditorModule, Editor } from 'primeng/editor';
39
- import * as i3$5 from 'primeng/fileupload';
37
+ import * as i3$4 from 'primeng/fileupload';
40
38
  import { FileUploadModule } from 'primeng/fileupload';
41
39
  import * as FileSaver from 'file-saver';
42
40
  import * as i1$3 from 'primeng/button';
@@ -64,10 +62,12 @@ import { TableModule } from 'primeng/table';
64
62
  import * as i2$2 from 'primeng/confirmdialog';
65
63
  import { ConfirmDialogModule } from 'primeng/confirmdialog';
66
64
  import { trigger, state, transition, style, animate } from '@angular/animations';
67
- import * as i8 from 'primeng/avatar';
65
+ import * as i7 from 'primeng/avatar';
68
66
  import { AvatarModule } from 'primeng/avatar';
69
- import * as i9$1 from 'primeng/badge';
67
+ import * as i8 from 'primeng/badge';
70
68
  import { BadgeModule } from 'primeng/badge';
69
+ import * as i3$5 from 'primeng/menubar';
70
+ import { MenubarModule } from 'primeng/menubar';
71
71
  import { NgxSpinnerService } from 'ngx-spinner';
72
72
 
73
73
  function authInitializer(authService) {
@@ -78,21 +78,9 @@ function authInitializer(authService) {
78
78
 
79
79
  class BaseEntity {
80
80
  constructor(typeName) {
81
- this.pipedProperties = [];
82
81
  this.typeName = typeName;
83
82
  }
84
83
  }
85
- class PipedProperty {
86
- constructor(p, c) {
87
- this.pipe = p;
88
- this.control = c;
89
- }
90
- }
91
- var PropertyPipes;
92
- (function (PropertyPipes) {
93
- PropertyPipes[PropertyPipes["IntegerPipe"] = 0] = "IntegerPipe";
94
- PropertyPipes[PropertyPipes["DecimalPipe"] = 1] = "DecimalPipe";
95
- })(PropertyPipes || (PropertyPipes = {}));
96
84
 
97
85
  class User extends BaseEntity {
98
86
  constructor({ id, email, } = {}) {
@@ -289,6 +277,7 @@ class ConfigBaseService {
289
277
  headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
290
278
  params: new HttpParams().set('X-Skip-Spinner', 'true')
291
279
  };
280
+ this.logoPath = 'assets/images/logo/logo.svg';
292
281
  }
293
282
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
294
283
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ConfigBaseService, providedIn: 'root' }); }
@@ -429,7 +418,7 @@ class AuthBaseService {
429
418
  };
430
419
  this.initCompanyAuthDialogDetails = () => {
431
420
  return of(new InitCompanyAuthDialogDetails({
432
- image: `assets/images/logo/logo.svg`,
421
+ image: this.config.logoPath,
433
422
  companyName: this.config.companyName,
434
423
  }));
435
424
  };
@@ -765,9 +754,6 @@ class BaseControl {
765
754
  ngOnInit() {
766
755
  if (this.control != null && this.disabled == true)
767
756
  this.control.disable();
768
- // TODO FT: Delete if you don't need
769
- // 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
770
- // this.control.required = true;
771
757
  this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus';
772
758
  }
773
759
  ngAfterViewInit() {
@@ -777,7 +763,7 @@ class BaseControl {
777
763
  }
778
764
  getValidationErrrorMessages() {
779
765
  if (this.control?.errors && this.control?.dirty) {
780
- // FT: it should always be one error message for single form control,
766
+ // It should always be one error message for single form control,
781
767
  // also i don't need to reassign it to null because it will be shown only when control.valid == false
782
768
  return this.control.errors['_'];
783
769
  }
@@ -867,20 +853,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
867
853
  args: [{ selector: 'required', standalone: true, template: "<span style=\"color: red; margin-left: 4px;\">*</span>" }]
868
854
  }], ctorParameters: () => [] });
869
855
 
870
- 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 {
871
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) {
872
941
  super(translocoService);
873
942
  this.translocoService = translocoService;
943
+ this.validatorService = validatorService;
874
944
  this.appendTo = 'body';
875
945
  this.showClear = true;
946
+ this.helperFormControl = new SpiderlyFormControl(null, { updateOn: 'change' });
876
947
  }
877
948
  ngOnInit() {
878
949
  super.ngOnInit();
879
- if (this.options == null && this.control.value != null) {
880
- this.options = [
881
- { label: this.displayName, code: this.control.value }
882
- ];
883
- }
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 });
884
954
  if (this.emptyMessage == null) {
885
955
  this.emptyMessage = this.translocoService.translate('EmptyMessage');
886
956
  }
@@ -889,9 +959,17 @@ class SpiderlyAutocompleteComponent extends BaseAutocompleteControl {
889
959
  this.onTextInput.next(event);
890
960
  }
891
961
  select(event) {
962
+ this.control.setValue(event.value.code);
963
+ }
964
+ clear() {
965
+ this.control.setValue(null);
966
+ }
967
+ autocompleteMarkAsDirty() {
968
+ this.dropdownMarkAsDirty();
969
+ this.helperFormControl.markAsDirty();
892
970
  }
893
- 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 }); }
894
- 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: AutoCompleteModule }, { kind: "component", type: i3$3.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: "component", type: i4.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i5.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["style", "styleClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5$1.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"] }] }); }
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"] }] }); }
895
973
  }
896
974
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyAutocompleteComponent, decorators: [{
897
975
  type: Component,
@@ -905,8 +983,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
905
983
  CommonModule,
906
984
  RequiredComponent,
907
985
  TranslocoDirective,
908
- ], 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>" }]
909
- }], 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: [{
910
988
  type: Input
911
989
  }], showClear: [{
912
990
  type: Input
@@ -928,7 +1006,7 @@ class SpiderlyCalendarComponent extends BaseControl {
928
1006
  setDate(event) {
929
1007
  }
930
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 }); }
931
- 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$1.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" }] }); }
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" }] }); }
932
1010
  }
933
1011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCalendarComponent, decorators: [{
934
1012
  type: Component,
@@ -958,7 +1036,7 @@ class SpiderlyCheckboxComponent extends BaseControl {
958
1036
  super.ngOnInit();
959
1037
  }
960
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 }); }
961
- 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$1.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" }] }); }
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" }] }); }
962
1040
  }
963
1041
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyCheckboxComponent, decorators: [{
964
1042
  type: Component,
@@ -992,7 +1070,7 @@ class SpiderlyColorpickComponent extends BaseControl {
992
1070
  super.ngOnInit();
993
1071
  }
994
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 }); }
995
- 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$1.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" }] }); }
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" }] }); }
996
1074
  }
997
1075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyColorpickComponent, decorators: [{
998
1076
  type: Component,
@@ -1019,7 +1097,7 @@ class SpiderlyDropdownComponent extends BaseDropdownControl {
1019
1097
  this.onChange.next(event);
1020
1098
  }
1021
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 }); }
1022
- 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$4.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$1.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" }] }); }
1023
1101
  }
1024
1102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDropdownComponent, decorators: [{
1025
1103
  type: Component,
@@ -1029,7 +1107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1029
1107
  SelectModule,
1030
1108
  TooltipModule,
1031
1109
  CommonModule,
1032
- RequiredComponent
1110
+ RequiredComponent,
1033
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>" }]
1034
1112
  }], ctorParameters: () => [{ type: i1$2.TranslocoService }], propDecorators: { onChange: [{
1035
1113
  type: Output
@@ -1061,7 +1139,7 @@ class SpiderlyEditorComponent extends BaseControl {
1061
1139
  };
1062
1140
  }
1063
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 }); }
1064
- 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$1.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" }] }); }
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" }] }); }
1065
1143
  }
1066
1144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyEditorComponent, decorators: [{
1067
1145
  type: Component,
@@ -1435,7 +1513,7 @@ class SpiderlyFileComponent extends BaseControl {
1435
1513
  return isExcelFileType(mimeType);
1436
1514
  }
1437
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 }); }
1438
- 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$5.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"] }] }); }
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"] }] }); }
1439
1517
  }
1440
1518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyFileComponent, decorators: [{
1441
1519
  type: Component,
@@ -1485,7 +1563,7 @@ class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl {
1485
1563
  this.onTextInput.next(event);
1486
1564
  }
1487
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 }); }
1488
- 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: i3$3.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$1.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"] }] }); }
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"] }] }); }
1489
1567
  }
1490
1568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiAutocompleteComponent, decorators: [{
1491
1569
  type: Component,
@@ -1509,7 +1587,7 @@ class SpiderlyMultiSelectComponent extends BaseDropdownControl {
1509
1587
  super.ngOnInit();
1510
1588
  }
1511
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 }); }
1512
- 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$1.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" }] }); }
1513
1591
  }
1514
1592
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyMultiSelectComponent, decorators: [{
1515
1593
  type: Component,
@@ -1534,7 +1612,7 @@ class SpiderlyNumberComponent extends BaseControl {
1534
1612
  super.ngOnInit();
1535
1613
  }
1536
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 }); }
1537
- 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$1.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" }] }); }
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" }] }); }
1538
1616
  }
1539
1617
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyNumberComponent, decorators: [{
1540
1618
  type: Component,
@@ -1566,7 +1644,7 @@ class SpiderlyPasswordComponent extends BaseControl {
1566
1644
  super.ngOnInit();
1567
1645
  }
1568
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 }); }
1569
- 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$1.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" }] }); }
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" }] }); }
1570
1648
  }
1571
1649
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyPasswordComponent, decorators: [{
1572
1650
  type: Component,
@@ -1591,7 +1669,7 @@ class SpiderlyTextareaComponent extends BaseControl {
1591
1669
  super.ngOnInit();
1592
1670
  }
1593
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 }); }
1594
- 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$1.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" }] }); }
1595
1673
  }
1596
1674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextareaComponent, decorators: [{
1597
1675
  type: Component,
@@ -1619,7 +1697,7 @@ class SpiderlyTextboxComponent extends BaseControl {
1619
1697
  this.onButtonClick.next(null);
1620
1698
  }
1621
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 }); }
1622
- 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$1.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" }] }); }
1623
1701
  }
1624
1702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyTextboxComponent, decorators: [{
1625
1703
  type: Component,
@@ -1660,11 +1738,11 @@ class PanelFooterComponent {
1660
1738
  ngOnInit() {
1661
1739
  }
1662
1740
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1663
- 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"] }); }
1664
1742
  }
1665
1743
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: PanelFooterComponent, decorators: [{
1666
1744
  type: Component,
1667
- 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"] }]
1668
1746
  }], ctorParameters: () => [] });
1669
1747
 
1670
1748
  class PanelHeaderComponent {
@@ -1974,41 +2052,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
1974
2052
  type: Input
1975
2053
  }] } });
1976
2054
 
1977
- // It's made like generic type because of <number>, <string> etc. not to put class like User.
1978
- class SpiderlyFormControl extends FormControl {
1979
- constructor(value, opts = null, required = false) {
1980
- opts = opts ?? { updateOn: 'blur' };
1981
- super(value, opts);
1982
- this.required = required;
1983
- }
1984
- getRawValue() {
1985
- return super.getRawValue();
1986
- }
1987
- get validator() {
1988
- return this._spiderlyValidator;
1989
- }
1990
- set validator(validator) {
1991
- this._spiderlyValidator = validator;
1992
- this.setValidators(validator);
1993
- }
1994
- }
1995
- class SpiderlyFormGroup extends FormGroup {
1996
- constructor(controls) {
1997
- super(controls);
1998
- this.initSaveBody = () => null;
1999
- this.controlNamesFromHtml = [];
2000
- }
2001
- getRawValue() {
2002
- return super.getRawValue();
2003
- }
2004
- }
2005
- class SpiderlyFormArray extends FormArray {
2006
- constructor() {
2007
- super(...arguments);
2008
- this.controlNamesFromHtml = [];
2009
- }
2010
- }
2011
-
2012
2055
  class IsAuthorizedForSaveEvent extends BaseEntity {
2013
2056
  constructor({ isAuthorizedForSave, currentUserPermissionCodes, } = {}) {
2014
2057
  super('IsAuthorizedForSaveEvent');
@@ -2030,54 +2073,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
2030
2073
  }]
2031
2074
  }], ctorParameters: () => [] });
2032
2075
 
2033
- class ValidatorAbstractService {
2034
- constructor(translocoService) {
2035
- this.translocoService = translocoService;
2036
- this.isArrayEmpty = (control) => {
2037
- const validator = () => {
2038
- const value = control.value;
2039
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
2040
- const arrayValid = notEmptyRule;
2041
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2042
- };
2043
- validator.hasNotEmptyRule = true;
2044
- control.required = true;
2045
- return validator;
2046
- };
2047
- this.notEmpty = (control) => {
2048
- const validator = () => {
2049
- const value = control.value;
2050
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';
2051
- const arrayValid = notEmptyRule;
2052
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2053
- };
2054
- validator.hasNotEmptyRule = true;
2055
- control.required = true;
2056
- control.validator = validator;
2057
- control.updateValueAndValidity();
2058
- };
2059
- this.isFormArrayEmpty = (control) => {
2060
- const validator = () => {
2061
- const value = control;
2062
- const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;
2063
- const arrayValid = notEmptyRule;
2064
- return arrayValid ? null : { _: this.translocoService.translate('NotEmpty') };
2065
- };
2066
- validator.hasNotEmptyRule = true;
2067
- control.required = true;
2068
- return validator;
2069
- };
2070
- }
2071
- 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 }); }
2072
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, providedIn: 'root' }); }
2073
- }
2074
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ValidatorAbstractService, decorators: [{
2075
- type: Injectable,
2076
- args: [{
2077
- providedIn: 'root',
2078
- }]
2079
- }], ctorParameters: () => [{ type: i1$2.TranslocoService }] });
2080
-
2081
2076
  class BaseFormService {
2082
2077
  constructor(translateLabelsService, validatorService, messageService, translocoService) {
2083
2078
  this.translateLabelsService = translateLabelsService;
@@ -2088,14 +2083,14 @@ class BaseFormService {
2088
2083
  if (modelConstructor == null)
2089
2084
  return null;
2090
2085
  if (formGroup == null)
2091
- console.error('FT: You need to instantiate the form group.');
2086
+ console.error('Spiderly: You need to instantiate the form group.');
2092
2087
  this.initFormGroup(formGroup, modelConstructor, updateOnChangeControls);
2093
2088
  parentFormGroup.setControl(propertyNameInSaveBody, formGroup); // FT: Use setControl because it will update formGroup if it already exists
2094
2089
  return formGroup;
2095
2090
  };
2096
2091
  this.initFormGroup = (formGroup, modelConstructor, updateOnChangeControls) => {
2097
2092
  if (formGroup == null)
2098
- console.error('FT: You need to instantiate the form group.');
2093
+ console.error('Spiderly: You need to instantiate the form group.');
2099
2094
  Object.keys(modelConstructor).forEach((formControlName) => {
2100
2095
  let formControl;
2101
2096
  const formControlValue = modelConstructor[formControlName];
@@ -2108,13 +2103,14 @@ class BaseFormService {
2108
2103
  }
2109
2104
  formControl.label = formControlName;
2110
2105
  formControl.labelForDisplay = this.getTranslatedLabel(formControlName);
2106
+ formControl.parentClassName = modelConstructor.typeName;
2111
2107
  formGroup.setControl(formControlName, formControl); // FT: Use setControl because it will update formControl if it already exists
2112
2108
  this.validatorService.setValidator(formControl, modelConstructor.typeName);
2113
2109
  });
2114
2110
  return formGroup;
2115
2111
  };
2116
2112
  //#region Helpers
2117
- // FT: If you want to call single method
2113
+ // If you want to call single method
2118
2114
  this.checkFormGroupValidity = (formGroup) => {
2119
2115
  if (formGroup.invalid) {
2120
2116
  Object.keys(formGroup.controls).forEach(key => {
@@ -2374,7 +2370,7 @@ class BaseFormCopy {
2374
2370
  formArray.clear();
2375
2371
  }
2376
2372
  else {
2377
- // 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.
2378
2374
  // console.error(`You returned empty array for control: ${formArray.translationKey}.`);
2379
2375
  }
2380
2376
  res[key].forEach((model) => {
@@ -2394,7 +2390,7 @@ class BaseFormCopy {
2394
2390
  }
2395
2391
  }
2396
2392
  else {
2397
- // FT: It's okay to do this.
2393
+ // It's okay to do this.
2398
2394
  // console.error('You returned something that is not in the save DTO.');
2399
2395
  }
2400
2396
  });
@@ -2412,7 +2408,6 @@ class BaseFormCopy {
2412
2408
  };
2413
2409
  this.rerouteToSavedObject = (rerouteId) => {
2414
2410
  if (rerouteId == null) {
2415
- // console.error('You do not have rerouteId in your DTO.')
2416
2411
  const currentUrl = this.router.url;
2417
2412
  const parentUrl = getParentUrl(currentUrl);
2418
2413
  this.router.navigateByUrl(parentUrl);
@@ -3089,16 +3084,17 @@ class NotFoundComponent {
3089
3084
  constructor(config) {
3090
3085
  this.config = config;
3091
3086
  this.companyName = this.config.companyName;
3087
+ this.logoPath = this.config.logoPath;
3092
3088
  }
3093
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 }); }
3094
- 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"] }] }); }
3095
3091
  }
3096
3092
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: NotFoundComponent, decorators: [{
3097
3093
  type: Component,
3098
3094
  args: [{ selector: 'not-found', imports: [
3099
3095
  RouterModule,
3100
3096
  ButtonModule,
3101
- ], 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>" }]
3102
3098
  }], ctorParameters: () => [{ type: ConfigBaseService }] });
3103
3099
 
3104
3100
  class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {
@@ -3150,6 +3146,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3150
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" }]
3151
3147
  }], ctorParameters: () => [{ type: i1$6.DynamicDialogRef }, { type: i1$6.DynamicDialogConfig }] });
3152
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
+
3153
3159
  class SpiderlyDataTableComponent {
3154
3160
  constructor(router, dialogService, route, messageService, translocoService, locale) {
3155
3161
  this.router = router;
@@ -3160,19 +3166,19 @@ class SpiderlyDataTableComponent {
3160
3166
  this.locale = locale;
3161
3167
  this.tableIcon = 'pi pi-list';
3162
3168
  this.rows = 10;
3163
- this.showPaginator = true; // FT: Pass only when hasLazyLoad === false
3164
- this.showCardWrapper = true;
3169
+ this.showPaginator = true; // Pass only when hasLazyLoad === false
3170
+ this.showCardWrapper = false;
3165
3171
  this.readonly = false;
3166
3172
  this.onTotalRecordsChange = new EventEmitter();
3167
3173
  this.loading = true;
3168
3174
  this.newlySelectedItems = [];
3169
- this.fakeSelectedItems = []; // FT: Only for showing checkboxes, we will not send this to the backend
3170
- 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
3171
3177
  this.unselectedItems = [];
3172
3178
  this.onLazyLoad = new EventEmitter();
3173
3179
  this.rowsSelectedNumber = 0;
3174
3180
  this.isAllSelected = null;
3175
- 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
3176
3182
  this.isFirstTimeLazyLoad = true;
3177
3183
  this.onIsAllSelectedChange = new EventEmitter();
3178
3184
  this.matchModeDateOptions = [];
@@ -3181,22 +3187,22 @@ class SpiderlyDataTableComponent {
3181
3187
  this.showExportToExcelButton = true;
3182
3188
  this.showReloadTableButton = false;
3183
3189
  this.hasLazyLoad = true;
3184
- this.selectedItemIds = []; // FT: Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields
3185
- 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
3186
3192
  this.onRowSelect = new EventEmitter();
3187
3193
  this.onRowUnselect = new EventEmitter();
3188
3194
  this.clientFilterCount = 0;
3189
3195
  }
3190
3196
  ngOnInit() {
3191
3197
  this.matchModeDateOptions = [
3192
- { label: this.translocoService.translate('OnDate'), value: 'equals' },
3193
- { label: this.translocoService.translate('DatesBefore'), value: 'dateBefore' },
3194
- { 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 },
3195
3201
  ];
3196
3202
  this.matchModeNumberOptions = [
3197
- { label: this.translocoService.translate('Equals'), value: 'equals' },
3198
- { label: this.translocoService.translate('MoreThan'), value: 'gte' },
3199
- { 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 },
3200
3206
  ];
3201
3207
  if (this.hasLazyLoad === false) {
3202
3208
  this.clientLoad();
@@ -3223,10 +3229,10 @@ class SpiderlyDataTableComponent {
3223
3229
  if (this.isAllSelected == true) {
3224
3230
  let idsToInsert = [...this.items.map(x => x.id)];
3225
3231
  idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);
3226
- 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
3227
3233
  }
3228
3234
  else if (this.isAllSelected == false) {
3229
- 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
3230
3236
  }
3231
3237
  else if (this.isAllSelected == null) {
3232
3238
  let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];
@@ -3257,7 +3263,7 @@ class SpiderlyDataTableComponent {
3257
3263
  }
3258
3264
  filter(event) {
3259
3265
  if (this.hasLazyLoad && this.selectionMode === 'multiple')
3260
- 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
3261
3267
  if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {
3262
3268
  if (this.clientFilterCount === 0) {
3263
3269
  this.loadFormArrayItems();
@@ -3309,15 +3315,15 @@ class SpiderlyDataTableComponent {
3309
3315
  getColMatchMode(filterType) {
3310
3316
  switch (filterType) {
3311
3317
  case 'text':
3312
- return 'contains';
3318
+ return MatchModeCodes.Contains;
3313
3319
  case 'date':
3314
- return null;
3320
+ return MatchModeCodes.Equals;
3315
3321
  case 'multiselect':
3316
- return 'in';
3322
+ return MatchModeCodes.In;
3317
3323
  case 'boolean':
3318
- return 'equals';
3324
+ return MatchModeCodes.Equals;
3319
3325
  case 'numeric':
3320
- return null;
3326
+ return MatchModeCodes.Equals;
3321
3327
  default:
3322
3328
  return null;
3323
3329
  }
@@ -3398,7 +3404,7 @@ class SpiderlyDataTableComponent {
3398
3404
  case 'boolean':
3399
3405
  return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');
3400
3406
  case 'numeric':
3401
- // TODO FT: make decimal pipe
3407
+ // TODO make decimal pipe
3402
3408
  return rowData[col.field];
3403
3409
  default:
3404
3410
  return null;
@@ -3476,7 +3482,7 @@ class SpiderlyDataTableComponent {
3476
3482
  this.rowsSelectedNumber++;
3477
3483
  const index = this.unselectedItems.indexOf(id);
3478
3484
  if (index !== -1) {
3479
- this.unselectedItems.splice(index, 1); // FT: Splice is mutating the array
3485
+ this.unselectedItems.splice(index, 1); // Splice is mutating the array
3480
3486
  }
3481
3487
  this.setFakeIsAllSelected();
3482
3488
  }
@@ -3489,19 +3495,19 @@ class SpiderlyDataTableComponent {
3489
3495
  const fakeIndex = this.fakeSelectedItems.indexOf(id);
3490
3496
  const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);
3491
3497
  if (index !== -1) {
3492
- this.newlySelectedItems.splice(index, 1); // FT: Splice is mutating the array
3498
+ this.newlySelectedItems.splice(index, 1); // Splice is mutating the array
3493
3499
  }
3494
3500
  if (fakeIndex !== -1) {
3495
- this.fakeSelectedItems.splice(fakeIndex, 1); // FT: Splice is mutating the array
3501
+ this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array
3496
3502
  }
3497
3503
  if (nonLazyLoadIndex !== -1) {
3498
- this.selectedItemIds.splice(nonLazyLoadIndex, 1); // FT: Splice is mutating the array
3504
+ this.selectedItemIds.splice(nonLazyLoadIndex, 1); // Splice is mutating the array
3499
3505
  }
3500
3506
  this.setFakeIsAllSelected();
3501
3507
  }
3502
3508
  //#endregion
3503
3509
  //#region Client side table
3504
- // 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.
3505
3511
  getFormArrayControlByIndex(formControlName, index) {
3506
3512
  if (this.getFormControl) {
3507
3513
  return this.getFormControl(formControlName, index, this.additionalIndexes);
@@ -3511,7 +3517,7 @@ class SpiderlyDataTableComponent {
3511
3517
  }
3512
3518
  }
3513
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 }); }
3514
- 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: "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$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
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"] }] }); }
3515
3521
  }
3516
3522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: SpiderlyDataTableComponent, decorators: [{
3517
3523
  type: Component,
@@ -3525,7 +3531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3525
3531
  MultiSelectModule,
3526
3532
  CheckboxModule,
3527
3533
  TooltipModule,
3528
- ], 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"] }]
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"] }]
3529
3535
  }], ctorParameters: () => [{ type: i3.Router }, { type: i1$6.DialogService }, { type: i3.ActivatedRoute }, { type: SpiderlyMessageService }, { type: i1$2.TranslocoService }, { type: undefined, decorators: [{
3530
3536
  type: Inject,
3531
3537
  args: [LOCALE_ID]
@@ -3631,6 +3637,158 @@ class AllClickEvent {
3631
3637
  }
3632
3638
  }
3633
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
+
3634
3792
  class SidebarMenuService {
3635
3793
  constructor() {
3636
3794
  this.menuSource = new Subject();
@@ -3838,14 +3996,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3838
3996
  type: Input
3839
3997
  }] } });
3840
3998
 
3841
- class AppTopBarComponent {
3842
- constructor(layoutService, authService, apiService, router, translocoService, config) {
3999
+ class ProfileAvatarComponent {
4000
+ constructor(layoutService, authService, router, translocoService, config) {
3843
4001
  this.layoutService = layoutService;
3844
4002
  this.authService = authService;
3845
- this.apiService = apiService;
3846
4003
  this.router = router;
3847
4004
  this.translocoService = translocoService;
3848
4005
  this.config = config;
4006
+ this.isSideMenuLayout = true;
3849
4007
  this.initTopBarSubscription = null;
3850
4008
  this.menuItems = [];
3851
4009
  this.showProfileIcon = false;
@@ -3860,7 +4018,6 @@ class AppTopBarComponent {
3860
4018
  this.onAfterNgOnInit = () => {
3861
4019
  this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {
3862
4020
  this.userProfilePath = initTopBarData.userProfilePath;
3863
- this.companyName = initTopBarData.companyName;
3864
4021
  this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;
3865
4022
  this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;
3866
4023
  this.showProfileIcon = initTopBarData.showProfileIcon;
@@ -3880,13 +4037,6 @@ class AppTopBarComponent {
3880
4037
  }
3881
4038
  },
3882
4039
  this.notificationMenuItem,
3883
- // {
3884
- // label: this.translocoService.translate('Settings'),
3885
- // icon: 'pi-cog',
3886
- // onClick: () => {
3887
- // this.router.navigateByUrl(`/administration/users`);
3888
- // }
3889
- // },
3890
4040
  {
3891
4041
  label: this.translocoService.translate('Logout'),
3892
4042
  icon: 'pi-sign-out',
@@ -3918,20 +4068,21 @@ class AppTopBarComponent {
3918
4068
  this.initTopBarSubscription.unsubscribe();
3919
4069
  }
3920
4070
  }
3921
- 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 }); }
3922
- 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: 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: i8.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i9$1.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }] }); }
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"] }] }); }
3923
4073
  }
3924
- 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: [{
3925
4075
  type: Component,
3926
- args: [{ selector: 'topbar', imports: [
4076
+ args: [{ selector: 'spiderly-profile-avatar', imports: [
3927
4077
  CommonModule,
3928
4078
  RouterModule,
3929
4079
  AvatarModule,
3930
4080
  BadgeModule,
3931
- ], 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 " }]
3932
- }], ctorParameters: () => [{ type: LayoutBaseService }, { type: AuthBaseService }, { type: ApiSecurityService }, { type: i3.Router }, { type: i1$2.TranslocoService }, { type: ConfigBaseService }], propDecorators: { menuButton: [{
3933
- type: ViewChild,
3934
- args: ['menubutton']
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
3935
4086
  }], menu: [{
3936
4087
  type: ViewChild,
3937
4088
  args: ['topbarmenu']
@@ -3940,19 +4091,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
3940
4091
  args: ['topbarprofiledropdownmenubutton']
3941
4092
  }] } });
3942
4093
 
3943
- 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 {
3944
4152
  constructor(layoutService, renderer, router) {
3945
4153
  this.layoutService = layoutService;
3946
4154
  this.renderer = renderer;
3947
4155
  this.router = router;
4156
+ this.menu = [];
4157
+ this.sideMenu = [];
4158
+ this.topMenu = [];
4159
+ this.isSideMenuLayout = true;
3948
4160
  this.onAfterNgDestroy = () => { };
3949
4161
  this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {
3950
4162
  if (!this.menuOutsideClickListener) {
3951
4163
  this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {
3952
- const isOutsideClicked = !(this.appSidebar.el.nativeElement.isSameNode(event.target) ||
3953
- this.appSidebar.el.nativeElement.contains(event.target) ||
3954
- this.appTopbar.menuButton.nativeElement.isSameNode(event.target) ||
3955
- 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) ||
3956
4168
  (event.target.closest('.p-autocomplete-items')) ||
3957
4169
  (event.target.closest('.p-autocomplete-clear-icon')));
3958
4170
  if (isOutsideClicked) {
@@ -3962,8 +4174,8 @@ class LayoutBaseComponent {
3962
4174
  }
3963
4175
  if (!this.profileMenuOutsideClickListener) {
3964
4176
  this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {
3965
- const isOutsideClicked = !(this.appTopbar.menu.nativeElement.isSameNode(event.target) ||
3966
- this.appTopbar.menu.nativeElement.contains(event.target));
4177
+ const isOutsideClicked = !(this.topbarmenu?.nativeElement.isSameNode(event.target) ||
4178
+ this.topbarmenu?.nativeElement.contains(event.target));
3967
4179
  if (isOutsideClicked) {
3968
4180
  this.hideProfileMenu();
3969
4181
  }
@@ -3979,6 +4191,14 @@ class LayoutBaseComponent {
3979
4191
  this.hideProfileMenu();
3980
4192
  });
3981
4193
  }
4194
+ ngOnInit() {
4195
+ if (this.isSideMenuLayout) {
4196
+ this.sideMenu = [...this.menu];
4197
+ }
4198
+ else {
4199
+ this.topMenu = [...this.menu[0].items];
4200
+ }
4201
+ }
3982
4202
  hideMenu() {
3983
4203
  this.layoutService.state.overlayMenuActive = false;
3984
4204
  this.layoutService.state.staticMenuMobileActive = false;
@@ -4035,22 +4255,32 @@ class LayoutBaseComponent {
4035
4255
  }
4036
4256
  this.onAfterNgDestroy();
4037
4257
  }
4038
- 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 }); }
4039
- 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"] }] }); }
4040
4260
  }
4041
- 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: [{
4042
4262
  type: Component,
4043
- args: [{
4044
- selector: 'layout-base',
4045
- template: '',
4046
- standalone: true
4047
- }]
4048
- }], 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: [{
4049
4276
  type: ViewChild,
4050
4277
  args: [AppSidebarComponent]
4051
- }], appTopbar: [{
4278
+ }], sidemenuTopbar: [{
4279
+ type: ViewChild,
4280
+ args: [SideMenuTopBarComponent]
4281
+ }], topbarmenu: [{
4052
4282
  type: ViewChild,
4053
- args: [AppTopBarComponent]
4283
+ args: ['topbarmenu']
4054
4284
  }] } });
4055
4285
 
4056
4286
  // FT HACK: Fake class, because of api imports
@@ -4370,6 +4600,22 @@ const unauthorizedInterceptor = (req, next) => {
4370
4600
  }));
4371
4601
  };
4372
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
+
4373
4619
  /*
4374
4620
  * Public API Surface of spiderly
4375
4621
  */
@@ -4378,5 +4624,5 @@ const unauthorizedInterceptor = (req, next) => {
4378
4624
  * Generated bundle index. Do not edit.
4379
4625
  */
4380
4626
 
4381
- 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, 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 };
4382
4628
  //# sourceMappingURL=spiderly.mjs.map