{"version":3,"file":"ngx-wapping-components.mjs","sources":["../../../projects/wapping-components/src/lib/wapping-components.service.ts","../../../projects/wapping-components/src/lib/wapping-components.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-input-text/wapp-edit-input-text.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-input-text/wapp-edit-input-text.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-input-numeric/wapp-edit-input-numeric.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-input-numeric/wapp-edit-input-numeric.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-textarea/wapp-edit-textarea.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-textarea/wapp-edit-textarea.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-select/wapp-edit-select.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-select/wapp-edit-select.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-chips/wapp-edit-chips.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-chips/wapp-edit-chips.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-calendar/wapp-edit-calendar.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-calendar/wapp-edit-calendar.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-radio-button/wapp-edit-radio-button.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-radio-button/wapp-edit-radio-button.component.html","../../../projects/wapping-components/src/lib/edit/wapp-edit-slide-toggle/wapp-edit-slide-toggle.component.ts","../../../projects/wapping-components/src/lib/edit/wapp-edit-slide-toggle/wapp-edit-slide-toggle.component.html","../../../projects/wapping-components/src/lib/view/wapp-view-badge/wapp-view-badge.component.ts","../../../projects/wapping-components/src/lib/view/wapp-view-badge/wapp-view-badge.component.html","../../../projects/wapping-components/src/lib/view/wapp-view-card-title-text/wapp-view-card-title-text.component.ts","../../../projects/wapping-components/src/lib/view/wapp-view-card-title-text/wapp-view-card-title-text.component.html","../../../projects/wapping-components/src/lib/view/wapp-view-boolean/wapp-view-boolean.component.ts","../../../projects/wapping-components/src/lib/view/wapp-view-boolean/wapp-view-boolean.component.html","../../../projects/wapping-components/src/lib/view/wapp-view-text/wapp-view-text.component.ts","../../../projects/wapping-components/src/lib/view/wapp-view-text/wapp-view-text.component.html","../../../projects/wapping-components/src/lib/shared/models/enums.model.ts","../../../projects/wapping-components/src/lib/misc/wapp-button-back/wapp-button-back.component.ts","../../../projects/wapping-components/src/lib/misc/wapp-button-back/wapp-button-back.component.html","../../../projects/wapping-components/src/lib/tables/wapp-table/wapp-table.component.ts","../../../projects/wapping-components/src/lib/tables/wapp-table/wapp-table.component.html","../../../projects/wapping-components/src/lib/tables/wapp-table-lazy-loading/wapp-table-lazy-loading.component.ts","../../../projects/wapping-components/src/lib/tables/wapp-table-lazy-loading/wapp-table-lazy-loading.component.html","../../../projects/wapping-components/src/lib/misc/wapp-wizard/wapp-wizard.component.ts","../../../projects/wapping-components/src/lib/misc/wapp-wizard/wapp-wizard.component.html","../../../projects/wapping-components/src/lib/menu/wapp-touch-menu/wapp-touch-menu.component.ts","../../../projects/wapping-components/src/lib/menu/wapp-touch-menu/wapp-touch-menu.component.html","../../../projects/wapping-components/src/lib/report/wapp-powerbi-report/wapp-powerbi-report.component.ts","../../../projects/wapping-components/src/lib/report/wapp-powerbi-report/wapp-powerbi-report.component.html","../../../projects/wapping-components/src/lib/image/wapp-preview-image/wapp-preview-image.component.ts","../../../projects/wapping-components/src/lib/image/wapp-preview-image/wapp-preview-image.component.html","../../../projects/wapping-components/src/lib/shared/service/modal/modal.service.ts","../../../projects/wapping-components/src/lib/image/wapp-image-cropper/wapp-image-cropper.component.ts","../../../projects/wapping-components/src/lib/image/wapp-image-cropper/wapp-image-cropper.component.html","../../../projects/wapping-components/src/lib/file/wapp-image-file-uploader/wapp-image-file-uploader.component.ts","../../../projects/wapping-components/src/lib/file/wapp-image-file-uploader/wapp-image-file-uploader.component.html","../../../projects/wapping-components/src/lib/shared/models/filter-panel/query-results.model.ts","../../../projects/wapping-components/src/lib/shared/service/api/api.service.ts","../../../projects/wapping-components/src/lib/misc/wapp-filter-panel/list-field/list-field.component.ts","../../../projects/wapping-components/src/lib/misc/wapp-filter-panel/list-field/list-field.component.html","../../../projects/wapping-components/src/lib/misc/wapp-filter-panel/wapp-filter-panel.component.ts","../../../projects/wapping-components/src/lib/misc/wapp-filter-panel/wapp-filter-panel.component.html","../../../projects/wapping-components/src/lib/maps/wapp-maps/wapp-maps.component.ts","../../../projects/wapping-components/src/lib/maps/wapp-maps/wapp-maps.component.html","../../../projects/wapping-components/src/lib/wapping-components.module.ts","../../../projects/wapping-components/src/public-api.ts","../../../projects/wapping-components/src/ngx-wapping-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WappingComponentsService {\n\n  constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-wapping-components',\n  template: `\n    <p>\n      wapping-components works!\n    </p>\n  `,\n  styles: [\n  ]\n})\nexport class WappingComponentsComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { FormControlName, NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-input-text',\r\n  templateUrl: './wapp-edit-input-text.component.html',\r\n  styleUrls: ['./wapp-edit-input-text.component.css']\r\n})\r\nexport class WappEditInputTextComponent implements OnInit {\r\n  value: string = \"\";\r\n\r\n  @Input('inputValue') inputValue: string = \"\";\r\n  @Output('onValue') onValueEvent = new EventEmitter<string>();\r\n\r\n  @Input('label') label : string = \"\";\r\n  @Input('placeholder') placeholder : string = \"\";\r\n  @Input('helpDescription') helpDescription : string = \"\";\r\n  \r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription : string = \"Mensaje default required\";\r\n\r\n  @Input('isDisabled') isDisabled: boolean = false;\r\n\r\n  @Input('pattern') pattern : string = \"\";\r\n  @Input('patternErrorDescription') patternErrorDescription : string = \"Mensaje default pattern\";\r\n  \r\n  @Input('minlength') minlength!: number;\r\n  @Input('minlengthErrorDescription') minlengthErrorDescription : string = \"Mensaje default min\";\r\n\r\n  @Input('maxlength') maxlength! : number;\r\n  @Input('maxlengthErrorDescription') maxlengthErrorDescription : string = \"Mensaje default max\";\r\n\r\n  @Input('autofocus') autofocus : boolean = false;\r\n\r\n  formControl : any;\r\n\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n\r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n     \r\n  ngOnInit(): void {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  onValue(){\r\n    this.onValueEvent.emit(this.inputValue);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"field p-fluid pt-3\">\r\n    <span class=\"p-float-label\">\r\n        <input pInputText type=\"text\" \r\n            [ngClass]=\"{'ng-invalid ng-dirty': formControl.hasError('required') && formControl.touched}\"\r\n            placeholder=\"{{placeholder}}\"\r\n            [required]=\"isRequired\"\r\n            [formControl]=\"formControl\"\r\n            pattern=\"{{pattern}}\"\r\n            [minlength]=\"minlength\"\r\n            [maxlength]=\"maxlength\" \r\n            [autofocus]=\"autofocus\">\r\n        <label>{{label}}</label>\r\n    </span>\r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('pattern')\" class=\"p-error block\">{{patternErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('minlength')\" class=\"p-error block\">{{minlengthErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('maxlength')\" class=\"p-error block\">{{maxlengthErrorDescription}}</small>\r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"field p-fluid pt-3\">\r\n        <span class=\"p-float-label\">\r\n            <input pInputText type=\"text\" \r\n                [(ngModel)]=\"inputValue\"\r\n                [disabled]=\"isDisabled\"\r\n                placeholder=\"{{placeholder}}\"\r\n                pattern=\"{{pattern}}\"\r\n                [minlength]=\"minlength\"\r\n                [maxlength]=\"maxlength\" \r\n                [autofocus]=\"autofocus\" \r\n                (input)=\"onValue()\">\r\n            <label>{{label}}</label>\r\n        </span>\r\n    </div>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, FormControlName } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-input-numeric',\r\n  templateUrl: './wapp-edit-input-numeric.component.html',\r\n  styleUrls: ['./wapp-edit-input-numeric.component.css']\r\n})\r\nexport class WappEditInputNumericComponent implements OnInit, ControlValueAccessor {\r\n  value: number = 0;\r\n  \r\n  @Input('inputValue') inputValue: number = 0;\r\n  @Output('onValue') onValueEvent = new EventEmitter<number>();\r\n\r\n  @Input('label') label: string = \"Default Label\";\r\n  @Input('placeholder') placeholder: string = \"\";\r\n\r\n  @Input('mode') mode: string = \"decimal\";\r\n  @Input('minFractionDigits') minFractionDigits!: number;\r\n  @Input('maxFractionDigits') maxFractionDigits!: number;\r\n  @Input('currency') currency: string = \"EUR\";\r\n  @Input('prefix') prefix: string = \"\";\r\n  @Input('suffix') suffix: string = \"\";\r\n  @Input('stepMode') stepMode: boolean = false;\r\n  @Input('step') step: number = 1;\r\n  @Input('min') min!: number;\r\n  @Input('max') max!: number;\r\n  @Input('useGrouping') useGrouping: boolean = true;\r\n\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription: string = \"Default required error description\";\r\n  @Input('minErrorDescription') minErrorDescription: string = \"Default min error description\";\r\n  @Input('maxErrorDescription') maxErrorDescription: string = \"Default max error description\";\r\n\r\n  formControl : any;\r\n\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n\r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) {\r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  } \r\n\r\n  onValue(){\r\n    this.onValueEvent.emit(this.inputValue);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"field p-fluid pt-3\">\r\n    <span class=\"p-float-label\">\r\n        <p-inputNumber styleClass=\"w-full\"\r\n            [ngClass]=\"{'ng-invalid ng-dirty': formControl.hasError('required') && formControl.touched}\"\r\n            placeholder=\"{{placeholder}}\"\r\n            mode=\"{{mode}}\"\r\n            [minFractionDigits]=\"minFractionDigits\" \r\n            [maxFractionDigits]=\"maxFractionDigits\" \r\n            [prefix]=\"prefix\" \r\n            [suffix]=\"suffix\" \r\n            currency=\"{{currency}}\" \r\n            [showButtons]=\"stepMode\" \r\n            [step]=\"step\"\r\n            [min]=\"min\" \r\n            [max]=\"max\" \r\n            [required]=\"isRequired\" \r\n            [useGrouping]=\"useGrouping\"\r\n            [formControl]=\"formControl\">\r\n        </p-inputNumber>\r\n        <label> {{label}} </label>\r\n    </span> \r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n    <small *ngIf=\"formControl.hasError('min')\" class=\"p-error block\">{{minErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('max')\" class=\"p-error block\">{{maxErrorDescription}}</small>\r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"field p-fluid pt-3\">\r\n        <span class=\"p-float-label\">\r\n            <p-inputNumber styleClass=\"w-full\" \r\n                [(ngModel)]=\"inputValue\"\r\n                placeholder=\"{{placeholder}}\"\r\n                mode=\"{{mode}}\"\r\n                [minFractionDigits]=\"minFractionDigits\" \r\n                [maxFractionDigits]=\"maxFractionDigits\" \r\n                [prefix]=\"prefix\" \r\n                [suffix]=\"suffix\" \r\n                currency=\"{{currency}}\" \r\n                [showButtons]=\"stepMode\" \r\n                [step]=\"step\"\r\n                [min]=\"min\" \r\n                [max]=\"max\" \r\n                [useGrouping]=\"useGrouping\" \r\n                (ngModelChange)=\"onValue()\">\r\n            </p-inputNumber>\r\n            <label> {{label}} </label>\r\n        </span> \r\n    </div>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControlName, NgControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-textarea',\r\n  templateUrl: './wapp-edit-textarea.component.html',\r\n  styleUrls: ['./wapp-edit-textarea.component.css']\r\n})\r\nexport class WappEditTextareaComponent implements OnInit, ControlValueAccessor {\r\n  value: string = \"\";\r\n\r\n  @Input('inputValue') inputValue: string = \"\";\r\n  @Output('onValue') onValueEvent = new EventEmitter<string>();\r\n\r\n  @Input('label') label: string = \"Default Label\";\r\n  @Input('placeholder') placeholder: string = \"\";\r\n  \r\n  @Input('rows') rows: number = 2;\r\n  @Input('minlength') minlength!: number;\r\n  @Input('maxlength') maxlength! : number;\r\n  @Input('autoResize') autoResize: boolean = false;\r\n  @Input('pattern') pattern: string = \"\";\r\n\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription: string = \"Default required error description\";\r\n  @Input('minlengthErrorDescription') minlengthErrorDescription : string = \"Mensaje default min\";\r\n  @Input('maxlengthErrorDescription') maxlengthErrorDescription : string = \"Mensaje default max\";\r\n  @Input('patternErrorDescription') patternErrorDescription: string = \"Default pattern error description\";\r\n\r\n  formControl : any;\r\n\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n\r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    } \r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;\r\n\r\n    if(this.pattern != '' && this.formControl != null){\r\n      this.formControl.setErrors(Validators.pattern(this.pattern));\r\n    }\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  onValue(){\r\n    this.onValueEvent.emit(this.inputValue);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"field p-fluid pt-3\">\r\n    <span class=\"p-float-label\">\r\n        <textarea pInputTextarea class=\"w-full\" \r\n            [ngClass]=\"{'ng-invalid ng-dirty': formControl.hasError('required') && formControl.touched}\"\r\n            placeholder=\"{{placeholder}}\"\r\n            rows=\"{{rows}}\" \r\n            minlength=\"{{minlength}}\" \r\n            maxlength=\"{{maxlength}}\"\r\n            [autoResize]=\"autoResize\" \r\n            [required]=\"isRequired\"\r\n            [formControl]=\"formControl\">\r\n        </textarea>\r\n        <label>{{label}}</label>\r\n    </span>\r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n    <small *ngIf=\"formControl.hasError('minlength')\" class=\"p-error block\">{{minlengthErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('maxlength')\" class=\"p-error block\">{{maxlengthErrorDescription}}</small>\r\n    <small *ngIf=\"formControl.hasError('pattern')\" class=\"p-error block\">{{patternErrorDescription}}</small>\r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"field p-fluid pt-3\">\r\n        <span class=\"p-float-label\">\r\n            <textarea pInputTextarea class=\"w-full\" \r\n                [(ngModel)]=\"inputValue\"\r\n                placeholder=\"{{placeholder}}\"\r\n                rows=\"{{rows}}\" \r\n                minlength=\"{{minlength}}\" \r\n                maxlength=\"{{maxlength}}\"\r\n                [autoResize]=\"autoResize\" \r\n                (ngModelChange)=\"onValue()\">\r\n            </textarea>\r\n            <label>{{label}}</label>\r\n        </span>\r\n    </div>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControlName, NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-select',\r\n  templateUrl: './wapp-edit-select.component.html',\r\n  styleUrls: ['./wapp-edit-select.component.css']\r\n})\r\nexport class WappEditSelectComponent implements OnInit, ControlValueAccessor {\r\n  value: any = null;\r\n\r\n  @Input('selectedValue') selectedValue: any = 0;\r\n\r\n  @Input('label') label: string = \"Default Label\";\r\n  @Input('placeholder') placeholder: string = \"\";\r\n  @Input('optionLabel') optionLabel: string = \"\";\r\n  @Input('optionValue') optionValue: string = \"\";\r\n  @Input('options') options!: any[];\r\n  @Input('showClear') showClear: boolean = false;\r\n\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription: string = \"Default required error description\";\r\n\r\n  @Output('selectedOptionEvent')\r\n  selectedOptionEvent: EventEmitter<number> = new EventEmitter<any>();\r\n  \r\n  formControl : any;\r\n\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n  \r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  getSelectedOption(value: any){\r\n    this.selectedOptionEvent.emit(value);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"field p-fluid\">\r\n    <span class=\"p-float-label\">\r\n        <p-dropdown styleClass=\"w-full\" #dropDown\r\n            [ngClass]=\"{'ng-invalid ng-dirty': formControl.hasError('required') && formControl.touched}\"\r\n            (onChange)=\"getSelectedOption(dropDown.value)\"\r\n            [options]=\"options\" \r\n            placeholder=\"{{placeholder}}\"\r\n            optionLabel=\"{{optionLabel}}\" \r\n            optionValue=\"{{optionValue}}\" \r\n            [showClear]=\"showClear\" \r\n            [formControl]=\"formControl\" \r\n            [required]=\"isRequired\">\r\n        </p-dropdown>\r\n        <label>{{label}}</label>\r\n    </span>\r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"field p-fluid\">\r\n        <span class=\"p-float-label\">\r\n            <p-dropdown styleClass=\"w-full\" #dropDown \r\n                (onChange)=\"getSelectedOption(dropDown.value)\"\r\n                [options]=\"options\" \r\n                [(ngModel)]=\"selectedValue\"\r\n                placeholder=\"{{placeholder}}\"\r\n                optionLabel=\"{{optionLabel}}\" \r\n                optionValue=\"{{optionValue}}\" \r\n                [showClear]=\"showClear\">\r\n            </p-dropdown>\r\n            <label>{{label}}</label>\r\n        </span>\r\n    </div>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { NgControl, FormControlName, ControlValueAccessor } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-chips',\r\n  templateUrl: './wapp-edit-chips.component.html',\r\n  styleUrls: ['./wapp-edit-chips.component.css']\r\n})\r\nexport class WappEditChipsComponent implements OnInit, ControlValueAccessor {\r\n  value!: any[]; \r\n\r\n  @Input('selectedValues') selectedValues!: any[];\r\n\r\n  @Input('label') label!: string;  \r\n  @Input('placeholder') placeholder!: string;\r\n  @Input('allChips') allChips!: any[];\r\n  @Input('optionLabel') optionLabel!: string;\r\n  @Input('optionValue') optionValue!: string;\r\n\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription: string = \"Default required error description\";\r\n  @Input('activeFloatLabel') activeFloatLabel: boolean = true;\r\n\r\n  @Output('selectedChips') selectedChipsEvent : EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n  formControl: any;\r\n\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n\r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    if(this.controlName)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n\r\n  onSelectedChipsChange(selectedItems: any){\r\n    this.onTouch();\r\n    this.onChange(selectedItems);\r\n    this.selectedChipsEvent.emit(selectedItems);\r\n  }\r\n\r\n  writeValue(value: any[]): void {\r\n    this.value = value?.slice();\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\">\r\n    <div *ngIf=\"activeFloatLabel; then floatBlock else normalBlock\"></div>\r\n    <ng-template #floatBlock>\r\n        <div class=\"field p-fluid pt-3\">\r\n            <span class=\"p-float-label\">\r\n                <p-multiSelect [options]=\"allChips\" \r\n                            [formControl]=\"formControl\"\r\n                            (ngModelChange)=\"onSelectedChipsChange($event)\"\r\n                            defaultLabel=\"{{label}}\" \r\n                            optionLabel=\"{{optionLabel}}\" \r\n                            display=\"chip\" \r\n                            required=\"{{isRequired}}\" \r\n                            placeholder=\"{{placeholder}}\"\r\n                            appendTo=\"body\" >\r\n                </p-multiSelect>\r\n                <label>{{label}}</label>\r\n            </span>\r\n            <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n        </div>\r\n    </ng-template>\r\n    <ng-template #normalBlock>\r\n        <div class=\"field p-fluid\">\r\n            <label for=\"chipsLabel\">{{label}}</label>\r\n            <p-multiSelect inputId=\"chipsLabel\"\r\n                [options]=\"allChips\" \r\n                [formControl]=\"formControl\"\r\n                (ngModelChange)=\"onSelectedChipsChange($event)\"\r\n                defaultLabel=\"{{label}}\" \r\n                optionLabel=\"{{optionLabel}}\" \r\n                display=\"chip\" \r\n                required=\"{{isRequired}}\" \r\n                appendTo=\"body\" \r\n                placeholder=\"{{placeholder}}\"\r\n                [ngClass]=\"{'ng-invalid ng-dirty' : formControl.invalid && formControl.touched}\"> \r\n            </p-multiSelect>\r\n            <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n        </div>\r\n    </ng-template>\r\n</div>\r\n<ng-template #noNgControl>\r\n    <div *ngIf=\"activeFloatLabel; then floatBlock else normalBlock\"></div>\r\n    <ng-template #floatBlock>\r\n        <div class=\"field p-fluid pt-3\">\r\n            <span class=\"p-float-label\">\r\n                <p-multiSelect [options]=\"allChips\" \r\n                            [(ngModel)]=\"selectedValues\"\r\n                            (ngModelChange)=\"onSelectedChipsChange($event)\"\r\n                            defaultLabel=\"{{label}}\" \r\n                            optionLabel=\"{{optionLabel}}\" \r\n                            display=\"chip\" \r\n                            placeholder=\"{{placeholder}}\"\r\n                            appendTo=\"body\" >\r\n                </p-multiSelect>\r\n                <label>{{label}}</label>\r\n            </span>\r\n        </div>\r\n    </ng-template>\r\n    <ng-template #normalBlock>\r\n        <div class=\"field p-fluid\">\r\n            <label for=\"chipsLabel\">{{label}}</label>\r\n            <p-multiSelect inputId=\"chipsLabel\"\r\n                [options]=\"allChips\" \r\n                [(ngModel)]=\"selectedValues\"\r\n                (ngModelChange)=\"onSelectedChipsChange($event)\"\r\n                defaultLabel=\"{{label}}\" \r\n                optionLabel=\"{{optionLabel}}\" \r\n                display=\"chip\" \r\n                appendTo=\"body\" \r\n                placeholder=\"{{placeholder}}\"> \r\n            </p-multiSelect>\r\n        </div>\r\n    </ng-template>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { NgControl, FormControlName, ControlValueAccessor } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-calendar',\r\n  templateUrl: './wapp-edit-calendar.component.html',\r\n  styleUrls: ['./wapp-edit-calendar.component.css']\r\n})\r\nexport class WappEditCalendarComponent implements OnInit, ControlValueAccessor {\r\n  date!: Date;\r\n\r\n  @Input('inputDate') inputDate!: Date;\r\n  @Output('onValue') onValueEvent = new EventEmitter<Date>();\r\n\r\n  @Input('showTime') showTime: boolean = true;\r\n  @Input('showSeconds') showSeconds: boolean = true;\r\n  @Input('timeOnly') timeOnly: boolean = false;\r\n  @Input('showIcon') showIcon: boolean = true;\r\n  @Input('label') label: string = \"\";\r\n  @Input('minDate') minDate!: Date;\r\n  @Input('maxDate') maxDate!: Date;\r\n  \r\n  \r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription : string = \"Mensaje default required\";\r\n\r\n  formControl: any;\r\n\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n  \r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n  \r\n  writeValue(inputDate: Date) {\r\n    this.date = inputDate;\r\n  }\r\n  \r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  onValue(){\r\n    this.onValueEvent.emit(this.inputDate);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"field p-fluid\">\r\n    <span class=\"p-float-label\">\r\n        <p-calendar [ngClass]=\"{'ng-invalid ng-dirty': formControl.hasError('required') && formControl.touched}\"\r\n            [(ngModel)]=\"date\" inputId=\"time\" placeholder=\"{{label}}\"\r\n            [showTime]=\"showTime\" \r\n            [showSeconds]=\"showSeconds\" \r\n            [showIcon]=\"showIcon\"\r\n            [icon]=\"timeOnly ? 'pi pi-clock' : 'pi pi-calendar'\"\r\n            [minDate]=\"minDate\" \r\n            [maxDate]=\"maxDate\" \r\n            [required]=\"isRequired\" \r\n            [formControl]=\"formControl\" \r\n            [timeOnly]=\"timeOnly\">\r\n        </p-calendar>\r\n        <label>{{label}}</label>\r\n    </span>\r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"field p-fluid\">\r\n        <span class=\"p-float-label\">\r\n            <p-calendar \r\n                [(ngModel)]=\"inputDate\" inputId=\"time\" placeholder=\"{{label}}\"\r\n                [showTime]=\"showTime\" \r\n                [timeOnly]=\"timeOnly\">\r\n                [showSeconds]=\"showSeconds\" \r\n                [showIcon]=\"showIcon\"\r\n                [icon]=\"timeOnly ? 'pi pi-clock' : 'pi pi-calendar'\"\r\n                [minDate]=\"minDate\" \r\n                [maxDate]=\"maxDate\" \r\n                (onSelect)=\"onValue()\">\r\n            </p-calendar>\r\n            <label>{{label}}</label>\r\n        </span>\r\n    </div> \r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControlName, NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-radio-button',\r\n  templateUrl: './wapp-edit-radio-button.component.html',\r\n  styleUrls: ['./wapp-edit-radio-button.component.css']\r\n})\r\nexport class WappEditRadioButtonComponent implements OnInit {\r\n\r\n  selectedOption: any;\r\n  selectedIndex = 0;\r\n  isDisabled: boolean = false;\r\n  isTouched : boolean = false;\r\n\r\n  @Input('defaultValue') defaultValue : any;\r\n  @Output('onValue') onValueEvent = new EventEmitter<any>();\r\n\r\n  @Input('radioGroupTitle') radioGroupTitle!: string;\r\n  \r\n  @Input('helpMessage') helpMessage!: string;\r\n  @Input('radioGroupElements') radioGroupElements: any[] = [];\r\n\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  @Input('requiredErrorDescription') requiredErrorDescription: string = \"Default required error description\";\r\n  \r\n  formControl: any;\r\n\r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) { \r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    if(this.controlName)\r\n      this.formControl = this.controlName.control;\r\n  }\r\n\r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n\r\n  writeValue(obj: any): void {\r\n    this.selectedOption = obj;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n  }\r\n\r\n  onValue(){\r\n    this.onValueEvent.emit(this.defaultValue);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\">\r\n    <h5>{{radioGroupTitle}}</h5>\r\n    <div *ngFor=\"let option of radioGroupElements\" class=\"field-checkbox\">\r\n        <p-radioButton [inputId]=\"option.key\" \r\n                    [value]=\"option\" \r\n                    ngDefaultControl \r\n                    [required]=\"isRequired\" \r\n                    [formControl]=\"formControl\">\r\n        </p-radioButton>\r\n        <label class=\"wapp-edit-radio-button-label\" [for]=\"option.key\">{{option.name}}</label>\r\n    </div>\r\n    <small *ngIf=\"formControl.hasError('required') && formControl.touched\" class=\"p-error block\">{{requiredErrorDescription}}</small> \r\n</div>\r\n<ng-template #noNgControl>\r\n    <h5>{{radioGroupTitle}}</h5>\r\n    <div *ngFor=\"let option of radioGroupElements\" class=\"field-checkbox\">\r\n        <p-radioButton [inputId]=\"option.key\" \r\n                    [(ngModel)]=\"defaultValue\" \r\n                    [value]=\"option\" \r\n                    ngDefaultControl \r\n                    (onClick)=\"onValue()\">\r\n        </p-radioButton>\r\n        <label class=\"wapp-edit-radio-button-label\" [for]=\"option.key\">{{option.name}}</label>\r\n    </div>\r\n</ng-template>","import { Component, EventEmitter, forwardRef, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { FormControl, FormControlName, NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'wapp-edit-slide-toggle',\r\n  templateUrl: './wapp-edit-slide-toggle.component.html',\r\n  styleUrls: ['./wapp-edit-slide-toggle.component.css']\r\n})\r\nexport class WappEditSlideToggleComponent implements OnInit {\r\n  @Input('label') label?: string;  \r\n  @Input('textToggle') textToggle: string = '';\r\n  @Input('value') value: boolean = false;\r\n  @Input('helpDescription') helpDescription: string = '';\r\n  @Input('isDisabled') isDisabled: boolean = false;\r\n  @Input('isRequired') isRequired: boolean = false;\r\n  \r\n  formControl: any;\r\n  _isRequired: boolean = false;\r\n\r\n  @Output('toggleState')\r\n  toggleState: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  isTouched : boolean = false;\r\n  \r\n  onChange = (_:any) => { }\r\n  onTouch = () => { }\r\n  \r\n  constructor(@Optional() @Self() public ngControl: NgControl, @Optional() private controlName: FormControlName) {\r\n    if (ngControl != null) {\r\n      ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n  \r\n  ngOnInit() {\r\n    if(this.controlName != null)\r\n      this.formControl = this.controlName.control;    \r\n  }\r\n  \r\n  writeValue(obj: any): void {\r\n    this.value = obj;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouch: any): void {\r\n    this.onTouch = onTouch;\r\n  }\r\n\r\n  onInput(obj: any){\r\n    this.value = obj;\r\n    this.toggleState.emit(this.value);\r\n    this.onTouch();\r\n    this.onChange(this.value);\r\n  }\r\n}\r\n","<div *ngIf=\"ngControl != null; else noNgControl\" class=\"flex flex-row align-items-center gap-2\">\r\n    <p-inputSwitch id=\"toggle\"\r\n                   class=\"flex align-items-center\"\r\n                   [formControl]=\"formControl\"\r\n                   required=\"{{isRequired}}\"\r\n                   (ngModelChange)=\"onInput($event)\">\r\n    </p-inputSwitch>\r\n    <label for=\"toggle\">{{label}}</label>\r\n</div>\r\n<ng-template #noNgControl>\r\n    <div class=\"flex flex-row align-items-center gap-2\">\r\n        <p-inputSwitch id=\"toggle\"\r\n                       class=\"flex align-items-center\"\r\n                       [(ngModel)]=\"value\"\r\n                       (ngModelChange)=\"onInput($event)\">\r\n        </p-inputSwitch>\r\n        <label for=\"toggle\">{{label}}</label>\r\n    </div>\r\n</ng-template>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wapp-view-badge',\r\n  templateUrl: './wapp-view-badge.component.html',\r\n  styleUrls: ['./wapp-view-badge.component.css']\r\n})\r\nexport class WappViewBadgeComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  @Input('label') label: string = \"\";\r\n  @Input('color') color: string = \"\";\r\n  \r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<span [class]=\"'badge color-' + color\">\r\n    {{label}}\r\n</span>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wapp-view-card-title-text',\r\n  templateUrl: './wapp-view-card-title-text.component.html',\r\n  styleUrls: ['./wapp-view-card-title-text.component.css']\r\n})\r\nexport class WappViewCardTitleTextComponent implements OnInit {\r\n\r\n  @Input('cardTitle') cardTitle!: string;\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<span class=\"text-xl font-bold block\">{{cardTitle}}</span>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wapp-view-boolean',\r\n  templateUrl: './wapp-view-boolean.component.html',\r\n  styleUrls: ['./wapp-view-boolean.component.css']\r\n})\r\nexport class WappViewBooleanComponent implements OnInit {\r\n\r\n  @Input('label') label!: string;\r\n  @Input('value') value!: any;\r\n\r\n  booleanValue: boolean = false;\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    if(typeof this.value == 'boolean'){\r\n      this.booleanValue=true;\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"flex\">\r\n    <div class=\"col-3 align-items-start justify-content-start font-bold  m-1 px-2 py-1\">\r\n      <p> {{label}} </p>\r\n    </div>\r\n    <div *ngIf=\"!booleanValue;\" class=\"col align-items-center justify-content-center m-1 px-3 py-1\">\r\n      <p> {{value}} </p>\r\n    </div>\r\n    <div *ngIf=\"booleanValue\" class=\"col align-items-center justify-content-center m-1 px-3 py-1\">\r\n      <p *ngIf=\"value; else valueFalse\">\r\n        <i class=\"pi pi-check-circle\" style=\"color: rgb(34, 224, 34)\"></i>\r\n      </p>\r\n      <ng-template #valueFalse>\r\n        <i class=\"pi pi-times-circle\" style=\"color: red\"></i>\r\n      </ng-template>\r\n    </div>\r\n  </div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wapp-view-text',\r\n  templateUrl: './wapp-view-text.component.html',\r\n  styleUrls: ['./wapp-view-text.component.css']\r\n})\r\nexport class WappViewTextComponent  {\r\n\r\n  @Input('label') label!: string;\r\n  @Input('value') value!: any;\r\n  \r\n}\r\n","<div class=\"flex\">\r\n     <div class=\"col-3 align-items-start justify-content-start font-bold  m-1 px-2 py-1\"> \r\n       <p> {{label}} </p>\r\n    </div>\r\n    <div class=\"col align-items-center justify-content-center m-1 px-3 py-1\">\r\n       <p> {{value}} </p>\r\n    </div>\r\n</div>\r\n","export enum TableColumnFilterTypes {\r\n    None = 0,\r\n    Text = 1,\r\n    Multiselect = 2,\r\n    Checkbox = 3,\r\n    Image = 4,\r\n    Boolean = 5,\r\n    Date = 6\r\n}\r\n\r\nexport enum TableColumnTypes {\r\n    None = 0,\r\n    Text = 1,\r\n    Badge = 2,\r\n    Checkbox = 3,\r\n    Image = 4,\r\n    Boolean = 5,\r\n    Date = 6,\r\n    Currency = 7\r\n}\r\n\r\nexport enum QBDataTypeEnum{\r\n    Boolean = 1,\r\n    Datetime = 2,\r\n    Decimal = 3,\r\n    List = 4, \r\n    Number = 5, \r\n    Text = 6,\r\n    Address = 7,\r\n    StoreList = 8,\r\n    ServiceList = 9,\r\n    ProductList = 10,\r\n    CategoryList = 11,\r\n    ProductTagList = 12,\r\n    SegmentList = 13,\r\n    GroupList = 14,\r\n    CustomerTagList = 15,\r\n    TypeEventActivityList = 16,\r\n    PaymentTypeList = 17,\r\n    SaleChannelList = 18,\r\n    CustomerChannelList = 19,\r\n    OperationTypeList = 20\r\n}\r\n\r\nexport enum OperatorEnum{\r\n    Equals = '=',\r\n    NotEquals = '!=',\r\n    LessThan = '<',\r\n    LessThanEqual = '<=',\r\n    GreaterThan = '>',\r\n    GreaterThanEqual = '>=',\r\n    In = 'in',\r\n    NotIn = 'not in',\r\n    IsNull = 'is null',\r\n    IsNotNull = 'is not null'\r\n}\r\n\r\nexport enum DataTypeEnum{\r\n    Single = 1,\r\n    Multi = 2,\r\n    Nullable = 3\r\n}","import { Location } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'wapp-button-back',\r\n  templateUrl: './wapp-button-back.component.html',\r\n  styleUrls: ['./wapp-button-back.component.css']\r\n})\r\nexport class WappButtonBackComponent {\r\n  \r\n  @Input('label') label!: string;\r\n  @Input(\"backToCustomRoute\") public backToCustomRoute!: string;\r\n\r\n  constructor(\r\n    private location: Location,\r\n    private router: Router\r\n  ){}\r\n\r\n  back(){\r\n    if(this.backToCustomRoute){\r\n      this.router.navigate([this.backToCustomRoute])\r\n      return\r\n    }\r\n    this.location.back();\r\n  }\r\n}\r\n","<button type=\"button\" pButton [pTooltip]=\"label\" tooltipPosition=\"bottom\"\r\n                    icon=\"pi pi-arrow-left\" class=\"p-button-rounded p-button-text\"\r\n                    (click)=\"back()\">\r\n</button>","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { WappTable } from '../../shared/models/wapp-table.model';\r\nimport { TableColumnFilterTypes, TableColumnTypes } from '../../shared/models/enums.model';\r\nimport { Table } from 'primeng/table';\r\nimport { WappTableActionButtonResponse } from '../../shared/models/wapp-table-action-button-response.model';\r\n\r\n@Component({\r\n  selector: 'wapp-table',\r\n  templateUrl: './wapp-table.component.html',\r\n  styleUrls: ['./wapp-table.component.css'],\r\n  providers: [ConfirmationService]\r\n})\r\nexport class WappTableComponent implements OnInit, OnChanges {\r\n  selectedElements: any[] = [];\r\n  translations: any;\r\n  translateObjectName: string = \"object\"\r\n  selectAll: boolean = false;\r\n\r\n  dialogRef!: DynamicDialogRef;\r\n\r\n  tableSkeletons: any = [{name: ''}, {name: ''}, {name: ''}, {name: ''}];\r\n  \r\n  private _totalRecords: number = 0;\r\n\r\n  set totalRecords(value: number) {\r\n    this._totalRecords = value;\r\n  }  \r\n\r\n  get totalRecords() {\r\n    return this._totalRecords;\r\n  }\r\n\r\n  @Input('elements') elements!: any[];\r\n  @Input('loading') loading: boolean = true;\r\n  @Input('wappTableObject') wappTableObject!: WappTable;\r\n\r\n  @Output('onElementSelect') onElementSelect = new EventEmitter<any>();\r\n  @Output('onViewElementSelect') onViewElementSelect = new EventEmitter<any>();\r\n  @Output('onCopyElementSelect') onCopyElementSelect = new EventEmitter<any>();\r\n  @Output('onEditElementSelect') onEditElementSelect = new EventEmitter<any>();\r\n  @Output('onCustomElementSelect') onCustomElementSelect = new EventEmitter<any>();\r\n  @Output('onDeleteElementSelect') onDeleteElementSelect = new EventEmitter<any[]>();\r\n  @Output('onNewElementSelect') onNewElementSelect = new EventEmitter<boolean>();\r\n  @Output('actionButtonClickedId') actionButtonClickedId = new EventEmitter<WappTableActionButtonResponse>();\r\n\r\n  @ViewChild('filter') filter!: ElementRef;\r\n  @ViewChild('table') dataTable!: Table;\r\n\r\n  constructor(\r\n    private confirmationService: ConfirmationService,\r\n  ) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if(changes?.['elements']?.currentValue.length != 0) {\r\n      this.totalRecords = changes?.['elements']?.currentValue.length;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {  \r\n\r\n  }\r\n  \r\n  create() {\r\n    this.onNewElementSelect.emit(true);\r\n  }\r\n\r\n  onElement(element: any){\r\n    this.onElementSelect.emit(element);\r\n  }\r\n\r\n  viewElement(element: any){\r\n    this.onViewElementSelect.emit(element);\r\n  }\r\n\r\n  editElement(element:any) {\r\n    this.onEditElementSelect.emit(element);\r\n  }\r\n\r\n  customElement(element:any){\r\n    this.onCustomElementSelect.emit(element);\r\n  }\r\n\r\n  readProperty(obj: any, prop:string):any {\r\n    if(typeof obj === 'undefined') {\r\n      return false;\r\n    }\r\n    \r\n    var _index = prop.indexOf('.')\r\n    if(_index > -1) {\r\n        return this.readProperty(obj[prop.substring(0, _index)], prop.substr(_index + 1));\r\n    }\r\n    return obj[prop];\r\n  }\r\n\r\n  confirmDeleteSelected(event:any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableObject.confirmMultipleDeleteLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableObject.confirmDeleteBtnLabel,\r\n      accept: () => {\r\n        this.deleteSelectedElements();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSelectedElements() {\r\n    this.onDeleteElementSelect.emit(this.selectedElements)\r\n    this.selectedElements = [];\r\n  }\r\n\r\n  confirmDelete(event: Event, element: any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableObject.confirmSingleDeleteLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableObject.confirmDeleteBtnLabel,\r\n      accept: () => {\r\n        this.deleteSingleElement(element);\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSingleElement(element: any) {\r\n    this.onDeleteElementSelect.emit([element])\r\n  }\r\n\r\n  copyElement(element: any){\r\n    this.onCopyElementSelect.emit(element);\r\n  }\r\n  \r\n  confirmCopy(event: Event, element: any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableObject.confirmCopyLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableObject.confirmCopyBtnLabel,\r\n      accept: () => {\r\n        this.copyElement(element);\r\n      }\r\n    });\r\n  }\r\n\r\n  onSelectionChange(value = []) {\r\n    this.selectAll = value.length === this.elements.length;\r\n    this.selectedElements = value;\r\n  }\r\n\r\n  onSelectAllChange(event:any) {\r\n    const checked = event.checked;\r\n\r\n    if (checked) {\r\n        this.selectedElements =  this.wappTableObject.disableCheckbox ? this.getSelectableElements(this.elements) : this.elements;\r\n        this.selectAll = true;\r\n    }\r\n    else {\r\n        this.selectedElements = [];\r\n        this.selectAll = false;\r\n    }\r\n  }\r\n\r\n  getSelectableElements(allElements: any[]) {\r\n    return allElements.filter((element:any) => !this.readProperty(element, this.wappTableObject.disableCheckbox!));\r\n  }\r\n\r\n  onGlobalFilter(table: Table, event: Event) {\r\n    table.filterGlobal((event.target as HTMLInputElement).value, 'contains');\r\n  }\r\n\r\n  clear(table: Table) {\r\n    table.clear();\r\n  }\r\n  \r\n  public get tableColumnFilterTypes(): typeof TableColumnFilterTypes {\r\n    return TableColumnFilterTypes;\r\n  }\r\n\r\n  public get tableColumnTypes(): typeof TableColumnTypes {\r\n    return TableColumnTypes;\r\n  }\r\n\r\n  getBooleanColumnClass(index: number, valueProperty: boolean){\r\n    return { [`${this.wappTableObject.columnBooleanTypeIcons[index].trueIconColor} ${this.wappTableObject.columnBooleanTypeIcons[index].trueIcon}`]: valueProperty, \r\n             [`${this.wappTableObject.columnBooleanTypeIcons[index].falseIconColor} ${this.wappTableObject.columnBooleanTypeIcons[index].falseIcon}`]: !valueProperty } \r\n  }\r\n  \r\n  onActionButtonClick(id: number) {\r\n    let response: WappTableActionButtonResponse = {\r\n      id: id,\r\n      elementsSelected: this.selectedElements\r\n    }\r\n    this.actionButtonClickedId.emit(response);\r\n  }\r\n\r\n  clearFilters() {\r\n    this.dataTable.clear();\r\n  }\r\n}\r\n","<div class=\"grid\" *ngIf=\"wappTableObject\">\r\n    <div class=\"col-12\">\r\n        <div class=\"flex flex-column sm:flex-row align-items-center gap-4\">\r\n          <div *ngIf=\"wappTableObject.backButtonConfig\" class=\"flex flex-column sm:flex-row align-items-center\">\r\n            <wapp-button-back *ngIf=\"!wappTableObject.backButtonConfig.customRoute; else customRoute\"\r\n                        [label]=\"wappTableObject.backButtonConfig.label\">\r\n            </wapp-button-back>\r\n            <ng-template #customRoute>\r\n              <wapp-button-back \r\n                        [label]=\"wappTableObject.backButtonConfig.label\"\r\n                        [backToCustomRoute]=\"wappTableObject.backButtonConfig.customRoute!\">\r\n              </wapp-button-back>\r\n            </ng-template>\r\n          </div>\r\n          <div *ngIf=\"wappTableObject.hasNewElementButton\" class=\"flex flex-column sm:flex-row align-items-center\">\r\n              <button pButton pRipple [icon]=\"wappTableObject.newElementButtonIcon ? 'pi ' + wappTableObject.newElementButtonIcon : 'pi pi-plus'\" class=\"p-button-primary\"\r\n                      [label]=\"wappTableObject.newElementButtonLabel\"\r\n                      (click)=\"create()\">\r\n              </button>\r\n          </div>\r\n          <div class=\"flex gap-2 sm:ml-auto\">\r\n            <span *ngIf=\"wappTableObject.actionButtons\">\r\n              <span class=\"ml-2 gap-2\" *ngFor=\"let button of wappTableObject.actionButtons\">\r\n                <span *ngIf=\"button.allowsMultipleSelection; else singleSelectionButton\">\r\n                  <button *ngIf=\"selectedElements.length > 0\" pButton pRipple\r\n                          [icon]=\"'pi ' + button.icon\" class=\"p-button-rounded\" [pTooltip]=\"button.tooltip ? button.tooltip : ''\"\r\n                          (click)=\"onActionButtonClick(button.id)\">\r\n                  </button>\r\n                </span>\r\n                <ng-template #singleSelectionButton>\r\n                  <button *ngIf=\"selectedElements.length == 1\" pButton pRipple\r\n                          [icon]=\"'pi ' + button.icon\" class=\"p-button-rounded\" [pTooltip]=\"button.tooltip ? button.tooltip : ''\"\r\n                          (click)=\"onActionButtonClick(button.id)\">\r\n                  </button>\r\n                </ng-template>\r\n              </span>\r\n            </span>\r\n              <button *ngIf=\"!wappTableObject?.disableDelete && selectedElements.length != 0\" pButton pRipple\r\n                      icon=\"pi pi-trash\" class=\"p-button-danger p-button-rounded\"\r\n                      (click)=\"confirmDeleteSelected($event)\">\r\n              </button>\r\n          </div>\r\n        </div>\r\n        <ng-content select=\".filter-panel\"></ng-content>\r\n    </div>\r\n    <div class=\"col-12\">\r\n        <div class=\"card\">\r\n            <p-table *ngIf=\"!loading; else loadingTable\" #table [value]=\"elements\" dataKey=\"{{wappTableObject.identificator}}\" [rows]=\"10\" [paginator]=\"true\"\r\n                    [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n                    [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n                    [totalRecords]=\"totalRecords\" [showCurrentPageReport]=\"true\" [rows]=\"wappTableObject.rowsPerPageOptions ? wappTableObject.rowsPerPageOptions[0] : 10\" [rowsPerPageOptions]=\"wappTableObject.rowsPerPageOptions ? wappTableObject.rowsPerPageOptions : [10, 25, 50]\"\r\n                    [currentPageReportTemplate]=\"wappTableObject.currentPageReportTemplate ? wappTableObject.currentPageReportTemplate + '{first}' + '-' + '{last}' + '. Total: ' + totalRecords : 'Showing {first}' + '-' + '{last}' + '. Total: ' + totalRecords\"\r\n                    [globalFilterFields]=\"wappTableObject.globalFilterFields!\" responsiveLayout=\"scroll\"\r\n                    [rowHover]=\"true\" [tableStyle]=\"{'min-width': '70rem'}\">\r\n                <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n                    <div class=\"flex\">\r\n                        <button *ngIf=\"wappTableObject.hasClearButton\" pButton [label]=\"wappTableObject.clearPlaceholder!\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button>\r\n                        <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto mb-2\">\r\n                            <i class=\"pi pi-search\"></i>\r\n                            <input pInputText type=\"text\" #filter (input)=\"onGlobalFilter(table, $event)\" \r\n                                [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full\"/>\r\n                        </span>\r\n                    </div>\r\n                </ng-template>\r\n                <ng-template pTemplate=\"header\">\r\n                      <tr>\r\n                        <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else noCheckbox\">\r\n                            <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                        </th>\r\n                        <ng-template #noCheckbox><th *ngIf=\"wappTableObject.hasCheckbox\"></th></ng-template>\r\n                        <ng-container *ngIf=\"!wappTableObject.hasSortableColumns; else hasNotSortableColumns\">\r\n                          <th *ngFor=\"let header of wappTableObject?.headers\">\r\n                            {{header}}\r\n                          </th>\r\n                        </ng-container>\r\n                        <ng-template #hasNotSortableColumns>\r\n                          <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.headers\" let-i=\"index\"> \r\n                            <th [pSortableColumn]=\"wappTableObject.sortableNames[i]\">\r\n                              {{wappTableObject.headers[i]}} \r\n                              <p-sortIcon *ngIf=\"wappTableObject.sortableNames[i] != null\" [field]=\"wappTableObject.sortableNames[i]\"></p-sortIcon>\r\n                            </th>\r\n                          </ng-template>\r\n                        </ng-template>\r\n                        <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n                      </tr>\r\n                      <tr *ngIf=\"wappTableObject.hasColumnFilters\">\r\n                        <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.columnFilterTypes\" let-i=\"index\">\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Checkbox &&  wappTableObject.hasCheckbox\">\r\n                          <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                        </th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Image\"></th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Text\">\r\n                          <p-columnFilter type=\"text\" [field]=\"wappTableObject.filterNames[i]\"></p-columnFilter>\r\n                        </th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Multiselect\">\r\n                          <p-columnFilter [field]=\"wappTableObject.filterNames[i]\" matchMode=\"in\" [showMenu]=\"false\">\r\n                            <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n                                <p-multiSelect [ngModel]=\"value\" appendTo=\"body\" [options]=\"wappTableObject.selectFilterElements[i]\" placeholder=\"Any\" (onChange)=\"filter($event.value)\" optionLabel=\"name\" [maxSelectedLabels]=\"1\" [selectedItemsLabel]=\"'{0} items'\">\r\n                                    <ng-template let-option pTemplate=\"item\">\r\n                                        <div class=\"p-multiselect-representative-option\">\r\n                                            <span class=\"ml-1\">{{option.name}}</span>\r\n                                        </div>\r\n                                    </ng-template>\r\n                                </p-multiSelect>\r\n                              </ng-template>\r\n                            </p-columnFilter>\r\n                          </th>\r\n                          <th *ngIf=\"filterType == tableColumnFilterTypes.None\"></th>\r\n                          <th *ngIf=\"filterType == tableColumnFilterTypes.Boolean\">\r\n                            <p-columnFilter type=\"boolean\" [field]=\"wappTableObject.filterNames[i]\"></p-columnFilter>\r\n                          </th>\r\n                          <th *ngIf=\"filterType == tableColumnFilterTypes.Date\">\r\n                            <p-columnFilter type=\"date\" [field]=\"wappTableObject.filterNames[i]\"></p-columnFilter>\r\n                          </th>\r\n                        </ng-template>\r\n                        <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n                      </tr>\r\n                </ng-template>\r\n                <ng-template pTemplate=\"body\" let-element>\r\n                    <tr [ngClass]=\"wappTableObject.hasSelectableRow ? 'p-selectable-row' : ''\" (click)=\"wappTableObject.hasSelectableRow ? onElement(element) : ''\">\r\n                        <ng-template ngFor let-columnType [ngForOf]=\"wappTableObject.columnTypes!\" let-i=\"index\">\r\n                          <td *ngIf=\"columnType == tableColumnTypes?.Checkbox! &&  wappTableObject.hasCheckbox\" [style]=\"'width: '+wappTableObject.columnWidths![i]\">\r\n                            <div *ngIf=\"wappTableObject.disableCheckbox; else activeCheckbox\">\r\n                              <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableObject.disableCheckbox)\"></p-tableCheckbox>\r\n                            </div>\r\n                            <ng-template #activeCheckbox>\r\n                              <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n                            </ng-template>                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n                            <img *ngIf=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n                                 [src]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\" \r\n                                 class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableObject.columnWidths[i]\"/>\r\n                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Text\"  [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n                            {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) }}\r\n                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n                            {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | currency }}\r\n                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableObject.columnWidths[i]\">\r\n                            <wapp-view-badge [label]=\"readProperty(element, wappTableObject.elementObjectRoutes[i])\"\r\n                                             [color]=\"'cyan'\">\r\n                            </wapp-view-badge>                  \r\n                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n                            <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableObject.elementObjectRoutes[i]))\"></i>\r\n                          </td>\r\n                          <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n                            {{ readProperty(element, wappTableObject.elementObjectRoutes[i]) | date }}\r\n                          </td>\r\n                        </ng-template>\r\n                        <td>\r\n                          <div class=\"flex justify-content-end\">\r\n                            <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n                                    pButton pRipple (click)=\"viewElement(element)\" \r\n                                    icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n                            </button>\r\n                            <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n                                    pButton pRipple (click)=\"customElement(element)\"\r\n                                    [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n                                    class=\"p-button-text p-button-info mr-2\">\r\n                              </button>\r\n                            <button *ngIf=\"wappTableObject?.hasEditButton && !wappTableObject.disableEditProperty\" \r\n                                    pButton pRipple (click)=\"editElement(element)\"\r\n                                    icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                            </button>\r\n                            <button *ngIf=\"wappTableObject.disableEditProperty\" \r\n                                    pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableObject.disableEditProperty)\"\r\n                                    icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                            </button>\r\n                            <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n                                    pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n                                    icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n                            </button>\r\n                            <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton && !wappTableObject.disableDeleteProperty\" \r\n                                    pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n                                    icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                            </button>\r\n                            <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject.disableDeleteProperty\" \r\n                                    pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableObject.disableDeleteProperty)\"\r\n                                    icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                            </button>\r\n                          </div>\r\n                        </td>\r\n                    </tr>\r\n                </ng-template>\r\n                <ng-template pTemplate=\"emptymessage\">\r\n                    <tr>\r\n                        <td colspan=\"8\">No elements.</td>\r\n                    </tr>\r\n                </ng-template>\r\n                <ng-template pTemplate=\"loadingbody\">\r\n                    <tr>\r\n                        <td colspan=\"8\">Loading elements.</td>\r\n                    </tr>\r\n                </ng-template>\r\n              </p-table>\r\n              <ng-template #loadingTable>\r\n                <p-table [value]=\"tableSkeletons\" responsiveLayout=\"scroll\">\r\n                  <ng-template *ngIf=\"wappTableObject?.hasClearButton || wappTableObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n                    <div class=\"flex\">\r\n                        <button *ngIf=\"wappTableObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\"></button>\r\n                        <span *ngIf=\"wappTableObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto mb-2\">\r\n                            <i class=\"pi pi-search\"></i>\r\n                            <input pInputText type=\"text\" #filter \r\n                                [placeholder]=\"wappTableObject.searchPlaceholder\" class=\"w-full\"/>\r\n                        </span>\r\n                    </div>\r\n                </ng-template>\r\n                  <ng-template pTemplate=\"header\">\r\n                    <tr>\r\n                      <th *ngIf=\"!wappTableObject.hasColumnFilters && wappTableObject.hasCheckbox; else selectAllCheckbox\">\r\n                          <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                      </th>\r\n                      <ng-template #selectAllCheckbox><th></th></ng-template>\r\n                      <th *ngFor=\"let header of wappTableObject?.headers\">\r\n                        {{header}}\r\n                      </th>\r\n                      <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n                    </tr>\r\n                    <tr *ngIf=\"wappTableObject.hasColumnFilters\">\r\n                      <ng-template ngFor let-filterType [ngForOf]=\"wappTableObject.columnFilterTypes\" let-i=\"index\">\r\n                      <th *ngIf=\"filterType == tableColumnFilterTypes.Checkbox\">\r\n                        <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                      </th>\r\n                      <th *ngIf=\"filterType == tableColumnFilterTypes.Image\"></th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Text\">\r\n                          <p-columnFilter type=\"text\" [field]=\"wappTableObject.filterNames[i]\"></p-columnFilter>\r\n                        </th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Multiselect\">\r\n                          <p-columnFilter [field]=\"wappTableObject.filterNames[i]\" matchMode=\"in\" [showMenu]=\"false\">\r\n                            <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n                                <p-multiSelect [ngModel]=\"value\" appendTo=\"body\" [options]=\"wappTableObject.selectFilterElements[i]\" placeholder=\"Any\" (onChange)=\"filter($event.value.name)\" optionLabel=\"name\" [maxSelectedLabels]=\"1\" [selectedItemsLabel]=\"'{0} items'\">\r\n                                    <ng-template let-option pTemplate=\"item\">\r\n                                        <div class=\"p-multiselect-representative-option\">\r\n                                            <span class=\"ml-1\">{{option.name}}</span>\r\n                                        </div>\r\n                                    </ng-template>\r\n                                </p-multiSelect>\r\n                            </ng-template>\r\n                          </p-columnFilter>\r\n                        </th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.None\"></th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Boolean\">\r\n                          <p-columnFilter type=\"boolean\" [field]=\"wappTableObject.filterNames[i]\"></p-columnFilter>\r\n                        </th>\r\n                        <th *ngIf=\"filterType == tableColumnFilterTypes.Date\">\r\n                          <p-columnFilter type=\"date\" [field]=\"wappTableObject.filterNames[i]\" display=\"menu\"></p-columnFilter>\r\n                        </th>\r\n                      </ng-template>\r\n                      <th *ngIf=\"wappTableObject.hasDeleteButton || wappTableObject.hasEditButton\"></th>\r\n                    </tr>\r\n                  </ng-template>\r\n                  <ng-template pTemplate=\"body\">\r\n                      <tr height=\"70px\">\r\n                          <td *ngFor=\"let item of wappTableObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n                            <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox &&  wappTableObject.hasCheckbox\"></p-tableCheckbox>\r\n                            <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox\"></p-skeleton>\r\n                          </td>\r\n                          <td *ngIf=\"wappTableObject.hasEditButton || wappTableObject.hasDeleteButton\">\r\n                            <div class=\"flex justify-content-end\">\r\n                              <button *ngIf=\"wappTableObject?.hasViewButton\" \r\n                                    pButton pRipple \r\n                                    icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n                              </button>\r\n                              <button *ngIf=\"wappTableObject.customButtonConfig?.hasCustomButton\"\r\n                                    pButton pRipple\r\n                                    [icon]=\"wappTableObject.customButtonConfig?.icon!\"\r\n                                    class=\"p-button-text p-button-info mr-2\">\r\n                              </button>\r\n                              <button *ngIf=\"wappTableObject?.hasEditButton\" \r\n                                      pButton pRipple\r\n                                      icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                              </button>\r\n                              <button *ngIf=\"wappTableObject?.hasCopyButton\" \r\n                                    pButton pRipple \r\n                                    icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n                              </button>\r\n                              <button *ngIf=\"!wappTableObject?.disableDelete && wappTableObject?.hasDeleteButton\" \r\n                                      pButton pRipple\r\n                                      icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                              </button>\r\n                            </div>\r\n                          </td>\r\n                      </tr>\r\n                  </ng-template>\r\n                </p-table>\r\n                <p-paginator *ngIf=\"wappTableObject.hasPaginator\" [rows]=\"4\" [totalRecords]=\"10\"></p-paginator>\r\n              </ng-template>\r\n        </div>\r\n    </div>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ConfirmationService, LazyLoadEvent } from 'primeng/api';\r\nimport { Table } from 'primeng/table';\r\nimport { TableColumnFilterTypes, TableColumnTypes } from '../../shared/models/enums.model';\r\nimport { WappTableLazyLoading } from '../../shared/models/wapp-table-lazy-loading.model';\r\nimport { LazyElementQueryRequest } from '../../shared/models/lazy-element-query-request.model';\r\nimport { WappTableActionButtonResponse } from '../../shared/models/wapp-table-action-button-response.model';\r\n\r\n@Component({\r\n  selector: 'wapp-table-lazy-loading',\r\n  templateUrl: './wapp-table-lazy-loading.component.html',\r\n  styleUrls: ['./wapp-table-lazy-loading.component.css'],\r\n  providers: [ConfirmationService]\r\n})\r\nexport class WappTableLazyLoadingComponent implements OnInit {\r\n  selectedElements: any[] = [];\r\n  translations: any;\r\n\r\n  selectAll: boolean = false;\r\n  filterElementsIndex: number = 0;\r\n\r\n  @Input('loading') loading!: boolean;\r\n  @Input('elements') elements!: any[];\r\n  @Input('allElements') allElements!: any[];\r\n  @Input('totalRecords') totalRecords!: number;\r\n  @Input('wappTableLazyLoadingObject') wappTableLazyLoadingObject!: WappTableLazyLoading;\r\n  \r\n  @Output('queryElements') queryElements = new EventEmitter<LazyElementQueryRequest>();\r\n\r\n  @Output('onElementSelect') onElementSelect = new EventEmitter<any>();\r\n  @Output('onViewElementSelect') onViewElementSelect = new EventEmitter<any>();\r\n  @Output('onCustomElementSelect') onCustomElementSelect = new EventEmitter<any>();\r\n  @Output('onCopyElementSelect') onCopyElementSelect = new EventEmitter<any>();\r\n  @Output('onEditElementSelect') onEditElementSelect = new EventEmitter<any>();\r\n  @Output('onDeleteElementSelect') onDeleteElementSelect = new EventEmitter<any[]>();\r\n  @Output('onAllElementSelect') onAllElementSelect = new EventEmitter<boolean>();\r\n  @Output('actionButtonClickedId') actionButtonClickedId = new EventEmitter<WappTableActionButtonResponse>();\r\n\r\n  @ViewChild('table') dataTable!: Table;\r\n  \r\n  constructor(\r\n    private confirmationService: ConfirmationService\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.loading = true;\r\n  }\r\n  \r\n  loadElements(event: LazyLoadEvent) {\r\n    this.loading = true;\r\n    setTimeout(() => {\r\n      let adaptedQuery: LazyElementQueryRequest = {\r\n        first: event.first!,\r\n        rows: event.rows!,\r\n        sortOrder: event.sortOrder!,\r\n        sortField: event.sortField!,\r\n        filters: Object.keys(event.filters!).map((key)=>{\r\n          return {\r\n            columnName: key!,\r\n            value: event.filters![key].value,\r\n            matchMode: event.filters![key].matchMode!\r\n          } \r\n        })\r\n      }\r\n      this.queryElements.emit(adaptedQuery);\r\n      this.loading = false;\r\n    }, 1000);\r\n  }\r\n\r\n  readProperty(obj: any, prop:string):any {\r\n    if (typeof obj === 'undefined') {\r\n      return false;\r\n    }\r\n  \r\n    const properties = prop.split('.');\r\n    let result = obj;\r\n  \r\n    for (const property of properties) {\r\n      const match = property.match(/(.+?)\\[(\\d+)\\]/);\r\n      if (match) {\r\n        const arrayProp = match[1];\r\n        const index = parseInt(match[2], 10);\r\n        if (!Array.isArray(result[arrayProp]) || isNaN(index) || index < 0 || index >= result[arrayProp].length) {\r\n          return undefined;\r\n        }\r\n        result = result[arrayProp][index];\r\n      } else {\r\n        if (typeof result[property] === 'undefined') {\r\n          return undefined;\r\n        }\r\n        result = result[property];\r\n      }\r\n    }\r\n  \r\n    return result;\r\n  }\r\n\r\n  onElement(element: any){\r\n    this.onElementSelect.emit(element);\r\n  }\r\n\r\n  viewElement(element: any){\r\n    this.onViewElementSelect.emit(element);\r\n  }\r\n  customElement(element:any){\r\n    this.onCustomElementSelect.emit(element);\r\n  }\r\n\r\n  editElement(element:any) {\r\n    this.onEditElementSelect.emit(element);\r\n  }\r\n\r\n  confirmDeleteSelection(event:any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableLazyLoadingObject.confirmMultipleDeleteLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableLazyLoadingObject.confirmDeleteBtnLabel,\r\n      accept: () => {\r\n        this.deleteSelectedElements();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSelectedElements() {\r\n    this.onDeleteElementSelect.emit(this.selectedElements)\r\n    this.selectedElements = [];\r\n  }\r\n  \r\n  confirmDelete(event: Event, element: any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableLazyLoadingObject.confirmSingleDeleteLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableLazyLoadingObject.confirmDeleteBtnLabel,\r\n      accept: () => {\r\n        this.deleteSingleElement(element);\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSingleElement(element: any) {\r\n    this.onDeleteElementSelect.emit([element])\r\n  }\r\n  \r\n  copyElement(element: any){\r\n    this.onCopyElementSelect.emit(element);\r\n  }\r\n  \r\n  confirmCopy(event: Event, element: any) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: this.wappTableLazyLoadingObject.confirmCopyLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.wappTableLazyLoadingObject.confirmCopyBtnLabel,\r\n      accept: () => {\r\n        this.copyElement(element);\r\n      }\r\n    });\r\n  }\r\n\r\n  onSelectionChange(value = []) {\r\n    this.selectAll = value.length === this.totalRecords;\r\n    this.selectedElements = value;\r\n  }\r\n\r\n  onSelectAllChange(event:any) {\r\n      const checked = event.checked;\r\n\r\n      if (checked) {\r\n        this.onAllElementSelect.emit(true);\r\n        this.loading = true;\r\n        setTimeout(() => {\r\n          this.selectedElements = this.wappTableLazyLoadingObject.disableCheckbox ? this.getSelectableElements(this.allElements) : this.allElements;\r\n          this.selectAll = true;\r\n          this.loading = false;\r\n        }, 1000);\r\n      }\r\n      else {\r\n          this.selectedElements = [];\r\n          this.selectAll = false;\r\n      }\r\n  }\r\n\r\n  getSelectableElements(allElements: any[]) {\r\n    return allElements.filter((element:any) => !this.readProperty(element, this.wappTableLazyLoadingObject.disableCheckbox!));\r\n  }\r\n\r\n  getBooleanColumnClass(index: number, valueProperty: boolean){\r\n    return { [`${this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].trueIconColor} ${this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].trueIcon}`]: valueProperty, \r\n             [`${this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].falseIconColor} ${this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].falseIcon}`]: !valueProperty } \r\n  }\r\n\r\n  clear(table: Table) {\r\n    table.clear();\r\n  }\r\n\r\n  public get tableColumnFilterTypes(): typeof TableColumnFilterTypes {\r\n    return TableColumnFilterTypes;\r\n  }\r\n\r\n  public get tableColumnTypes(): typeof TableColumnTypes {\r\n    return TableColumnTypes;\r\n  }\r\n\r\n  onActionButtonClick(id: number) {\r\n    let response: WappTableActionButtonResponse = {\r\n      id: id,\r\n      elementsSelected: this.selectedElements\r\n    }\r\n    this.actionButtonClickedId.emit(response);\r\n  }\r\n\r\n  clearFilters() {\r\n    this.dataTable.clear();\r\n  }\r\n}\r\n","<div class=\"grid\" *ngIf=\"wappTableLazyLoadingObject\">\r\n    <div class=\"col-12\">\r\n      <div class=\"flex flex-column sm:flex-row align-items-center gap-4\">\r\n        <div *ngIf=\"wappTableLazyLoadingObject.backButtonConfig\" class=\"flex flex-column sm:flex-row align-items-center\">\r\n          <wapp-button-back *ngIf=\"!wappTableLazyLoadingObject.backButtonConfig.customRoute; else customRoute\"\r\n                      [label]=\"wappTableLazyLoadingObject.backButtonConfig.label\">\r\n          </wapp-button-back>\r\n          <ng-template #customRoute>\r\n            <wapp-button-back \r\n                      [label]=\"wappTableLazyLoadingObject.backButtonConfig.label\"\r\n                      [backToCustomRoute]=\"wappTableLazyLoadingObject.backButtonConfig.customRoute!\">\r\n            </wapp-button-back>\r\n          </ng-template>\r\n        </div>\r\n        <div *ngIf=\"wappTableLazyLoadingObject.hasNewElementButton\" class=\"flex flex-column sm:flex-row align-items-center\">\r\n          <button pButton pRipple icon=\"pi pi-plus\" class=\"p-button-primary\"\r\n                  label=\"{{wappTableLazyLoadingObject.newElementButtonLabel}}\"\r\n                  (click)=\"editElement(0)\">\r\n          </button>\r\n        </div>\r\n        <div class=\"flex gap-2 sm:ml-auto\">\r\n          <span *ngIf=\"wappTableLazyLoadingObject.actionButtons\">\r\n            <span class=\"ml-2\" *ngFor=\"let button of wappTableLazyLoadingObject.actionButtons\">\r\n              <span *ngIf=\"button.allowsMultipleSelection; else singleSelectionButton\">\r\n                <button *ngIf=\"selectedElements.length > 0\" pButton pRipple\r\n                        [icon]=\"'pi ' + button.icon\" class=\"p-button-rounded\" [pTooltip]=\"button.tooltip ? button.tooltip : ''\"\r\n                        (click)=\"onActionButtonClick(button.id)\">\r\n                </button>\r\n              </span>\r\n              <ng-template #singleSelectionButton>\r\n                <button *ngIf=\"selectedElements.length == 1\" pButton pRipple\r\n                        [icon]=\"'pi ' + button.icon\" class=\"p-button-rounded\" [pTooltip]=\"button.tooltip ? button.tooltip : ''\"\r\n                        (click)=\"onActionButtonClick(button.id)\">\r\n                </button>\r\n              </ng-template>\r\n            </span>\r\n          </span>\r\n          <button *ngIf=\"!wappTableLazyLoadingObject?.disableDelete && selectedElements?.length != 0\" pButton pRipple\r\n                  icon=\"pi pi-trash\" class=\"p-button-danger p-button-rounded\"\r\n                  (click)=\"confirmDeleteSelection($event)\">\r\n          </button>\r\n        </div>\r\n      </div>\r\n      <ng-content select=\".filter-panel\"></ng-content>\r\n    </div>\r\n    <div class=\"col-12\">\r\n      <div class=\"card px-6 py-6\">\r\n          <p-table #table [value]=\"elements\" [lazy]=\"true\" (onLazyLoad)=\"loadElements($event)\" dataKey=\"{{wappTableLazyLoadingObject.identificator}}\"\r\n                   [tableStyle]=\"{'min-width': '70rem'}\"\r\n                   [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n                   [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n                   [paginator]=\"true\"\r\n                   [rows]=\"wappTableLazyLoadingObject.rowsPerPageOptions ? wappTableLazyLoadingObject.rowsPerPageOptions[0] : 10\" \r\n                   [rowsPerPageOptions]=\"wappTableLazyLoadingObject.rowsPerPageOptions ? wappTableLazyLoadingObject.rowsPerPageOptions : [10,25,50]\"   \r\n                   [currentPageReportTemplate]=\"wappTableLazyLoadingObject.currentPageReportTemplate + '{first}' + '-' + '{last}' + '. Total: ' + totalRecords\"\r\n                   [totalRecords]=\"totalRecords\"\r\n                   [showCurrentPageReport]=\"true\"\r\n                   [loading]=\"loading\"\r\n                   [showLoader]=\"false\"\r\n                   [globalFilterFields]=\"wappTableLazyLoadingObject.globalFilterFields!\">\r\n                <ng-template *ngIf=\"wappTableLazyLoadingObject.hasClearButton || wappTableLazyLoadingObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n                    <div class=\"flex\">\r\n                        <button *ngIf=\"wappTableLazyLoadingObject.hasClearButton\" pButton label=\"Clear\" class=\"p-button-outlined\" icon=\"pi pi-filter-slash\" (click)=\"clear(table)\"></button>\r\n                        <span *ngIf=\"wappTableLazyLoadingObject.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n                            <i class=\"pi pi-search\"></i>\r\n                            <input pInputText type=\"text\" (input)=\"table.filterGlobal($event, 'contains')\" placeholder=\"{{wappTableLazyLoadingObject.searchPlaceholder}}\" />\r\n                        </span>\r\n                    </div>\r\n                </ng-template>\r\n            <ng-template pTemplate=\"header\">\r\n              <tr>\r\n                <th *ngIf=\"!wappTableLazyLoadingObject.hasColumnFilters && wappTableLazyLoadingObject.hasCheckbox; else noCheckbox\">\r\n                  <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                </th>\r\n                <ng-template #noCheckbox><th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\"></th></ng-template>\r\n                <ng-container *ngIf=\"!wappTableLazyLoadingObject.hasSortableColumns; else something\">\r\n                  <th *ngFor=\"let header of wappTableLazyLoadingObject?.headers\">\r\n                    {{header}}\r\n                  </th>\r\n                </ng-container>\r\n                <ng-template #something>\r\n                  <ng-template #something ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.headers\" let-i=\"index\"> \r\n                    <th [pSortableColumn]=\"wappTableLazyLoadingObject.sortableNames[i]\">\r\n                      {{wappTableLazyLoadingObject.headers[i]}} \r\n                      <p-sortIcon *ngIf=\"wappTableLazyLoadingObject.sortableNames[i] != null\" [field]=\"wappTableLazyLoadingObject.sortableNames[i]\"></p-sortIcon>\r\n                    </th>\r\n                  </ng-template>\r\n                </ng-template>\r\n                <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton\"></th>\r\n              </tr>\r\n              <tr *ngIf=\"wappTableLazyLoadingObject.hasColumnFilters\">\r\n                <th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\">\r\n                  <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                </th>\r\n                <th *ngIf=\"wappTableLazyLoadingObject.hasImage\"></th>\r\n                <ng-template ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.columnFilterTypes\" let-i=\"index\">\r\n                  <th *ngIf=\"filterType == tableColumnFilterTypes.Text\">\r\n                    <p-columnFilter type=\"text\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n                  </th>\r\n                  <th *ngIf=\"filterType == tableColumnFilterTypes.Multiselect\">\r\n                    <p-columnFilter [field]=\"wappTableLazyLoadingObject.filterNames[i]\" matchMode=\"in\" [showMenu]=\"false\">\r\n                      <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n                          <p-multiSelect [ngModel]=\"value\" appendTo=\"body\" [options]=\"wappTableLazyLoadingObject.selectFilterElements[i]\" placeholder=\"Any\" (onChange)=\"filter($event.value)\" optionLabel=\"name\" [maxSelectedLabels]=\"1\" [selectedItemsLabel]=\"'{0} items'\">\r\n                              <ng-template let-option pTemplate=\"item\">\r\n                                  <div class=\"p-multiselect-representative-option\">\r\n                                      <span class=\"ml-1\">{{option.name}}</span>\r\n                                  </div>\r\n                              </ng-template>\r\n                          </p-multiSelect>\r\n                      </ng-template>\r\n                  </p-columnFilter>\r\n                  </th>\r\n                  <th *ngIf=\"filterType == tableColumnFilterTypes.None\"></th>\r\n                  <th *ngIf=\"filterType == tableColumnFilterTypes.Boolean\">\r\n                    <p-columnFilter type=\"boolean\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n                  </th>\r\n                  <th *ngIf=\"filterType == tableColumnFilterTypes.Date\">\r\n                    <p-columnFilter type=\"date\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n                  </th>\r\n                </ng-template>\r\n                <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton\"></th>\r\n              </tr>\r\n            </ng-template>\r\n            <ng-template pTemplate=\"body\" let-element let-index=\"index\">\r\n              <tr *ngIf=\"!loading\">\r\n                <ng-template ngFor let-columnType [ngForOf]=\"wappTableLazyLoadingObject.columnTypes\" let-i=\"index\">\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\">\r\n                    <div *ngIf=\"wappTableLazyLoadingObject.disableCheckbox; else activeCheckbox\">\r\n                      <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableCheckbox)\"></p-tableCheckbox>\r\n                    </div>\r\n                    <ng-template #activeCheckbox>\r\n                      <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n                    </ng-template>\r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Image\" class=\"text-center\">\r\n                    <img *ngIf=\"readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i])\" \r\n                         [src]=\"readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i])\" \r\n                         class=\"shadow-4 element-image-width\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"/>\r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Text\"  [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\">\r\n                    {{ readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i]) }}\r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\">\r\n                    {{ readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i]) | currency }}\r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\">\r\n                    <wapp-view-badge [label]=\"readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i])\"\r\n                                     [color]=\"'cyan'\">\r\n                    </wapp-view-badge>                  \r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Boolean\">\r\n                    <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i]))\"></i>\r\n                  </td>\r\n                  <td *ngIf=\"columnType == tableColumnTypes.Date\">\r\n                    {{ readProperty(element, wappTableLazyLoadingObject.elementObjectRoutes[i]) | date }}\r\n                  </td>\r\n                </ng-template>\r\n                <td>\r\n                  <div class=\"flex justify-content-end align-items-end\">\r\n                    <button *ngIf=\"wappTableLazyLoadingObject?.hasViewButton\" \r\n                            pButton pRipple (click)=\"viewElement(element)\" \r\n                            icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n                    </button>\r\n                    <button *ngIf=\"wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"\r\n                            pButton pRipple (click)=\"customElement($event)\"\r\n                            [icon]=\"wappTableLazyLoadingObject.customButtonConfig?.icon!\"\r\n                            class=\"p-button-text p-button-info mr-2\">\r\n                    </button>\r\n                    <button *ngIf=\"wappTableLazyLoadingObject.hasEditButton && !wappTableLazyLoadingObject.disableEditProperty\" \r\n                            pButton pRipple (click)=\"editElement(element)\"\r\n                            icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                    </button>\r\n                    <button *ngIf=\"wappTableLazyLoadingObject.disableEditProperty\" \r\n                            pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableEditProperty)\"\r\n                            icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                    </button>\r\n                    <button *ngIf=\"wappTableLazyLoadingObject?.hasCopyButton\" \r\n                            pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n                            icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n                    </button>\r\n                    <button *ngIf=\"!wappTableLazyLoadingObject?.disableDelete && wappTableLazyLoadingObject.hasDeleteButton && !wappTableLazyLoadingObject.disableDeleteProperty\" \r\n                            pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n                            icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                    </button>\r\n                    <button *ngIf=\"!wappTableLazyLoadingObject?.disableDelete && wappTableLazyLoadingObject.disableDeleteProperty\" \r\n                            pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableDeleteProperty)\"\r\n                            icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                    </button>\r\n                  </div>\r\n                </td>\r\n              </tr>\r\n            </ng-template>\r\n            <ng-template pTemplate=\"loadingbody\">\r\n                  <tr height=\"70px\" *ngFor=\"let n of [0,1,2,3,4]\">\r\n                      <td *ngFor=\"let item of wappTableLazyLoadingObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n                        <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\"></p-tableCheckbox>\r\n                        <p-skeleton *ngIf=\"item == tableColumnTypes.Image\" width=\"6rem\" height=\"4rem\"></p-skeleton>\r\n                        <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox && item != tableColumnTypes.Image\"></p-skeleton>\r\n                      </td>\r\n                      <td *ngIf=\"wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasDeleteButton\">\r\n                        <div class=\"flex justify-content-end\">\r\n                          <button *ngIf=\"wappTableLazyLoadingObject?.hasEditButton\" \r\n                                  pButton pRipple\r\n                                  icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n                          </button>\r\n                          <button *ngIf=\"!wappTableLazyLoadingObject?.disableDelete && wappTableLazyLoadingObject?.hasDeleteButton\" \r\n                                  pButton pRipple\r\n                                  icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n                          </button>\r\n                        </div>\r\n                      </td>\r\n                  </tr>\r\n              </ng-template>\r\n          </p-table>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <p-confirmPopup></p-confirmPopup>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MenuItem, MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'wapp-wizard',\r\n  templateUrl: './wapp-wizard.component.html',\r\n  styleUrls: ['./wapp-wizard.component.css'],\r\n  providers: [MessageService]\r\n})\r\nexport class WappWizardComponent implements OnInit {\r\n\r\n  items!: MenuItem[];\r\n  activeIndex: number = 0;\r\n\r\n  @Input('stepsItems') stepsItems!: MenuItem[];\r\n  @Input('stepsHeadings') stepsHeadings!: string[];\r\n  @Input('nextBtnLabel') nextBtnLabel!: string;\r\n  @Input('previousBtnLabel') previousBtnLabel!: string;\r\n  @Input('stepsSubheadings') stepsSubheadings!: string[];\r\n  @Input('confirmButtonLabel') confirmButtonLabel!: string;\r\n  @Input('confirmButtonIcon') confirmButtonIcon!: string;\r\n  @Input('secondaryConfirmButtonLabel') secondaryConfirmButtonLabel!: string;\r\n  @Input('secondaryConfirmButtonIcon') secondaryConfirmButtonIcon!: string;\r\n  @Input('isReadOnly') isReadOnly: boolean = true;\r\n  @Input('formGroup') formGroup!: FormGroup;\r\n\r\n  @Output('confirmButtonActivated') confirmButtonActivated = new EventEmitter<boolean>();\r\n  @Output('secondaryConfirmButtonActivated') secondaryConfirmButtonActivated = new EventEmitter<boolean>();\r\n  @Output('activeIndexParent') activeIndexParent = new EventEmitter<number>();\r\n\r\n  constructor(public messageService: MessageService) {}\r\n\r\n  ngOnInit() {}\r\n\r\n  onActiveIndexChange(event:any) {\r\n    this.activeIndex = event;\r\n  }\r\n\r\n  nextPage() {\r\n      this.activeIndex++;\r\n      this.activeIndexParent.emit(this.activeIndex);\r\n      return;\r\n  }\r\n  \r\n  previousPage() {\r\n    this.activeIndex--;\r\n    this.activeIndexParent.emit(this.activeIndex);\r\n  }\r\n  \r\n  confirm() {\r\n    this.confirmButtonActivated.emit(true);\r\n  }\r\n\r\n  secondaryConfirm() {\r\n    this.secondaryConfirmButtonActivated.emit(true);\r\n  }\r\n\r\n}\r\n","<div class=\"card\">\r\n    <p-steps [model]=\"stepsItems\" [activeIndex]=\"activeIndex\" (activeIndexChange)=\"onActiveIndexChange($event)\" [readonly]=\"isReadOnly\"></p-steps>\r\n</div>\r\n\r\n<div class=\"card px-5 py-5\">\r\n    \r\n    <div class=\"flex flex-column align-items-center sm:align-items-start mb-3\">\r\n        <span class=\"text-900 font-bold text-4xl\">\r\n            {{stepsHeadings[activeIndex]}}\r\n        </span>\r\n        <p class=\"text-600 m-0\">\r\n            {{stepsSubheadings[activeIndex]}}\r\n        </p>\r\n    </div>\r\n\r\n    <ng-content *ngIf=\"activeIndex == 0\" select=\".step-1\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 1\" select=\".step-2\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 2\" select=\".step-3\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 3\" select=\".step-4\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 4\" select=\".step-5\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 5\" select=\".step-6\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 6\" select=\".step-7\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 7\" select=\".step-8\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 8\" select=\".step-9\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 9\" select=\".step-10\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 10\" select=\".step-11\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 11\" select=\".step-12\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 12\" select=\".step-13\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 13\" select=\".step-14\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 14\" select=\".step-15\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 15\" select=\".step-16\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 16\" select=\".step-17\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 17\" select=\".step-18\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 18\" select=\".step-19\"></ng-content>\r\n    <ng-content *ngIf=\"activeIndex == 19\" select=\".step-20\"></ng-content>\r\n\r\n    <div class=\"flex justify-content-between flex-wrap mt-5\">\r\n        <div class=\"flex align-items-center justify-content-center\">\r\n            <button *ngIf=\"activeIndex != 0\" pButton pRipple icon=\"pi pi-arrow-left\" class=\"p-button-primary\"\r\n                    [label]=\"previousBtnLabel\" (click)=\"previousPage()\">\r\n            </button>\r\n        </div>\r\n        <div *ngIf=\"!(stepsItems.length -1 == activeIndex); else confirmButtons\" class=\"flex align-items-center justify-content-center\">\r\n            <button pButton pRipple icon=\"pi pi-arrow-right\" iconPos=\"right\" class=\"p-button-primary\"\r\n                    [label]=\"nextBtnLabel\" (click)=\"nextPage()\">\r\n            </button>\r\n        </div>\r\n        <ng-template #confirmButtons >\r\n            <div class=\"flex align-items-center justify-content-center\">\r\n                <button *ngIf=\"secondaryConfirmButtonLabel\" pButton pRipple [icon]=\"'pi '+secondaryConfirmButtonIcon\" iconPos=\"right\" class=\"p-button-outlined p-button-primary mr-4\"\r\n                    [label]=\"secondaryConfirmButtonLabel\" [disabled]=\"formGroup && !formGroup.valid\" (click)=\"secondaryConfirm()\">\r\n                </button>\r\n                <button pButton pRipple [icon]=\"'pi '+confirmButtonIcon\" iconPos=\"right\" class=\"p-button-primary\"\r\n                    [label]=\"confirmButtonLabel\" [disabled]=\"formGroup && !formGroup.valid\" (click)=\"confirm()\">\r\n                </button>\r\n            </div>\r\n        </ng-template>\r\n    </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MenuSection } from '../../shared/models/menu-section.model';\r\nimport { MenuItem } from '../../shared/models/menu-item.model';\r\n\r\n@Component({\r\n  selector: 'wapp-touch-menu',\r\n  templateUrl: './wapp-touch-menu.component.html',\r\n  styleUrls: ['./wapp-touch-menu.component.css']\r\n})\r\nexport class WappTouchMenuComponent implements OnInit {\r\n\r\n  collapsedPanels: boolean = true;\r\n  \r\n  @Input('noItemsLabel') noItemsLabel: string = \"No items\";\r\n  @Input('expandLabel') expandLabel: string = \"Expand\";\r\n  @Input('collapseLabel') collapseLabel: string = \"Collapse\";\r\n  @Input('favouriteSectionTitle') favouriteSectionTitle: string = \"Favourite\";\r\n  @Input('menuSections') menuSections!: MenuSection[];\r\n  @Input('favouriteMenuItems') favouriteMenuItems!: MenuItem[];\r\n  \r\n  @Output('addFavouriteClicked') addFavouriteClicked = new EventEmitter<MenuItem>();\r\n  \r\n  ngOnInit(): void {\r\n    this.unshiftFavouriteMenuItems();\r\n  }\r\n\r\n  unshiftFavouriteMenuItems() {\r\n    this.menuSections.unshift({\r\n      id: 0,\r\n      name: this.favouriteSectionTitle,\r\n      description: '',\r\n      tokenId: '',\r\n      position: 0,\r\n      icon: 'pi-star',\r\n      menuItems: this.favouriteMenuItems,\r\n    })\r\n  }\r\n\r\n  expandAll(){\r\n    this.collapsedPanels = false;\r\n  }\r\n\r\n  collapseAll(){\r\n      this.collapsedPanels = true;\r\n  }\r\n\r\n  addToFavourites(menuItem:MenuItem) {\r\n    menuItem.isFavourite = !menuItem.isFavourite;\r\n    this.addFavouriteClicked.emit(menuItem);\r\n  }  \r\n}\r\n","<div class=\"flex align-items-start justify-content-start mb-2 ml-2\">\r\n    <div *ngIf=\"collapsedPanels else collapse\">\r\n        <button pButton \r\n                type=\"button\" \r\n                icon=\"pi pi-plus\"\r\n                class=\"p-button-rounded expand-button-color mr-2\" \r\n                [label]=\"expandLabel\" \r\n                (click)=\"expandAll()\">\r\n        </button>\r\n    </div>\r\n    <ng-template #collapse>\r\n        <button pButton \r\n                type=\"button\" \r\n                icon=\"pi pi-minus\"\r\n                class=\"p-button-rounded expand-button-color mr-2\" \r\n                [label]=\"collapseLabel\" \r\n                (click)=\"collapseAll()\">\r\n        </button>\r\n    </ng-template>                        \r\n</div>\r\n<div class=\"col-12 p-2\">\r\n    <p-panel #panel *ngFor=\"let section of menuSections\" [toggleable]=\"true\" [collapsed]=\"collapsedPanels\" toggler=\"header\">\r\n        <ng-template pTemplate=\"header\"> \r\n            <i [class]=\"'mx-2 text-primary pi ' + section.icon\" style=\"font-size: 1.5rem\"></i>\r\n            <span class=\"mx-2\">\r\n                {{section.name}}\r\n            </span>\r\n        </ng-template>\r\n        <div *ngIf=\"section.menuItems!.length == 0\" class=\"p-3\">\r\n            {{ noItemsLabel }}\r\n        </div>\r\n        <div class=\"grid\">\r\n            <div *ngFor=\"let menuItem of section.menuItems\">\r\n                <div class=\"p-3 h-full\">\r\n                    <p-card [header]=\"menuItem.name\" [subheader]=\"menuItem.description\" [style]=\"{ width: '240px' }\">\r\n                        <ng-template pTemplate=\"header\">\r\n                                <!-- Aumentar la sección para el click para redirigir el routerLink, sin afectar el botón de favorito -->\r\n                                <a [routerLink]=\"menuItem.routerLink\">\r\n                                    <img alt=\"Card\" [src]=\"menuItem.imageUrl\" />\r\n                                </a>\r\n                            </ng-template>\r\n                        <ng-template pTemplate=\"footer\">\r\n                            <p-button [icon]=\"menuItem.isFavourite ? 'pi pi-star-fill' : 'pi pi-star'\" \r\n                                      styleClass=\"p-button-rounded p-button-text\" (onClick)=\"addToFavourites(menuItem)\">\r\n                            </p-button>\r\n                        </ng-template>\r\n                    </p-card>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </p-panel>\r\n</div>","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Embed, IReportEmbedConfiguration, Report, models, service } from 'powerbi-client';\r\nimport { PowerBIReportEmbedComponent } from 'powerbi-client-angular';\r\nimport { EmbedConfig } from '../../shared/models/embed-config.model';\r\n\r\n@Component({\r\n  selector: 'wapp-powerbi-report',\r\n  templateUrl: './wapp-powerbi-report.component.html',\r\n  styleUrls: ['./wapp-powerbi-report.component.css']\r\n})\r\nexport class WappPowerbiReportComponent implements OnInit {\r\n\r\n  @Input('embedConfig') embedConfig!: EmbedConfig;\r\n  @Input('reportTitle') reportTitle!: string;\r\n  @Input('hasReportFilters') hasReportFilters: boolean = false;\r\n  @Input('parameterReportFilters') parameterReportFilters!: string;\r\n  @Input('showReportFilters') showReportFilters: boolean = false;\r\n  @Input('filterPanelPosition') filterPanelPosition: string = \"bottom\";\r\n  @Input('showPageNavigation') showPageNavigation: boolean = true;\r\n  @Input('showPrintButton') showPrintButton: boolean = true;\r\n  @Input('showFullScreenButton') showFullScreenButton: boolean = true;\r\n  @Input('showVisualHeaders') showVisualHeaders: boolean = false;\r\n  @Input('showRefreshButton') showRefreshButton: boolean = false;\r\n  @Input('zoomRatio') zoomRatio: number = 0.00175;\r\n\r\n  @Output('refreshNotAllowed') refreshNotAllowed = new EventEmitter<boolean>();\r\n\r\n  powerbiReportWidth!: number;\r\n  private _zoom!: number;\r\n\r\n  @Input() set zoom(value: number) {\r\n    this._zoom = value;\r\n    this.setReportZoom(this._zoom);\r\n  }\r\n\r\n  get zoom(): number {\r\n    return this._zoom;\r\n  }\r\n  reportClass = 'report-container';\r\n\r\n  reportConfig: IReportEmbedConfiguration = {\r\n    type: 'report',\r\n    embedUrl: undefined,\r\n    tokenType: models.TokenType.Embed,\r\n    accessToken: undefined,\r\n    filters: undefined,\r\n    settings: {\r\n      layoutType: models.LayoutType.Custom,\r\n      customLayout: {\r\n        displayOption: models.DisplayOption.FitToWidth\r\n      }\r\n    }\r\n  };\r\n\r\n  eventHandlersMap = new Map([\r\n    ['loaded', () => {\r\n      const report = this.reportObj.getReport();\r\n      report.setComponentTitle('Embedded report');\r\n    },\r\n    ],\r\n    ['rendered', () => { }],\r\n    ['error', (event?: service.ICustomEvent<any>) => {\r\n      if (event) {\r\n        console.error(event.detail);\r\n      }\r\n    },\r\n    ],\r\n    ['visualClicked', () => { }],\r\n    ['pageChanged', (event) => { }],\r\n  ]) as Map<string, (event?: service.ICustomEvent<any>, embeddedEntity?: Embed) => void | null>;\r\n\r\n  @ViewChild(PowerBIReportEmbedComponent) reportObj!: PowerBIReportEmbedComponent;\r\n\r\n  constructor(private elementRef: ElementRef) { }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event: any) {\r\n    this.getReportDivWidth();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.embedReport();\r\n  }\r\n\r\n  getReportDivWidth() {\r\n    this.powerbiReportWidth = this.elementRef.nativeElement.querySelector('#powerbiContainer').offsetWidth;\r\n    this.setReportZoom(this.powerbiReportWidth * this.zoomRatio);\r\n  }\r\n\r\n  async embedReport(): Promise<void> {\r\n    try {\r\n      this.reportConfig = {\r\n        ...this.reportConfig,\r\n        id: this.embedConfig!.id,\r\n        embedUrl: this.embedConfig!.embedUrl,\r\n        accessToken: this.embedConfig!.embedToken.token,\r\n        filters: this.parameterReportFilters ? [JSON.parse(this.parameterReportFilters)] : undefined,\r\n        settings: {\r\n          panes: {\r\n            filters: {\r\n              visible: this.showReportFilters\r\n            },\r\n            pageNavigation: {\r\n              visible: this.showPageNavigation\r\n            },\r\n          },\r\n          visualSettings: {\r\n            visualHeaders: [\r\n              {\r\n                settings: {\r\n                  visible: this.showVisualHeaders\r\n                }\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      };\r\n    } catch (error: any) {\r\n      console.log(`Failed to fetch config for report. Status: ${error.status} ${error.statusText}`);\r\n      return;\r\n    }\r\n  }\r\n\r\n  async refresh() {\r\n    const report: Report = this.reportObj.getReport();\r\n    try {\r\n      await report.refresh();\r\n    } catch (errors:any) {\r\n      console.log(errors);\r\n      if(errors.message = \"refreshNotAllowed\") this.onRefreshNotAllowed();\r\n    }\r\n  }\r\n\r\n  async updateFilters(filter: models.IFilter) {\r\n    try {\r\n      const report: Report = this.reportObj.getReport();\r\n      await report.removeFilters();        \r\n      await report.updateFilters(models.FiltersOperations.Add, [filter]);\r\n    } catch (error:any) {\r\n      console.error(error);\r\n      if(error.message = \"refreshNotAllowed\") this.onRefreshNotAllowed();\r\n      return;\r\n    }\r\n  }\r\n\r\n  async setReportZoom(zoom: number) {\r\n    try {\r\n      const report: Report = this.reportObj.getReport();\r\n      await report.setZoom(zoom);\r\n    } catch (error) {\r\n      console.log(\"Error setting report zoom: \" + error)\r\n    }\r\n  }\r\n\r\n  print() {\r\n    const report: Report = this.reportObj.getReport();\r\n    report.print();\r\n  }\r\n\r\n  enterFullScreen() {\r\n    const report: Report = this.reportObj.getReport();\r\n    report.fullscreen();\r\n  }\r\n\r\n  onRefreshNotAllowed() {\r\n    this.refreshNotAllowed.emit(true);\r\n  }\r\n}\r\n","<div *ngIf=\"reportTitle || showPrintButton || showFullScreenButton\" class=\"flex justify-content-between flex-wrap\">\r\n    <div class=\"flex align-items-center justify-content-center\">\r\n        <h4>{{reportTitle}}</h4>\r\n    </div>\r\n    <div class=\"flex align-items-center justify-content-center\">\r\n        <div class=\"text-right\">\r\n            <p-button *ngIf=\"showRefreshButton\" icon=\"pi pi-refresh\" \r\n                      styleClass=\"p-button-rounded p-button-secondary p-button-text\"\r\n                      (onClick)=\"refresh()\">\r\n            </p-button>\r\n            <p-button *ngIf=\"showPrintButton\" icon=\"pi pi-print\" \r\n                      styleClass=\"p-button-rounded p-button-secondary p-button-text\"\r\n                      (onClick)=\"print()\">\r\n            </p-button>\r\n            <p-button *ngIf=\"showFullScreenButton\" icon=\"pi pi-arrows-alt\" \r\n                      styleClass=\"p-button-rounded p-button-secondary p-button-text\"\r\n                      (onClick)=\"enterFullScreen()\">\r\n            </p-button>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"filterPanelPosition == 'right'\" class=\"grid\">\r\n    <div class=\"col-12 md:col-12 lg:col-8\">\r\n        <ng-container *ngTemplateOutlet=\"powerbiReport\"></ng-container>\r\n    </div>\r\n    <div class=\"col-12 md:col-12 lg:col-4\">\r\n        <ng-content *ngIf=\"hasReportFilters\" select=\".report-filters-right\"></ng-content>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"filterPanelPosition == 'left'\" class=\"grid\">\r\n    <div class=\"col-12 md:col-12 lg:col-8\">\r\n        <ng-content *ngIf=\"hasReportFilters\" select=\".report-filters-left\"></ng-content>\r\n    </div>\r\n    <div class=\"col-12 md:col-12 lg:col-4\">\r\n        <ng-container *ngTemplateOutlet=\"powerbiReport\"></ng-container>\r\n    </div>\r\n</div>\r\n\r\n<div *ngIf=\"filterPanelPosition == 'bottom'\">\r\n    <ng-container *ngTemplateOutlet=\"powerbiReport\"></ng-container>\r\n    <ng-content *ngIf=\"hasReportFilters\" select=\".report-filters-bottom\"></ng-content>\r\n</div>\r\n\r\n<ng-template #powerbiReport>\r\n    <div class=\"powerbi-report-container\">\r\n        <div id=\"powerbiContainer\" class=\"card mt-10 text-center\">\r\n            <powerbi-report [embedConfig]=\"reportConfig\" \r\n                            [cssClassName]=\"reportClass\" \r\n                            [eventHandlers]=\"eventHandlersMap\">\r\n            </powerbi-report>\r\n        </div>\r\n    </div>\r\n</ng-template>","import { Component } from '@angular/core';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n  selector: 'wapp-preview-image',\r\n  templateUrl: './wapp-preview-image.component.html',\r\n  styleUrls: ['./wapp-preview-image.component.css']\r\n})\r\nexport class WappPreviewImageComponent {\r\n\r\n  imageCropped!: any;\r\n\r\n  constructor(public dynamicDialogConfig: DynamicDialogConfig){}\r\n\r\n  ngOnInit(): void {\r\n    this.imageCropped = this.dynamicDialogConfig.data.imageEdited;\r\n  }\r\n\r\n}\r\n","<div class=\"flex align-content-center align-items-center justify-content-center h-full w-full\">\r\n    <p-image *ngIf=\"imageCropped\" \r\n        class=\"flex align-content-center align-items-center\"\r\n        [src]=\"imageCropped\" > </p-image>\r\n</div>\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';\r\nimport { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\nexport interface ModalSize {\r\n  width: string;\r\n  height?: string;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ModalService {\r\n\r\n  constructor(private dialogService: DialogService, private breakpointObserver: BreakpointObserver) { }\r\n\r\n  dialogRef: any;\r\n  smallDialogSubscription: any;\r\n  dialogData: any;\r\n\r\n  open(componentOrTemplateRef: Type<any>, modalConfig?: DynamicDialogConfig, modalSize?: ModalSize,): DynamicDialogRef {\r\n    if (!modalConfig) {\r\n      modalConfig = new DynamicDialogConfig;\r\n    }\r\n\r\n    if (modalConfig.data) {\r\n      this.dialogData = modalConfig.data;\r\n    }\r\n\r\n    // TODO dejo esto comentado como guía para completarlo más adelante\r\n    //modalConfig.maxWidth = '100vw';\r\n\r\n    this.dialogRef = this.dialogService.open(componentOrTemplateRef, modalConfig);\r\n\r\n    this.smallDialogSubscription = this.breakpointObserver.observe([Breakpoints.XSmall])\r\n      .subscribe(size => {\r\n        if (size.matches) {\r\n          //this.dialogRef.updateSize('100%', '100%');\r\n          //this.dialogRef.hasBackdrop = false;\r\n        } else {\r\n          if (!modalSize) {\r\n            //this.dialogRef.updateSize('auto', 'auto');\r\n          }\r\n          else {\r\n            //this.dialogRef.updateSize(modalSize.width, modalSize.height);\r\n          }\r\n        }\r\n      });\r\n\r\n    return this.dialogRef;\r\n  }\r\n\r\n  close(): void {\r\n    this.smallDialogSubscription.unsubscribe();\r\n    this.dialogRef.close();\r\n  }\r\n  \r\n  getComponentInstance<T>() {\r\n    let dialogComponentRef = this.dialogService.dialogComponentRefMap.get(this.dialogRef);\r\n    dialogComponentRef!.changeDetectorRef.detectChanges();\r\n\r\n    return dialogComponentRef?.instance.componentRef.instance as T;\r\n  }\r\n\r\n  getComponentRef() {\r\n    let dialogComponentRef = this.dialogService.dialogComponentRefMap.get(this.dialogRef);\r\n    dialogComponentRef!.changeDetectorRef.detectChanges();\r\n\r\n    return dialogComponentRef?.instance.componentRef;\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { WappPreviewImageComponent } from '../wapp-preview-image/wapp-preview-image.component';\r\nimport { ImageCropperData } from '../../shared/models/image-cropper-data.model';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ModalService } from '../../shared/service/modal/modal.service';\r\nimport { Dimensions, ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\r\nimport { ImageB64 } from '../../shared/models/image-b64.model';\r\nimport { UploaderFile } from '../../shared/models/uploaer-file.model';\r\n\r\n\r\n@Component({\r\n  selector: 'wapp-image-cropper',\r\n  templateUrl: './wapp-image-cropper.component.html',\r\n  styleUrls: ['./wapp-image-cropper.component.css']\r\n})\r\nexport class WappImageCropperComponent {\r\n  \r\n  @Input() dimensionsInput!: ImageCropperData;\r\n  @Input() translationsImageCropper: any;\r\n  @Output() imageCroppedFinal = new EventEmitter<any>();\r\n  @Output() imageB64 = new EventEmitter<any>();\r\n  @Input() blob: any;\r\n\r\n  imageChangedEvent: any = '';\r\n  croppedImage: any = '';\r\n  canvasRotation = 0;\r\n  rotation: number = 0;\r\n  translateH = 0;\r\n  translateV = 0;\r\n  scale = 1;\r\n  aspectRatio = 4 / 3;\r\n  showCropper = false;\r\n  containWithinAspectRatio = false;\r\n  transform: ImageTransform = {\r\n    translateUnit: 'px'\r\n  };\r\n  imageURL?: string;\r\n  loading = false;\r\n  allowMoveImage = true;\r\n  hidden = false;\r\n  \r\n  croppedImageFile: UploaderFile = {name: \"\", type: \"\", fileBase64: \"\", base64: \"\"};\r\n\r\n  dimensions: any;\r\n  maxFileSize!: number;\r\n  roundedCropper!: boolean;\r\n  fromModal: boolean = true;\r\n  dialogPreview!: DynamicDialogRef;\r\n  constructor(\r\n        private ref: DynamicDialogRef,\r\n        private dialogService: ModalService,\r\n        public dynamicDialogConfig: DynamicDialogConfig\r\n    ){}\r\n\r\n  ngOnInit(): void {\r\n    if(this.dynamicDialogConfig.data == undefined){\r\n      this.fromModal = false;\r\n      this.aspectRatio = this.dimensionsInput.configuredAspectRatio;\r\n      this.roundedCropper = this.dimensionsInput.roundedCropper;\r\n      this.dimensions = {\r\n        width: this.dimensionsInput.viewPortWidthPx,\r\n        height: this.dimensionsInput.viewPortHeihtPx\r\n      }\r\n      this.maxFileSize = this.dimensions.maxFileSize;\r\n    }else{\r\n      this.aspectRatio = this.dynamicDialogConfig.data.dataModal.configuredAspectRatio;\r\n      this.roundedCropper = this.dynamicDialogConfig.data.dataModal.roundedCropper;\r\n      this.dimensions = {\r\n        width: this.dynamicDialogConfig.data.dataModal.viewPortWidthPx,\r\n        height: this.dynamicDialogConfig.data.dataModal.viewPortHeihtPx\r\n      }\r\n      this.maxFileSize = this.dynamicDialogConfig.data.dataModal.maxFileSize\r\n      this.translationsImageCropper = this.dynamicDialogConfig.data.translations;\r\n      this.blob = this.dynamicDialogConfig.data.blob;\r\n      this.setCroppeImageFileObject();\r\n    }\r\n  }\r\n\r\n  myUploader(event: any) {\r\n    this.resetImage()\r\n    this.loading = true;\r\n    this.blob = event.files[0];\r\n    this.setCroppeImageFileObject();\r\n  }\r\n\r\n  setCroppeImageFileObject(){\r\n    this.croppedImageFile.name = this.blob.name;\r\n    this.croppedImageFile.type = this.blob.type;\r\n  }\r\n\r\n  imageCropped(event: ImageCroppedEvent) {\r\n    this.croppedImage = event.base64;\r\n  }\r\n\r\n  imageLoaded() {\r\n    this.showCropper = true;\r\n  }\r\n\r\n  cropperReady(sourceImageDimensions: Dimensions) {\r\n    this.loading = false;\r\n  }\r\n\r\n  loadImageFailed() {\r\n    console.error('Load image failed');\r\n  }\r\n\r\n  rotateLeft() {\r\n    this.loading = true;\r\n    setTimeout(() => { // Use timeout because rotating image is a heavy operation and will block the ui thread\r\n      this.canvasRotation--;\r\n      this.flipAfterRotate();\r\n    });\r\n  }\r\n\r\n  rotateRight() {\r\n    this.loading = true;\r\n    setTimeout(() => {\r\n      this.canvasRotation++;\r\n      this.flipAfterRotate();\r\n    });\r\n  }\r\n\r\n  moveLeft() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      translateH: ++this.translateH\r\n    };\r\n  }\r\n\r\n  moveRight() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      translateH: --this.translateH\r\n    };\r\n  }\r\n\r\n  moveTop() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      translateV: ++this.translateV\r\n    };\r\n  }\r\n\r\n  moveBottom() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      translateV: --this.translateV\r\n    };\r\n  }\r\n\r\n  flipHorizontal() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      flipH: !this.transform.flipH\r\n    };\r\n  }\r\n\r\n  flipVertical() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      flipV: !this.transform.flipV\r\n    };\r\n  }\r\n\r\n  resetImage() {\r\n    this.scale = 1;\r\n    this.rotation = 0;\r\n    this.canvasRotation = 0;\r\n    this.transform = {\r\n      translateUnit: 'px'\r\n    };\r\n  }\r\n\r\n  zoomOut() {\r\n    this.scale -= .1;\r\n    this.transform = {\r\n      ...this.transform,\r\n      scale: this.scale\r\n    };\r\n  }\r\n\r\n  zoomIn() {\r\n    this.scale += .1;\r\n    this.transform = {\r\n      ...this.transform,\r\n      scale: this.scale\r\n    };\r\n  }\r\n\r\n  toggleContainWithinAspectRatio() {\r\n    this.containWithinAspectRatio = !this.containWithinAspectRatio;\r\n  }\r\n\r\n  updateRotation() {\r\n    this.transform = {\r\n      ...this.transform,\r\n      rotate: this.rotation\r\n    };\r\n  }\r\n\r\n  toggleAspectRatio() {\r\n    this.aspectRatio = this.aspectRatio === 4 / 3 ? 16 / 5 : 4 / 3;\r\n  }\r\n  \r\n  toggleAspectRatio1() {\r\n    this.aspectRatio = this.aspectRatio = 1;\r\n  }\r\n\r\n  viewCrop(){\r\n    this.dialogPreview = this.dialogService.open(WappPreviewImageComponent, {\r\n      header: this.translationsImageCropper.modal.preview,\r\n      width:'35rem',\r\n      contentStyle: {\"overflow\": \"auto\", \"height\": \"35rem\", \"padding-bottom\": \"8px\"},\r\n      data: {imageEdited: this.croppedImage}\r\n    })\r\n  }\r\n\r\n  deleteBlob(){\r\n    this.blob = null\r\n    this.croppedImage = null\r\n  }\r\n\r\n  cancelDialog(){\r\n    this.blob = null\r\n    this.croppedImage = null\r\n    this.ref.close();\r\n  }\r\n\r\n  saveImageCropped(){\r\n    this.croppedImageFile.fileBase64 = this.croppedImage;\r\n    this.croppedImageFile.base64 = this.imageCroppedToBase64(this.croppedImage, this.croppedImageFile.name);\r\n\r\n    if(this.fromModal){\r\n      this.ref.close(this.croppedImageFile)\r\n    }else{\r\n      this.imageCroppedFinal.emit(this.croppedImageFile);\r\n    }\r\n  }\r\n\r\n  private flipAfterRotate() {\r\n    const flippedH = this.transform.flipH;\r\n    const flippedV = this.transform.flipV;\r\n    this.transform = {\r\n      ...this.transform,\r\n      flipH: flippedV,\r\n      flipV: flippedH\r\n    };\r\n    this.translateH = 0;\r\n    this.translateV = 0;\r\n  }\r\n\r\n  imageCroppedToBase64(imageData: string, imageName: string){\r\n    const base64Parts = imageData?.split(',');\r\n    if (base64Parts.length === 2) {\r\n      const base64Content = base64Parts[1];\r\n\r\n/*       let objectImage: ImageB64 = {\r\n        name: imageName, \r\n        base64: base64Content\r\n      } */\r\n\r\n      return base64Content;\r\n    }\r\n    return '';\r\n  }\r\n}\r\n","\r\n<div class=\"flex flex-column card border-none align-content-center justify-content-center wapp-card-cropper px-5 py-5\">\r\n    <div class=\"flex flex-1\" ></div>    \r\n    <div class=\"flex justify-content-center align-content-center\" *ngIf=\"!blob; else imageCropper\">\r\n        <span class=\"flex align-content-center surface-border justify-content-between flex-wrap\"> \r\n            <p-fileUpload #fileUploader\r\n                class=\"bg-white\"\r\n                chooseIcon=\"pi pi-image\"\r\n                chooseLabel=\"Choose\"\r\n                (onSelect)=\"myUploader($event)\"\r\n                name=\"filesToUpload[]\" \r\n                [auto]=\"true\"\r\n                [multiple]=\"false\"\r\n                accept=\"image/*\"\r\n                mode=\"basic\"\r\n                accept=\"image/*\" \r\n                [maxFileSize]=\"maxFileSize\">\r\n                \r\n            </p-fileUpload>\r\n        </span>\r\n    </div>\r\n    \r\n    <ng-template #imageCropper>\r\n        <div class=\"flex flex-column w-full\">\r\n            <div class=\"flex flex-row align-content-center\">\r\n                <div class=\"w-3\"></div>\r\n                <div class=\"flex align-content-center align-items-center justify-content-between wapp-image-cropper-wrapper flex-1\">\r\n                    <image-cropper\r\n                            [imageFile]=\"blob\"\r\n                            [imageURL]=\"imageURL\"\r\n                            [maintainAspectRatio]=\"true\"\r\n                            [containWithinAspectRatio]=\"containWithinAspectRatio\"\r\n                            [aspectRatio]=\"aspectRatio\"\r\n                            [resizeToWidth]= \"dimensions.width\"\r\n                            [resizeToHeight]=\"dimensions.height\"\r\n                            [cropperMinWidth]=\"128\"\r\n                            [onlyScaleDown]=\"true\"\r\n                            [roundCropper]=\"false\"\r\n                            [canvasRotation]=\"canvasRotation\"\r\n                            [(transform)]=\"transform\"\r\n                            [alignImage]=\"'center'\"\r\n                            [style.display]=\"showCropper ? null : 'none'\"\r\n                            [allowMoveImage]=\"allowMoveImage\"\r\n                            [hidden]=\"hidden\"\r\n                            backgroundColor=\"blue\"\r\n                            format=\"png\"\r\n                            [roundCropper]=\"roundedCropper\"\r\n                            (imageCropped)=\"imageCropped($event)\"\r\n                            (imageLoaded)=\"imageLoaded()\"\r\n                            (cropperReady)=\"cropperReady($event)\"\r\n                            (loadImageFailed)=\"loadImageFailed()\"\r\n                    ></image-cropper>\r\n                </div>\r\n                <div class=\"flex flex-column justify-content-center align-content-center align-items-center\">\r\n                    <p-button \r\n                                class=\"flex align-items-center align-content-center justify-content-start px-3 py-3\" \r\n                                [pTooltip]=\"translationsImageCropper.zoomIn\"\r\n                                icon=\"pi pi-search-plus\" (click)=\"zoomIn()\"\r\n                                styleClass=\"p-button-rounded p-button-text\"></p-button>\r\n                        <p-button \r\n                                class=\"flex align-items-center align-content-center justify-content-start px-3 py-3\" \r\n                                [pTooltip]=\"translationsImageCropper.zoomOut\"\r\n                                icon=\"pi pi-search-minus\" \r\n                                (click)=\"zoomOut()\"\r\n                                styleClass=\"p-button-rounded p-button-text\"></p-button> \r\n                </div>\r\n                <div class=\"flex flex-1\"></div>\r\n            </div>\r\n    \r\n            <div class=\"flex flex-1\">\r\n                <div class=\"w-3\"></div>\r\n                <div class=\"flex flex-1 flex-column wapp-image-cropper-tools py-4\">\r\n                    <p-slider [(ngModel)]=\"rotation\" [min]=\"-360\" [max]=\"360\" \r\n                            (ngModelChange)=\"updateRotation()\" class=\"w-full align-content-center\"\r\n                            [pTooltip]=\"translationsImageCropper.rotation\"></p-slider>\r\n                </div>\r\n                <div class=\"w-3 align-items-end\"></div>\r\n            </div>\r\n    \r\n            <div class=\"flex flex-1\">\r\n                <div class=\"w-3\"></div>\r\n                <div class=\"flex flex-1  wapp-image-cropper-tools flex-row justify-content-center align-items-center align-content-center\">\r\n                    <p-button\r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            icon=\"pi pi-replay\" \r\n                            tooltipPosition=\"bottom\"\r\n                            [pTooltip]=\"translationsImageCropper.rotateLeft\"\r\n                            (click)=\"rotateLeft()\"></p-button>\r\n                    <p-button \r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            icon=\"pi pi-refresh\"\r\n                            tooltipPosition=\"bottom\"\r\n                            [pTooltip]=\"translationsImageCropper.rotateRight\"\r\n                            (click)=\"rotateRight()\"></p-button>\r\n                    <p-button\r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            icon=\"pi pi-arrows-h\" \r\n                            tooltipPosition=\"bottom\"\r\n                            [pTooltip]=\"translationsImageCropper.flipHorizontal\"\r\n                            (click)=\"flipHorizontal()\"></p-button>\r\n                    <p-button \r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            [pTooltip]=\"translationsImageCropper.flipVertical\"\r\n                            icon=\"pi pi-arrows-v\"\r\n                            tooltipPosition=\"bottom\"\r\n                            (click)=\"flipVertical()\"></p-button>\r\n                    <p-button \r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            [pTooltip]=\"translationsImageCropper.restore\"\r\n                            icon=\"pi pi-history\"\r\n                            tooltipPosition=\"bottom\"\r\n                            (click)=\"resetImage()\"></p-button>\r\n                    <p-button \r\n                            styleClass=\"p-button-rounded p-button-text\"\r\n                            [pTooltip]=\"translationsImageCropper.preview\"\r\n                            icon=\"pi pi-eye\"\r\n                            tooltipPosition=\"bottom\"\r\n                            (click)=\"viewCrop()\"></p-button>\r\n                </div>\r\n                <div class=\"w-3 align-items-end\"></div>\r\n            </div>\r\n        </div>\r\n        \r\n    </ng-template>\r\n    <div class=\"flex flex-1\" ></div>\r\n    <div class=\"flex justify-content-end align-content-center align-items-center w-full h-2\">\r\n        <p-button *ngIf=\"blob\"\r\n            (click)=\"deleteBlob()\"\r\n            class=\"flex align-content-center align-items-center \"\r\n            icon=\"pi pi-trash\"\r\n            [label]=\"translationsImageCropper.delete\"\r\n            styleClass=\"p-button-text\"></p-button>\r\n        <p-button\r\n            *ngIf=\"fromModal\"\r\n            (click)=\"cancelDialog()\"\r\n            class=\"flex align-content-center align-items-center \"\r\n            icon=\"pi pi-times\"\r\n            [label]=\"translationsImageCropper.cancel\"\r\n            styleClass=\"p-button-text\"></p-button>\r\n        <p-button\r\n            icon=\"pi pi-save\"\r\n            (click)=\"saveImageCropped()\"\r\n            [disabled]=\"!blob\"\r\n            [label]=\"translationsImageCropper.save\"\r\n            class=\"flex align-content-center align-items-center\"\r\n            styleClass=\"p-button-text\"></p-button>\r\n    </div>\r\n    \r\n    </div>\r\n    \r\n    ","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { DynamicDialogRef, DialogService } from 'primeng/dynamicdialog';\r\nimport { WappImageCropperComponent } from '../../image/wapp-image-cropper/wapp-image-cropper.component';\r\nimport { ImageCropperData } from '../../shared/models/image-cropper-data.model';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { UploaderFile } from '../../shared/models/uploaer-file.model';\r\nimport { ImageB64 } from '../../shared/models/image-b64.model';\r\nimport { WappFileUpload } from '../../shared/models/wapp-file-uploader.model';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'wapp-image-file-uploader',\r\n  templateUrl: './wapp-image-file-uploader.component.html',\r\n  styleUrls: ['./wapp-image-file-uploader.component.scss'],\r\n  providers: [ConfirmationService]\r\n})\r\nexport class WappImageFileUploaderComponent implements OnInit {\r\n  @Input('allowMultipleImages') allowMultipleImages: boolean = false;\r\n  @Input('activeImageUpload') activeImageUpload: boolean = false;\r\n  @Input('imagesAlreadyUploaded') imagesAlreadyUploaded: any[] = [];\r\n  @Input('imageSingleMode') imageSingleMode: any;\r\n  @Input('uploadUrl') uploadUrl!: string;\r\n  @Input('updateUrl') updateUrl!: string;\r\n  @Input('deleteUrl') deleteUrl!: string;\r\n  @Input('headers') headers!: HttpHeaders;\r\n  @Input('activePositionProperty') activePositionProperty: boolean = false;\r\n  @Input('viewSingleMode') viewSingleMode: boolean = false;\r\n  @Input('identificatorName') identificatorName: string = \"id\";\r\n  @Input('identificatorValue') identificatorValue: any = 0;\r\n  @Input('imageUploadConfig') imageUploadConfig: WappFileUpload = { \r\n    imagePropertyNames: [], \r\n    maxImageSize: 1000000,\r\n    allowAuto: false, \r\n    uploadButtonLabel: \"\",\r\n    chooseButtonLabel: \"\",\r\n    cancelButtonLabel: \"\",\r\n    contentHeaderLabel: \"\",\r\n    contentSubheaderLabel: \"\",\r\n    deleteImageButtonLabel: \"\",\r\n    croppedDialogTranslations: \"\",\r\n    croppedImageConfiguration: {\r\n      roundedCropper: false,\r\n      configuredAspectRatio: 4/3,\r\n      viewPortWidthPx: 400,\r\n      viewPortHeihtPx: 500\r\n    },\r\n    confirmDeleteMessageLabel: \"\",\r\n    confirmDeleteButtonLabel: \"\"\r\n  }\r\n\r\n  @Output('onUploadFinished') onUploadFinished: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output('onErrorHandler') onErrorHandler: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output('onReturnImagesB64') onReturnImagesB64: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output('onDeleteImage') onDeleteImage: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @ViewChild('fileUpload') fileUpload!: FileUpload;\r\n  \r\n  @ViewChildren('buttonRemoveOnlyImage') buttonRemoveOnlyImage!: QueryList<ElementRef>;\r\n  @ViewChild('fileUploadOnlyImage') fileuploadOnlyImage!: FileUpload;\r\n  \r\n  cropperImages: any[] = [];\r\n  defaultWidth: string = \"w-18rem\";\r\n  defaultHeight: string = \"h-18rem\";\r\n  disableMoveButtons: boolean = false;\r\n  isUploadingMultiMode: boolean = false;\r\n  isDeletingMultiMode: boolean = false;\r\n  \r\n  onlyImageSelected: any;\r\n  onlyCroppedImageSelected: any = null;\r\n  \r\n  dimensionsInput!: ImageCropperData;\r\n  carouselImagesResponsiveOptions: any[] = [\r\n    {\r\n      breakpoint: '1024px',\r\n      numVisible: 4,\r\n      numScroll: 4\r\n    },\r\n    {\r\n      breakpoint: '768px',\r\n      numVisible: 2,\r\n      numScroll: 2\r\n    },\r\n    {\r\n      breakpoint: '560px',\r\n      numVisible: 1,\r\n      numScroll: 1\r\n    }\r\n  ];\r\n\r\n  constructor(\r\n    private dialogService: DialogService, \r\n    private http: HttpClient, \r\n    private confirmationService: ConfirmationService\r\n  ){}\r\n\r\n  ngOnInit(): void {\r\n    this.dimensionsInput = {\r\n      roundedCropper: this.imageUploadConfig.croppedImageConfiguration.roundedCropper,\r\n      configuredAspectRatio: this.imageUploadConfig.croppedImageConfiguration.configuredAspectRatio,\r\n      viewPortWidthPx: this.imageUploadConfig.croppedImageConfiguration.viewPortWidthPx,\r\n      viewPortHeihtPx: this.imageUploadConfig.croppedImageConfiguration.viewPortHeihtPx,\r\n      maxFileSize: this.imageUploadConfig.maxImageSize\r\n    }\r\n\r\n    if(this.activeImageUpload == false && this.imagesAlreadyUploaded.length > 0){\r\n      this.cropperImages.push(...this.imagesAlreadyUploaded);\r\n    }\r\n  }\r\n\r\n  readProperty(obj: any, prop:string):any {\r\n    if(typeof obj === 'undefined') {\r\n      return false;\r\n    }\r\n    \r\n    var _index = prop.indexOf('.')\r\n    if(_index > -1) {\r\n        return this.readProperty(obj[prop.substring(0, _index)], prop.substr(_index + 1));\r\n    }\r\n    return obj[prop];\r\n  }\r\n\r\n  onCustomUploadSingleMode(event: any){\r\n    this.onlyImageSelected = event.currentFiles[0];\r\n    this.openModalCropper(this.onlyImageSelected, event.originalEvent);\r\n  }\r\n\r\n  onCustomizeUploadFunctionSingleMode(event: any){\r\n    if(this.activeImageUpload == true){\r\n      if(this.onlyCroppedImageSelected){\r\n        let base64Images: ImageB64[] = [{base64: this.onlyCroppedImageSelected.base64, name: this.onlyCroppedImageSelected.name}];\r\n\r\n        this.http.post(this.uploadUrl, base64Images, { headers: this.headers }).subscribe({\r\n          next: (imageUploaded: any) => {\r\n            this.fileuploadOnlyImage.clear();\r\n            this.onUploadFinished.emit(imageUploaded);\r\n          },\r\n          error: (error) => {\r\n            this.fileuploadOnlyImage.uploading = false;\r\n            this.onErrorHandler.emit(error);\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n\r\n  removeImageSingleMode(event: Event, file: any) {\r\n    event.stopPropagation();\r\n    this.fileuploadOnlyImage.clear();\r\n    this.onlyImageSelected = null;\r\n    this.onlyCroppedImageSelected = null;\r\n    this.imageSingleMode = null;\r\n    this.onReturnImagesB64.emit(null);\r\n  }\r\n\r\n  moveImageToLeft(event: any){\r\n    let indexToMove = this.findIndex(event);\r\n    if(indexToMove > 0 && indexToMove < this.imagesAlreadyUploaded.length){\r\n      const temp = this.imagesAlreadyUploaded[indexToMove];\r\n      this.imagesAlreadyUploaded[indexToMove] = this.imagesAlreadyUploaded[ indexToMove - 1];\r\n      this.imagesAlreadyUploaded[indexToMove - 1] = temp;\r\n\r\n      this.imagesAlreadyUploaded = (this.activePositionProperty) ? this.addPositionProperty(this.imagesAlreadyUploaded) : this.imagesAlreadyUploaded;\r\n      \r\n      if(this.uploadUrl != undefined && this.identificatorValue !== 0){\r\n        this.disableMoveButtons = true;\r\n        this.updateImage(this.imagesAlreadyUploaded);\r\n      }else if(this.activeImageUpload == true && this.uploadUrl != undefined){\r\n        this.onUploadFinished.emit(this.imagesAlreadyUploaded);\r\n      }else{\r\n        this.onReturnImagesB64.emit(this.getArraysToCreateAndToUpdate(this.imagesAlreadyUploaded));\r\n      }\r\n    }\r\n  }\r\n\r\n  moveImageToRight(event: any){  \r\n    let indexToMove = this.findIndex(event);\r\n    if(indexToMove >= 0 && indexToMove < this.imagesAlreadyUploaded.length -1){\r\n      const temp = this.imagesAlreadyUploaded[indexToMove];\r\n      this.imagesAlreadyUploaded[indexToMove] = this.imagesAlreadyUploaded[ indexToMove + 1];\r\n      this.imagesAlreadyUploaded[indexToMove + 1] = temp;\r\n\r\n      this.imagesAlreadyUploaded = (this.activePositionProperty) ? this.addPositionProperty(this.imagesAlreadyUploaded) : this.imagesAlreadyUploaded;\r\n\r\n      if(this.uploadUrl!=undefined && this.identificatorValue !== 0){\r\n        this.disableMoveButtons = true; \r\n        this.updateImage(this.imagesAlreadyUploaded);\r\n      }else{\r\n        this.onReturnImagesB64.emit(this.getArraysToCreateAndToUpdate(this.imagesAlreadyUploaded));\r\n      }\r\n    }\r\n  }\r\n\r\n  onCustomizeUploadFunctionMultiMode(event?: any){\r\n    if(this.activeImageUpload == true){\r\n      if(this.cropperImages.length > 0){\r\n        let base64Images: ImageB64[] = this.mapToObjectB64(this.cropperImages);\r\n        this.isUploadingMultiMode = true;\r\n\r\n        this.http.post(this.uploadUrl, base64Images, { headers: this.headers }).subscribe({\r\n          next:  (imagesUploaded: any) => {\r\n            this.imagesAlreadyUploaded.push(...imagesUploaded);\r\n            this.imagesAlreadyUploaded = [...this.imagesAlreadyUploaded];\r\n            this.cropperImages = [];\r\n            this.fileUpload.clear();\r\n\r\n            this.imagesAlreadyUploaded = this.activePositionProperty ? this.addPositionProperty(this.imagesAlreadyUploaded) : this.imagesAlreadyUploaded;\r\n            \r\n            if(this.uploadUrl!=undefined && this.identificatorValue !== 0){\r\n              this.updateImage(this.imagesAlreadyUploaded);\r\n            }else{\r\n              this.onUploadFinished.emit(this.imagesAlreadyUploaded);\r\n            }\r\n\r\n            this.isUploadingMultiMode = false;\r\n          },\r\n          error: (error) => {\r\n            this.isUploadingMultiMode = false;\r\n            this.onErrorHandler.emit(error);\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n\r\n  onCustomUploadMultiMode(event: any){\r\n    if(this.allowMultipleImages == true){\r\n      event.currentFiles.forEach((file: any, index: number) => {\r\n        let foundIt = this.cropperImages.find(f => f.name == file.name);\r\n        if(event.currentFiles.length == 0){\r\n          this.openModalCropper(file, event.originalEvent);\r\n        }else if(foundIt == undefined){\r\n          this.openModalCropper(file, event.originalEvent);\r\n        }\r\n      });\r\n    }else{\r\n      this.openModalCropper(event.currentFiles[0], event.originalEvent);\r\n    }\r\n  }\r\n\r\n  confirmDeleteImageMultiMode(event: any, image: any){\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget, \r\n      message: this.imageUploadConfig.confirmDeleteMessageLabel,\r\n      icon: \"pi pi-exclamation-triangle\",\r\n      acceptLabel: this.imageUploadConfig.deleteImageButtonLabel, \r\n      accept: () => {\r\n        this.onDeleteImageMultiMode(image);\r\n      }\r\n    })\r\n  }\r\n\r\n  onDeleteFileMultiMode(event: any, file: File, uploader: FileUpload){\r\n    const index = uploader.files.indexOf(file);\r\n    uploader.remove(event, index);\r\n    this.cropperImages = this.cropperImages.filter(s => !file.name.includes(s.name));\r\n  }\r\n\r\n  onDeleteImageMultiMode(image: any){\r\n    if(this.activeImageUpload){\r\n      this.isDeletingMultiMode = true;\r\n      let deleteUrlFinal = this.deleteUrl+\"/\"+image[this.identificatorName];\r\n      this.http.delete(deleteUrlFinal, {headers: this.headers}).subscribe({\r\n        next: () => {\r\n          this.imagesAlreadyUploaded = this.imagesAlreadyUploaded.filter(img => (img.base64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));\r\n          this.isDeletingMultiMode = false;\r\n          this.onDeleteImage.emit(image);\r\n        },\r\n        error: (error) => {\r\n          this.isDeletingMultiMode = false;\r\n          this.onErrorHandler.emit(error);\r\n          this.onDeleteImage.emit(null);\r\n        }\r\n      })\r\n    }else{\r\n      this.imagesAlreadyUploaded = this.imagesAlreadyUploaded.filter(img => (img.base64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));\r\n      this.onDeleteImage.emit(image);\r\n    }\r\n  }\r\n\r\n  updateImage(imagesToUpdate: any[]): any{\r\n    let updateUrlFinal = this.updateUrl + \"/\" + this.identificatorValue;\r\n    this.http.put(updateUrlFinal, imagesToUpdate, {headers: this.headers}).subscribe({\r\n      next: (imagesUpdated: any) => {\r\n        this.disableMoveButtons = false;\r\n        this.imagesAlreadyUploaded = imagesUpdated;\r\n        this.onUploadFinished.emit(this.imagesAlreadyUploaded);\r\n      }\r\n    });\r\n  }\r\n\r\n  openModalCropper(fileBlob: any, event?: any){\r\n    const ref: DynamicDialogRef = this.dialogService.open(WappImageCropperComponent, {\r\n      header: this.imageUploadConfig.croppedDialogTranslations?.modal.header,\r\n      width: '70rem',\r\n      contentStyle: {\"overflow\": \"auto\", \"height\": \"auto\", \"padding-bottom\": \"8px\"},\r\n      data: {dataModal: this.dimensionsInput, translations: this.imageUploadConfig.croppedDialogTranslations, blob: fileBlob},\r\n      resizable: true\r\n    });\r\n\r\n    ref.onClose.subscribe((imageCropped: UploaderFile) => {\r\n      if(imageCropped){\r\n        if(this.allowMultipleImages == false){\r\n          this.onlyCroppedImageSelected = imageCropped;\r\n          this.onReturnImagesB64.emit(this.mapToObjectB64(this.onlyCroppedImageSelected));\r\n        }else{\r\n          this.cropperImages.push(imageCropped);\r\n          \r\n          this.cropperImages = (this.activePositionProperty && this.activeImageUpload == false ) ? this.addPositionProperty(this.cropperImages) : this.cropperImages;\r\n\r\n          this.onReturnImagesB64.emit(this.getArraysToCreateAndToUpdate(this.mapToObjectB64(this.cropperImages)));\r\n\r\n          if(this.activeImageUpload == false){\r\n            this.imagesAlreadyUploaded.push(imageCropped);\r\n            this.imagesAlreadyUploaded = [...this.imagesAlreadyUploaded];\r\n          }\r\n        }\r\n      }else{\r\n        if(this.allowMultipleImages){\r\n          this.fileUpload._files = this.fileUpload._files.filter(f => !f.name.includes(fileBlob.name));\r\n          let filesAux = this.fileUpload._files;\r\n          this.fileUpload.clear();\r\n          this.fileUpload._files = filesAux;\r\n        }else{\r\n          this.onlyImageSelected = null;\r\n          this.fileuploadOnlyImage.clear();\r\n        }\r\n      }\r\n\r\n      if((this.activeImageUpload == true) && (this.imageUploadConfig.allowAuto == true) && (this.cropperImages.length == this.fileUpload._files.length)){\r\n        this.onCustomizeUploadFunctionMultiMode();\r\n      }\r\n    })\r\n  }\r\n\r\n  mapToObjectB64(images: any): ImageB64[]{\r\n    if(Array.isArray(images) == false){\r\n      return  [{\r\n        base64: images.base64,\r\n        name: images.name,\r\n        ...(images.position !== undefined && { position: images.position })\r\n      }]\r\n    }\r\n\r\n    return images.map((img: any) => {\r\n      return  {\r\n        base64: img.base64,\r\n        name: img.name, \r\n        ...(img.position !== undefined && { position: img.position })\r\n      }\r\n    });\r\n  }\r\n\r\n  getArraysToCreateAndToUpdate(images: any[]){\r\n    return {\r\n      toCreate: \r\n        images.filter((img) => img[this.identificatorName] == undefined),\r\n      toUpdated: \r\n        images.filter((img) => img.base64 == undefined)\r\n    }\r\n  }\r\n\r\n  addPositionProperty(imagesArray: any[]){\r\n    imagesArray = imagesArray.map((img, index) => ({\r\n      ...img,\r\n      position: index\r\n    }))\r\n\r\n    return imagesArray;\r\n  }\r\n\r\n  onImageMouseOver(file: any) {\r\n    this.buttonRemoveOnlyImage.toArray().forEach(btnRemove => {\r\n        btnRemove.nativeElement.id === file.name ? btnRemove.nativeElement.style.display = 'flex' : null;\r\n    })\r\n  }\r\n\r\n  onImageMouseLeave(file: any) {\r\n    this.buttonRemoveOnlyImage.toArray().forEach(btnRemove => {\r\n        btnRemove.nativeElement.id === file.name ? btnRemove.nativeElement.style.display = 'none' : null;\r\n    })\r\n  }\r\n\r\n  findIndex(img: any){\r\n    return this.imagesAlreadyUploaded.indexOf(img);\r\n  }\r\n}\r\n","<div *ngIf=\"allowMultipleImages == false; else withCarousel\" class=\"relative flex align-items-center mr-3 p-4 w-max\">\r\n    <div class=\"relative flex align-items-center mr-3 p-4 w-max\">\r\n        <img *ngIf=\"viewSingleMode == true; else editMode\" \r\n            [src]=\"imageUploadConfig.singleModeImageDefault ? imageUploadConfig.singleModeImageDefault : (imageSingleMode ? imageSingleMode : 'https://wappingstoragedev.blob.core.windows.net/wapping/appresources/ic_image_blue.png')\"\r\n            alt=\"Add an image here\" \r\n            class=\"{{imageUploadConfig.singleModeImageWidth ?? defaultWidth}} {{imageUploadConfig.singleModeImageHeight ?? defaultHeight}} shadow-4\">\r\n        <ng-template #editMode>\r\n            <div *ngIf=\"onlyCroppedImageSelected !== null\" class=\"h-full relative w-ll border-3 border-transparent border-round hover:bg-primary transition-duration-100 cursor-auto\" (mouseenter)=\"onImageMouseOver(onlyImageSelected)\" (mouseleave)=\"onImageMouseLeave(onlyImageSelected)\" style=\"padding: 1px;\">\r\n                <img [src]=\"onlyCroppedImageSelected.fileBase64\" [alt]=\"onlyImageSelected.name\" class=\"{{imageUploadConfig.singleModeImageWidth ?? defaultWidth}} {{imageUploadConfig.singleModeImageHeight ?? defaultHeight}} shadow-4 border-round\">\r\n                <button [id]=\"onlyImageSelected.name\" #buttonRemoveOnlyImage pButton pRipple \r\n                    type=\"button\" \r\n                    icon=\"pi pi-times\" \r\n                    class=\"wapp-file-upload-button-remove p-button-rounded p-button-primary text-sm absolute justify-content-center align-items-center cursor-pointer\"  \r\n                    (click)=\"removeImageSingleMode($event, onlyImageSelected)\">\r\n                </button>\r\n            </div>\r\n            <img *ngIf=\"onlyCroppedImageSelected == null\" \r\n                [src]=\"imageUploadConfig.singleModeImageDefault ? imageUploadConfig.singleModeImageDefault : (imageSingleMode ? imageSingleMode : 'https://wappingstoragedev.blob.core.windows.net/wapping/appresources/ic_image_blue.png')\"\r\n                alt=\"Add an image here\" \r\n                class=\"{{imageUploadConfig.singleModeImageWidth ?? defaultWidth}} {{imageUploadConfig.singleModeImageHeight ?? defaultHeight}} shadow-4\">\r\n            <p-fileUpload #fileUploadOnlyImage [ngClass]=\"{'wapp-file-upload-button': onlyImageSelected}\" \r\n                styleClass=\"p-button-rounded absolute bottom-0 right-0\" \r\n                mode=\"basic\" \r\n                accept=\"image/*\" \r\n                [multiple]=\"false\" \r\n                (onSelect)=\"onCustomUploadSingleMode($event)\" \r\n                [uploadLabel]=\"onlyCroppedImageSelected ? (onlyCroppedImageSelected.name.length>6)? (onlyCroppedImageSelected.name | slice:0:6)+'...':(onlyCroppedImageSelected.name) : ''\" \r\n                [customUpload]=\"true\" \r\n                (uploadHandler)=\"onCustomizeUploadFunctionSingleMode($event)\" \r\n                [maxFileSize]=\"imageUploadConfig.maxImageSize\">\r\n            </p-fileUpload>\r\n        </ng-template>\r\n    </div>\r\n</div>\r\n<ng-template #withCarousel>\r\n    <p-fileUpload *ngIf=\"imageUploadConfig\" #fileUpload class=\"col-12 pt-3\"\r\n        name=\"mediaImages[]\" \r\n        accept=\"image/*\" \r\n        mode=\"advanced\" \r\n        [customUpload]=\"true\" \r\n        (onSelect)=\"onCustomUploadMultiMode($event)\" \r\n        (uploadHandler)=\"onCustomizeUploadFunctionMultiMode($event)\" \r\n        [uploadLabel]=\"imageUploadConfig.uploadButtonLabel ?? ''\" \r\n        [chooseLabel]=\"imageUploadConfig.chooseButtonLabel ?? ''\" \r\n        [cancelLabel]=\"imageUploadConfig.cancelButtonLabel ?? ''\" \r\n        [showUploadButton]=\"activeImageUpload\"\r\n        [showCancelButton]=\"activeImageUpload\"\r\n        [auto]=\"imageUploadConfig.allowAuto\" \r\n        [multiple]=\"true\" \r\n        [maxFileSize]=\"imageUploadConfig.maxImageSize\">\r\n        <ng-template let-file let-i=\"index\" pTemplate='file'>\r\n            <div *ngIf=\"activeImageUpload && cropperImages.length > 0\" class=\"p-fileupload-row\">\r\n                <div><img [src]=\"cropperImages[i]?.fileBase64\" width=\"50\"/></div>\r\n                <div class=\"p-fileupload-filename\">{{file.name}}</div>\r\n                <div> <button type=\"button\" icon=\"pi pi-times\" pButton class=\"p-button\" (click)=\"onDeleteFileMultiMode($event, file, fileUpload)\"></button> </div>\r\n            </div>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n            <p-progressBar *ngIf=\"isUploadingMultiMode\" class=\"p-element ng-star-inserted\" [mode]=\"'indeterminate'\">\r\n                <div role=\"progressbar\" aria-valuemin=\"0\" aria-valuenow=\"0\" aria-valuemax=\"100\" data-pc-name=\"progressbar\" data-pc-section=\"root\" class=\"p-progressbar p-component p-progressbar-determinate\">\r\n                    <div class=\"p-progressbar-value p-progressbar-value-animate ng-star-inserted\" style=\"display: flex; width: 0%;\" data-pc-section=\"value\"></div>\r\n                </div>\r\n            </p-progressBar>\r\n            <div *ngIf=\"imagesAlreadyUploaded.length > 0\">\r\n                <p-carousel [value]=\"imagesAlreadyUploaded\" [numVisible]=\"3\" [numScroll]=\"3\" [circular]=\"false\" [responsiveOptions]=\"carouselImagesResponsiveOptions\" [showIndicators]=\"false\">\r\n                    <ng-template let-image pTemplate=\"item\">\r\n                            <div class=\"border-round m-2 text-center p-2\" >\r\n                                <div class=\"mt-5 mb-2 h-8rem\">\r\n                                    <img [src]=\"readProperty(image, imageUploadConfig.imagePropertyNames[0]) ?? image.fileBase64\" class=\"shadow-4 max-w-max h-full\"/>\r\n                                </div>\r\n                                <div *ngIf=\"activePositionProperty == true\">\r\n                                    <button pButton icon=\"pi pi-arrow-left\" class=\"p-button-rounded p-button-secondary p-button-text\" style=\"font-size: 0.5rem\" [disabled]=\"findIndex(image) == 0 || disableMoveButtons\" (click)=\"moveImageToLeft(image)\"></button>\r\n                                    <button pButton icon=\"pi pi-arrow-right\" class=\"p-button-rounded p-button-secondary p-button-text\" style=\"font-size: 0.5rem\" [disabled]=\"(findIndex(image) == imagesAlreadyUploaded.length-1) || disableMoveButtons\" (click)=\"moveImageToRight(image)\"></button>\r\n                                </div>\r\n                                <div class=\"my-5\">\r\n                                    <button pButton pRipple icon=\"pi pi-trash\" class=\"p-button-danger p-button-outlined\" label=\"{{imageUploadConfig.deleteImageButtonLabel}}\" \r\n                                        (click)=\"confirmDeleteImageMultiMode($event, image)\"\r\n                                        [loading]=\"isDeletingMultiMode\">\r\n                                    </button>\r\n                                </div>\r\n                            </div>\r\n                    </ng-template>\r\n                </p-carousel> \r\n                <p-divider></p-divider>\r\n            </div>\r\n            <div class=\"h-full flex flex-column justify-content-center align-items-center pt-3\">\r\n                <i class=\"pi pi-upload text-900 text-2xl mb-3\"></i>\r\n                <span class=\"font-bold text-900 text-xl mb-3\">\r\n                    {{imageUploadConfig.contentHeaderLabel}}\r\n                </span>\r\n                <span class=\"font-medium text-600 text-md text-center\">\r\n                    {{imageUploadConfig.contentSubheaderLabel}}\r\n                </span>\r\n            </div>\r\n        </ng-template>\r\n    </p-fileUpload>\r\n</ng-template>\r\n\r\n<p-confirmPopup></p-confirmPopup>","import { RuleSet } from \"angular2-query-builder\";\r\nimport { LazyElementQueryRequest } from \"../lazy-element-query-request.model\";\r\n\r\nexport interface QueryResults {\r\n    type: QueryResultType,\r\n    basic?: RuleSet | null | undefined,\r\n    advanced?: RuleSet | null | undefined,\r\n    grouped: RuleSet | null | undefined,\r\n    lazyRequest?: LazyElementQueryRequest\r\n}\r\n\r\nexport enum QueryResultType {\r\n    NoFilters = 0,\r\n    Basic = 1,\r\n    Advanced = 2,\r\n    Grouped = 3\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, catchError, forkJoin, map, of, switchMap, tap } from 'rxjs';\r\nimport { QbPanelFilter } from '../../models/filter-panel/qb-panel-filter.model';\r\nimport { QbPanelToFields } from '../../models/filter-panel/qb-panel-to-fields.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n  \r\n  constructor(private http: HttpClient) { }\r\n\r\n  getFilterPanel(apiUrl: string, token: string, commonDataApiUrl: string, commonDataApiToken: string, filterId: string): Observable<QbPanelFilter> {\r\n    let url = `${apiUrl}/${filterId}`;\r\n    const headers = new HttpHeaders({ 'Content-Type': 'application/json', Authorization: `Bearer ${token}` });    \r\n    let fieldsModified: any; \r\n    \r\n    return this.http.get<any>(url, {headers: headers}).pipe(\r\n      switchMap((filtersPanel: QbPanelFilter) => {\r\n        const fields = filtersPanel.qbpanelToFields;\r\n        return forkJoin(\r\n          fields.map((field: QbPanelToFields) => {\r\n            fieldsModified = field;\r\n            if(field.qbfilterField.hasListOfValues) {\r\n              return this.getFieldValues(commonDataApiUrl, commonDataApiToken, field.qbfilterField.sqlGetListValues).pipe(\r\n                map(values => {\r\n                  const arrayOfValues = Object.keys(values).map((key: any) => ({\r\n                    name: values[key],\r\n                    value: +key\r\n                  }));\r\n                  field.qbfilterField.listOfValues = arrayOfValues;\r\n                  return field;\r\n                })\r\n              );\r\n            } else {\r\n              return of(field);\r\n            }\r\n          })).pipe(\r\n                map(modifiedItems => {\r\n                  filtersPanel.qbpanelToFields = modifiedItems;\r\n                  return filtersPanel;\r\n                })\r\n              );\r\n            }\r\n          )\r\n    );\r\n  }\r\n\r\n  getFieldValues(commonDataApiUrl: string, commonDataApiToken: string, sqlValueList: string): Observable<string[]> {\r\n    let url = `${commonDataApiUrl}/fields/${sqlValueList}/values`;\r\n    const headers = new HttpHeaders({ 'Content-Type': 'application/json', Authorization: `Bearer ${commonDataApiToken}` });    \r\n    return this.http.get<string[]>(url, {headers})\r\n      .pipe(\r\n        tap(_ => { })\r\n      );\r\n  }\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DataTypeEnum, OperatorEnum } from '../../../shared/models/enums.model';\r\n\r\n@Component({\r\n  selector: 'wapp-list-field',\r\n  templateUrl: './list-field.component.html',\r\n  styleUrls: ['./list-field.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => ListFieldComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class ListFieldComponent implements OnInit, ControlValueAccessor, OnChanges{\r\n  @Input('options') optionsReceived!: any;\r\n  options!: any;\r\n  optionSelected: any;\r\n  @Input('operator') operator: any;\r\n  @Input('placeholder') placeholder!: any;\r\n  @Input('onlyDropdown') onlyDropdown: boolean = false;\r\n  \r\n\r\n  dataType: typeof DataTypeEnum = DataTypeEnum;\r\n\r\n  private onChange: any = () => {};\r\n  private onTouched: any = () => {};\r\n\r\n  constructor(){}\r\n  \r\n  ngOnInit(): void {\r\n    this.options = this.optionsReceived;\r\n  }\r\n  \r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if(this.onlyDropdown == true && (changes[this.optionsReceived] != undefined) && (changes[this.optionsReceived].currentValue[0] !== changes[this.optionsReceived].previousValue[0])){\r\n      this.options = this.optionsReceived;\r\n    }\r\n\r\n    if(this.onlyDropdown == false){\r\n      if(changes[this.operator]?.previousValue != undefined){\r\n        this.optionSelected = null;\r\n      }\r\n    }\r\n  }\r\n\r\n  onOptionSelected(){\r\n    this.onChange(this.optionSelected);\r\n    this.onTouched();\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.optionSelected = value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n  \r\n  getDataType(){\r\n    if(this.operator == OperatorEnum.Equals || this.operator == OperatorEnum.NotEquals){\r\n      return DataTypeEnum.Single;\r\n    }else{\r\n      return DataTypeEnum.Multi;\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"options.length == 0; else optionsDataReady\" class=\"mx-2 wapp-list-field-skeleton-container p-dropdown p-component\"><p-skeleton width=\"8rem\" height=\"9px\"></p-skeleton></div>\r\n<ng-template #optionsDataReady>\r\n    <p-multiSelect *ngIf=\"getDataType() == dataType.Multi\"\r\n        appendTo=\"body\" \r\n        [options]=\"options\" \r\n        [(ngModel)]=\"optionSelected\" \r\n        optionLabel=\"name\" \r\n        optionValue=\"value\" \r\n        [placeholder]=\"placeholder ?? 'Select an option'\"\r\n        (onChange)=\"onOptionSelected()\">\r\n    </p-multiSelect>\r\n    <p-dropdown *ngIf=\"options && getDataType() == dataType.Single\"\r\n        appendTo=\"body\" \r\n        [options]=\"options\" \r\n        [(ngModel)]=\"optionSelected\" \r\n        optionLabel=\"name\" \r\n        optionValue=\"value\" \r\n        [placeholder]=\"placeholder ?? 'Select an option'\" \r\n        (onChange)=\"onOptionSelected()\">\r\n    </p-dropdown>\r\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormControl } from '@angular/forms';\r\nimport { Entity, EntityMap, Rule, RuleSet } from 'angular2-query-builder';\r\nimport { QBDataTypeEnum } from '../../shared/models/enums.model';\r\nimport { QbPanelFilter } from '../../shared/models/filter-panel/qb-panel-filter.model';\r\nimport { FilterPanelTranslations } from '../../shared/models/filter-panel/filter-panel-translations.model';\r\nimport { QueryResultType, QueryResults } from '../../shared/models/filter-panel/query-results.model';\r\nimport { QbFilterEntity } from '../../shared/models/filter-panel/qb-filter-entity.model';\r\nimport { ApiService } from '../../shared/service/api/api.service';\r\nimport { FilterField } from '../../shared/models/filter-panel/filter-field.models';\r\nimport { Field, FieldMap, QueryBuilderConfig } from '../../shared/models/filter-panel/field.model';\r\n\r\n@Component({\r\n  selector: 'wapp-filter-panel',\r\n  templateUrl: './wapp-filter-panel.component.html',\r\n  styleUrls: ['./wapp-filter-panel.component.css']\r\n})\r\nexport class WappFilterPanelComponent implements OnInit {\r\n  public queryCtrl!: FormControl;\r\n  public advancedQueryCtrl!: FormControl;\r\n  public groupedQueryCtrl!: FormControl;\r\n  public persistValueOnFieldChange: boolean = false;\r\n  \r\n  queryConfigReady: boolean = false;\r\n  isAdvancedSearch: boolean = false;\r\n  qbDataTypeEnum = QBDataTypeEnum;\r\n  qbDataEnums = Object.values(QBDataTypeEnum);\r\n  basicQueryConfig!: any;\r\n  advancedQueryConfig!: any;\r\n  basicQuery: any = {\r\n    condition: 'and',\r\n    rules: []\r\n  };\r\n  groupedQuery: any = {\r\n    condition: 'and',\r\n    rules: []\r\n  };\r\n  advancedQuery: any = {\r\n    condition: 'and',\r\n    rules: []\r\n  };\r\n  filterPanelObject!: QbPanelFilter;\r\n  entityConfigGrouped: QueryBuilderConfig = { fields: {} };\r\n  entities: any[] = [];\r\n  defaultValues: any[] = [];\r\n  defaultOperators: any[] = [];\r\n\r\n  @Input('apiUrl') authorizationApiUrl!: string;\r\n  @Input('commonDataApiUrl') commonDataApiUrl!: string;\r\n  @Input('token') token!: string;\r\n  @Input('commonDataToken') commonDataToken!: string;\r\n  @Input('filterId') filterId!: string;\r\n  @Input('dataIsLoadingSearchButton') dataIsLoadingSearchButton: boolean = false;\r\n\r\n  @Input('translationsObject') translationsObject: FilterPanelTranslations = {\r\n    basicSearchTabLabel: 'Basic search',\r\n    advancedSearchTabLabel: 'Advanced search',\r\n    groupedFilterTitle: 'Grouped filter',\r\n    advancedSearch: {\r\n      andButtonLabel: 'And',\r\n      orButtonLabel: 'Or',\r\n      addRuleButtonLabel: 'Add filter',\r\n      addRuleSetButtonLabel: 'Add filter set',\r\n      removeRuleSetButtonLabel: 'Remove rule set'\r\n    },\r\n    noRulesLabel: 'Add filter or filter set to start',\r\n    searchButtonLabel: 'Clear',\r\n    clearButtonLabel: 'Clear',\r\n    fieldsPlaceholders: {\r\n      boolean: {\r\n          true: 'True',\r\n          false: 'False'\r\n      },\r\n      decimal: 'Insert decimal number',\r\n      list: 'Select an option',\r\n      number: 'Insert a number',\r\n      text: 'Insert text',\r\n      datetime: 'Select a date'\r\n    },\r\n    operators: {\r\n      contains:'contains'\r\n    },\r\n    fields: {\r\n      IdleDeadline: 'Id',\r\n      name: 'Name',\r\n      code: 'Code',\r\n      delete: 'Deleted'\r\n    }\r\n  };\r\n  \r\n  @Output('searchClicked') searchClicked = new EventEmitter<QueryResults>();\r\n  @Output('clearClicked') clearClicked = new EventEmitter<boolean>();\r\n  \r\n  stateOptions: any[] = [{ label: this.translationsObject.advancedSearch.andButtonLabel, value: 'and' }, { label: this.translationsObject.advancedSearch.orButtonLabel, value: 'or' }];\r\n  \r\n  constructor(\r\n    private formBuilder: FormBuilder, \r\n    private apiService: ApiService\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    this.getQueryBuilderFilterPanel();\r\n  }\r\n\r\n  initQueryBuilderControls() {\r\n    this.queryCtrl = this.formBuilder.control(this.basicQuery);\r\n    this.advancedQueryCtrl = this.formBuilder.control(this.advancedQuery);\r\n    if(this.filterPanelObject.allowGrouped) {\r\n      this.groupedQueryCtrl = this.formBuilder.control(this.groupedQuery);\r\n    }\r\n  }\r\n\r\n  updateSearchType() {\r\n    this.isAdvancedSearch = !this.isAdvancedSearch;\r\n  }\r\n\r\n  onSearchClicked() {\r\n    let queries: QueryResults = {\r\n      type: this.getQueryType(),\r\n      basic: this.isAdvancedSearch ? null : Object.assign({}, this.queryCtrl.value),\r\n      advanced: this.isAdvancedSearch ? Object.assign({}, this.advancedQueryCtrl.value) : null,\r\n      grouped: this.isAdvancedSearch && this.filterPanelObject.allowGrouped ? Object.assign({}, this.groupedQueryCtrl.value) : null\r\n    }\r\n\r\n    this.setEntity(queries);\r\n\r\n    queries = this.initializeOperators(queries);\r\n    queries = this.deleteFieldsWithoutValue(queries);\r\n    queries = this.handleEmptyFieldsQuery(queries);\r\n\r\n    this.searchClicked.emit(queries);\r\n  }\r\n\r\n  onClearClicked() {\r\n    this.resetBasicQueryValues();\r\n    this.advancedQuery.rules = [];\r\n    this.groupedQuery.rules = [];\r\n    this.clearClicked.emit(true);\r\n  }\r\n\r\n  handleEmptyFieldsQuery(queries: QueryResults): QueryResults {\r\n    if(queries.advanced != null && queries.advanced?.rules.length == 0) {\r\n      queries.type = 0\r\n    }\r\n    if(queries.basic != null && queries.basic?.rules.length == 0) {\r\n      queries.type = 0\r\n    }\r\n    if(queries.grouped != null && queries.grouped?.rules.length == 0) {\r\n      queries.type = 0\r\n    }\r\n    return queries;\r\n  }\r\n\r\n  getQueryType(): QueryResultType {\r\n    if(!this.isAdvancedSearch) {\r\n      return QueryResultType.Basic;\r\n    } else {\r\n      if(this.isAdvancedSearch && this.groupedQueryCtrl?.value) {\r\n        return QueryResultType.Grouped\r\n      } else {\r\n        return QueryResultType.Advanced;\r\n      }\r\n    }\r\n  }\r\n\r\n  setEntity(queries: QueryResults) {\r\n    if(this.getQueryType() == QueryResultType.Basic) {\r\n      queries.basic!.rules = queries.basic!.rules.map((r:any) => {\r\n        return {\r\n          field: r.field,\r\n          operator: r.operator,\r\n          value: r.value,\r\n          entity: this.entities.find(e => e.fieldJsonName == r.field).entity\r\n        }\r\n      })\r\n    }\r\n  }\r\n\r\n  getQueryBuilderFilterPanel() {\r\n    this.apiService.getFilterPanel(this.authorizationApiUrl, this.token, this.commonDataApiUrl, this.commonDataToken, this.filterId)\r\n      .subscribe((qbPanelFilter: QbPanelFilter) => {\r\n        this.filterPanelObject = qbPanelFilter;\r\n        let basicFilterIds: number[] = qbPanelFilter.qbpanelToFields.filter(panelToField => panelToField.basic).map(panelToField => panelToField.qbfilterFieldId);\r\n        let advancedFilterIds: number[] = qbPanelFilter.qbpanelToFields.filter(panelToField => !panelToField.basic).map(panelToField => panelToField.qbfilterFieldId);\r\n        this.defaultValues = qbPanelFilter.qbpanelToFields.map(panelToField => {\r\n          return {\r\n            qbfilterFieldId: panelToField.qbfilterFieldId,\r\n            defaultValue: panelToField.defaultValue\r\n          }\r\n        })\r\n        this.defaultOperators = qbPanelFilter.qbpanelToFields.map(panelToField => {\r\n          return {\r\n            qbfilterFieldId: panelToField.qbfilterFieldId,\r\n            qbdefaultOperator: panelToField.qbdefaultOperator\r\n          }\r\n        })\r\n        let filterEntity: QbFilterEntity[] = qbPanelFilter.qbpanelToFields.map(panelToField => {\r\n          return {\r\n            id: panelToField.qbfilterField.qbfilterEntity.id, \r\n            basic: panelToField.basic,\r\n            name: panelToField.qbfilterField.qbfilterEntity.name, \r\n            jsonName: panelToField.qbfilterField.qbfilterEntity.jsonName, \r\n            fields: []\r\n          }\r\n        });\r\n\r\n        let filterFields: FilterField[] = qbPanelFilter.qbpanelToFields.map(p => p.qbfilterField);\r\n        filterEntity.forEach((entity: QbFilterEntity, index: number) => {\r\n           let fields = filterFields.filter(e => e.qbfilterEntity.id == entity.id);\r\n           filterEntity[index].fields = fields ;\r\n        })\r\n        \r\n        this.basicQueryConfig = this.initQueryBuilder(filterEntity);\r\n        this.basicQueryConfig = this.filterFieldsById(this.basicQueryConfig, basicFilterIds);\r\n        this.basicQueryConfig.fields = this.translateFields(this.basicQueryConfig.fields);\r\n        this.advancedQueryConfig = this.initQueryBuilder(filterEntity);\r\n        this.advancedQueryConfig = this.filterFieldsById(this.advancedQueryConfig, advancedFilterIds);\r\n        this.advancedQueryConfig.fields = this.translateFields(this.advancedQueryConfig.fields);\r\n        let rules = Object.keys(this.basicQueryConfig.fields)\r\n          .map(fieldKey => { \r\n            let defaultOperator = this.defaultOperators.find(operator => operator.qbfilterFieldId == this.basicQueryConfig.fields[fieldKey].id && operator.qbdefaultOperator != null);\r\n            return {\r\n              field: fieldKey, \r\n              value: this.basicQueryConfig.fields[fieldKey].defaultValue!,\r\n              operator: defaultOperator ? defaultOperator.qbdefaultOperator.symbol : null\r\n            }\r\n          });\r\n         this.basicQuery = {\r\n          condition: 'and',\r\n          rules: rules\r\n         };\r\n         this.advancedQuery = {\r\n          condition: 'and',\r\n          rules: []\r\n         };\r\n        this.queryConfigReady = true;\r\n        this.initQueryBuilderControls();\r\n      })\r\n  }\r\n\r\n  initQueryBuilder(filterEntities: QbFilterEntity[]) {\r\n    let entityConfigAux: QueryBuilderConfig = { fields: {} };\r\n    let entitiesArray: EntityMap[] = [];\r\n    filterEntities.map((e, index) => {\r\n      let entity: Entity = { name: e.jsonName };\r\n      return entitiesArray[index] = { [e.jsonName]: entity };\r\n    });\r\n\r\n    let entitiesMap: EntityMap = {};\r\n\r\n    for (const entity of entitiesArray) {\r\n      const keys = Object.keys(entity);\r\n\r\n      keys.forEach(key => {\r\n        entitiesMap[key] = entity[key]\r\n      });\r\n\r\n      entityConfigAux.entities = entitiesMap;\r\n    }\r\n\r\n    let fields: FieldMap[] = [];\r\n    filterEntities.forEach((filterEntity) => {\r\n      return filterEntity.fields.filter((filterField: FilterField) => {\r\n        let index: number = fields.length ?? 0;\r\n        let operatorsFlatArray = filterField.operators.map((o:any) => o.symbol);\r\n        let defaultOperator = this.defaultOperators.find(operator => operator.qbfilterFieldId == filterField.id);\r\n        let field: Field = {\r\n          id: filterField.id,\r\n          name: filterField.name,\r\n          operators: defaultOperator.qbdefaultOperator?.symbol ? this.moveElementToFirstPlace(operatorsFlatArray, defaultOperator.qbdefaultOperator?.symbol) : operatorsFlatArray,\r\n          type: this.getDataType(filterField.dataType),\r\n          defaultValue: this.formatDefaultValue(this.defaultValues.find(value => value.qbfilterFieldId == filterField.id).defaultValue, filterField.dataType),\r\n          defaultOperator: defaultOperator.qbdefaultOperator?.symbol,\r\n          entity: filterEntity.jsonName,\r\n          options: filterField.listOfValues,\r\n          validator: (rule: Rule, parent: RuleSet): any | null => {\r\n            if (rule.operator !== \"is null\" && rule.operator !== \"is not null\") {\r\n              if (rule.value === undefined || rule.value === null || rule.value === '' || rule.value.length == 0) {\r\n                return { required: 'empty field' };\r\n              }\r\n            }\r\n            return null;\r\n          }\r\n        }\r\n        this.entities.push({fieldJsonName: filterField.jsonName, entity: field.entity});\r\n        fields[index] = { [filterField.jsonName]: field };\r\n      });\r\n    });\r\n\r\n    let fieldsMap: FieldMap = {};\r\n\r\n    for (const field of fields) {\r\n      const keys = Object.keys(field);\r\n      keys.forEach(key => {\r\n        fieldsMap[key] = field[key];\r\n      });\r\n\r\n      entityConfigAux.fields = fieldsMap;\r\n    }\r\n    return entityConfigAux;\r\n  }\r\n\r\n  filterFieldsById(fieldsObj: any, idArray: number[]): any {\r\n    const filteredFields: any = {};\r\n    \r\n    for (const key in fieldsObj.fields) {\r\n      const field = fieldsObj.fields[key];\r\n      if (idArray.includes(field.id)) {\r\n        filteredFields[key] = field;\r\n      }\r\n    }\r\n    \r\n    return {\r\n      ...fieldsObj,\r\n      fields: filteredFields,\r\n    };\r\n  }\r\n\r\n  translateFields(fields: FieldMap) {\r\n    for (const key in fields) {\r\n      if (fields.hasOwnProperty(key) && this.translationsObject.fields) {\r\n        fields[key].name = this.translationsObject?.fields[key] ? this.translationsObject?.fields[key] : fields[key].name;\r\n      }\r\n    }\r\n    return fields;\r\n  }\r\n\r\n  moveElementToFirstPlace(array: any[], elementToFirstPlace: string) {\r\n    const index = array.indexOf(elementToFirstPlace);\r\n    if (index !== -1) {\r\n      array.splice(index, 1);\r\n      array.unshift(elementToFirstPlace); \r\n    }\r\n    return array;\r\n  }\r\n\r\n  formatDefaultValue(value: any, type: QBDataTypeEnum) {\r\n    if(value) {\r\n      if(type == QBDataTypeEnum.Boolean) {\r\n        return value.toLowerCase() === 'true';\r\n      }\r\n      if(type == this.qbDataTypeEnum.Number || type == this.qbDataTypeEnum.Decimal || type == this.qbDataTypeEnum.List){\r\n        return Number(value);\r\n      }\r\n    } \r\n    return value;\r\n  }\r\n\r\n  getDataType(id: number) {\r\n    return this.qbDataEnums.find(value => value === id)?.toString() ?? \"\";\r\n  }\r\n\r\n  deleteFieldsWithoutValue(json: any) {\r\n    if (json.basic && json.basic.rules) {\r\n      json.basic.rules = json.basic.rules.filter((rule: any) => rule.value != null);\r\n      json.basic.rules = json.basic.rules.filter((rule: any) => rule.value != undefined);\r\n      json.basic.rules = json.basic.rules.filter((rule: any) => rule.value !== \"\");\r\n    }\r\n    if(json.advanced && json.advanced.rules?.length != 0) {\r\n      json.advanced.rules = json.advanced.rules.filter((rule: any) => rule.rules?.length != 0);\r\n    }\r\n    if(json.grouped && json.grouped?.rules.length != 0) {\r\n      json.grouped.rules = json.grouped.rules.filter((rule: any) => rule.rules?.length != 0);\r\n    }\r\n    if(json.grouped && json.grouped?.rules.length == 0) {\r\n      json.grouped = null;\r\n    }\r\n    return json;\r\n  }\r\n  \r\n  initializeOperators(json: any) {\r\n    if (json.basic && json.basic.rules) {\r\n      json.basic.rules.forEach((rule:any) => {\r\n        if(!rule.operator) {\r\n          rule.operator = \"=\";\r\n        }\r\n      });\r\n    }\r\n    return json;\r\n  }\r\n\r\n  resetBasicQueryValues() {\r\n    this.basicQuery.rules.forEach((rule: Rule) => {\r\n      if(rule.value || rule.value == 0){\r\n        rule.value = null\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div *ngIf=\"queryConfigReady\" class=\"pt-3\">\r\n\r\n  <div *ngIf=\"!filterPanelObject.allowAdvancedSearch; else baiscAndAdvanced\">\r\n    <div class=\"card\">\r\n      <ng-container *ngTemplateOutlet=\"basic\"></ng-container>\r\n      <div class=\"flex justify-content-end pt-2 gap-2\">\r\n        <p-button [label]=\"translationsObject.clearButtonLabel\" styleClass=\"p-button-outlined\" icon=\"pi pi-times\" (click)=\"onClearClicked()\"></p-button>\r\n        <p-button class=\"ml-2\" [label]=\"translationsObject.searchButtonLabel\" icon=\"pi pi-search\" (click)=\"onSearchClicked()\"></p-button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <ng-template #baiscAndAdvanced>\r\n    <div class=\"card\">\r\n        <div *ngIf=\"!isAdvancedSearch; else advancedView\">\r\n          <ng-container *ngTemplateOutlet=\"basic\"></ng-container>\r\n        </div>\r\n        <ng-template #advancedView>\r\n          <ng-container *ngTemplateOutlet=\"advanced\"></ng-container>\r\n        </ng-template>\r\n\r\n        <div class=\"flex justify-content-end pt-3 gap-2\">\r\n          <p-button [label]=\"translationsObject.clearButtonLabel\" styleClass=\"p-button-outlined\" icon=\"pi pi-times\" (click)=\"onClearClicked()\"></p-button>\r\n          <p-button [label]=\"translationsObject.searchButtonLabel\" icon=\"pi pi-search\" (click)=\"onSearchClicked()\" [loading]=\"dataIsLoadingSearchButton\"></p-button>\r\n        </div>\r\n    </div>\r\n  </ng-template>\r\n</div>\r\n\r\n<ng-template #basic>\r\n  <div *ngIf=\"filterPanelObject.allowAdvancedSearch\" class=\"flex justify-content-end flex-wrap\">\r\n    <p-button [label]=\"translationsObject.advancedSearchTabLabel\" styleClass=\"p-button-text\" (click)=\"updateSearchType()\"></p-button>\r\n  </div>\r\n  <div class=\"basic-filter-panel query-builder-style fadein animation-duration-500\">\r\n    <query-builder [formControl]='queryCtrl' [config]='basicQueryConfig' [allowRuleset]='filterPanelObject.allowRuleSet' [allowRuleset]=\"filterPanelObject.allowRuleSet\" [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n      <ng-container *queryButtonGroup=\"let ruleset;\">\r\n      </ng-container>\r\n\r\n      <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n      </ng-container>\r\n\r\n      <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n      </ng-container>\r\n\r\n      <ng-container *queryEntity=\"let rule; let entities=entities; let onChange=onChange\">\r\n        <p-dropdown [disabled]=\"true\" class=\"mr-3\" *ngIf=\"false\" appendTo=\"body\" [options]=\"entities\" [(ngModel)]=\"rule.entity\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n      </ng-container>\r\n\r\n      <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields = getFields\">\r\n          <span class=\"query-builder-field-width\">\r\n            <p-dropdown [disabled]=\"true\" class=\"m-3\" appendTo=\"body\" [options]=\"getFields(rule.entity)\" [(ngModel)]=\"rule.field\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\">\r\n          <span class=\"query-builder-operator-width\">  \r\n            <p-dropdown class=\"mr-3\" *ngIf=\"isAdvancedSearch\" appendTo=\"body\" [(ngModel)]=\"rule.operator\" [options]=\"operators\" (ngModelChange)=\"onChange(rule)\"></p-dropdown>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Boolean.toString(); let onChange=onChange\">\r\n        <p-toggleButton class=\"mr-3\" [(ngModel)]=\"rule.value\" onLabel=\"True\" offLabel=\"False\" (ngModelChange)=\"onChange()\"></p-toggleButton>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Datetime.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-calendar class=\"mr-3\" appendTo=\"body\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [showTime]=\"true\" [showSeconds]=\"true\" [placeholder]=\"translationsObject.fieldsPlaceholders.datetime\"></p-calendar>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Decimal.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" mode=\"decimal\" [minFractionDigits]=\"2\" [maxFractionDigits]=\"5\" [min]=\"0\" [max]=\"100\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.decimal\"> </p-inputNumber>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; let options=options; type: qbDataTypeEnum.List.toString(); let onChange=onChange\">      \r\n          <span class=\"query-builder-input-width\">\r\n            <p-dropdown class=\"mr-3\" appendTo=\"body\" [options]=\"options\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" optionLabel=\"name\" optionValue=\"value\" [placeholder]=\"translationsObject.fieldsPlaceholders.list\"></p-dropdown>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Number.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" [min]=\"0\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.number\"> </p-inputNumber>\r\n          </span>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Text.toString(); let onChange=onChange\">\r\n        <input class=\"mr-3 query-builder-input-width\" type=\"text\" pInputText [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.text\"/>\r\n      </ng-container>\r\n\r\n      <ng-container *queryInput=\"let rule; let options=options; type: qbDataTypeEnum.List.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-multiSelect class=\"mr-3\" [appendTo]=\"'body'\" [options]=\"options\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" optionLabel=\"name\" optionValue=\"value\" display=\"chip\" [placeholder]=\"translationsObject.fieldsPlaceholders.list\"></p-multiSelect>\r\n          </span>\r\n      </ng-container>\r\n    </query-builder>\r\n  </div>\r\n\r\n  <ng-container *ngIf=\"!isAdvancedSearch && basicQuery.rules.length==0\" >\r\n    <ng-container *ngTemplateOutlet=\"noQueryData\"></ng-container>\r\n  </ng-container>\r\n\r\n</ng-template>\r\n\r\n<ng-template #advanced>\r\n  <div [class.query-builder-style]=\"!filterPanelObject.allowRuleSet\" class=\"wapp-filter-panel-container fadein animation-duration-500\">\r\n    <div *ngIf=\"filterPanelObject.allowRuleSet\" class=\"flex justify-content-end flex-wrap\">\r\n      <p-button class=\"mb-2\" [label]=\"translationsObject.basicSearchTabLabel\" styleClass=\"p-button-text\" (click)=\"updateSearchType()\"></p-button>\r\n    </div>\r\n    <query-builder [formControl]='advancedQueryCtrl' [config]='advancedQueryConfig' [allowRuleset]='filterPanelObject.allowRuleSet' [allowCollapse]='filterPanelObject.allowColapse' [allowRuleset]=\"filterPanelObject.allowRuleSet\" [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n        <div *ngIf=\"filterPanelObject.allowRuleSet; else noRuleSet\">\r\n          <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n              <p-button class=\"mr-2\" [label]=\"translationsObject.advancedSearch.addRuleButtonLabel\" styleClass=\"p-button-outlined\" (click)=\"addRule()\"></p-button>\r\n              <p-button class=\"mr-2\" [label]=\"translationsObject.advancedSearch.addRuleSetButtonLabel\" styleClass=\"p-button-outlined\" icon=\"pi pi-plus\" *ngIf=\"addRuleSet\" (click)=\"addRuleSet()\"></p-button>\r\n              <p-button class=\"mr-2\" [label]=\"translationsObject.advancedSearch.removeRuleSetButtonLabel\" styleClass=\"p-button-outlined p-button-danger\" icon=\"pi pi-minus\" *ngIf=\"removeRuleSet\" (click)=\"removeRuleSet()\"></p-button>\r\n          </ng-container>\r\n        </div>\r\n  \r\n        <ng-template #noRuleSet>\r\n          <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n            <div class=\"flex justify-content-end flex-wrap\">\r\n              <p-button [label]=\"translationsObject.basicSearchTabLabel\" styleClass=\"p-button-text\" (click)=\"updateSearchType()\"></p-button>\r\n            </div>\r\n            <span class=\"advanced-query-button-group gap-3\">\r\n              <p-button [label]=\"translationsObject.advancedSearch.addRuleButtonLabel\" styleClass=\"p-button-outlined\" (click)=\"addRule()\"></p-button>\r\n              <p-button [label]=\"translationsObject.advancedSearch.addRuleSetButtonLabel\" styleClass=\"p-button-outlined\" icon=\"pi pi-plus\" *ngIf=\"addRuleSet\" (click)=\"addRuleSet()\"></p-button>\r\n              <p-button [label]=\"translationsObject.advancedSearch.removeRuleSetButtonLabel\" styleClass=\"p-button-outlined p-button-danger\" icon=\"pi pi-minus\" *ngIf=\"removeRuleSet\" (click)=\"removeRuleSet()\"></p-button>\r\n            </span>\r\n          </ng-container>\r\n        </ng-template>\r\n        <ng-container *queryArrowIcon>\r\n          <button pButton pRipple type=\"button\" icon=\"pi pi-angle-right\" class=\"p-button-rounded p-button-text\"></button>\r\n        </ng-container>\r\n\r\n        <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n          <p-button label=\"\" styleClass=\"p-button-outlined p-button-danger\" icon=\"pi pi-times\" (click)=\"removeRule(rule)\"></p-button>\r\n        </ng-container>\r\n  \r\n        <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n          <div *ngIf=\"ruleset\" class=\"pb-3\">\r\n              <p-selectButton *ngIf=\"filterPanelObject.allowLogicalRule\" [options]=\"stateOptions\" [(ngModel)]=\"ruleset.condition\" optionLabel=\"label\" optionValue=\"value\"></p-selectButton>\r\n          </div>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryEntity=\"let rule; let entities=entities; let onChange=onChange\">\r\n            <p-dropdown *ngIf=\"filterPanelObject.enityMode\" appendTo=\"body\" [options]=\"entities\" [(ngModel)]=\"rule.entity\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields = getFields\">\r\n          <span class=\"query-builder-field-width\">\r\n            <p-dropdown class=\"mb-3 mr-3\" appendTo=\"body\" [options]=\"getFields(rule.entity)\" [(ngModel)]=\"rule.field\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\">\r\n          <span class=\"query-builder-operator-width\">  \r\n            <p-dropdown class=\"mr-3\" appendTo=\"body\" [(ngModel)]=\"rule.operator\" [options]=\"operators\" (ngModelChange)=\"onChange(rule)\"></p-dropdown>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Boolean.toString(); let onChange=onChange\">\r\n          <p-toggleButton class=\"mr-3\" [(ngModel)]=\"rule.value\" onLabel=\"True\" offLabel=\"False\" (ngModelChange)=\"onChange()\"></p-toggleButton>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Datetime.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-calendar class=\"mr-3\" appendTo=\"body\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [showTime]=\"true\" [showSeconds]=\"true\" [placeholder]=\"translationsObject.fieldsPlaceholders.datetime\"></p-calendar>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Decimal.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" mode=\"decimal\" [minFractionDigits]=\"2\" [maxFractionDigits]=\"5\" [min]=\"0\" [max]=\"100\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.decimal\"> </p-inputNumber>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; let options=options; type: qbDataTypeEnum.List.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <wapp-list-field [options]=\"options\" [(ngModel)]=\"rule.value\" [operator]=\"rule.operator\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.list\"></wapp-list-field>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Number.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" [min]=\"0\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.number\"> </p-inputNumber>\r\n          </span>\r\n        </ng-container>\r\n  \r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Text.toString(); let onChange=onChange\">\r\n          <input class=\"mr-3 query-builder-input-width\" type=\"text\" pInputText [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.text\"/>\r\n        </ng-container>  \r\n    </query-builder>\r\n\r\n    <ng-container *ngIf=\"isAdvancedSearch && advancedQuery.rules.length==0\" >\r\n      <ng-container *ngTemplateOutlet=\"noQueryData\"></ng-container>\r\n    </ng-container>\r\n    \r\n    <!-- Grouped filter -->\r\n    <div *ngIf=\"filterPanelObject.allowGrouped\">\r\n      <div class=\"py-5\">\r\n        <wapp-view-card-title-text [cardTitle]=\"translationsObject.groupedFilterTitle\"></wapp-view-card-title-text>\r\n      </div>\r\n\r\n      <query-builder [formControl]='groupedQueryCtrl' [config]='advancedQueryConfig' [allowRuleset]='filterPanelObject.allowRuleSet' [allowCollapse]='filterPanelObject.allowColapse' [allowRuleset]=\"filterPanelObject.allowRuleSet\" [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n        <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n          <div class=\"flex gap-3 mb-3\">\r\n            <p-button [label]=\"translationsObject.advancedSearch.addRuleButtonLabel\" styleClass=\"p-button-outlined\" (click)=\"addRule()\"></p-button>\r\n            <p-button [label]=\"translationsObject.advancedSearch.addRuleSetButtonLabel\" styleClass=\"p-button-outlined\" icon=\"pi pi-plus\" *ngIf=\"addRuleSet\" (click)=\"addRuleSet()\"></p-button>\r\n            <p-button [label]=\"translationsObject.advancedSearch.removeRuleSetButtonLabel\" styleClass=\"p-button-outlined p-button-danger\" icon=\"pi pi-minus\" *ngIf=\"removeRuleSet\" (click)=\"removeRuleSet()\"></p-button>\r\n          </div>\r\n        </ng-container>\r\n\r\n        <ng-container *queryArrowIcon>\r\n          <button pButton pRipple type=\"button\" icon=\"pi pi-angle-right\" class=\"p-button-rounded p-button-text\"></button>\r\n        </ng-container>\r\n\r\n        <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n          <p-button label=\"\" styleClass=\"p-button-outlined p-button-danger\" icon=\"pi pi-times\" (click)=\"removeRule(rule)\"></p-button>\r\n        </ng-container>\r\n\r\n        <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n          <div *ngIf=\"ruleset\">\r\n              <p-selectButton *ngIf=\"filterPanelObject.allowLogicalRule\" [options]=\"stateOptions\" [(ngModel)]=\"ruleset.condition\" optionLabel=\"label\" optionValue=\"value\"></p-selectButton>\r\n          </div>\r\n        </ng-container>\r\n\r\n        <ng-container *queryEntity=\"let rule; let entities=entities; let onChange=onChange\">\r\n          <p-dropdown class=\"mr-3\" *ngIf=\"filterPanelObject.enityMode\" appendTo=\"body\" [options]=\"entities\" [(ngModel)]=\"rule.entity\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n        </ng-container>\r\n\r\n        <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields = getFields\">\r\n          <span class=\"query-builder-field-width\">\r\n            <p-dropdown class=\"mr-3\" appendTo=\"body\" [options]=\"getFields(rule.entity)\" [(ngModel)]=\"rule.field\" optionLabel=\"name\" optionValue=\"value\" (ngModelChange)=\"onChange($event, rule)\"></p-dropdown>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\">\r\n          <span class=\"query-builder-operator-width\">  \r\n            <p-dropdown class=\"mr-3\" appendTo=\"body\" [(ngModel)]=\"rule.operator\" [options]=\"operators\" (ngModelChange)=\"onChange(rule)\"></p-dropdown>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Boolean.toString(); let onChange=onChange\">\r\n          <p-toggleButton class=\"mr-3\" [(ngModel)]=\"rule.value\" onLabel=\"True\" offLabel=\"False\" (ngModelChange)=\"onChange()\"></p-toggleButton>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; type: qbDataTypeEnum.Datetime.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-calendar class=\"mr-3\" appendTo=\"body\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [showTime]=\"true\" [showSeconds]=\"true\" [placeholder]=\"translationsObject.fieldsPlaceholders.datetime\"></p-calendar>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Decimal.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" mode=\"decimal\" [minFractionDigits]=\"2\" [maxFractionDigits]=\"5\" [min]=\"0\" [max]=\"100\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.decimal\"> </p-inputNumber>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; let options=options; type: qbDataTypeEnum.List.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <wapp-list-field [options]=\"options\" [(ngModel)]=\"rule.value\" [operator]=\"rule.operator\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.list\"></wapp-list-field>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Number.toString(); let onChange=onChange\">\r\n          <span class=\"query-builder-input-width\">\r\n            <p-inputNumber class=\"mr-3\" [(ngModel)]=\"rule.value\" inputId=\"minmax\" inputId=\"minmax\" [min]=\"0\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.number\"> </p-inputNumber>\r\n          </span>\r\n        </ng-container>\r\n\r\n        <ng-container *queryInput=\"let rule; let field=field; type: qbDataTypeEnum.Text.toString(); let onChange=onChange\">\r\n          <input class=\"mr-3 query-builder-input-width\" type=\"text\" pInputText [(ngModel)]=\"rule.value\" (ngModelChange)=\"onChange()\" [placeholder]=\"translationsObject.fieldsPlaceholders.text\"/>\r\n        </ng-container>\r\n\r\n      </query-builder>\r\n\r\n      <ng-container *ngIf=\"isAdvancedSearch && groupedQuery.rules.length==0\" >\r\n        <ng-container *ngTemplateOutlet=\"noQueryData\"></ng-container>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #noQueryData>\r\n  <div class=\"flex justify-content-center flex-wrap card-container surface-50 mb-3\">\r\n    <div class=\"flex align-items-center justify-content-center w-full h-4rem text-gray-900 border-round m-2\">\r\n      {{translationsObject.noRulesLabel}}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { GoogleMap } from '@angular/google-maps';\r\nimport { AddressMaps } from '../../shared/models/address-maps.model';\r\n\r\n@Component({\r\n  selector: 'wapp-maps',\r\n  templateUrl: './wapp-maps.component.html',\r\n  styleUrls: ['./wapp-maps.component.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WappMapsComponent implements OnInit, AfterViewInit, OnChanges {\r\n\r\n  @ViewChild('mapSearchField') searchField!: ElementRef;\r\n  @ViewChild('divMap') divMap!: ElementRef;\r\n\r\n  @Input('isEdit') isEdit: boolean = false;\r\n  @Input('mapHeight') mapHeight: string = \"\";\r\n  @Input('showMap') showMap: boolean = true;\r\n  @Input('componentRestrictions') componentRestrictions: any;\r\n  @Input('initialCoords') initialCoords: any;\r\n  @Input('streetAddress') streetAddress: any;\r\n\r\n  @Output('addressVerbose') addressVerbose = new EventEmitter<AddressMaps>();\r\n  map!: google.maps.Map\r\n  marker!: google.maps.Marker;\r\n\r\n  formMapas!: FormGroup;\r\n\r\n  addressFinal: AddressMaps = {} as AddressMaps;\r\n\r\n  constructor(private render: Renderer2) { }\r\n\r\n  ngOnInit(): void {\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    let position = {\r\n      coords: {\r\n        latitude: 43.33378176040853,\r\n        longitude: -8.439276623678447,\r\n      }\r\n    }\r\n    this.loadMap(position);\r\n    this.loadAutoComplete();\r\n    if (this.initialCoords != undefined) {\r\n      let position = {\r\n        coords: {\r\n          latitude: this.initialCoords.latitude,\r\n          longitude: this.initialCoords.longitude,\r\n        }\r\n      }\r\n      this.loadMap(position)\r\n\r\n    } else {\r\n      if (navigator.geolocation) {\r\n        const opciones = {\r\n          enableHighAccuracy: true,\r\n          timeout: 5000,\r\n          maximumAge: 0\r\n        }\r\n        navigator.geolocation.getCurrentPosition(async (position) => {\r\n          await this.loadMap(position);\r\n        }, null, opciones)\r\n      } else {\r\n        console.log('Navegador no compatible')\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['initialCoords']) {\r\n      if (changes['initialCoords']!.previousValue) {\r\n        if (changes['initialCoords'].currentValue != changes['initialCoords'].previousValue) {\r\n          let position = {\r\n            coords: {\r\n              latitude: changes['initialCoords'].currentValue.latitude,\r\n              longitude: changes['initialCoords'].currentValue.longitude,\r\n            }\r\n          }\r\n          this.loadMap(position)\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  loadMap(position: any): any {\r\n    const opciones = {\r\n      center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),\r\n      zoom: 17,\r\n      mapTypeId: google.maps.MapTypeId.ROADMAP\r\n    };\r\n\r\n    this.map = new google.maps.Map(this.render.selectRootElement(this.divMap.nativeElement), opciones)\r\n\r\n    const marker = new google.maps.Marker;\r\n    marker.setMap(null);\r\n\r\n    this.marker = new google.maps.Marker({\r\n      position: this.map.getCenter(),\r\n    });\r\n    this.marker.setMap(this.map);\r\n  }\r\n\r\n  returnAddress(place: any) {\r\n    let address_component: [] = place.address_components;\r\n    address_component.forEach((field) => {\r\n      this.addressFinal[field['types'][0]] = field['long_name']\r\n    })\r\n    this.addressFinal.latitude = place.geometry['location'].lat();\r\n    this.addressFinal.longitude = place.geometry['location'].lng();\r\n    this.addressFinal.streetAddress = place.formatted_address\r\n\r\n    this.addressVerbose.emit(this.addressFinal);\r\n  }\r\n\r\n  private loadAutoComplete() {\r\n    const autoComplete = new google.maps.places.Autocomplete(\r\n      this.render.selectRootElement(this.searchField.nativeElement),\r\n      {\r\n        componentRestrictions: this.componentRestrictions,\r\n        fields: [\"address_components\", \"geometry\", \"formatted_address\"],\r\n        types: [\"address\"],\r\n      }\r\n    )\r\n\r\n    google.maps.event.addListener(autoComplete, 'place_changed', () => {\r\n\r\n      const place: any = autoComplete.getPlace();\r\n\r\n      this.map.setCenter(place.geometry.location);\r\n\r\n      this.marker.setMap(null);\r\n\r\n      this.marker = new google.maps.Marker({\r\n        position: place.geometry.location\r\n      });\r\n\r\n      this.marker.setMap(this.map);\r\n      this.returnAddress(place);\r\n    })\r\n  }\r\n\r\n}\r\n","<div class=\"mb-3\">\r\n    <div class=\"grid\">\r\n        <div [hidden]=\"!isEdit\" class=\"col-7\" [class.mb-3]=\"showMap\">\r\n            <div  class=\"w-full\">\r\n                <input  type=\"text\" [(ngModel)]=\"streetAddress\" #mapSearchField class=\"w-full\" pInputText/>\r\n            </div>\r\n        </div>\r\n        <div [hidden]=\"!isEdit\" class=\"col-5\">\r\n            <div [hidden]=\"!isEdit\" class=\"flex align-items-center justify-content-center\">\r\n                <button *ngIf=\"!showMap\" \r\n                         pButton pRipple (click)=\"showMap = !showMap\" type=\"button\" \r\n                         icon=\"pi pi-map-marker\" label=\"Mostrar mapa\" \r\n                         class=\"p-button-rounded p-button-text\">\r\n                </button>\r\n                <button *ngIf=\"showMap\" \r\n                         pButton pRipple (click)=\"showMap = !showMap\" type=\"button\" \r\n                         icon=\"pi pi-map-marker\" label=\"Ocultar Mapa\" \r\n                         class=\"p-button-rounded p-button-text\">\r\n                </button>\r\n             </div>  \r\n        </div>\r\n    </div>\r\n    <div class=\"grid\">\r\n        <div [hidden]=\"!showMap\" class=\"w-full\">\r\n            <div  class=\"col-12\">\r\n                <div class=\"w-full\" [class]=\"mapHeight\" id=\"map\" #divMap></div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// PRIMENG\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { StepsModule } from 'primeng/steps';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TableModule } from 'primeng/table';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { CardModule } from 'primeng/card';\r\nimport { ImageModule } from 'primeng/image';\r\nimport { SliderModule } from 'primeng/slider';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DividerModule } from 'primeng/divider';\r\n\r\n// EXTERNAL\r\nimport { PowerBIEmbedModule } from 'powerbi-client-angular';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { QueryBuilderComponent, QueryBuilderModule } from 'angular2-query-builder';\r\n\r\n// WAPPING\r\nimport { WappingComponentsComponent } from './wapping-components.component';\r\nimport { WappEditInputTextComponent } from './edit/wapp-edit-input-text/wapp-edit-input-text.component';\r\nimport { WappEditInputNumericComponent } from './edit/wapp-edit-input-numeric/wapp-edit-input-numeric.component';\r\nimport { WappEditTextareaComponent } from './edit/wapp-edit-textarea/wapp-edit-textarea.component';\r\nimport { WappEditSelectComponent } from './edit/wapp-edit-select/wapp-edit-select.component';\r\nimport { WappEditChipsComponent } from './edit/wapp-edit-chips/wapp-edit-chips.component';\r\nimport { WappEditCalendarComponent } from './edit/wapp-edit-calendar/wapp-edit-calendar.component';\r\nimport { WappEditRadioButtonComponent } from './edit/wapp-edit-radio-button/wapp-edit-radio-button.component';\r\nimport { WappEditSlideToggleComponent } from './edit/wapp-edit-slide-toggle/wapp-edit-slide-toggle.component';\r\nimport { WappViewBadgeComponent } from './view/wapp-view-badge/wapp-view-badge.component';\r\nimport { WappViewCardTitleTextComponent } from './view/wapp-view-card-title-text/wapp-view-card-title-text.component';\r\nimport { WappViewBooleanComponent } from './view/wapp-view-boolean/wapp-view-boolean.component';\r\nimport { WappViewTextComponent } from './view/wapp-view-text/wapp-view-text.component';\r\nimport { WappTableComponent } from './tables/wapp-table/wapp-table.component';\r\nimport { WappTableLazyLoadingComponent } from './tables/wapp-table-lazy-loading/wapp-table-lazy-loading.component';\r\nimport { WappWizardComponent } from './misc/wapp-wizard/wapp-wizard.component';\r\nimport { WappTouchMenuComponent } from './menu/wapp-touch-menu/wapp-touch-menu.component';\r\nimport { WappPowerbiReportComponent } from './report/wapp-powerbi-report/wapp-powerbi-report.component';\r\nimport { WappImageCropperComponent } from './image/wapp-image-cropper/wapp-image-cropper.component';\r\nimport { WappPreviewImageComponent } from './image/wapp-preview-image/wapp-preview-image.component';\r\nimport { WappButtonBackComponent } from './misc/wapp-button-back/wapp-button-back.component';\r\nimport { WappImageFileUploaderComponent } from './file/wapp-image-file-uploader/wapp-image-file-uploader.component';\r\nimport { CarouselModule } from 'primeng/carousel';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { WappFilterPanelComponent } from './misc/wapp-filter-panel/wapp-filter-panel.component';\r\nimport { ListFieldComponent } from './misc/wapp-filter-panel/list-field/list-field.component';\r\nimport { WappMapsComponent } from './maps/wapp-maps/wapp-maps.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    WappingComponentsComponent,\r\n    WappEditInputTextComponent,\r\n    WappWizardComponent,\r\n    WappEditInputNumericComponent,\r\n    WappEditTextareaComponent,\r\n    WappEditSelectComponent,\r\n    WappEditChipsComponent,\r\n    WappEditCalendarComponent,\r\n    WappEditRadioButtonComponent,\r\n    WappEditSlideToggleComponent,\r\n    WappTableComponent,\r\n    WappViewBadgeComponent,\r\n    WappTableLazyLoadingComponent,\r\n    WappViewCardTitleTextComponent,\r\n    WappTouchMenuComponent,\r\n    WappPowerbiReportComponent,\r\n    WappViewTextComponent,\r\n    WappImageCropperComponent,\r\n    WappPreviewImageComponent,\r\n    WappViewBooleanComponent,\r\n    WappButtonBackComponent,\r\n    WappImageFileUploaderComponent,\r\n    WappFilterPanelComponent,\r\n    WappFilterPanelComponent,\r\n    WappButtonBackComponent,\r\n    ListFieldComponent,\r\n    WappMapsComponent\r\n  ],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    InputTextModule,\r\n    StepsModule,\r\n    ButtonModule,\r\n    InputNumberModule,\r\n    InputTextareaModule,\r\n    DropdownModule,\r\n    MultiSelectModule,\r\n    CalendarModule,\r\n    InputSwitchModule,\r\n    RadioButtonModule,\r\n    TableModule,\r\n    SkeletonModule,\r\n    PaginatorModule,\r\n    ConfirmPopupModule,\r\n    CommonModule,\r\n    BadgeModule,\r\n    PanelModule,\r\n    CardModule,\r\n    PowerBIEmbedModule,\r\n    ImageModule,\r\n    ImageCropperModule,\r\n    SliderModule,\r\n    FileUploadModule,\r\n    CarouselModule,\r\n    DividerModule,\r\n    DragDropModule, \r\n    SelectButtonModule,\r\n    ToggleButtonModule,\r\n    TabViewModule,\r\n    DividerModule,\r\n    QueryBuilderModule,\r\n  ],\r\n  exports: [\r\n    WappingComponentsComponent,\r\n    WappEditInputTextComponent,\r\n    WappEditInputNumericComponent,\r\n    WappEditTextareaComponent,\r\n    WappEditSelectComponent,\r\n    WappWizardComponent,\r\n    WappEditCalendarComponent,\r\n    WappEditChipsComponent,\r\n    WappEditRadioButtonComponent,\r\n    WappEditSlideToggleComponent,\r\n    WappTableComponent,\r\n    WappViewBadgeComponent,\r\n    WappTableLazyLoadingComponent,\r\n    WappViewCardTitleTextComponent,\r\n    WappTouchMenuComponent,\r\n    WappPowerbiReportComponent,\r\n    WappViewTextComponent,\r\n    WappImageCropperComponent,\r\n    WappPreviewImageComponent,\r\n    ImageModule,\r\n    SliderModule,\r\n    FileUploadModule,\r\n    WappViewBooleanComponent,\r\n    WappButtonBackComponent,\r\n    WappImageFileUploaderComponent, \r\n    WappFilterPanelComponent,\r\n    QueryBuilderModule,\r\n    QueryBuilderComponent,\r\n    WappButtonBackComponent,\r\n    WappMapsComponent\r\n  ]\r\n})\r\nexport class WappingComponentsModule { }\r\n","/*\r\n * Public API Surface of wapping-components\r\n */\r\n\r\nexport * from './lib/wapping-components.service';\r\nexport * from './lib/wapping-components.component';\r\nexport * from './lib/wapping-components.module';\r\n\r\nexport * from './lib/edit/wapp-edit-input-text/wapp-edit-input-text.component';\r\nexport * from './lib/edit/wapp-edit-input-numeric/wapp-edit-input-numeric.component';\r\nexport * from './lib/edit/wapp-edit-textarea/wapp-edit-textarea.component';\r\nexport * from './lib/edit/wapp-edit-select/wapp-edit-select.component';\r\nexport * from './lib/edit/wapp-edit-chips/wapp-edit-chips.component';\r\nexport * from './lib/edit/wapp-edit-calendar/wapp-edit-calendar.component';\r\nexport * from './lib/edit/wapp-edit-radio-button/wapp-edit-radio-button.component';\r\nexport * from './lib/edit/wapp-edit-slide-toggle/wapp-edit-slide-toggle.component';\r\nexport * from './lib/view/wapp-view-badge/wapp-view-badge.component';\r\nexport * from './lib/view/wapp-view-card-title-text/wapp-view-card-title-text.component'\r\nexport * from './lib/view/wapp-view-text/wapp-view-text.component'\r\nexport * from './lib/view/wapp-view-boolean/wapp-view-boolean.component';\r\nexport * from './lib/tables/wapp-table/wapp-table.component';\r\nexport * from './lib/tables/wapp-table-lazy-loading/wapp-table-lazy-loading.component';\r\nexport * from './lib/menu/wapp-touch-menu/wapp-touch-menu.component';\r\nexport * from './lib/image/wapp-image-cropper/wapp-image-cropper.component';\r\nexport * from './lib/image/wapp-preview-image/wapp-preview-image.component'\r\nexport * from './lib/misc/wapp-wizard/wapp-wizard.component';\r\nexport * from './lib/misc/wapp-button-back/wapp-button-back.component';\r\nexport * from './lib/misc/wapp-filter-panel/wapp-filter-panel.component';\r\nexport * from './lib/report/wapp-powerbi-report/wapp-powerbi-report.component';\r\nexport * from './lib/maps/wapp-maps/wapp-maps.component';\r\n\r\nexport * from './lib/shared/service/modal/modal.service';\r\n\r\nexport * from './lib/shared/models/enums.model';\r\nexport * from './lib/shared/models/filter.model';\r\nexport * from './lib/shared/models/wapp-table-action-button-response.model';\r\nexport * from './lib/shared/models/wapp-table-action-button.model';\r\nexport * from './lib/shared/models/wapp-table-action-button-response.model';\r\nexport * from './lib/shared/models/wapp-table-action-button.model';\r\nexport * from './lib/shared/models/lazy-element-query-request.model';\r\nexport * from './lib/shared/models/wapp-table-lazy-loading.model';\r\nexport * from './lib/shared/models/wapp-table.model';\r\nexport * from './lib/shared/models/menu-item.model';\r\nexport * from './lib/shared/models/menu-section.model';\r\nexport * from './lib/shared/models/option.model';\r\nexport * from './lib/shared/models/embed-config.model';\r\nexport * from './lib/shared/models/image-cropper-data.model';\r\nexport * from './lib/file/wapp-image-file-uploader/wapp-image-file-uploader.component';\r\nexport * from './lib/shared/models/image-b64.model';\r\nexport * from './lib/shared/models/uploaer-file.model';\r\nexport * from './lib/shared/models/wapp-file-uploader.model';\r\nexport * from './lib/shared/models/filter-panel/filter-field.models';\r\nexport * from './lib/shared/models/filter-panel/qb-filter-entity.model';\r\nexport * from './lib/shared/models/filter-panel/qb-filter-field.model';\r\nexport * from './lib/shared/models/filter-panel/qb-operators.model';\r\nexport * from './lib/shared/models/filter-panel/qb-panel-filter.model';\r\nexport * from './lib/shared/models/filter-panel/qb-panel-to-fields.model';\r\nexport * from './lib/shared/models/back-button-config.model';\r\nexport * from './lib/shared/models/custom-button-config.model';\r\nexport * from './lib/shared/models/filter-panel/query-results.model';\r\nexport * from './lib/shared/models/address-maps.model'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4","i5","i11","i12.WappViewBadgeComponent","i13.WappButtonBackComponent","i9","i10","i11.WappViewBadgeComponent","i12.WappButtonBackComponent","i6","i2.ModalService","i7","i8","i2.ApiService","i13.WappViewCardTitleTextComponent","i14.ListFieldComponent"],"mappings":"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"}