{"version":3,"file":"alfercom-fe-page-builder.mjs","sources":["../../../projects/fe-page-builder/src/lib/page-builder.token.ts","../../../projects/fe-page-builder/src/lib/services/page-builder-instantiator.service.ts","../../../projects/fe-page-builder/src/lib/modal-page-builder/modal-page-builder.component.ts","../../../projects/fe-page-builder/src/lib/modal-page-builder/modal-page-builder.component.html","../../../projects/fe-page-builder/src/lib/drawer-page-builder/drawer-page-builder.component.ts","../../../projects/fe-page-builder/src/lib/drawer-page-builder/drawer-page-builder.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-modal-generic-confirm/pb-modal-generic-confirm.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-modal-generic-confirm/pb-modal-generic-confirm.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-modal-result-simple/pb-modal-result-simple.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-modal-result-simple/pb-modal-result-simple.component.html","../../../projects/fe-page-builder/src/lib/services/page-builder-gui.service.ts","../../../projects/fe-page-builder/src/lib/services/builder-driver.service.ts","../../../projects/fe-page-builder/src/lib/services/api-caller.service.ts","../../../projects/fe-page-builder/src/lib/services/page-builder.service.ts","../../../projects/fe-page-builder/src/lib/utils/ad.directive.ts","../../../projects/fe-page-builder/src/lib/page-builder.component.ts","../../../projects/fe-page-builder/src/lib/page-builder.component.html","../../../projects/fe-page-builder/src/lib/page-builder.resolver.ts","../../../projects/fe-page-builder/src/lib/utils/page-builder-utils.module.ts","../../../projects/fe-page-builder/src/lib/page-builder.module.ts","../../../projects/fe-page-builder/src/lib/constants.ts","../../../projects/fe-page-builder/src/lib/page-builder-main.class.ts","../../../projects/fe-page-builder/src/lib/page-builder-error/page-builder-error.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-error/page-builder-error.component.html","../../../projects/fe-page-builder/src/lib/page-builder-error/page-builder-error.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-form/page-builder-class-form.ts","../../../projects/fe-page-builder/src/lib/services/action-button-codec.service.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-main-title/pb-main-title.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-main-title/pb-main-title.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-helpers-messages/pb-helpers-messages.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-helpers-messages/pb-helpers-messages.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-button/pb-default-button.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-button/pb-default-button.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-buttons/pb-default-buttons.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-buttons/pb-default-buttons.component.html","../../../projects/fe-page-builder/src/lib/page-builder-form/page-builder-form.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-form/page-builder-form.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-dropdown-button/pb-dropdown-button.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-dropdown-button/pb-dropdown-button.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-searchbox/pb-default-searchbox.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-searchbox/pb-default-searchbox.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-toolbar-buttons/pb-toolbar-buttons.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-toolbar-buttons/pb-toolbar-buttons.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-breadcrumbs/pb-default-breadcrumbs.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-breadcrumbs/pb-default-breadcrumbs.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-image/pb-default-image.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-image/pb-default-image.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-banner/pb-default-banner.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-banner/pb-default-banner.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-card-image/pb-default-card-image.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-default-card-image/pb-default-card-image.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-toolbar-buttons/v2/pb-toolbar-buttons-v2.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-toolbar-buttons/v2/pb-toolbar-buttons-v2.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-card-data/pb-card-data.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-card-data/pb-card-data.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-remote-loading/pb-remote-loading.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-remote-loading/pb-remote-loading.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-list-card-data/pb-list-card-data.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-list-card-data/pb-list-card-data.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-checklist-documents/pb-checklist-documents.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-checklist-documents/pb-checklist-documents.component.html","../../../projects/fe-page-builder/src/lib/utils/multi-file-dropper/multi-file-dropper.component.ts","../../../projects/fe-page-builder/src/lib/utils/multi-file-dropper/multi-file-dropper.component.html","../../../projects/fe-page-builder/src/lib/utils/multi-file-dropper/multi-file-dropper.module.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-list-documents/pb-list-documents.component.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-list-documents/pb-list-documents.component.html","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-dynamic-list-documents.directive.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-components.tokens.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/pb-components.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-form/page-builder-form.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-notfound/page-builder-notfound.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-notfound/page-builder-notfound.component.html","../../../projects/fe-page-builder/src/lib/page-builder-notfound/page-builder-notfound.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-cardview/page-builder-cardview.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-cardview/page-builder-cardview.component.html","../../../projects/fe-page-builder/src/lib/page-builder-cardview/page-builder-cardview.module.ts","../../../projects/fe-page-builder/src/lib/utils/tabset/tabset.component.ts","../../../projects/fe-page-builder/src/lib/utils/tabset/tabset.component.html","../../../projects/fe-page-builder/src/lib/page-builder-tabset/page-builder-tabset.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-tabset/page-builder-tabset.component.html","../../../projects/fe-page-builder/src/lib/utils/tabset/tabset.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-tabset/page-builder-tabset.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-simpleview/page-builder-simpleview.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-simpleview/page-builder-simpleview.component.html","../../../projects/fe-page-builder/src/lib/page-builder-simpleview/page-builder-simpleview.module.ts","../../../projects/fe-page-builder/src/lib/page-builder-crud/page-builder-crud.resolver.ts","../../../projects/fe-page-builder/src/lib/page-builder-crud/page-builder-crud-v2.component.ts","../../../projects/fe-page-builder/src/lib/page-builder-crud/page-builder-crud-v2.component.html","../../../projects/fe-page-builder/src/lib/page-builder-crud/page-builder-crud-v2.module.ts","../../../projects/fe-page-builder/src/lib/utils/pb-components/public-api-pb-components.ts","../../../projects/fe-page-builder/src/public-api.ts","../../../projects/fe-page-builder/src/alfercom-fe-page-builder.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\n\nexport const PB_IMPORTS: InjectionToken<any> = new InjectionToken<any>('');\nexport const PB_COMPONENTS: InjectionToken<any> = new InjectionToken<any>('');\nexport const PB_ERROR_MODAL_COMPONENT = new InjectionToken<Type<any>>(\n  'PB_ERROR_MODAL_COMPONENT'\n);\n","import { Injectable, Compiler, Injector, ViewContainerRef, ComponentRef, NgModuleFactory, NgModuleRef, Inject } from '@angular/core';\nimport { PB_COMPONENTS, PB_IMPORTS } from '../page-builder.token';\n@Injectable({\n  providedIn: 'root'\n})\n/**\n * Contiene tutte le configurazioni e istanzia i componenti idonei\n */\nexport class PageInstantiatorService {\n\n  constructor(\n    private compiler: Compiler,\n    private injector: Injector,\n    @Inject(PB_IMPORTS) public PB_IMPORTS: any,\n    @Inject(PB_COMPONENTS) public PB_COMPONENTS: any,\n  ) { }\n\n  /**\n   * \n   * @param moduleId \n   * @param container \n   * @returns \n   */\n  async loadComponent(moduleId: string, container: ViewContainerRef) {\n    if (!this.PB_IMPORTS) {\n      console.error(\"InjectionToken PB_IMPORTS not found!\")\n    }\n    if (!this.PB_COMPONENTS) {\n      console.error(\"InjectionToken PB_COMPONENTS not found!\")\n    }\n    let componentName: string = \"\";\n    let ref: ComponentRef<any> | undefined = undefined;\n    try {\n      componentName = this.PB_COMPONENTS[moduleId];\n      const moduleObj = await this.PB_IMPORTS[moduleId];\n      const text = Object.keys(moduleObj)[0];\n      const module = text.indexOf(\"PageBuilder\") !== -1 ? moduleObj[Object.keys(moduleObj)[0]] : moduleObj;\n      let moduleFactory: NgModuleFactory<any> = await this.compiler.compileModuleAsync(module);\n      const moduleRef: NgModuleRef<any> = moduleFactory.create(this.injector);\n      const componentFactory = moduleRef.instance.resolveComponent(componentName);\n      ref = container.createComponent(componentFactory, undefined, moduleRef.injector);\n    } catch (e) {\n      console.error(e);\n    }\n    return ref;\n  }\n\n}\n\nexport type PageBuilderComponentTypes = {}//PageBuilderFormComponent;\nexport type PageBuilderModalComponentTypes = {}//PageBuilderFormComponent;\nexport type PageBuilderSupportComponentTypes = {}//PageBuilderErrorComponent | PageBuilderNotfoundComponent;\n","import {\n  Component,\n  ComponentRef,\n  Input,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport {\n  PageBuilderModalComponentTypes,\n  PageInstantiatorService,\n} from '../services/page-builder-instantiator.service';\nimport { PageBuilderInstanceParameters } from '../types/pb-types/page-builder.type';\n\n@Component({\n  selector: 'app-page-builder-modal',\n  templateUrl: './modal-page-builder.component.html',\n  styleUrls: ['./modal-page-builder.component.scss'],\n})\nexport class ModalPageBuilderComponent {\n  @Input() set data(value: PageBuilderInstanceParameters) {\n    //console.log((\"ModalPageBuilderComponent data\", new Date());\n    this.initInputData(value);\n  }\n\n  constructor(\n    private pageInstaService: PageInstantiatorService,\n    private modalRef: NzModalRef,\n    public viewContainerRef: ViewContainerRef\n  ) {\n    const modalData = this.modalRef.getConfig().nzData;\n    if (modalData && modalData.data) {\n      this.initInputData(modalData.data);\n    } else {\n      console.error('ModalPageBuilderComponent - nessuna struttura in input');\n    }\n  }\n\n  initInputData(value: PageBuilderInstanceParameters) {\n    if (value) {\n      if (value) {\n        this.init(value);\n      } else {\n        console.error('ModalPageBuilderComponent - nessuna struttura in input');\n      }\n    } else {\n      console.error('ModalPageBuilderComponent - nessuna struttura in input');\n    }\n  }\n\n  async init(configuration: PageBuilderInstanceParameters) {\n    const viewContainerRef = this.viewContainerRef;\n    viewContainerRef.clear();\n\n    if (\n      configuration &&\n      configuration.componentInstanceParameters &&\n      configuration.moduleId\n    ) {\n      const pageBuilderInstance:\n        | ComponentRef<PageBuilderModalComponentTypes | any>\n        | undefined = await this.pageInstaService.loadComponent(\n        configuration.moduleId,\n        viewContainerRef\n      );\n      if (pageBuilderInstance) {\n        pageBuilderInstance.instance.data =\n          configuration.componentInstanceParameters;\n        pageBuilderInstance.instance.modalRef = this.modalRef;\n      }\n    }\n  }\n}\n","<!-- VUOTA, il containerRef è tutto lo spazio del component -->","import { Component, ComponentRef, Input, ViewContainerRef } from '@angular/core';\nimport { NzDrawerRef } from 'ng-zorro-antd/drawer';\nimport { PageBuilderModalComponentTypes, PageInstantiatorService } from '../services/page-builder-instantiator.service';\nimport { PageBuilderInstanceParameters } from '../types/pb-types/page-builder.type';\n\n@Component({\n  selector: 'app-drawer-page-builder',\n  templateUrl: './drawer-page-builder.component.html',\n  styleUrls: ['./drawer-page-builder.component.scss']\n})\nexport class DrawerPageBuilderComponent {\n\n  @Input() set data(value: PageBuilderInstanceParameters) {\n    //console.log((\"ModalPageBuilderComponent data\", new Date());\n    this.initInputData(value);\n  }\n\n  constructor(\n    private pageInstaService: PageInstantiatorService,\n    private drawerRef: NzDrawerRef,\n    public viewContainerRef: ViewContainerRef\n  ) { }\n\n  initInputData(value: PageBuilderInstanceParameters) {\n    if (value) {\n      if (value) {\n        this.init(value);\n      } else {\n        console.error(\"DrawerPageBuilderComponent - nessuna struttura in input\")\n      }\n    } else {\n      console.error(\"DrawerPageBuilderComponent - nessuna struttura in input\")\n    }\n  }\n\n  async init(configuration: PageBuilderInstanceParameters) {\n    const viewContainerRef = this.viewContainerRef;\n    viewContainerRef.clear();\n\n    if (configuration && configuration.componentInstanceParameters && configuration.moduleId) {\n      const pageBuilderInstance: ComponentRef<PageBuilderModalComponentTypes | any> | undefined = await this.pageInstaService.loadComponent(configuration.moduleId, viewContainerRef);\n      if(pageBuilderInstance){\n        pageBuilderInstance.instance.data = configuration.componentInstanceParameters;\n        pageBuilderInstance.instance.drawerRef = this.drawerRef;\n      }\n    }\n  }\n\n}\n","","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { NZ_MODAL_DATA, NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-generic-confirm',\n  templateUrl: './pb-modal-generic-confirm.component.html',\n  styleUrls: ['./pb-modal-generic-confirm.component.scss'],\n})\nexport class PbModalGenericConfirmComponent implements OnInit {\n  readonly nzModalData = inject(NZ_MODAL_DATA);\n\n  modalConfirm!: ModalGenericConfirm;\n\n  constructor(private modalRef: NzModalRef) {}\n\n  ngOnInit(): void {\n    this.modalConfirm = this.nzModalData.modalConfirm;\n  }\n\n  chiudi(confirm: boolean = true) {\n    this.modalRef.destroy({ confirm });\n  }\n}\n\nexport type ModalGenericConfirm = {\n  title?: string;\n  text?: string;\n  btnConfirmText?: string;\n  btnUndoText?: string;\n};\n","<div class=\"d-flex flex-column\">\n  <ng-container *ngIf=\"modalConfirm.text\">\n    <span class=\" w-100 my-4 fs-large\" [innerHtml]=\"modalConfirm.text | safeHtml:'html'\" *ngIf=\"modalConfirm.text\">\n    </span>\n  </ng-container>\n  <div class=\"d-flex w-100 justify-content-center flex-column align-items-center\" *nzModalFooter>\n    <button class=\"btn w-60 my-2 text-uppercase py-2 btn-primary\" (click)=\"chiudi()\">\n      <ng-container *ngIf=\"modalConfirm.btnConfirmText\">\n        {{modalConfirm.btnConfirmText | translate}}\n      </ng-container>\n    </button>\n    <button class=\"btn w-60 text-uppercase py-2 text-muted\" (click)=\"chiudi(false)\">\n      <ng-container *ngIf=\"modalConfirm.btnUndoText\">\n        {{modalConfirm.btnUndoText | translate}}\n      </ng-container>\n    </button>\n  </div>\n</div>","import { Component, OnInit, Input, inject } from '@angular/core';\nimport { NZ_MODAL_DATA, NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-result-simple',\n  templateUrl: './pb-modal-result-simple.component.html',\n  styleUrls: ['./pb-modal-result-simple.component.scss'],\n})\nexport class PbModalResultSimpleComponent implements OnInit {\n  readonly nzModalData = inject(NZ_MODAL_DATA);\n\n  dataToShow!: ModalResultSimple;\n\n  set content(content: ModalResultSimple) {\n    this.dataToShow = content;\n  }\n\n  constructor(private modalRef: NzModalRef) {}\n\n  ngOnInit(): void {\n    this.content = this.nzModalData.content;\n  }\n\n  chiudi(btnClicked: boolean = true) {\n    this.modalRef.destroy({ btnClicked });\n  }\n}\n\nexport type ModalResultSimple = {\n  simpleImage?: {\n    image?: string;\n    imgClass?: string;\n    containerClass?: string;\n    imgStyle?: string;\n  };\n  icon?: string;\n  text?: string;\n  html?: string;\n  btn?: {\n    text: string;\n    styleClass?: string;\n  };\n  closable?: boolean;\n};\n","<div class=\"d-flex flex-column\" *ngIf=\"dataToShow\">\n    <ng-container *ngIf=\"dataToShow.simpleImage\">\n        <div class=\"my-3\" [class]=\"dataToShow.simpleImage.containerClass\">\n            <img [src]=\"dataToShow.simpleImage.image\" [class]=\"dataToShow.simpleImage.imgClass\"\n                [style]=\"dataToShow.simpleImage.imgStyle | safeHtml:'style'\" />\n        </div>\n    </ng-container>\n    <ng-container *ngIf=\"dataToShow.icon\">\n        <div class=\"my-3 d-flex justify-content-center\">\n            <img [src]=\"dataToShow.icon\" height=\"130\" width=\"auto\" />\n        </div>\n    </ng-container>\n    <div class=\"w-100 d-flex mb-1 mt-5 px-3 align-items-start\" style=\"min-height: 5vh;\">\n        <!-- <span class=\"fal fa-2x fa-file-pdf text-danger\"></span> -->\n        <span class=\"ml-3 bold\" *ngIf=\"dataToShow.text\">{{dataToShow.text | translate}}</span>\n        <span class=\"w-100\" [innerHtml]=\"dataToShow.html | safeHtml:'html'\" *ngIf=\"dataToShow.html\"></span>\n    </div>\n    <div class=\"d-flex w-100 justify-content-center flex-column align-items-center\" *nzModalFooter>\n        <ng-container *ngIf=\"dataToShow.btn\">\n            <button class=\"btn w-60 my-2 text-uppercase py-2\" (click)=\"chiudi()\"\n                [ngClass]=\"dataToShow.btn.styleClass ? dataToShow.btn.styleClass : ''\">\n                <ng-container *ngIf=\"dataToShow.btn!.text\">\n                    {{(dataToShow.btn!.text || '') | translate}}\n                </ng-container>\n            </button>\n        </ng-container>\n        <ng-container *ngIf=\"dataToShow.closable\">\n            <button class=\"btn w-60 ml-0 text-uppercase py-2\" (click)=\"chiudi(false)\">\n                {{\"FEPB_GENERIC_CLOSEBTN\" | translate}}\n                <!-- Chiudi -->\n            </button>\n        </ng-container>\n    </div>\n</div>\n<div class=\"row\" *ngIf=\"!dataToShow\">\n    <div class=\"d-flex w-100 justify-content-center h-30 align-items-center\">\n        <nz-spin nzSimple [nzSize]=\"'large'\" [nzTip]=\"('FEPB_GENERIC_LOADING' | translate)\"></nz-spin>\n    </div>\n</div>","import { Inject, Injectable, Optional, Type } from '@angular/core';\nimport {\n  NzMessageService,\n  NzMessageRef,\n  NzMessageDataOptions,\n} from 'ng-zorro-antd/message';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { Observable } from 'rxjs';\nimport Shepherd from 'shepherd.js';\nimport * as _ from 'lodash';\nimport {\n  ModalGenericConfirm,\n  PbModalGenericConfirmComponent,\n} from '../utils/pb-components/pb-modal-generic-confirm/pb-modal-generic-confirm.component';\nimport { PbModalResultSimpleComponent } from '../utils/pb-components/pb-modal-result-simple/pb-modal-result-simple.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DefaultResponse } from '../types/external-types/defaultResponse';\nimport {\n  ExternalApiPBCaller,\n  ExternalApiPBDriver,\n} from '../types/pb-types/external-api-driver.interface';\nimport { Tour, TourStep } from '../types/pb-types/page-builder.type';\nimport { PB_ERROR_MODAL_COMPONENT } from '../page-builder.token';\n\nexport type ShepTour = any; //Shepherd.Tour;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PageBuilderGuiService implements ExternalApiPBCaller {\n  private toursViewed: string[] = []; //['dashboard-test'];\n  private currentPageToursToShow: any[] = [];\n  private currentTourRef: any;\n\n  externalApiPBDriver!: ExternalApiPBDriver;\n\n  constructor(\n    private messageService: NzMessageService,\n    private modalService: NzModalService,\n    private translateService: TranslateService,\n    @Optional()\n    @Inject(PB_ERROR_MODAL_COMPONENT)\n    private customErrorModalComponent: Type<any> | null\n  ) {}\n\n  /**\n   *\n   * @param type\n   * @param msg\n   * @param duration\n   * @param getRef\n   */\n  showMessage(\n    type: 'success' | 'info' | 'warning' | 'error' | 'loading' = 'loading',\n    msg: string = 'FEPB_GENERIC_LOADING',\n    duration: number = 5000,\n    getRef: boolean = false\n  ): NzMessageRef {\n    const options: NzMessageDataOptions = {\n      nzDuration: getRef ? undefined : duration,\n      nzAnimate: true,\n      nzPauseOnHover: true,\n    };\n    const translatedMessage = this.translateService.instant(msg);\n    const messageRef: NzMessageRef = this.messageService.create(\n      type,\n      translatedMessage || msg,\n      options\n    );\n\n    return messageRef;\n  }\n\n  removeMessage(messageId: string) {\n    if (messageId) {\n      this.messageService.remove(messageId);\n    }\n  }\n\n  /**\n   *\n   * @param res\n   * @param btnLabel default FEPB_GENERIC_OKBTN\n   * @param successMsg default FEPB_GENERIC_SUCCESSRESPONSE\n   * @param errorMsg default FEPB_GENERIC_SIMPLEERROR\n   * @returns\n   */\n  openModalSimpleResult(\n    res: DefaultResponse,\n    btnLabel: string = 'FEPB_GENERIC_OKBTN',\n    successMsg: string = 'FEPB_GENERIC_SUCCESSRESPONSE',\n    errorMsg: string = 'FEPB_GENERIC_SIMPLEERROR',\n    titleMsg: string | undefined = undefined\n  ) {\n    let html: string | null = null;\n    let text: string | null = null;\n    if (res && res.messages) {\n      if (Array.isArray(res.messages)) {\n        html = '';\n        for (let msg of res.messages) {\n          const translatedMessage = this.translateService.instant(msg);\n          html += `<br/>  ${translatedMessage || msg}`;\n        }\n      } else {\n        const translatedMessage = this.translateService.instant(successMsg);\n        html = translatedMessage || successMsg;\n      }\n    }\n    if (res && res.result && !text && !html) {\n      const translatedMessage = this.translateService.instant(successMsg);\n      text = translatedMessage || successMsg;\n    }\n    const translatedTitle = this.translateService.instant(\n      titleMsg || (res.result ? successMsg : errorMsg)\n    );\n\n    const componentToUse = res.result\n      ? PbModalResultSimpleComponent\n      : this.customErrorModalComponent || PbModalResultSimpleComponent;\n\n    const modalRef = this.modalService.create({\n      nzTitle: translatedTitle,\n      nzClassName: 'w-30',\n      nzContent: componentToUse,\n      nzData: {\n        content: {\n          html: html,\n          text,\n          btn: {\n            text: btnLabel,\n            styleClass: res.result ? 'btn-primary' : '',\n          },\n          icon: res.result\n            ? 'assets/icon/checked.svg'\n            : 'assets/icon/error.svg',\n          closable: !res.result,\n        },\n      },\n      nzClosable: res.result ? false : true,\n      nzMaskClosable: res.result ? false : true,\n      nzKeyboard: res.result ? false : true,\n      nzCloseOnNavigation: false,\n    });\n\n    return modalRef;\n  }\n\n  openGenericConfirmModal(modalStructure?: ModalGenericConfirm): NzModalRef {\n    const structure = {\n      title: this.translateService.instant(\n        modalStructure?.title || 'FEPB_GENERICCONFIRMMODAL_TITLE'\n      ),\n      text: this.translateService.instant(\n        modalStructure?.text || 'FEPB_GENERICCONFIRMMODAL_TEXT'\n      ),\n      btnConfirmText: this.translateService.instant(\n        modalStructure?.btnConfirmText || 'FEPB_GENERICCONFIRMMODAL_TEXT'\n      ),\n      btnUndoText: this.translateService.instant(\n        modalStructure?.btnUndoText || 'FEPB_GENERICCONFIRMMODAL_TEXT'\n      ),\n    };\n    const modalRef: NzModalRef = this.modalService.create({\n      nzTitle: structure.title,\n      nzClassName: 'w-50',\n      nzContent: PbModalGenericConfirmComponent,\n      nzData: {\n        modalConfirm: structure,\n      },\n      nzClosable: false,\n      nzMaskClosable: false,\n      nzKeyboard: false,\n      nzCloseOnNavigation: false,\n    });\n\n    return modalRef;\n    // modalRef.open();\n  }\n\n  /**\n   * RITORNA true se c'è qualcosa da vedere\n   * @param toursNames\n   */\n  checkTours(toursNames: string[] | undefined, waiting: number = 500) {\n    // console.log(\"checkTours\", toursNames);\n    if (toursNames && toursNames.length > 0) {\n      this.resetTours();\n      if (waiting) {\n        setTimeout(() => {\n          this.initTours(toursNames);\n        }, waiting);\n      } else {\n        this.initTours(toursNames);\n      }\n    }\n    // return of(false);\n  }\n\n  /**\n   *\n   * @param toursNames\n   * @param skipViewedCheck\n   */\n  initTours(toursNames: string[], skipViewedCheck: boolean = false) {\n    if (toursNames && toursNames.length > 0) {\n      let toursNamesToShow = [];\n      if (skipViewedCheck) {\n        //passo direttamente quelli in input\n        toursNamesToShow = [...toursNames];\n      } else {\n        //eseguo il filtro\n        toursNamesToShow = _.difference(toursNames, this.toursViewed);\n      }\n      if (toursNamesToShow && toursNamesToShow.length > 0) {\n        this.callGetTours(toursNamesToShow).subscribe((res) => {\n          // console.log(res);\n          if (res && res.result && res.tours && res.tours.length > 0) {\n            const toursToShow = this.mapTours(res.tours);\n            this.currentPageToursToShow = [...toursToShow];\n            this.startTour();\n            // return of(true);\n          } else {\n            //CAPIRE SE BISOGNA COMUNICARE QUALCOSA\n            // return of(false);\n          }\n        });\n      }\n    }\n  }\n\n  private mapTours(tours: Tour[]): ShepTour[] {\n    let toursMapped: any[] = [];\n    for (let tourDB of tours) {\n      let steps: TourStep[] = [];\n      let currentIndex = 0;\n      for (let step of tourDB.steps) {\n        const nStep = currentIndex + 1;\n        let _step = {\n          id: tourDB.name + '_' + currentIndex,\n          attachTo: {\n            element: step.attachTo.HTMLClassElement,\n            on: step.attachTo.on || 'top',\n          },\n          text: step.text,\n          title: step.title ? nStep + '. ' + step.title : undefined,\n          cancelIcon: {\n            enabled: step.showCancel,\n          },\n          buttons: [] as any[],\n        };\n        let buttons: {\n          action: Function;\n          classes?: string;\n          disabled?: boolean;\n          label?: string;\n          text?: string;\n          secondary?: boolean;\n        }[] = [];\n        if (step.showCancel) {\n          buttons.push({\n            action: () => {\n              this.currentTourRef.cancel();\n            },\n            text: this.translateService.instant('FEPB_TOUR_EXIT'),\n            label: this.translateService.instant('FEPB_TOUR_EXIT'),\n            classes: 'btn',\n          });\n        }\n        if (currentIndex > 0) {\n          buttons.push({\n            action: () => {\n              this.currentTourRef.back();\n            },\n            text: this.translateService.instant('FEPB_TOUR_PREV'),\n            label: this.translateService.instant('FEPB_TOUR_PREV'),\n            classes: 'btn',\n            secondary: true,\n          });\n        }\n        if (currentIndex < tourDB.steps.length - 1) {\n          //se non è l'ultimo\n          buttons.push({\n            action: () => {\n              this.currentTourRef.next();\n            },\n            text: this.translateService.instant('FEPB_TOUR_NEXT'),\n            label: this.translateService.instant('FEPB_TOUR_NEXT'),\n            classes: 'btn',\n          });\n        }\n        if (currentIndex == tourDB.steps.length - 1) {\n          //se non è l'ultimo\n          buttons.push({\n            action: () => {\n              this.currentTourRef.complete();\n            },\n            text: this.translateService.instant('FEPB_TOUR_CLOSE'),\n            label: this.translateService.instant('FEPB_TOUR_CLOSE'),\n            classes: 'btn btn-info bg-info',\n          });\n        }\n        _step.buttons = [];\n        _step.buttons.push(...buttons);\n        steps.push(_step);\n        currentIndex++;\n      }\n      if (steps.length > 0) {\n        toursMapped.push({\n          name: tourDB.name,\n          tour: {\n            tourName: tourDB.name,\n            steps,\n          },\n        });\n      }\n    }\n\n    return toursMapped;\n  }\n\n  private startTour() {\n    if (this.currentPageToursToShow && this.currentPageToursToShow.length > 0) {\n      const tourToShow = this.currentPageToursToShow[0]; //il primo\n      const tourName = tourToShow.tour.tourName;\n      this.currentTourRef = new Shepherd.Tour({\n        tourName: tourName,\n        steps: tourToShow.tour.steps,\n        defaultStepOptions: {\n          classes: 'shadow',\n          scrollTo: true,\n        },\n        useModalOverlay: true,\n        keyboardNavigation: true,\n      });\n      this.currentTourRef.start();\n      this.currentTourRef.once('cancel', () => {\n        this.currentPageToursToShow.shift();\n        this.presaVisioneTours([tourName]);\n        this.startTour();\n      });\n      this.currentTourRef.once('complete', () => {\n        this.currentPageToursToShow.shift();\n        this.presaVisioneTours([tourName]);\n        this.startTour();\n      });\n    }\n  }\n\n  resetTours() {\n    if (this.currentTourRef) {\n      this.currentTourRef.hide();\n    }\n    this.currentTourRef = undefined;\n    this.currentPageToursToShow = [];\n  }\n\n  presaVisioneTours(toursNames: string[]) {\n    this.callPresaVisioneTours(toursNames).subscribe(\n      (res) => {\n        if (res && res.result && res.toursNames && res.toursNames.length > 0) {\n          //quindi di sicuro è andata bene\n          this.setToursViewed(res.toursNames);\n        }\n      },\n      (error) => {\n        console.error(error);\n      }\n    );\n  }\n\n  setToursViewed(toursViewed: string[]) {\n    // console.log(\"setToursViewed\", toursViewed);\n    this.toursViewed = [...toursViewed];\n  }\n\n  /** Call API */\n  private callGetTours(tourNames: string[]): Observable<{\n    result: boolean;\n    tours?: Tour[];\n  }> {\n    return this.externalApiPBDriver.getTours({ tourNames });\n  }\n\n  private callPresaVisioneTours(tourNames: string[]): Observable<{\n    result: boolean;\n    toursNames?: string[];\n  }> {\n    return this.externalApiPBDriver.ackTours({ tourNames });\n  }\n\n  /**\n   *\n   * @param externalDriver\n   */\n  setExternalDriver(externalDriver: ExternalApiPBDriver) {\n    this.externalApiPBDriver = externalDriver;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CallApiParams } from '../types/external-types/callApiParams';\nimport { DefaultDominioResponse } from '../types/external-types/defaultDominioResponse';\nimport { DefaultResponse } from '../types/external-types/defaultResponse';\nimport { ViewStructure } from '../types/external-types/viewStructure';\nimport { ExternalApiPBCaller, ExternalApiPBDriver } from '../types/pb-types/external-api-driver.interface';\nimport { DefaultResponseApiCaller } from '../types/pb-types/page-builder.type';\n\n\n@Injectable({\n  providedIn: 'root'\n})\n/**\n * \"Driver\" per le chiamate a viewApi\n */\nexport class BuilderDriverService implements ExternalApiPBCaller {\n\n  externalApiPBDriver!: ExternalApiPBDriver;\n\n  constructor(\n  ) { }\n\n  setExternalDriver(externalDriver: ExternalApiPBDriver): void {\n    this.externalApiPBDriver = externalDriver;\n  }\n\n  callApi(callApiParams: CallApiParams): Observable<DefaultResponse | DefaultDominioResponse[] | DefaultResponseApiCaller> {\n    return this.externalApiPBDriver.callApi(callApiParams);\n  }\n  getStructure(structureId: string, parameters: string[] = []): Observable<ViewStructure> {\n    return this.externalApiPBDriver.getStructure(structureId, { parameters });\n  }\n\n  canAccess(structureId: string): Observable<DefaultResponse> {\n    return this.externalApiPBDriver.canAccess(structureId);\n  }\n\n  getItemsRequest(input: { structureId: string; params: { [key: string]: any }; parameters?: string[] }): Observable<DefaultDominioResponse[]> {\n    return this.externalApiPBDriver.getItemsRequest(input);\n  }\n}","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { saveAs } from \"file-saver\";\nimport { PageBuilderGuiService } from './page-builder-gui.service';\nimport { HTTPUtils } from '@alfercom/common';\nimport { DefaultResponse } from '../types/external-types/defaultResponse';\nimport { RequestConfirm } from '../types/external-types/requestConfirm';\nimport { ExternalApiPBCaller, ExternalApiPBDriver } from '../types/pb-types/external-api-driver.interface';\nimport { CallApiInput, DefaultResponseApiCaller, FileParams } from '../types/pb-types/page-builder.type';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCallerService implements OnDestroy, ExternalApiPBCaller {\n\n  externalApiPBDriver!: ExternalApiPBDriver;\n\n  constructor(\n    private httpClient: HttpClient,\n    protected pageBuilderGuiService: PageBuilderGuiService\n  ) { }\n\n  ngOnDestroy(): void {\n    if (this.messageLoadingId)\n      this.pageBuilderGuiService.removeMessage(this.messageLoadingId);\n\n    if (this.messageLoadingPool && this.messageLoadingPool.length) {\n      for (let messageLoading of this.messageLoadingPool) {\n        if (messageLoading.timeoutSub && !messageLoading.timeoutSub.closed) {\n          messageLoading.timeoutSub.unsubscribe();\n          messageLoading.timeoutSub.closed = true;\n        }\n      }\n    }\n  }\n\n  messageLoadingId: string | null = null;\n  messageLoadingPool: {\n    loadingMessageId: string,\n    timeoutSub: Subscription;\n  }[] = [];\n  messageLoadingTimeout: number = 2000;\n\n  callApi(input: CallApiInput): Observable<DefaultResponseApiCaller | undefined>{\n    if (input) {\n      this.startLoading();\n      if (input.url && input.body) { //`${BASIC_URL}/files/upload`\n        return this.httpClient.post<any>(input.url, input.body, {\n          responseType: <any>'json',\n          withCredentials: false,\n          observe: 'body',\n          reportProgress: false,\n        }) as any;\n      } else if (input.apiService && input.apiMethod) {\n        if (input.apiService == \"Files\") {\n          if (input.apiMethod == \"download\") {\n            return this.callApiDownload(input);\n          }\n          if (input.apiMethod == \"downloadPreview\") {//ZS metodo che non esiste a be\n            return this.callApiDownload(input, true);\n          }\n          if (input.apiMethod == \"downloadZip\" || input.apiMethod == \"download-zip\") {\n            return this.callApiDownloadZip(input);\n          }\n        }\n        if (input.apiService == \"ViewApi\" || input.apiService == \"ViewAPI\") {\n          return this.callApiView(input);\n        }\n        return this.defaultApiCall(input);\n      } else {\n        console.error(\"callApi with no params\")\n        return this.standardResponseFn(\n          {\n            needRefresh: false,\n            result: false,\n            error: {\n              messages: ['callApi with no params']\n            }\n          })\n      }\n    } else {\n      return of(undefined);\n    }\n  }\n\n  private callApiDownload(input: CallApiInput, openPreview: boolean = false): Observable<DefaultResponseApiCaller | undefined> {\n    return this.externalApiPBDriver.apiDownload(input).pipe(switchMap((res: any) => {\n      //console.log(res);\n      const contentDisp = res.headers.get(\"content-disposition\");\n      let filename = \"download\";\n      if (contentDisp) {\n        const indexChar = contentDisp.indexOf(\"=\");\n        const subStr = contentDisp.substring(indexChar + 1);\n        filename = subStr;\n      }\n      if (openPreview) {\n        const fileURL = URL.createObjectURL(res.body);\n        window.open(fileURL, \"_blank\");\n      } else {\n        saveAs(res.body, filename);\n      }\n\n      return this.standardResponseFn({\n        needRefresh: false,\n        result: true,\n        response: res.body,//metto io\n        rawResponse: res\n      })\n    }),\n      catchError(error => {\n        return from(error.error ? error.error.text() : of(\"{\\\"status\\\":400,\\\"messages\\\":[\\\"Si è verificato un errore\\\"]}\")).pipe(switchMap(errorValue => {\n          const parsed = JSON.parse(errorValue as string);\n          return this.standardErrorFn(parsed)\n        }))\n      })\n    );\n  }\n\n  private callApiDownloadZip(input: CallApiInput): Observable<DefaultResponseApiCaller | undefined> {\n\n    return this.externalApiPBDriver.apiDownloadZip(input).pipe(switchMap((res: any) => {\n      //console.log(res);\n      const contentDisp = res.headers.get(\"content-disposition\");\n      let filename = \"download\";\n      if (contentDisp) {\n        const indexChar = contentDisp.indexOf(\"=\");\n        const subStr = contentDisp.substring(indexChar + 1);\n        filename = subStr;\n      }\n\n      saveAs(res.body, filename);\n\n\n      return this.standardResponseFn({\n        needRefresh: false,\n        result: true,\n        response: res.body,//metto io\n        rawResponse: res\n      })\n    }),\n      catchError(error => {\n        return from(error.error ? error.error.text() : of(\"{\\\"status\\\":400,\\\"messages\\\":[\\\"Si è verificato un errore\\\"]}\")).pipe(switchMap(errorValue => {\n          const parsed = JSON.parse(errorValue as string);\n          return this.standardErrorFn(parsed)\n        }))\n      })\n    );\n  }\n\n  private callApiView(input: CallApiInput): Observable<DefaultResponseApiCaller> {\n    return this.externalApiPBDriver.callApi({\n      apiMethod: input.apiMethod,\n      parameters: input.params,\n      params: input.body || {},\n      viewId: input.viewId\n    }).pipe(\n      switchMap(response => {\n        return this.responseConfirmChecker(\n          {\n            needRefresh: true,\n            result: true,\n            response: response,//metto io\n            rawResponse: response\n          },\n          input,\n        )\n      }),\n      catchError(error => {\n        return this.standardErrorFn(error)\n      }),\n    )\n  }\n\n  private responseConfirmChecker(res: DefaultResponseApiCaller, input: CallApiInput): Observable<any> {\n    if (res && res.result) {\n      if (res.response && res.response.requestConfirm) {\n        const requestConfirm: RequestConfirm = res.response.requestConfirm;\n        return this.askConfirm(requestConfirm.title, requestConfirm.content, requestConfirm.yesButtonText, requestConfirm.noButtonText).pipe(\n          switchMap(confirmRes => {\n            if (confirmRes.confirmed) {\n              if (!input.body) {\n                input.body = {};\n              }\n              (input.body as any).requestConfirmResult = true;\n              if (input.apiService == \"ViewApi\") {\n                return this.callApiView(input);\n              } else {\n                return this.defaultApiCall(input);\n              }\n            } else {\n              res.result = false;//setto la risposta a false, troppo rischioso rispondere con il true della chiamata prima\n              return this.standardResponseFn(res);\n            }\n          })\n        )\n      }\n    }\n    return this.standardResponseFn(res);\n  }\n\n  private defaultApiCall(input: CallApiInput): Observable<DefaultResponseApiCaller> {\n\n    const apiInput: any = {//CallApiDTO\n      apiService: input.apiService,\n      apiMethod: input.apiMethod,\n      body: input.body,\n      params: input.params,\n      query: input.query\n    }\n    return this.externalApiPBDriver.defaultApiCall(apiInput).pipe(switchMap(response => {\n      return this.responseConfirmChecker(\n        {\n          needRefresh: true,\n          result: true,\n          response: response,//metto io\n          rawResponse: response\n        },\n        input,\n      )\n    }),\n      catchError(error => {\n        return this.standardErrorFn(error)\n      })\n    )\n  }\n\n  private standardResponseFn(response: DefaultResponseApiCaller): Observable<DefaultResponseApiCaller | undefined> {\n    if (response) {\n      if (this.messageLoadingId) {\n        this.stopLoading();\n      }\n      return of(response);\n    } else {\n      return of(undefined);\n    }\n  }\n\n  private standardErrorFn(error: HttpErrorResponse, errorMsg = null): Observable<DefaultResponseApiCaller> {\n    if (this.messageLoadingId) {\n      this.stopLoading();\n    }\n    if (error) {\n      this.pageBuilderGuiService.showMessage('error', errorMsg ? errorMsg : HTTPUtils.getErrorMsgFromError(error));\n      return of({\n        needRefresh: false,\n        result: false,\n        response: null,//metto io\n        rawResponse: error\n      })\n    } else {\n      this.pageBuilderGuiService.showMessage('error', 'FEPB_GENERIC_HTTPERROR');\n      return of({\n        needRefresh: false,\n        result: false,\n        response: null,\n        rawResponse: false\n      });\n    }\n  }\n\n  /**\n   * Modal Generico di conferma configurato dal BE\n   * @param title \n   * @param content \n   * @param btnConfirmText \n   * @param btnUndoText \n   */\n  askConfirm(title: string | undefined = undefined, content: string | undefined = undefined, btnConfirmText: string | undefined = undefined, btnUndoText: string | undefined = undefined): Observable<{\n    confirmed: boolean\n  }> {\n    const modalRef = this.pageBuilderGuiService.openGenericConfirmModal({\n      title,\n      text: content,\n      btnConfirmText,\n      btnUndoText\n    })\n    return modalRef.afterClose.asObservable().pipe(\n      catchError(error => {\n        return of(null)\n      }),\n      switchMap(\n        res => {\n          return of({\n            confirmed: res ? res.confirm : false\n          })\n        }\n      ))\n  }\n\n  private loadingMessage() {\n    const messageLoadingId = this.pageBuilderGuiService.showMessage('loading', 'FEPB_GENERIC_LOADING', undefined, true).messageId;\n    this.messageLoadingId = messageLoadingId;\n    return messageLoadingId;\n  }\n\n  private startLoading() {\n    const currentMessageId = this.loadingMessage();\n    const sub: Subscription = timer(this.messageLoadingTimeout).subscribe(res => {\n      this.stopLoadingById(currentMessageId)\n    })\n    this.messageLoadingPool.push({\n      loadingMessageId: currentMessageId,\n      timeoutSub: sub\n    })\n  }\n\n  private stopLoading() {\n    if(this.messageLoadingId){\n      this.pageBuilderGuiService.removeMessage(this.messageLoadingId);\n      this.messageLoadingId = null;\n    }\n  }\n\n  private stopLoadingById(messageId: string) {\n    this.pageBuilderGuiService.removeMessage(messageId);\n  }\n\n  getFileInfo(params: FileParams): Observable<any> {\n    return this.externalApiPBDriver.getFileInfo(\n      params\n    );\n  }\n\n  deleteFile(params: FileParams): Observable<DefaultResponse> {\n    return this.externalApiPBDriver.deleteFile(\n      params\n    );\n  }\n\n  downloadFile(params: FileParams): Observable<any> {\n    return this.externalApiPBDriver.downloadFile(params);\n  }\n\n  uploadFile(params: FileParams, blob: File): Observable<any> {\n    return this.externalApiPBDriver.uploadFile(params, blob);\n  }\n\n  setExternalDriver(externalDriver: ExternalApiPBDriver): void {\n    this.externalApiPBDriver = externalDriver;\n  }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, Observable, of, Subject, Subscription, timer } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { ApiCallerService } from './api-caller.service';\nimport { BuilderDriverService } from './builder-driver.service';\nimport * as _ from 'lodash';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { ModalPageBuilderComponent } from '../modal-page-builder/modal-page-builder.component';\nimport { NzDrawerService } from 'ng-zorro-antd/drawer';\nimport { DrawerPageBuilderComponent } from '../drawer-page-builder/drawer-page-builder.component';\nimport { PageBuilderGuiService } from './page-builder-gui.service';\nimport { HTTPUtils } from '@alfercom/common';\nimport { FormApiCallerService } from '@alfercom/dynamic-form';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActionButton } from '../types/external-types/actionButton';\nimport { ViewStructure } from '../types/external-types/viewStructure';\nimport {\n  ExternalApiPBCaller,\n  ExternalApiPBDriver,\n} from '../types/pb-types/external-api-driver.interface';\nimport {\n  PageBuilderDrawerResponse,\n  PageBuilderForm,\n  PageBuilderInstanceParameters,\n  PageBuilderModalResponse,\n  PageBuilderDefaultInput,\n  ActionButtonResponse,\n  DefaultResponseApiCaller,\n} from '../types/pb-types/page-builder.type';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PageBuilderService implements OnDestroy, ExternalApiPBCaller {\n  //loading\n  messageLoadingId: string | null = null;\n  messageLoadingPool: {\n    loadingMessageId: string;\n    timeoutSub: Subscription;\n  }[] = [];\n  messageLoadingTimeout: number = 2000;\n\n  externalApiPBDriver!: ExternalApiPBDriver;\n\n  constructor(\n    private pageBuilderGuiService: PageBuilderGuiService,\n    private builderDriverService: BuilderDriverService,\n    private apiCallerService: ApiCallerService,\n    private router: Router,\n    private modalService: NzModalService,\n    private drawerService: NzDrawerService,\n    private formApiCaller: FormApiCallerService,\n    private translateService: TranslateService\n  ) {}\n\n  /**\n   *\n   * @param viewId\n   */\n  openPageBuilderDrawer(viewId: string): Observable<PageBuilderDrawerResponse>;\n  openPageBuilderDrawer(\n    viewId: string,\n    ...parameters: string[]\n  ): Observable<PageBuilderDrawerResponse>;\n  openPageBuilderDrawer(\n    structure: PageBuilderForm\n  ): Observable<PageBuilderDrawerResponse>;\n  openPageBuilderDrawer(\n    ...input: any[]\n  ): Observable<PageBuilderDrawerResponse> {\n    //viewId: string = null, structure: PageBuilderForm=null\n    const [param1, ...param2] = input;\n    const messageId: string = this.pageBuilderGuiService.showMessage(\n      'loading',\n      'FEPB_GENERIC_LOADING',\n      undefined,\n      true\n    ).messageId;\n    if (!param1) {\n      this.pageBuilderGuiService.removeMessage(messageId);\n      console.error('openPageBuilderDrawer - No parameters passed');\n      return of({\n        refreshFather: false,\n        committed: false,\n        error: {\n          messages: ['No Structure'],\n        },\n      });\n    }\n    if (typeof param1 == 'string') {\n      const parameters: string[] = [];\n      if (param2.length > 0) {\n        parameters.push(...param2);\n      }\n      return this.builderDriverService.getStructure(param1, parameters).pipe(\n        catchError((error) => {\n          const errorMsg: string = HTTPUtils.getErrorMsgFromError(error);\n          this.pageBuilderGuiService.removeMessage(messageId);\n          this.pageBuilderGuiService.openModalSimpleResult({\n            result: false,\n            messages: [errorMsg],\n          });\n          return of({\n            refreshFather: false,\n            committed: false,\n            error: {\n              messages: [errorMsg],\n            },\n          });\n        }),\n        switchMap((res: ViewStructure | PageBuilderDrawerResponse | any) => {\n          if (res) {\n            if (res.error) {\n              //ritorno del catchError\n              return of(res);\n            } else {\n              const struttura = res.structure as any;\n              const moduleId =\n                (res as ViewStructure).type +\n                '_' +\n                (res as ViewStructure).version.split('.')[0]; //TODO + sicuro\n              this.pageBuilderGuiService.removeMessage(messageId);\n              return this.drawerPageBuilder({\n                componentInstanceParameters: {\n                  structure: struttura,\n                  viewId: param1,\n                  parameters,\n                  view: res,\n                },\n                moduleId,\n              }).asObservable();\n            }\n          } else {\n            return of(undefined);\n          }\n        })\n      );\n    } else {\n      //param1 is structure\n      this.pageBuilderGuiService.removeMessage(messageId);\n      const { viewId } = param1;\n      return this.drawerPageBuilder({\n        componentInstanceParameters: {\n          structure: _.cloneDeep(param1),\n          viewId: viewId || 'view-no-id',\n          parameters: [],\n        },\n        moduleId: 'SIMPLEVIEW_V1',\n      }).asObservable(); //FORMVIEW_1 in attesa di ulteriori sviluppi\n    }\n  }\n\n  /**\n   *\n   * @param input\n   */\n  drawerPageBuilder(\n    input: PageBuilderInstanceParameters\n  ): Subject<PageBuilderDrawerResponse> {\n    const { componentInstanceParameters } = input;\n    const viewExtra =\n      componentInstanceParameters && componentInstanceParameters.view\n        ? componentInstanceParameters.view.extra\n        : null;\n    // let modalClasses = \"\";\n    // if (viewExtra) {//viewExtra quando presente setta nzClassName\n    //     if (viewExtra.modalSize) {\n    //         modalClasses += \" \" + viewExtra.modalSize;\n    //     }\n    //     if (viewExtra.modalClass) {\n    //         modalClasses += \" \" + viewExtra.modalClass\n    //     }\n    // }\n    const title =\n      componentInstanceParameters.structure.head &&\n      componentInstanceParameters.structure.head.title\n        ? componentInstanceParameters.structure.head.title.mainTitle\n        : null;\n    const translatedTitle = title ? this.translateService.instant(title) : null;\n    let drawerSub: Subject<PageBuilderDrawerResponse> =\n      new Subject<PageBuilderDrawerResponse>();\n    const drawerRef = this.drawerService.create({\n      nzTitle: translatedTitle,\n      // nzClassName: modalClasses !== \"\" ? modalClasses : 'w-80',\n      nzContent: DrawerPageBuilderComponent,\n      nzContentParams: {\n        data: input,\n      },\n      nzWidth: 750,\n      nzFooter: undefined,\n      nzClosable: true,\n      nzMaskClosable: false,\n      nzKeyboard: false,\n      nzCloseOnNavigation: false,\n    });\n    drawerRef.afterClose.subscribe(\n      (res: PageBuilderDrawerResponse) => {\n        if (res) {\n          if (\n            componentInstanceParameters.structure &&\n            componentInstanceParameters.structure.vigilantOpts &&\n            componentInstanceParameters.structure.vigilantOpts.afterCommit\n          ) {\n            console.log('IMPLEMENTARE VIGILANT SERVICE QUI');\n          }\n          if (res.committed) {\n            this.pageBuilderGuiService.showMessage(\n              'success',\n              'FEPB_GENERIC_SUCCESSSAVEOPERATION'\n            );\n          }\n          drawerSub.next(res);\n        } else {\n          drawerSub.next({\n            refreshFather: false,\n            committed: false,\n          });\n        }\n      },\n      (error) => {\n        drawerSub.next({\n          refreshFather: false,\n          committed: false,\n          error: {\n            messages: [HTTPUtils.getErrorMsgFromError(error)],\n          },\n        });\n      }\n    );\n\n    return drawerSub;\n  }\n\n  /**\n   *\n   * @param viewId\n   */\n  openPageBuilderModal(viewId: string): Observable<PageBuilderModalResponse>;\n  openPageBuilderModal(\n    viewId: string,\n    ...parameters: string[]\n  ): Observable<PageBuilderModalResponse>;\n  openPageBuilderModal(\n    structure: PageBuilderForm\n  ): Observable<PageBuilderModalResponse>;\n  openPageBuilderModal(...input: any[]): Observable<PageBuilderModalResponse> {\n    //viewId: string = null, structure: PageBuilderForm=null\n    const [param1, ...param2] = input;\n    const messageId: string = this.pageBuilderGuiService.showMessage(\n      'loading',\n      'FEPB_GENERIC_LOADING',\n      undefined,\n      true\n    ).messageId;\n    if (!param1) {\n      this.pageBuilderGuiService.removeMessage(messageId);\n      console.error('openPageBuilderModal - No parameters passed');\n      return of({\n        refreshFather: false,\n        committed: false,\n        error: {\n          messages: ['No Structure'],\n        },\n      });\n    }\n    if (typeof param1 == 'string') {\n      const parameters: string[] = [];\n      if (param2.length > 0) {\n        parameters.push(...param2);\n      }\n      return this.builderDriverService.getStructure(param1, parameters).pipe(\n        catchError((error) => {\n          const errorMsg: string = HTTPUtils.getErrorMsgFromError(error);\n          this.pageBuilderGuiService.removeMessage(messageId);\n          this.pageBuilderGuiService.openModalSimpleResult({\n            result: false,\n            messages: [errorMsg],\n          });\n          return of({\n            refreshFather: false,\n            committed: false,\n            error: {\n              messages: [errorMsg],\n            },\n          });\n        }),\n        switchMap((res: ViewStructure | PageBuilderModalResponse | any) => {\n          if (res) {\n            if (res.error) {\n              //ritorno del catchError\n              return of(res);\n            } else {\n              const struttura = res.structure as any;\n              const moduleId =\n                (res as ViewStructure).type +\n                '_' +\n                (res as ViewStructure).version.split('.')[0]; //TODO + sicuro\n              this.pageBuilderGuiService.removeMessage(messageId);\n              return this.modalPageBuilder({\n                componentInstanceParameters: {\n                  structure: struttura,\n                  viewId: param1,\n                  parameters,\n                  view: res,\n                },\n                moduleId,\n              }).asObservable();\n            }\n          } else {\n            return of(undefined);\n          }\n        })\n      );\n    } else {\n      //param1 is tructure\n      this.pageBuilderGuiService.removeMessage(messageId);\n      const { viewId } = param1;\n      return this.modalPageBuilder({\n        componentInstanceParameters: {\n          structure: _.cloneDeep(param1),\n          viewId: viewId || 'view-no-id',\n          parameters: [],\n        },\n        moduleId: 'SIMPLEVIEW_V1',\n      }).asObservable(); //FORMVIEW_1 in attesa di ulteriori sviluppi\n    }\n  }\n\n  /**\n   *\n   * @param input\n   */\n  modalPageBuilder(\n    input: PageBuilderInstanceParameters\n  ): Subject<PageBuilderModalResponse> {\n    const { componentInstanceParameters } = input;\n    const viewExtra =\n      componentInstanceParameters && componentInstanceParameters.view\n        ? componentInstanceParameters.view.extra\n        : null;\n    let modalClasses = '';\n    if (viewExtra) {\n      //viewExtra quando presente setta nzClassName\n      if (viewExtra.modalSize) {\n        modalClasses += ' ' + viewExtra.modalSize;\n      }\n      if (viewExtra.modalClass) {\n        modalClasses += ' ' + viewExtra.modalClass;\n      }\n    }\n    let modalSub: Subject<PageBuilderModalResponse> =\n      new Subject<PageBuilderModalResponse>();\n    const title =\n      componentInstanceParameters.structure.head &&\n      componentInstanceParameters.structure.head.title\n        ? componentInstanceParameters.structure.head.title.mainTitle\n        : null;\n    const translatedTitle = title ? this.translateService.instant(title) : null;\n    const modalRef = this.modalService.create({\n      nzTitle: translatedTitle,\n      nzClassName: modalClasses !== '' ? modalClasses : 'w-80',\n      nzContent: ModalPageBuilderComponent,\n      nzData: {\n        data: input,\n      },\n      nzFooter: null,\n      nzClosable: true,\n      nzMaskClosable: false,\n      nzKeyboard: false,\n      nzCloseOnNavigation: false,\n    });\n    modalRef.afterClose.subscribe(\n      (res: PageBuilderModalResponse) => {\n        if (res) {\n          if (\n            componentInstanceParameters.structure &&\n            componentInstanceParameters.structure.vigilantOpts &&\n            componentInstanceParameters.structure.vigilantOpts.afterCommit\n          ) {\n            console.log('IMPLEMENTARE VIGILANT SERVICE QUI');\n          }\n          if (res.committed) {\n            this.pageBuilderGuiService.showMessage(\n              'success',\n              'FEPB_GENERIC_SUCCESSSAVEOPERATION'\n            );\n          }\n          modalSub.next(res);\n        } else {\n          modalSub.next({\n            refreshFather: false,\n            committed: false,\n          });\n        }\n      },\n      (error) => {\n        modalSub.next({\n          refreshFather: false,\n          committed: false,\n          error: {\n            messages: [HTTPUtils.getErrorMsgFromError(error)],\n          },\n        });\n      }\n    );\n\n    return modalSub;\n  }\n\n  /**\n   *\n   * @param defaultInput\n   * @param loadingSub\n   */\n  getStructureFromDefaultInput(\n    defaultInput: PageBuilderDefaultInput,\n    loadingSub?: Subject<boolean>\n  ): Observable<{\n    result: boolean;\n    structure?: ViewStructure;\n    error?: {\n      messages: string[];\n    };\n  }> {\n    if (defaultInput) {\n      const { structure, viewId, parameters } = defaultInput;\n      if (viewId && !structure) {\n        if (loadingSub) {\n          this.startLoading(loadingSub);\n        }\n        return this.builderDriverService.getStructure(viewId, parameters).pipe(\n          catchError((error) => {\n            if (loadingSub) {\n              this.stopLoading(loadingSub);\n            }\n            const errorMsg: string = HTTPUtils.getErrorMsgFromError(error);\n            // this.messageService.remove(messageId);\n            this.pageBuilderGuiService.openModalSimpleResult({\n              result: false,\n              messages: [errorMsg],\n            });\n            return of({\n              result: false,\n              error: {\n                messages: [errorMsg],\n              },\n            });\n          }),\n          switchMap((res: ViewStructure | PageBuilderModalResponse | any) => {\n            if (res) {\n              if (loadingSub) {\n                this.stopLoading(loadingSub);\n              }\n              if (res.error) {\n                //ritorno del catchError\n                return of(res);\n              } else {\n                const struttura = res.structure as any;\n                return of({\n                  result: true,\n                  structure: struttura,\n                });\n              }\n            } else {\n              return of(undefined);\n            }\n          })\n        );\n      } else if (structure) {\n        return of({\n          result: true,\n          structure: structure,\n        });\n      } else {\n        return of({\n          result: false,\n          error: {\n            messages: ['No viewId in input'],\n          },\n        });\n      }\n    } else {\n      return of({\n        result: false,\n        error: {\n          messages: ['No data in Input'],\n        },\n      });\n    }\n  }\n\n  /**\n   *\n   * @param defaultInput\n   * @param loadingSub\n   */\n  getInstanceParametersAndStructureFromDefaultInput(\n    defaultInput: PageBuilderDefaultInput,\n    loadingSub?: Subject<boolean>\n  ): Observable<{\n    result: boolean;\n    instanceParameters?: PageBuilderInstanceParameters;\n    error?: {\n      messages: string[];\n    };\n  }> {\n    if (defaultInput) {\n      const { structure, viewId, parameters, passiveRefresh } = defaultInput;\n      if (viewId) {\n        if (loadingSub) {\n          this.startLoading(loadingSub);\n        }\n        return this.builderDriverService.getStructure(viewId, parameters).pipe(\n          catchError((error) => {\n            if (loadingSub) {\n              this.stopLoading(loadingSub);\n            }\n            const errorMsg: string = HTTPUtils.getErrorMsgFromError(error);\n            // this.messageService.remove(messageId);\n            this.pageBuilderGuiService.openModalSimpleResult({\n              result: false,\n              messages: [errorMsg],\n            });\n            return of({\n              result: false,\n              error: {\n                messages: [errorMsg],\n              },\n            });\n          }),\n          switchMap((res: ViewStructure | PageBuilderModalResponse | any) => {\n            if (res) {\n              if (loadingSub) {\n                this.stopLoading(loadingSub);\n              }\n              if (res.error) {\n                //ritorno del catchError\n                return of(res);\n              } else {\n                const moduleId =\n                  (res as ViewStructure).type +\n                  '_' +\n                  (res as ViewStructure).version.split('.')[0]; //TODO + sicuro\n                const struttura = res.structure as any;\n                return of({\n                  result: true,\n                  structure: struttura,\n                  instanceParameters: {\n                    moduleId: moduleId,\n                    componentInstanceParameters: {\n                      viewId,\n                      parameters,\n                      structure: struttura,\n                      passiveRefresh,\n                    },\n                  },\n                });\n              }\n            } else {\n              return of(undefined);\n            }\n          })\n        );\n      } else {\n        return of({\n          result: false,\n          error: {\n            messages: ['No viewId in input'],\n          },\n        });\n      }\n    } else {\n      return of({\n        result: false,\n        error: {\n          messages: ['No data in Input'],\n        },\n      });\n    }\n  }\n\n  private handleNextOperation(\n    input: ActionButtonResponse,\n    currentBtn: ActionButton,\n    params: any = null\n  ) {\n    const nextOperation = input.rawResponse\n      ? input.rawResponse.nextOperation\n      : null;\n    const somethingToHandle =\n      nextOperation ||\n      (input.result ? currentBtn.onResultTrue : currentBtn.onResultFalse);\n    if (!somethingToHandle) {\n      if (currentBtn.extra) {\n        input.extra = currentBtn.extra;\n      }\n      return of(input);\n    }\n    return this.handlerActionButton(somethingToHandle, params);\n  }\n\n  /**\n   *\n   * @param btn\n   * @param param\n   */\n  handlerActionButton(\n    btn: ActionButton,\n    paramIN: any = null\n  ): Observable<ActionButtonResponse | undefined> {\n    const param = paramIN ? _.cloneDeep(paramIN) : paramIN;\n    // console.log(\"param\",param)\n    if (param) {\n      //c'è param\n      btn = this.translateParametricBtnParams(btn, param);\n    }\n    if (btn && !btn.isDisabled) {\n      //btn\n      if (btn.action == 'close-modal') {\n        return this.handleNextOperation(\n          {\n            result: true,\n            closeModal: true,\n          },\n          btn,\n          param\n        );\n      } else if (btn.action == 'close-drawer') {\n        return this.handleNextOperation(\n          {\n            result: true,\n            closeDrawer: true,\n          },\n          btn,\n          param\n        );\n      } else if (btn.action == 'call-api' && btn.callAPIActionButton) {\n        return this.apiCallerService.callApi(btn.callAPIActionButton).pipe(\n          filter(\n            (\n              apiResponse: DefaultResponseApiCaller | undefined\n            ): apiResponse is DefaultResponseApiCaller =>\n              apiResponse !== undefined\n          ),\n          map((apiResponse: DefaultResponseApiCaller) => {\n            return {\n              needRefresh: apiResponse.needRefresh,\n              result: apiResponse.result,\n              response: apiResponse.response,\n              rawResponse: apiResponse.rawResponse,\n              error: apiResponse.error,\n            };\n          }),\n          switchMap((res) => this.handleNextOperation(res, btn, param))\n        );\n      } else if (btn.action == 'emit-event' && btn.emitActionButton) {\n        const timeout = btn.emitActionButton.timeout\n          ? btn.emitActionButton.timeout\n          : 0;\n        setTimeout(() => {\n          window.dispatchEvent(\n            new CustomEvent(btn.emitActionButton?.eventName || '', {\n              detail: { params: btn.emitActionButton?.params || null },\n            })\n          ); //da testare{ params: btn.emitActionButton.params || null } as any btn.emitActionButton.params || null\n          // getCustomEM().emit({\n          //     eventName: btn.emitActionButton.eventName,\n          //     params: btn.emitActionButton.params || null\n          // })\n        }, timeout);\n        return this.handleNextOperation(\n          {\n            result: true,\n            eventToHandle: btn.emitActionButton,\n          },\n          btn,\n          param\n        );\n      } else if (btn.action == 'open-modal') {\n        if (btn.viewModalAction) {\n          const viewId = btn.viewModalAction.viewId;\n          const parameters = btn.viewModalAction.params || null;\n          return this.openPageBuilderModal(viewId, ...parameters).pipe(\n            map((modalResponse: PageBuilderModalResponse) => {\n              return {\n                needRefresh: modalResponse.refreshFather,\n                result: modalResponse.committed,\n                error: modalResponse.error,\n                rawResponse: {\n                  nextOperation: modalResponse.nextOperation,\n                }, //wrap per gestire la nextOperation dal form\n              };\n            }),\n            switchMap((res) => this.handleNextOperation(res, btn, param))\n          );\n        }\n      } else if (btn.action == 'open-drawer') {\n        if (btn.viewDrawerAction) {\n          const viewId = btn.viewDrawerAction.viewId;\n          const parameters = btn.viewDrawerAction.params || null;\n          return this.openPageBuilderDrawer(viewId, ...parameters).pipe(\n            map((drawerResponse: PageBuilderDrawerResponse) => {\n              return {\n                needRefresh: drawerResponse.refreshFather,\n                result: drawerResponse.committed,\n                error: drawerResponse.error,\n                rawResponse: {\n                  nextOperation: drawerResponse.nextOperation,\n                },\n              };\n            }),\n            switchMap((res) => this.handleNextOperation(res, btn, param))\n          );\n        }\n      } else if (btn.action == 'go-to-url' && btn.goToUrlRules) {\n        if (btn.goToUrlRules.isExternal) {\n          window.open(\n            btn.goToUrlRules.url,\n            btn.goToUrlRules.target || '_blank'\n          );\n          return this.handleNextOperation(\n            {\n              result: true,\n              landingUrl: btn.goToUrlRules.url,\n            },\n            btn,\n            param\n          );\n        } else {\n          //qui\n          const queryParams: { [key: string]: any } = {};\n          if (btn.goToUrlRules.queryParams) {\n            const keys = Object.keys(btn.goToUrlRules.queryParams);\n            for (let k of keys) {\n              queryParams[k] = btn.goToUrlRules.queryParams[k];\n            }\n          }\n          if (btn.goToUrlRules.parameters) {\n            queryParams['parameters'] = btn.goToUrlRules.parameters || [];\n          }\n          this.router.navigate([btn.goToUrlRules.url], { queryParams });\n          return this.handleNextOperation(\n            {\n              result: true,\n              landingUrl: btn.goToUrlRules.url,\n            },\n            btn,\n            param\n          );\n        }\n      } else {\n        console.error(\n          'btn action non valorizzata o non ancora implementata',\n          btn.action\n        );\n        return of({\n          result: false,\n          error: {\n            messages: ['Nessuna azione disponibile'],\n          },\n        });\n      }\n    } else {\n      console.error('Nessun btn in input', btn);\n      return of({\n        result: false,\n        error: {\n          messages: ['btn action non valorizzata o non ancora implementata'],\n        },\n      });\n    }\n    return of(undefined);\n  }\n\n  /**\n   * Metodo che cerca nel bottone eventuali campi con parametri e si appoggia a\n   * getParametricValuesAndAssign per trovare e assegnare i valori\n   * @param btn ActionButton in cui cercare\n   * @param values oggetto o array in cui cercare i valori\n   */\n  translateParametricBtnParams(btn: ActionButton, values: any) {\n    let parameters:\n      | {\n          path: string | null;\n          value: any;\n        }\n      | {\n          path: string | null;\n          value: any;\n        }[] = {\n      path: null,\n      value: null,\n    };\n    switch (btn.action) {\n      case 'call-api':\n        parameters = {\n          path: 'callAPIActionButton.params',\n          value: _.get(btn, 'callAPIActionButton.params', null),\n        };\n        //caso speciale query in callAPIActionButton\n        let query = _.get(btn, 'callAPIActionButton.query', null);\n        if (query) {\n          const queryParameters = {\n            path: 'callAPIActionButton.query',\n            value: _.get(btn, 'callAPIActionButton.query', null),\n          };\n          btn = this.getParametricValuesAndAssign(values, queryParameters, btn);\n        }\n        break;\n      case 'open-modal':\n        parameters = {\n          path: 'viewModalAction.params',\n          value: _.get(btn, 'viewModalAction.params', null),\n        };\n        break;\n      case 'open-drawer':\n        parameters = {\n          path: 'viewDrawerAction.params',\n          value: _.get(btn, 'viewDrawerAction.params', null),\n        };\n        break;\n      case 'emit-event':\n        parameters = {\n          path: 'emitActionButton.params',\n          value: _.get(btn, 'emitActionButton.params', null),\n        };\n        break;\n      case 'go-to-url':\n        parameters = [\n          {\n            path: 'goToUrlRules.url',\n            value: _.get(btn, 'goToUrlRules.url', null),\n          },\n          {\n            path: 'goToUrlRules.parameters',\n            value: _.get(btn, 'goToUrlRules.parameters', null),\n          },\n          {\n            path: 'goToUrlRules.queryParams',\n            value: _.get(btn, 'goToUrlRules.queryParams', null),\n          },\n        ];\n        break;\n    }\n    if (btn.onResultTrue) {\n      //deep translate ActionButton onResultTrue\n      let onResultTrueBtnParsed = this.translateParametricBtnParams(\n        btn.onResultTrue,\n        values\n      );\n      btn.onResultTrue = _.cloneDeep(onResultTrueBtnParsed);\n    }\n    if (btn.onResultFalse) {\n      //deep translate ActionButton onResultFalse\n      let onResultFalseBtnParsed = this.translateParametricBtnParams(\n        btn.onResultFalse,\n        values\n      );\n      btn.onResultFalse = _.cloneDeep(onResultFalseBtnParsed);\n    }\n    return this.getParametricValuesAndAssign(values, parameters, btn);\n  }\n\n  /**\n   * Dato un bottone torna lo stesso botton con eventuali parametri parametrici (che iniziano con ':' [non si applica ai queryParams negli url]) sostituiti dai valori trovati nei value\n   * eventuali valori non parametrici resteranno inalterati, se qualche controllo blocca l'operazione torna il btn passato come input senza modifiche\n   * @param value oggetto o array in cui cercare i valori\n   * @param parameters campi in cui cercare e inserire i valori mappati da translateParametricBtnParams\n   * @param btn ActionButton sul quale agire\n   */\n  getParametricValuesAndAssign(\n    value: any | any[],\n    parameters: any,\n    btn: ActionButton\n  ) {\n    if (value && parameters && btn) {\n      if (!Array.isArray(parameters)) {\n        //se parameters non è un array siamo nel caso path/value altrimenti siamo nel caso degli url\n        if (parameters.value && Array.isArray(parameters.value)) {\n          let populatedParameters = _.cloneDeep(parameters.value);\n          const paramValue = parameters.value;\n          for (let index in paramValue) {\n            if (paramValue[index] && paramValue[index].indexOf(':') == 0) {\n              const fetchString = paramValue[index].substring(1); //tutto cio che c'è dopo :\n              if (Array.isArray(value)) {\n                //multiple selection\n                let params = [];\n                for (let val of value) {\n                  params.push(_.get(val, fetchString, null));\n                }\n                populatedParameters[index] = params;\n              } else {\n                //single select\n                populatedParameters[index] = _.get(value, fetchString, null);\n              }\n            }\n          }\n          _.set(btn, parameters.path, populatedParameters);\n        } else if (parameters.value && typeof parameters.value === 'object') {\n          //query params [key:(:fetchVal)]\n          if (!Array.isArray(value)) {\n            const populatedObj = _.cloneDeep(parameters.value);\n            for (let key in populatedObj) {\n              if (populatedObj[key] && populatedObj[key].indexOf(':') == 0) {\n                const fetchString = populatedObj[key].substring(1); //tutto cio che c'è dopo :\n                populatedObj[key] = _.get(value, fetchString, null);\n              }\n            }\n            _.set(btn, parameters.path, populatedObj);\n          } else {\n            //multiple selection non gestita\n          }\n        }\n      } else {\n        //gestione URL (parameters è un array)\n        for (let param of parameters) {\n          const paramValue = _.cloneDeep(param.value);\n          if (paramValue) {\n            if (Array.isArray(paramValue)) {\n              //parameters utilizzabile solo per URL view\n              let populatedParameters = _.cloneDeep(paramValue);\n              for (let index in paramValue) {\n                if (paramValue[index] && paramValue[index].indexOf(':') == 0) {\n                  const fetchString = paramValue[index].substring(1); //tutto cio che c'è dopo :\n                  if (!Array.isArray(value)) {\n                    //single select\n                    populatedParameters[index] = _.get(\n                      value,\n                      fetchString,\n                      null\n                    );\n                  } else {\n                    //multiple selection non gestita\n                  }\n                }\n              }\n              _.set(btn, param.path, populatedParameters);\n            } else if (typeof paramValue === 'string') {\n              //url\n              if (Array.isArray(value)) {\n                //multiple selection non gestita\n              } else {\n                const splittedUrl = paramValue.split('/');\n                for (let urlSegmentIndex in splittedUrl) {\n                  if (\n                    splittedUrl[urlSegmentIndex] &&\n                    splittedUrl[urlSegmentIndex].indexOf(':') == 0\n                  ) {\n                    const fetchString =\n                      splittedUrl[urlSegmentIndex].substring(1); //tutto cio che c'è dopo :\n                    splittedUrl[urlSegmentIndex] =\n                      '' + _.get(value, fetchString, null);\n                  }\n                }\n                _.set(btn, param.path, splittedUrl.join('/'));\n              }\n            } else if (typeof paramValue === 'object') {\n              //query params [key:val]\n              if (!Array.isArray(value)) {\n                const populatedObj = _.cloneDeep(paramValue);\n                for (let key in populatedObj) {\n                  populatedObj[key] = _.get(value, key, null);\n                }\n                _.set(btn, param.path, populatedObj);\n              } else {\n                //multiple selection non gestita\n              }\n            }\n          }\n        }\n      }\n    }\n    return btn;\n  }\n\n  private loadingMessage() {\n    const messageLoadingId = this.pageBuilderGuiService.showMessage(\n      'loading',\n      'FEPB_GENERIC_LOADING',\n      undefined,\n      true\n    ).messageId;\n    this.messageLoadingId = messageLoadingId;\n    return messageLoadingId;\n  }\n\n  private startLoading(loadingSub: Subject<boolean>) {\n    const currentMessageId = this.loadingMessage();\n    if (loadingSub) loadingSub.next(true);\n    //timeout loading\n    const sub: Subscription = timer(this.messageLoadingTimeout).subscribe(\n      (res) => {\n        this.stopLoadingById(currentMessageId, loadingSub);\n      }\n    );\n    this.messageLoadingPool.push({\n      loadingMessageId: currentMessageId,\n      timeoutSub: sub,\n    });\n  }\n\n  private stopLoading(loadingSub: Subject<boolean>) {\n    if (this.messageLoadingId) {\n      this.pageBuilderGuiService.removeMessage(this.messageLoadingId);\n    }\n    this.messageLoadingId = null;\n    if (loadingSub) loadingSub.next(false);\n  }\n\n  private stopLoadingById(messageId: string, loadingSub: Subject<boolean>) {\n    this.pageBuilderGuiService.removeMessage(messageId);\n    if (loadingSub) loadingSub.next(false);\n  }\n\n  ngOnDestroy(): void {\n    if (this.messageLoadingId)\n      this.pageBuilderGuiService.removeMessage(this.messageLoadingId);\n\n    if (this.messageLoadingPool && this.messageLoadingPool.length) {\n      for (let messageLoading of this.messageLoadingPool) {\n        if (messageLoading.timeoutSub && !messageLoading.timeoutSub.closed) {\n          messageLoading.timeoutSub.unsubscribe();\n          messageLoading.timeoutSub.closed = true;\n        }\n      }\n    }\n  }\n\n  setExternalDriver(externalDriver: ExternalApiPBDriver): void {\n    this.externalApiPBDriver = externalDriver;\n    this.pageBuilderGuiService.setExternalDriver(externalDriver);\n    this.builderDriverService.setExternalDriver(externalDriver);\n    this.apiCallerService.setExternalDriver(externalDriver);\n    this.formApiCaller.setExternalDriver(externalDriver);\n  }\n\n  getGuiService() {\n    return this.pageBuilderGuiService;\n  }\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[adHost]',\n})\nexport class AdDirective {\n    constructor(public viewContainerRef: ViewContainerRef) { }\n}","import { Component, ViewChild, ComponentRef, AfterViewInit } from '@angular/core';\nimport { AdDirective } from './utils/ad.directive';\nimport { PageBuilderComponentTypes, PageBuilderSupportComponentTypes, PageInstantiatorService } from './services/page-builder-instantiator.service';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-page-builder',\n  templateUrl: './page-builder.component.html',\n  styleUrls: ['./page-builder.component.scss', './utils/styles/fullpage-component.scss']\n})\nexport class PageBuilderComponent implements AfterViewInit {\n\n  @ViewChild(AdDirective, { static: false }) adHost!: AdDirective;\n\n  page: any;\n\n  constructor(\n    private pageInstaService: PageInstantiatorService,\n    private activatedRoute: ActivatedRoute\n  ) {\n\n  }\n  ngAfterViewInit(): void {\n    if (this.activatedRoute) {\n      this.activatedRoute.data.subscribe(\n        ({ configuration }) => {\n          this.init(configuration);\n        })\n    }\n  }\n\n  async init(configuration: any) {\n    const viewContainerRef = this.adHost.viewContainerRef;\n    viewContainerRef.clear();\n\n    if (configuration && configuration.result && configuration.instanceParameters) {\n      const pageBuilderInstance: ComponentRef<PageBuilderComponentTypes | any> | undefined = await this.pageInstaService.loadComponent(configuration.instanceParameters.moduleId, viewContainerRef);\n      if (pageBuilderInstance) {\n        pageBuilderInstance.instance.data = configuration.instanceParameters.componentInstanceParameters;\n      }\n    } else {\n      const pageBuilderInstance: ComponentRef<PageBuilderSupportComponentTypes | any> | undefined = await this.pageInstaService.loadComponent(\"ERROR\", viewContainerRef);\n    }\n  }\n\n}\n\n\n\n","<ng-template adHost></ng-template>","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'\nimport { Observable } from 'rxjs'\nimport { PageBuilderService } from './services/page-builder.service';\n\n\n\n\n@Injectable()\nexport class PageBuilderResolver {\n    constructor(private pageBuilderService: PageBuilderService) {\n    }\n\n    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {\n        const viewId = route.params['viewId'];\n        const parameters = route.queryParams['parameters'];\n\n        return this.pageBuilderService.getInstanceParametersAndStructureFromDefaultInput({\n            viewId,\n            parameters: parameters ? Array.isArray(parameters) ? parameters : [parameters] : undefined\n        })\n    }\n\n\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AdDirective } from './ad.directive';\n\n@NgModule({\n    declarations:\n        [\n            AdDirective,\n        ],\n    imports: [\n        CommonModule,\n\n    ],\n    exports: [\n        AdDirective\n    ]\n})\nexport class PageBuilderUtilsModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderComponent } from './page-builder.component';\nimport { PageBuilderUtilsModule } from './utils/page-builder-utils.module';\nimport { PageBuilderResolver } from './page-builder.resolver';\nimport { TranslateModule } from '@ngx-translate/core'\n\n\n\n@NgModule({\n  providers: [\n    PageBuilderResolver\n  ],\n  declarations: [\n    PageBuilderComponent\n  ],\n  imports: [\n    CommonModule,\n    PageBuilderUtilsModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderModule { }\n","export enum EVENTS_EMIT {\n  'RUNBOOTSTRAP' = 'run-bootstrap',\n  'CHECKVIGILANTS' = 'check-vigilants',\n  'ADDPANELMENU' = 'add-menu-panel',\n  'CATALOGFORNITORE' = 'catalog-fornitore',\n  'FULLPAGEREFRESH' = 'need-fullpage-refresh',\n  'CHANGEDEFAULTBG' = 'change-defaultbg',\n  'INITBOOTSTRAPTOOLTIP' = 'init-bootstrap-tooltip',\n  'BUILDINGUNITSTABSETREFRESH' = 'need-building-units-tabset-refresh',\n  'LOADING_APP' = 'LOADING_APP',\n  'GLOBALLOADINGSTART' = 'global-loading-start',\n  'GLOBALLOADINGSTOP' = 'global-loading-stop',\n  'GLOBALLOADING' = 'global-loading',\n  'MODALLOADING' = 'modal-loading',\n}\n","import { EVENTS_EMIT } from './constants';\nimport { NzDrawerRef } from 'ng-zorro-antd/drawer';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { PageBuilderService } from './services/page-builder.service';\nimport { BehaviorSubject } from 'rxjs';\nimport * as _ from 'lodash';\nimport {\n  PageBuilder,\n  PageBuilderDefaultInput,\n  PbDefaultButtonOutput,\n  PageBuilderModalResponse,\n  ActionButtonResponse,\n  PbOutputSub,\n} from './types/pb-types/page-builder.type';\nimport { ActionButtonCodecService } from './services/action-button-codec.service';\nimport { ActionButton } from './types/external-types/actionButton';\n\nexport abstract class PageBuilderMain<T extends { head?: any }>\n  implements PageBuilder\n{\n  declare page: T;\n  declare pageBuilderParameters: PageBuilderDefaultInput;\n  evetEmitterSubs: { [key: string]: Subscription } = {};\n\n  //loading\n  declare pageLoading: boolean;\n  declare loadingSub: Subject<boolean>;\n\n  //se modale\n  declare modal: NzModalRef; //da passare a any probabilmente\n  //se drawer\n  declare drawer: NzDrawerRef; //da passare a any probabilmente\n\n  //Sub che contiene l'ultima struttura della pagina arrivata dal server\n  declare pageSub: BehaviorSubject<T | undefined>;\n  //utils\n  subs: { [key: string]: Subscription } = {};\n  //afterLoadBtn handling\n  private afterLoadBtnExecuted: boolean = false;\n\n  constructor(\n    protected pageBuilderService: PageBuilderService,\n    protected actionButtonCodecService: ActionButtonCodecService\n  ) {\n    this.initLoadingSub();\n    this.initPageSub();\n    this.pageListener();\n  }\n\n  initInputData(value: PageBuilderDefaultInput): void {\n    this.pageBuilderService\n      .getStructureFromDefaultInput(value, this.loadingSub)\n      .subscribe({\n        next: (res) => {\n          this.handleResStructure(res);\n        },\n        error: (error) => {\n          console.error('initInputData', error);\n        },\n      });\n\n    //this.subs resta sempre un oggetto vuoto, questo non permette di fare l'unsubscribeSub. Non mi è chiara la faccenda, per il momento commento e ripristino la vecchia gestione :( SZ 27062022\n    // if (!this.subs['getStructureFromDefaultInput']) {\n    //   this.subs['getStructureFromDefaultInput'] = this.pageBuilderService.getStructureFromDefaultInput(value, this.loadingSub).subscribe(\n    //     res => {\n    //       this.handleResStructure(res);\n    //       this.unsubscribeSub('getStructureFromDefaultInput');\n    //     },\n    //     error => {\n    //       console.error(\"initInputData\", error);\n    //       this.unsubscribeSub('getStructureFromDefaultInput');\n    //     }\n    //   )\n    // }\n  }\n\n  /**\n   * Da MainComponent with love\n   * @param subName\n   */\n  unsubscribeSub(subName: string | null): void {\n    if (subName && this.subs && this.subs[subName]) {\n      this.subs[subName].unsubscribe();\n      delete this.subs[subName];\n    }\n  }\n\n  handleResStructure(res: any): void {\n    if (res && res.result && res.structure) {\n      this.standardStructureParser(res.structure);\n      // Execute afterLoadBtn after structure is parsed (only once)\n      if (!this.afterLoadBtnExecuted) {\n        this.handleAfterLoadBtn();\n        this.afterLoadBtnExecuted = true;\n      }\n    }\n  }\n\n  /**\n   * [31/05/2022]\n   * @param structure\n   */\n  standardStructureParser(structure: T) {\n    this.updatePageSub(structure);\n    let _structure = _.cloneDeep(structure);\n    if ((this.pageBuilderParameters as any)?.guiOptions?.externalHead) {\n      const head = _.cloneDeep(structure.head);\n      _structure.head = head;\n    }\n    this.page = _structure as any;\n  }\n\n  /**\n   *\n   * @param page\n   */\n  protected updatePageSub(page?: T) {\n    this.pageSub.next(page);\n  }\n\n  private initPageSub(): void {\n    if (!this.pageSub)\n      this.pageSub = new BehaviorSubject<T | undefined>(undefined);\n  }\n\n  standardOnDestroyFn() {\n    if (this.evetEmitterSubs) {\n      for (let event in this.evetEmitterSubs) {\n        if (this.evetEmitterSubs[event]) {\n          this.evetEmitterSubs[event].unsubscribe();\n          delete this.evetEmitterSubs[event];\n        }\n      }\n    }\n    this.stopLoading();\n  }\n\n  initLoadingSub(): void {\n    this.loadingSub = new Subject();\n    this.loadingSub.subscribe((res) => (this.pageLoading = res));\n  }\n\n  stopLoading(): void {\n    this.pageLoading = false;\n    if (this.loadingSub) {\n      this.loadingSub.unsubscribe();\n    }\n  }\n\n  refreshPage(): void {\n    if (\n      this.pageBuilderParameters &&\n      !this.pageBuilderParameters.passiveRefresh\n    ) {\n      this.pageBuilderParameters.structure = null;\n      this.initInputData(this.pageBuilderParameters);\n    }\n  }\n\n  /**\n   *\n   */\n  pageListener(): void {\n    if (\n      !this.evetEmitterSubs ||\n      (this.evetEmitterSubs &&\n        !this.evetEmitterSubs[EVENTS_EMIT.FULLPAGEREFRESH])\n    ) {\n      const refreshFn = () => {\n        this.refreshPage();\n      };\n      this.evetEmitterSubs[EVENTS_EMIT.FULLPAGEREFRESH] = new Subscription();\n      const subscription = fromEvent(\n        window,\n        EVENTS_EMIT.FULLPAGEREFRESH\n      ).subscribe(() => {\n        refreshFn();\n      });\n      this.evetEmitterSubs[EVENTS_EMIT.FULLPAGEREFRESH].add(subscription);\n      window.addEventListener(EVENTS_EMIT.FULLPAGEREFRESH, refreshFn, false);\n    }\n  }\n\n  btnHandler(event: PbDefaultButtonOutput) {\n    if (event) {\n      let btn = event.btn;\n      let subLoading = event.sub;\n      if (btn) {\n        if (subLoading) {\n          subLoading.next({ loading: true });\n        }\n        if (btn.action == 'close-modal' || btn.action == 'close-drawer') {\n          let res: PageBuilderModalResponse = {\n            refreshFather: false,\n            committed: false,\n          };\n          if (this.modal) {\n            if (subLoading) {\n              subLoading.next({ loading: false });\n            }\n            this.modal.destroy(res);\n          }\n          if (this.drawer) {\n            if (subLoading) {\n              subLoading.next({ loading: false });\n            }\n            this.drawer.close(res);\n          }\n        } else {\n          this.pageBuilderService\n            .handlerActionButton(btn)\n            .subscribe((res: any) =>\n              this.handlerActionButtonResFn(res, subLoading)\n            );\n        }\n      }\n    }\n  }\n\n  handlerActionButtonResFn(\n    res: ActionButtonResponse,\n    subLoading: Subject<PbOutputSub> | undefined\n  ) {\n    if (res) {\n      // Check modal/drawer close based on the explicit flags, *before* checking other results\n      // This avoids accidentally refreshing the page *before* the modal/drawer is dismissed.\n      if (res.closeModal || res.closeDrawer) {\n        this.checkModalClose(res); // checkModalClose now handles the response logic\n        // Important: Stop further processing here if modal/drawer was closed by this action,\n        // unless the response explicitly includes other actions (like nextOperation).\n        // For now, we assume closing is the primary outcome.\n        if (subLoading) {\n          subLoading.next({ loading: false });\n        }\n        // If checkModalClose handled everything, maybe return early? Depends on exact requirements.\n        // For now, let subsequent checks run, but be aware of potential conflicts.\n        return; // Let's return early to prevent unintended refreshes after close.\n      }\n\n      if (res.result) {\n        // NeedRefresh should trigger the specific abstract method\n        if (res.needRefresh) {\n          this.actionButtonResNeedRefreshFn(res);\n        }\n        // CloseModal handling moved above\n        // if (res.closeModal) {\n        //   this.actionButtonResCloseModalFn(res);\n        // }\n\n        // EventToHandle should trigger the specific abstract method\n        if (res.eventToHandle) {\n          // *** START ADDITION ***\n          if (res.eventToHandle.eventName == 'need-refresh') {\n            console.log(\n              'PageBuilderMain received need-refresh event, calling refreshPage()'\n            );\n            this.refreshPage(); // Call refreshPage for the main component\n          } else {\n            // Call the abstract handler for other events\n            this.actionButtonResEventToHandleFn(res);\n          }\n        }\n        if (subLoading) {\n          subLoading.next({ loading: false });\n        }\n      } else {\n        // Handle error case\n        if (res.error) {\n          if (subLoading) {\n            subLoading.next({\n              loading: false,\n              message: res.error.messages // Simplified message handling\n                ? res.error.messages[0] || 'FEPB_GENERIC_OPERATIONERROR'\n                : 'FEPB_GENERIC_OPERATIONERROR',\n            });\n          }\n          // Potentially show a generic error modal here if not handled by button itself\n        } else {\n          // Case where result is false but no specific error provided\n          if (subLoading) {\n            subLoading.next({ loading: false });\n          }\n        }\n      }\n    } else {\n      // Case where the handlerActionButton observable completed without emitting a value (unlikely but possible)\n      if (subLoading) {\n        subLoading.next({ loading: false });\n      }\n    }\n  }\n\n  checkModalClose(res: any): void {\n    // Only destroy/close if the corresponding flag is true in the response\n    const shouldCloseModal = res.closeModal === true;\n    const shouldCloseDrawer = res.closeDrawer === true;\n\n    // Only proceed if we actually need to close something\n    if (!shouldCloseModal && !shouldCloseDrawer) {\n      return;\n    }\n\n    const response: PageBuilderModalResponse = {\n      // Also used for Drawer response\n      refreshFather:\n        res.needRefresh ||\n        (res.eventToHandle && res.eventToHandle.eventName == 'need-refresh')\n          ? true\n          : false,\n      committed: res.result === true, // Ensure boolean\n      nextOperation: (res as any).nextOperation\n        ? (res as any).nextOperation\n        : null,\n      // Include raw response or error if needed for downstream processing after close\n      error: res.error || undefined,\n    };\n\n    // Use 'else if' because a component instance is unlikely to be both a modal and a drawer\n    if (this.modal && shouldCloseModal) {\n      console.log('PageBuilderMain closing modal with response:', response);\n      this.modal.destroy(response);\n    } else if (this.drawer && shouldCloseDrawer) {\n      console.log('PageBuilderMain closing drawer with response:', response);\n      this.drawer.close(response);\n    }\n  }\n\n  abstract actionButtonResNeedRefreshFn(res: any): void;\n  abstract actionButtonResCloseModalFn(res: any): void;\n  abstract actionButtonResEventToHandleFn(res: any): void;\n\n  /**\n   * Handle afterLoadBtn query parameter from URL\n   * This method reads the afterLoadBtn parameter, decodes it, and executes the action button\n   */\n  protected handleAfterLoadBtn(): void {\n    try {\n      // Get query parameters from URL\n      const urlParams = new URLSearchParams(window.location.search);\n      const afterLoadBtn = urlParams.get('afterLoadBtn');\n\n      if (!afterLoadBtn) {\n        return;\n      }\n\n      // Decode the action button\n      const actionButton = this.actionButtonCodecService.decode(afterLoadBtn);\n\n      if (!actionButton) {\n        console.warn('Failed to decode afterLoadBtn parameter');\n        return;\n      }\n\n      // Execute the action button\n      this.executeAfterLoadBtn(actionButton);\n\n      // Remove the parameter from URL after execution to avoid re-execution on refresh\n      this.removeAfterLoadBtnFromUrl();\n    } catch (error) {\n      console.error('Error handling afterLoadBtn:', error);\n    }\n  }\n\n  /**\n   * Execute the decoded action button\n   * @param actionButton The action button to execute\n   */\n  protected executeAfterLoadBtn(actionButton: ActionButton): void {\n    this.pageBuilderService.handlerActionButton(actionButton).subscribe({\n      next: (res: ActionButtonResponse | undefined) => {\n        if (res) {\n          this.handlerActionButtonResFn(res, undefined);\n        }\n      },\n      error: (error) => {\n        console.error('Error executing afterLoadBtn:', error);\n      },\n    });\n  }\n\n  /**\n   * Remove afterLoadBtn parameter from URL after execution\n   */\n  protected removeAfterLoadBtnFromUrl(): void {\n    try {\n      const url = new URL(window.location.href);\n      url.searchParams.delete('afterLoadBtn');\n      window.history.replaceState({}, '', url.toString());\n    } catch (error) {\n      console.error('Error removing afterLoadBtn from URL:', error);\n    }\n  }\n\n  /**\n   *\n   * @returns\n   */\n  getPageStructureObs() {\n    if (!this.pageSub) {\n      this.initPageSub();\n    }\n    return this.pageSub ? this.pageSub.asObservable() : null;\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-page-builder-error',\n  templateUrl: './page-builder-error.component.html',\n  styleUrls: ['./page-builder-error.component.scss']\n})\nexport class PageBuilderErrorComponent {\n\n  constructor() { }\n\n  goBack(){\n    history.back();\n  }\n\n}\n","<div class=\"h-100 w-100 d-flex justify-content-center align-items-center\">\n  <nz-result nzStatus=\"500\" [nzTitle]=\"('FEPB_PAGEERROR_TITLE' | translate)\" [nzSubTitle]=\"('FEPB_PAGEERROR_SUBTITLE' | translate)\">\n    <div nz-result-extra>\n      <span class=\"mt-5 text-primary cursor-pointer font-x-large\" (click)=\"goBack()\">{{'FEPB_PAGEERROR_GOBACK' | translate}}</span>\n    </div>\n  </nz-result>\n</div>\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderErrorComponent } from './page-builder-error.component';\nimport { NzResultModule } from 'ng-zorro-antd/result';\nimport { TranslateModule } from '@ngx-translate/core';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderErrorComponent': PageBuilderErrorComponent\n};\n\n@NgModule({\n  declarations: [PageBuilderErrorComponent],\n  imports: [\n    CommonModule,\n    NzResultModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderErrorModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"PageBuilderErrorModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderErrorComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { PageBuilderMain } from '../page-builder-main.class';\nimport { BuilderDriverService } from '../services/builder-driver.service';\nimport { PageBuilderService } from '../services/page-builder.service';\nimport { DefaultResponseFormSub } from './page-builder-form';\nimport { PageBuilderGuiService } from '../services/page-builder-gui.service';\nimport { HTTPUtils } from '@alfercom/common';\nimport { RemoteItemsRequest, RemoteValueRequest } from '@alfercom/dynamic-form';\nimport {\n  PageBuilderForm,\n  PageBuilderModalResponse,\n} from '../types/pb-types/page-builder.type';\nimport { CallApiParams } from '../types/external-types/callApiParams';\nimport { ActionButtonCodecService } from '../services/action-button-codec.service';\n\nexport class PageBuilderClassForm extends PageBuilderMain<PageBuilderForm> {\n  debug: boolean = false;\n\n  constructor(\n    protected pageBuilderGuiService: PageBuilderGuiService,\n    protected builderDriverService: BuilderDriverService,\n    protected override pageBuilderService: PageBuilderService,\n    protected override actionButtonCodecService: ActionButtonCodecService\n  ) {\n    super(pageBuilderService, actionButtonCodecService);\n  }\n\n  /**\n   *\n   * @param functionName\n   * @param data\n   * @param obsStatus\n   */\n  commit(\n    input: { data: any; viewParameters?: string[] },\n    subStatus: Subject<DefaultResponseFormSub> | undefined = undefined\n  ) {\n    const { data, viewParameters } = input;\n    const callParams: CallApiParams = {\n      apiMethod: 'commit',\n      viewId: this.pageBuilderParameters.viewId,\n      params: { data: data || null },\n      parameters:\n        viewParameters && viewParameters.length > 0\n          ? viewParameters\n          : this.pageBuilderParameters.parameters,\n    };\n    if (this.debug) console.log('commit callApi', callParams);\n    this.builderDriverService.callApi(callParams).subscribe(\n      // Should have DefaultResponse as response type\n      (res: any) => {\n        //result a false avrà campo validation\n        if (this.debug) console.log('commit callApi RES', callParams, res);\n        if (res && res.result) {\n          if (this.modal) {\n            //se sono dentro a un modale\n            const _res: PageBuilderModalResponse = {\n              refreshFather: true,\n              committed: true,\n              nextOperation: res.nextOperation,\n            };\n            this.modal.destroy(_res);\n          }\n          if (subStatus) {\n            subStatus.next({\n              result: true,\n              errors: null,\n            });\n          }\n        } else if (res.validations) {\n          //console.log((\"TODO\")\n          let formErrors = HTTPUtils.validationParsedErrorToFormError(\n            res.validations\n          );\n          if (subStatus) {\n            subStatus.next({\n              result: false,\n              errors: null,\n              formErrors: formErrors,\n            });\n          }\n        } else {\n          if (res && !res.result) {\n            const errorMsg =\n              res.messages && Array.isArray(res.messages)\n                ? res.messages.join(',\\n')\n                : res.messages || res.message || 'Generic Error';\n\n            this.pageBuilderGuiService.showMessage(\n              'error',\n              errorMsg\n                ? errorMsg\n                : HTTPUtils.getErrorMsgFromError(\n                    new Error('Generic Error') as any\n                  )\n            );\n            if (subStatus) {\n              subStatus.next({\n                result: false,\n                errors:\n                  res.messages && Array.isArray(res.messages)\n                    ? res.messages\n                    : null,\n                formErrors: null,\n              });\n            }\n          } else {\n            this.standardErrorFn(\n              new HttpErrorResponse({\n                error: new Error('Generic Error'),\n              }),\n              null,\n              subStatus\n            );\n            console.error('ERRORE NON GESTITO callApi res', res);\n          }\n        }\n      },\n      (error) => this.standardErrorFn(error, null, subStatus) //error avrà campo validation\n    );\n  }\n\n  handleRemoteItemsFetchRequest(request: RemoteItemsRequest | any) {\n    //RemoteItemsRequestNew\n    if (this.debug)\n      console.log('handleRemoteItemsFetchRequest', request, new Date());\n    const [parentKey] = request.values;\n    const callParams: CallApiParams = {\n      apiMethod: 'getRemoteItemsRequest',\n      viewId: this.pageBuilderParameters.viewId,\n      params: { type: request.fieldname as any, parentKey: parentKey || null },\n      parameters: this.pageBuilderParameters.parameters || [],\n    };\n    //console.log((\"getRemoteItemsRequest callApi\", callParams);\n    this.builderDriverService.callApi(callParams).subscribe(\n      // Should have DefaultDominioResponse[] as response type\n      (res: any) => {\n        if (this.debug)\n          console.log(\n            'handleRemoteItemsFetchRequest RESPONSE',\n            res,\n            new Date()\n          );\n        request.sub.next(res);\n      }\n    );\n  }\n\n  handleRemoteValuesFetchRequest(request: RemoteValueRequest) {\n    if (this.debug)\n      console.log('handleRemoteValuesFetchRequest', request, new Date());\n    const mapped = request.values.map((x) => ({ field: null, value: x }));\n    const callParams: CallApiParams = {\n      apiMethod: 'getRemoteValuesRequest',\n      viewId: this.pageBuilderParameters.viewId,\n      params: { type: request.fieldname as any, requiredParams: mapped },\n      parameters: this.pageBuilderParameters.parameters || [],\n    };\n    //console.log((\"getRemoteItemsRequest callApi\", callParams);\n    this.builderDriverService.callApi(callParams).subscribe((res: any) => {\n      if (this.debug)\n        console.log('handleRemoteValuesFetchRequest RESPONSE', res, new Date());\n      if (res) {\n        const value = res.value;\n        request.sub.next(value);\n      } else {\n        request.sub.next(null);\n      }\n    });\n  }\n\n  /**\n   *\n   * @param functionName\n   * @param data\n   * @param obsStatus\n   */\n  delete(\n    functionName: string,\n    data: any = null,\n    obsStatus: Subject<{ result: boolean; errors: string[] }> | null = null\n  ) {}\n\n  /**\n   *\n   * @param error\n   * @param errorMsg\n   * @param sub\n   */\n  standardErrorFn(\n    error: HttpErrorResponse,\n    errorMsg = null,\n    sub: Subject<DefaultResponseFormSub> | null = null\n  ) {\n    if (sub)\n      sub.next({\n        //result a false avrà campo validation\n        result: false,\n        errors: null,\n        formErrors: HTTPUtils.validationParsedErrorToFormError(\n          null,\n          error as any\n        ), // Cast error to any to resolve type incompatibility\n      });\n    this.pageBuilderGuiService.showMessage(\n      'error',\n      errorMsg ? errorMsg : HTTPUtils.getErrorMsgFromError(error as any)\n    ); // Cast error to any to resolve type incompatibility\n  }\n\n  actionButtonResNeedRefreshFn(res: any): void {}\n  actionButtonResCloseModalFn(res: any): void {}\n  actionButtonResEventToHandleFn(res: any): void {}\n}\n","import { Injectable } from '@angular/core';\nimport { ActionButton } from '../types/external-types/actionButton';\n\n/**\n * Service for encoding and decoding ActionButton objects to/from URL-safe strings\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class ActionButtonCodecService {\n  constructor() {}\n\n  /**\n   * Encode an ActionButton to a URL-safe base64 string\n   * @param button The ActionButton to encode\n   * @returns URL-safe base64 encoded string\n   */\n  encode(button: ActionButton): string {\n    try {\n      const json = JSON.stringify(button);\n      const base64 = btoa(\n        encodeURIComponent(json).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n          return String.fromCharCode(parseInt(p1, 16));\n        })\n      );\n      // Make URL-safe: replace + with -, / with _, and remove =\n      return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n    } catch (error) {\n      console.error('Error encoding ActionButton:', error);\n      throw new Error('Failed to encode ActionButton');\n    }\n  }\n\n  /**\n   * Decode a URL-safe base64 string to an ActionButton\n   * @param encoded The encoded string\n   * @returns Decoded ActionButton or null if invalid\n   */\n  decode(encoded: string): ActionButton | null {\n    try {\n      // Restore base64 from URL-safe format\n      let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n      // Add padding if needed\n      while (base64.length % 4) {\n        base64 += '=';\n      }\n\n      const json = decodeURIComponent(\n        atob(base64)\n          .split('')\n          .map((c) => {\n            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n          })\n          .join('')\n      );\n\n      const button = JSON.parse(json) as ActionButton;\n\n      // Basic validation\n      if (!this.isValidActionButton(button)) {\n        console.warn('Failed to decode afterLoadBtn parameter: invalid ActionButton structure');\n        return null;\n      }\n\n      return button;\n    } catch (error) {\n      console.error('Error decoding ActionButton:', error);\n      return null;\n    }\n  }\n\n  /**\n   * Validate if an object is a valid ActionButton\n   * @param obj The object to validate\n   * @returns true if valid, false otherwise\n   */\n  private isValidActionButton(obj: any): obj is ActionButton {\n    if (!obj || typeof obj !== 'object') {\n      return false;\n    }\n\n    // Check if action property exists and is valid\n    const validActions = [\n      'open-modal',\n      'call-api',\n      'emit-event',\n      'close-modal',\n      'go-to-url',\n      'open-drawer',\n      'close-drawer',\n    ];\n\n    if (!obj.action || !validActions.includes(obj.action)) {\n      return false;\n    }\n\n    // Validate specific action properties\n    switch (obj.action) {\n      case 'call-api':\n        return !!obj.callAPIActionButton;\n      case 'open-modal':\n        return !!obj.viewModalAction;\n      case 'open-drawer':\n        return !!obj.viewDrawerAction;\n      case 'emit-event':\n        return !!obj.emitActionButton;\n      case 'go-to-url':\n        return !!obj.goToUrlRules;\n      case 'close-modal':\n      case 'close-drawer':\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  /**\n   * Create a URL with an afterLoadBtn query parameter\n   * @param baseUrl The base URL\n   * @param button The ActionButton to encode\n   * @param additionalParams Optional additional query parameters\n   * @returns Complete URL with afterLoadBtn parameter\n   */\n  createUrlWithActionButton(\n    baseUrl: string,\n    button: ActionButton,\n    additionalParams?: { [key: string]: string }\n  ): string {\n    const encoded = this.encode(button);\n    const url = new URL(baseUrl, window.location.origin);\n    url.searchParams.set('afterLoadBtn', encoded);\n\n    if (additionalParams) {\n      Object.keys(additionalParams).forEach((key) => {\n        url.searchParams.set(key, additionalParams[key]);\n      });\n    }\n\n    return url.toString();\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: '.pb-main-title',\n  templateUrl: './pb-main-title.component.html',\n  styleUrls: ['./pb-main-title.component.scss']\n})\nexport class PbMainTitleComponent implements OnInit {\n\n  @Input() set title(title) {\n    this._title = title;\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  _title: any;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<ng-container *ngIf=\"title\">\n    <div class=\"d-flex w-100 flex-column\" [class.align-items-center]=\"title.position == 'center'\"\n        [class.align-items-top]=\"title.position == 'left' \" [class.align-items-bottom]=\"title.position == 'right'\">\n        <span class=\"text-primary pb-title-element font-x-large bold\">{{title.mainTitle | translate}}</span>\n        <span class=\"text-muted pb-title-sub fs-large\" [innerHtml]=\"title?.subTitle  | safeHtml:'html'\" *ngIf=\"title.subTitle\"></span>\n    </div>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\nimport * as _ from 'lodash';\nimport { transition, trigger, useAnimation } from '@angular/animations';\nimport { bounceInUp, shake, slideInDown } from 'ng-animate';\nimport { PageBuilderService } from '../../../services/page-builder.service';\nimport { PageBuilderHelpers, PageBuilderDefaultButton } from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-helpers-messages',\n  templateUrl: './pb-helpers-messages.component.html',\n  styleUrls: ['./pb-helpers-messages.component.scss'],\n  animations: [\n    trigger('helperAnimation', [\n      transition('* => next', useAnimation(slideInDown, {\n        params: { timing: 0.2 }\n      })),\n      transition('* => prev', useAnimation(bounceInUp, {\n        params: { timing: 0.2, }\n      })),\n      transition('* => last', useAnimation(shake, {\n        params: { timing: 0.2, }\n      }))\n    ])\n  ]\n})\nexport class PbHelpersMessagesComponent implements OnInit {\n\n  @Input('size') size: 'smaller' | 'small' | 'default' = 'default';\n  @Input('width') width: 'w-100' | 'w-60' | 'default' = 'default';\n  @Input('margin') margin: string = \"my-5\";\n\n  @Input() set helpers(helpers: PageBuilderHelpers[] | undefined) {\n    this._helpers = helpers;\n    if (helpers && helpers.length > 0) {\n      this.info = _.cloneDeep(helpers).filter(el => el.type == 'info');\n      this.alert = _.cloneDeep(helpers).filter(el => el.type == 'alert');\n      this.warning = _.cloneDeep(helpers).filter(el => el.type == 'warning');\n      this.success = _.cloneDeep(helpers).filter(el => el.type == 'success');\n    }\n  }\n\n  get helpers() {\n    return this._helpers;\n  }\n\n  _helpers: PageBuilderHelpers[] | undefined;\n\n  info!: PageBuilderHelpers[] | any[];\n  currentIndexInfo: number = 0;\n\n  alert!: PageBuilderHelpers[] | any[];\n  currentIndexAlert: number = 0;\n\n  warning!: PageBuilderHelpers[] | any[];\n  currentIndexWarning: number = 0;\n\n  success!: PageBuilderHelpers[] | any[];\n  currentIndexSuccess: number = 0;\n\n  contentInfoTemplate: any;\n\n  action: 'next' | 'prev' | 'default' | 'last' = 'default';\n\n  constructor(\n    private pageBuilderService: PageBuilderService\n  ) { }\n\n  ngOnInit(): void {\n  }\n\n  helperButtonClicked(button: PageBuilderDefaultButton | undefined) {\n    const _btn = _.cloneDeep(button);\n    let btnClicked = _btn;\n    if (btnClicked) {\n      this.pageBuilderService\n        .handlerActionButton(btnClicked)\n        .subscribe((res) => { }\n        );\n    }\n  }\n\n  next(type: 'info' | 'alert' | 'warning' | 'success') {\n    this.action = 'default';\n    let hasChanged: boolean = false;\n    setTimeout(() => {\n      if (type == 'info') {\n        if (this.currentIndexInfo + 1 < this.info.length) {\n          this.currentIndexInfo++;\n          hasChanged = true;\n        }\n      } else if (type == 'alert') {\n        if (this.currentIndexAlert + 1 < this.alert.length) {\n          this.currentIndexAlert++;\n          hasChanged = true;\n        }\n      } else if (type == 'success') {\n        if (this.currentIndexSuccess + 1 < this.success.length) {\n          this.currentIndexSuccess++;\n          hasChanged = true;\n        }\n      } else {\n        if (this.currentIndexWarning + 1 < this.warning.length) {\n          this.currentIndexWarning++;\n          hasChanged = true;\n        }\n      }\n      this.action = hasChanged ? 'next' : 'last';\n    }, 300)\n  }\n\n  prev(type: 'info' | 'alert' | 'warning' | 'success') {\n    this.action = 'default';\n    let hasChanged: boolean = false;\n    setTimeout(() => {\n      if (type == 'info') {\n        if (this.currentIndexInfo > 0) {\n          this.currentIndexInfo--;\n          hasChanged = true;\n        }\n      } else if (type == 'alert') {\n        if (this.currentIndexAlert > 0) {\n          this.currentIndexAlert--;\n          hasChanged = true;\n        }\n      } else if (type == 'success') {\n        if (this.currentIndexSuccess > 0) {\n          this.currentIndexSuccess--;\n          hasChanged = true;\n        }\n      } else {\n        if (this.currentIndexWarning > 0) {\n          this.currentIndexWarning--;\n          hasChanged = true;\n        }\n      }\n      this.action = hasChanged ? 'prev' : 'last';\n    }, 300)\n  }\n}\n","<ng-container *ngIf=\"helpers && helpers.length > 0\">\n  <ng-container *ngIf=\"size == 'default'\">\n    <div class=\"w-100 d-flex justify-content-center \" [class]=\"margin\">\n      <div class=\"d-flex flex-column align-items-center\" [class.w-60]=\"width == 'default' || width == 'w-60'\"\n        [class.w-100]=\"width == 'w-100'\">\n        <ng-container *ngIf=\"alert && alert.length > 0\">\n          <div class=\"helper-messages w-100 d-flex justify-content-around\">\n            <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"alert[currentIndexAlert].button\">\n              <div class=\"d-flex align-items-center mr-3\">\n                <img src=\"assets/icon/esclamation-mark.svg\" class=\"rounded-circle\" height=\"65\" width=\"65\" />\n              </div>\n              <div class=\"d-flex flex-column p-2 font-small\" [@helperAnimation]=\"action\">\n                <ng-container *ngIf=\"alert[currentIndexAlert]\">\n                  <div class=\"d-flex text-uppercase justify-content-between fs-large\">\n                    <span class=\"text-danger\">{{'FEPB_HELPERS_MESSAGES_DANGER_MSG' | translate}}</span>\n                  </div>\n                  <span class=\"\" *ngIf=\"alert[currentIndexAlert].text\">{{alert[currentIndexAlert].text |\n                    translate}}</span>\n                  <span class=\"w-100\" [innerHtml]=\"alert[currentIndexAlert].html | safeHtml:'html'\"\n                    *ngIf=\"alert[currentIndexAlert].html\"></span>\n                  <span class=\"d-flex w-100 justify-content-center mt-1\"\n                    (click)=\"helperButtonClicked(alert[currentIndexAlert].button)\"\n                    *ngIf=\"alert[currentIndexAlert].button\">\n                    <ng-container *ngIf=\"alert[currentIndexAlert].button.text\">\n                      <a href=\"javascript:void(0);\" class=\"font-small\">\n                        {{ (alert[currentIndexAlert].button.text | translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT'\n                        | translate)}}\n                      </a>\n                    </ng-container>\n                  </span>\n                </ng-container>\n              </div>\n            </div>\n            <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"alert.length > 1\">\n              <span class=\"fas fa-chevron-up fa-lg\"\n                [ngClass]=\"currentIndexAlert > 0 ? 'text-danger cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"prev('alert')\"></span>\n              <span><span>{{currentIndexAlert+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n                {{alert.length}}</span>\n              <span class=\"fas fa-chevron-down fa-lg\"\n                [ngClass]=\"currentIndexAlert+1 < alert.length ? 'text-danger cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"next('alert')\"></span>\n            </div>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"info && info.length > 0\">\n          <div class=\"helper-messages w-100 d-flex justify-content-around\">\n            <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"info[currentIndexInfo].button\">\n              <div class=\"d-flex align-items-center mr-3\">\n                <img src=\"assets/img/question.png\" class=\"rounded-circle border border-primary helper-info-img\"\n                  height=\"65\" width=\"65\" />\n              </div>\n              <div class=\"d-flex flex-column p-2 font-small\" [@helperAnimation]=\"action\">\n                <ng-container *ngIf=\"info[currentIndexInfo]\">\n                  <span class=\"\" *ngIf=\"info[currentIndexInfo].text\">{{info[currentIndexInfo].text | translate}}</span>\n                  <span class=\"w-100\" [innerHtml]=\"info[currentIndexInfo].html | safeHtml:'html'\"\n                    *ngIf=\"info[currentIndexInfo].html\"></span>\n                  <span class=\"d-flex w-100 justify-content-center mt-1\"\n                    (click)=\"helperButtonClicked(info[currentIndexInfo].button)\" *ngIf=\"info[currentIndexInfo].button\">\n                    <ng-container *ngIf=\"info[currentIndexInfo].button.text\">\n                      <a href=\"javascript:void(0);\" class=\"font-small\">\n                        {{ (info[currentIndexInfo].button.text | translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' |\n                        translate)}}\n                      </a>\n                    </ng-container>\n                  </span>\n                </ng-container>\n              </div>\n            </div>\n            <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"info.length > 1\">\n              <span class=\"fas fa-chevron-up fa-lg\"\n                [ngClass]=\"currentIndexInfo > 0 ? 'text-primary cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"prev('info')\"></span>\n              <span><span>{{currentIndexInfo+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate }}\n                {{info.length}}</span>\n              <span class=\"fas fa-chevron-down fa-lg\"\n                [ngClass]=\"currentIndexInfo+1 < info.length ? 'text-primary cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"next('info')\"></span>\n            </div>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"warning && warning.length > 0\">\n          <div class=\"w-100 d-flex justify-content-around\">\n            <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"warning[currentIndexWarning].button\">\n              <div class=\"d-flex align-items-center mr-3\">\n                <span class=\"far fa-exclamation-triangle fa-3x text-warning\"></span>\n              </div>\n              <div class=\"d-flex flex-column p-2 font-small\" [@helperAnimation]=\"action\">\n                <ng-container *ngIf=\"warning[currentIndexWarning]\">\n                  <span class=\"\" *ngIf=\"warning[currentIndexWarning].text\">{{warning[currentIndexWarning].text |\n                    translate}}</span>\n                  <span class=\"w-100\" [innerHtml]=\"warning[currentIndexWarning].html | safeHtml:'html'\"\n                    *ngIf=\"warning[currentIndexWarning].html\"></span>\n                  <span class=\"d-flex w-100 justify-content-center mt-1\"\n                    (click)=\"helperButtonClicked(warning[currentIndexWarning].button)\"\n                    *ngIf=\"warning[currentIndexWarning].button\">\n                    <ng-container *ngIf=\"warning[currentIndexWarning].button.text\">\n                      <a href=\"javascript:void(0);\" class=\"font-small\">{{ (warning[currentIndexWarning].button.text |\n                        translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}</a>\n                    </ng-container>\n                  </span>\n                </ng-container>\n              </div>\n            </div>\n            <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"warning.length > 1\">\n              <span class=\"fas fa-chevron-up fa-lg\"\n                [ngClass]=\"currentIndexWarning > 0 ? 'text-warning cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"prev('warning')\"></span>\n              <span><span>{{currentIndexWarning+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n                {{warning.length}}</span>\n              <span class=\"fas fa-chevron-down fa-lg\"\n                [ngClass]=\"currentIndexWarning+1 < warning.length ? 'text-warning cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"next('warning')\"></span>\n            </div>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"success && success.length > 0\">\n          <div class=\"w-100 d-flex justify-content-around\">\n            <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"success[currentIndexSuccess].button\">\n              <div class=\"d-flex align-items-center mr-3\">\n                <span class=\"far fa-check-circle fa-3x text-success\"></span>\n              </div>\n              <div class=\"d-flex flex-column p-2 font-small\" [@helperAnimation]=\"action\">\n                <ng-container *ngIf=\"success[currentIndexSuccess]\">\n                  <span class=\"\" *ngIf=\"success[currentIndexSuccess].text\">{{success[currentIndexSuccess].text |\n                    translate}}</span>\n                  <span class=\"w-100\" [innerHtml]=\"success[currentIndexSuccess].html | safeHtml:'html'\"\n                    *ngIf=\"success[currentIndexSuccess].html\"></span>\n                  <span class=\"d-flex w-100 justify-content-center mt-1\"\n                    (click)=\"helperButtonClicked(success[currentIndexSuccess].button)\"\n                    *ngIf=\"success[currentIndexSuccess].button\">\n                    <ng-container *ngIf=\"success[currentIndexWarning].button.text\">\n                      <a href=\"javascript:void(0);\" class=\"font-small\">{{ (success[currentIndexSuccess].button.text |\n                        translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}</a>\n                    </ng-container>\n                  </span>\n                </ng-container>\n              </div>\n            </div>\n            <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"warning.length > 1\">\n              <span class=\"fas fa-chevron-up fa-lg\"\n                [ngClass]=\"currentIndexSuccess > 0 ? 'text-success cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"prev('success')\"></span>\n              <span><span>{{currentIndexSuccess+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n                {{warning.length}}</span>\n              <span class=\"fas fa-chevron-down fa-lg\"\n                [ngClass]=\"currentIndexSuccess+1 < success.length ? 'text-success cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"next('success')\"></span>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"size == 'small'\">\n    <div class=\"w-100 d-flex justify-content-center\">\n      <div class=\"d-flex flex-column align-items-center\" [class.w-60]=\"width == 'default' || width == 'w-60'\"\n        [class.w-100]=\"width == 'w-100'\">\n        <ng-container *ngIf=\"alert && alert.length > 0\">\n          <div class=\"helper-messages w-100 d-flex justify-content-around\">\n            <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"alert[currentIndexAlert].button\"\n              nz-popover [nzPopoverTitle]=\"undefined\"\n              [nzPopoverContent]=\"alert[currentIndexAlert].button || alert[currentIndexAlert].help ? contentAlertTemplate : undefined\">\n              <div class=\" d-flex mr-3\"\n                [class.align-items-center]=\"!alert[currentIndexAlert].help ||  alert[currentIndexAlert].help&&!alert[currentIndexAlert].help.label\"\n                [class.align-items-start]=\"alert[currentIndexAlert].help&&alert[currentIndexAlert].help.label\">\n                <span class=\"fas fa-exclamation-circle fa-2x text-danger\"></span>\n              </div>\n              <div class=\"d-flex flex-column\" [@helperAnimation]=\"action\">\n                <ng-container *ngIf=\"alert[currentIndexAlert]\">\n                  <div class=\"p-2 font-smaller bg-danger text-white rounded\">\n                    <span class=\"font-small\" *ngIf=\"alert[currentIndexAlert].text\">{{alert[currentIndexAlert].text |\n                      translate}}</span>\n                    <span class=\"w-100 font-small\" [innerHtml]=\"alert[currentIndexAlert].html | safeHtml:'html'\"\n                      *ngIf=\"alert[currentIndexAlert].html\"></span>\n                  </div>\n                  <span class=\"d-flex w-100 justify-content-center mt-1\"\n                    *ngIf=\"alert[currentIndexAlert].help && alert[currentIndexAlert].help.label\">\n                    <a href=\"javascript:void(0);\" class=\"font-small\">{{alert[currentIndexAlert].help.label |\n                      translate}}</a>\n                  </span>\n                </ng-container>\n              </div>\n              <ng-template #contentAlertTemplate>\n                <div class=\"d-flex flex-column\">\n                  <ng-container *ngIf=\"alert[currentIndexAlert].help\">\n                    <span class=\"\" *ngIf=\"alert[currentIndexAlert].help.text\">{{alert[currentIndexAlert].help.text |\n                      translate}}</span>\n                    <span class=\"w-100\" [innerHtml]=\"alert[currentIndexAlert].help.html | safeHtml:'html'\"\n                      *ngIf=\"alert[currentIndexAlert].help.html\"></span>\n                  </ng-container>\n                  <ng-container *ngIf=\"!alert[currentIndexAlert].help\">\n                    <span class=\"\" *ngIf=\"alert[currentIndexAlert].text\">{{alert[currentIndexAlert].text |\n                      translate}}</span>\n                    <span class=\"w-100\" [innerHtml]=\"alert[currentIndexAlert].html | safeHtml:'html'\"\n                      *ngIf=\"alert[currentIndexAlert].html\"></span>\n                  </ng-container>\n                  <ng-container *ngIf=\"alert[currentIndexAlert].button\">\n                    <div class=\"d-flex justify-content-end mt-3\"\n                      (click)=\"helperButtonClicked(alert[currentIndexAlert].button)\">\n                      <ng-container *ngIf=\"alert[currentIndexAlert].button.text\">\n                        <a href=\"javascript:void(0);\"\n                          class=\"d-flex align-items-center font-small cursor-pointer\">{{(alert[currentIndexAlert].button.text\n                          | translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}</a>\n                      </ng-container>\n                    </div>\n                  </ng-container>\n                </div>\n              </ng-template>\n            </div>\n            <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"alert.length > 1\">\n              <span class=\"fas fa-chevron-up fa-lg\"\n                [ngClass]=\"currentIndexAlert > 0 ? 'text-danger cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"prev('alert')\"></span>\n              <span><span>{{currentIndexAlert+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n                {{alert.length}}</span>\n              <span class=\"fas fa-chevron-down fa-lg\"\n                [ngClass]=\"currentIndexAlert+1 < alert.length ? 'text-danger cursor-pointer scale-hover' : 'text-muted'\"\n                (click)=\"next('alert')\"></span>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"info && info.length > 0\">\n    <div class=\"helper-messages w-100 d-flex justify-content-around\">\n      <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"info[currentIndexInfo].button\" nz-popover\n        [nzPopoverTitle]=\"undefined\"\n        [nzPopoverContent]=\"info[currentIndexInfo].button || info[currentIndexInfo].help ? contentInfoTemplate : undefined\">\n        <!-- <div class=\"d-flex  mr-3\"\n          [class.align-items-center]=\"!info[currentIndexInfo].help ||  info[currentIndexInfo].help&&!info[currentIndexInfo].help.label\"\n          [class.align-items-start]=\"info[currentIndexInfo].help&&info[currentIndexInfo].help.label\">\n          <span class=\"fas fa-info-circle fa-2x text-primary\"></span>\n        </div> -->\n        <!-- <div class=\"d-flex flex-column\" [@helperAnimation]=\"action\">\n          <ng-container *ngIf=\"info[currentIndexInfo]\">\n            <div class=\"p-2 font-smaller bg-primary text-white rounded\">\n              <span class=\"font-small\" *ngIf=\"info[currentIndexInfo].text\">{{info[currentIndexInfo].text |\n                translate}}</span>\n              <span class=\"w-100 font-small\" [innerHtml]=\"info[currentIndexInfo].html | safeHtml:'html'\"\n                *ngIf=\"info[currentIndexInfo].html\"></span>\n            </div>\n            <span class=\"d-flex w-100 justify-content-center mt-1\"\n              *ngIf=\"info[currentIndexInfo].help && info[currentIndexInfo].help.label\">\n              <a href=\"javascript:void(0);\" class=\"font-small\">{{info[currentIndexInfo].help.label |\n                translate}}</a>\n            </span>\n          </ng-container>\n        </div> -->\n        <ng-template #contentInfoTemplate>\n          <div class=\"d-flex flex-column\">\n            <ng-container *ngIf=\"info[currentIndexInfo].help\">\n              <span class=\"\" *ngIf=\"info[currentIndexInfo].help.text\">{{info[currentIndexInfo].help.text |\n                translate}}</span>\n              <span class=\"w-100\" [innerHtml]=\"info[currentIndexInfo].help.html | safeHtml:'html'\"\n                *ngIf=\"info[currentIndexInfo].help.html\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"!info[currentIndexInfo].help\">\n              <span class=\"\" *ngIf=\"info[currentIndexInfo].text\">{{info[currentIndexInfo].text |\n                translate}}</span>\n              <span class=\"w-100\" [innerHtml]=\"info[currentIndexInfo].html | safeHtml:'html'\"\n                *ngIf=\"info[currentIndexInfo].html\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"info[currentIndexInfo].button\">\n              <div class=\"d-flex justify-content-end mt-3\" (click)=\"helperButtonClicked(info[currentIndexInfo].button)\">\n                <a href=\"javascript:void(0);\"\n                  class=\"d-flex align-items-center font-small cursor-pointer\">{{(info[currentIndexInfo].button.text\n                  | translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}</a>\n              </div>\n            </ng-container>\n          </div>\n        </ng-template>\n      </div>\n      <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"info.length > 1\">\n        <span class=\"fas fa-chevron-up fa-lg\"\n          [ngClass]=\"currentIndexInfo > 0 ? 'text-primary cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"prev('info')\"></span>\n        <span><span>{{currentIndexInfo+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n          {{info.length}}</span>\n        <span class=\"fas fa-chevron-down fa-lg\"\n          [ngClass]=\"currentIndexInfo+1 < info.length ? 'text-primary cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"next('info')\"></span>\n      </div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"warning && warning.length > 0\">\n    <div class=\"helper-messages w-100 d-flex justify-content-around\">\n      <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"warning[currentIndexWarning].button\"\n        nz-popover [nzPopoverTitle]=\"undefined\"\n        [nzPopoverContent]=\"warning[currentIndexWarning].button || warning[currentIndexWarning].help ? contentWarningTemplate : undefined\">\n        <div class=\"d-flex  mr-3\"\n          [class.align-items-center]=\"!warning[currentIndexWarning].help ||  warning[currentIndexWarning].help&&!warning[currentIndexWarning].help.label\"\n          [class.align-items-start]=\"warning[currentIndexWarning].help&&warning[currentIndexWarning].help.label\">\n          <span class=\"fas fa-exclamation-triangle fa-2x text-warning\"></span>\n        </div>\n        <div class=\"d-flex flex-column \" [@helperAnimation]=\"action\">\n          <ng-container *ngIf=\"warning[currentIndexWarning]\">\n            <div class=\"p-2 font-smaller bg-warning text-white rounded\">\n              <span class=\"font-small\" *ngIf=\"warning[currentIndexWarning].text\">{{warning[currentIndexWarning].text |\n                translate}}</span>\n              <span class=\"w-100 font-small\" [innerHtml]=\"warning[currentIndexWarning].html | safeHtml:'html'\"\n                *ngIf=\"warning[currentIndexWarning].html\"></span>\n            </div>\n            <span class=\"d-flex w-100 justify-content-center mt-1\"\n              *ngIf=\"warning[currentIndexWarning].help && warning[currentIndexWarning].help.label\">\n              <a href=\"javascript:void(0);\" class=\"font-small\">{{warning[currentIndexWarning].help.label |\n                translate}}</a>\n            </span>\n          </ng-container>\n        </div>\n        <ng-template #contentWarningTemplate>\n          <div class=\"d-flex flex-column\">\n            <ng-container *ngIf=\"warning[currentIndexWarning].help\">\n              <span class=\"\" *ngIf=\"warning[currentIndexWarning].help.text\">{{warning[currentIndexWarning].help.text |\n                translate}}</span>\n              <span class=\"w-100\" [innerHtml]=\"warning[currentIndexWarning].help.html | safeHtml:'html'\"\n                *ngIf=\"warning[currentIndexWarning].help.html\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"!warning[currentIndexWarning].help\">\n              <span class=\"\" *ngIf=\"warning[currentIndexWarning].text\">{{warning[currentIndexWarning].text |\n                translate}}</span>\n              <span class=\"w-100\" [innerHtml]=\"warning[currentIndexWarning].html | safeHtml:'html'\"\n                *ngIf=\"warning[currentIndexWarning].html\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"warning[currentIndexWarning].button\">\n              <div class=\"d-flex justify-content-end mt-3\"\n                (click)=\"helperButtonClicked(warning[currentIndexWarning].button)\">\n                <a href=\"javascript:void(0);\"\n                  class=\"d-flex align-items-center font-small cursor-pointer\">{{(warning[currentIndexWarning].button.text\n                  | translate) || ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}</a>\n              </div>\n            </ng-container>\n          </div>\n        </ng-template>\n      </div>\n      <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"warning.length > 1\">\n        <span class=\"fas fa-chevron-up fa-lg\"\n          [ngClass]=\"currentIndexWarning > 0 ? 'text-warning cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"prev('warning')\"></span>\n        <span><span>{{currentIndexWarning+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n          {{warning.length}}</span>\n        <span class=\"fas fa-chevron-down fa-lg\"\n          [ngClass]=\"currentIndexWarning+1 < warning.length ? 'text-warning cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"next('warning')\"></span>\n      </div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"success && success.length > 0\">\n    <div class=\"helper-messages w-100 d-flex justify-content-around\">\n      <div class=\"d-flex w-80 justify-content-start\" [class.cursor-pointer]=\"success[currentIndexSuccess].button\"\n        nz-popover [nzPopoverTitle]=\"undefined\"\n        [nzPopoverContent]=\"success[currentIndexSuccess].button || success[currentIndexSuccess].help ? contentSuccessTemplate : undefined\">\n        <div class=\"d-flex  mr-3\"\n          [class.align-items-center]=\"!success[currentIndexSuccess].help ||  success[currentIndexSuccess].help&&!success[currentIndexSuccess].help.label\"\n          [class.align-items-start]=\"success[currentIndexSuccess].help&&success[currentIndexSuccess].help.label\">\n          <span class=\"far fa-check-circle fa-2x text-success\"></span>\n        </div>\n        <div class=\"d-flex flex-column\" [@helperAnimation]=\"action\">\n          <ng-container *ngIf=\"success[currentIndexSuccess]\">\n            <div class=\"p-2 font-smaller bg-success text-white rounded\">\n              <span class=\"font-small\" *ngIf=\"success[currentIndexSuccess].text\">{{success[currentIndexSuccess].text |\n                translate}}</span>\n              <span class=\"w-100 font-small\" [innerHtml]=\"success[currentIndexSuccess].html | safeHtml:'html'\"\n                *ngIf=\"success[currentIndexSuccess].html\"></span>\n            </div>\n            <span class=\"d-flex w-100 justify-content-center mt-1\"\n              *ngIf=\"success[currentIndexSuccess].help && success[currentIndexSuccess].help.label\">\n              <a href=\"javascript:void(0);\" class=\"font-small\">{{success[currentIndexSuccess].help.label |\n                translate}}</a>\n            </span>\n          </ng-container>\n        </div>\n\n        <ng-template #contentSuccessTemplate>\n          <div class=\"d-flex flex-column\">\n            <ng-container *ngIf=\"success[currentIndexSuccess].help\">\n              <span class=\"\" *ngIf=\"success[currentIndexSuccess].help.text\">{{success[currentIndexSuccess].help.text |\n                translate}}</span>\n              <span class=\"w-100\" *ngIf=\"success[currentIndexSuccess].help.html\"\n                [innerHtml]=\"success[currentIndexSuccess].help.html | safeHtml:'html'\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"!success[currentIndexSuccess].help\">\n              <span class=\"\" *ngIf=\"success[currentIndexSuccess].text\">{{success[currentIndexSuccess].text |\n                translate}}</span>\n              <span class=\"w-100\" [innerHtml]=\"success[currentIndexSuccess].html | safeHtml:'html'\"\n                *ngIf=\"success[currentIndexSuccess].html\"></span>\n            </ng-container>\n            <ng-container *ngIf=\"success[currentIndexSuccess].button\">\n              <div class=\"d-flex justify-content-end mt-3\"\n                (click)=\"helperButtonClicked(success[currentIndexSuccess].button)\">\n                <ng-container *ngIf=\"success[currentIndexSuccess].button.text !== undefined\">\n                  <a href=\"javascript:void(0);\" class=\"d-flex align-items-center font-small cursor-pointer\">\n                    {{(success[currentIndexSuccess].button.text | translate) ||\n                    ('FEPB_HELPER_MESSAGES_DEFAULT_BTNTXT' | translate)}}\n                  </a>\n                </ng-container>\n              </div>\n            </ng-container>\n          </div>\n        </ng-template>\n      </div>\n      <div class=\"d-flex flex-column w-10 align-items-center justify-content-center\" *ngIf=\"success.length > 1\">\n        <span class=\"fas fa-chevron-up fa-lg\"\n          [ngClass]=\"currentIndexWarning > 0 ? 'text-success cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"prev('success')\"></span>\n        <span><span>{{currentIndexWarning+1}}</span> {{'FEPB_HELPER_MESSAGES_PAGINATIONOF' | translate}}\n          {{success.length}}</span>\n        <span class=\"fas fa-chevron-down fa-lg\"\n          [ngClass]=\"currentIndexWarning+1 < success.length ? 'text-success cursor-pointer scale-hover' : 'text-muted'\"\n          (click)=\"next('success')\"></span>\n      </div>\n    </div>\n  </ng-container>\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription, timer } from 'rxjs';\nimport { PbDefaultButtonOutput, PageBuilderDefaultButton } from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-default-button',\n  templateUrl: './pb-default-button.component.html',\n  styleUrls: ['./pb-default-button.component.scss']\n})\nexport class PbDefaultButtonComponent implements OnInit {\n\n  @Output() btnClickedIndex: EventEmitter<number> = new EventEmitter<number>();\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n\n  @Input() set iconOnly(_iconOnly: boolean) {\n    this.showOnlyIcon = _iconOnly;\n  }\n\n  @Input() set button(button) {\n    this.initConfigButton(button);\n  }\n  get button() {\n    return this._button;\n  }\n\n  get btn() {\n    return this._button;\n  }\n\n  @Input() btnIndex: number | undefined = undefined;\n\n  _button: PageBuilderDefaultButton | any;\n\n  showPopover: boolean = false;\n  popoverSub!: Subscription;\n\n  showOnlyIcon: boolean = false;\n\n  forceShowTooltip : boolean = false;\n\n  constructor() { \n  }\n\n  ngOnInit(): void {\n  }\n\n  initConfigButton(button: PageBuilderDefaultButton) {\n    if (button) {\n      let classes = \"\";\n      if (button.style == \"link\" || button.style == \"dropdown\") {//LINK\n        if (button.size == \"small\") {\n          classes += \" font-small \"\n        } else if (button.size == \"large\") {\n          classes += \" fs-large \"\n        }\n        if (button.type && button.type == \"reset\") {\n          classes += \" text-muted \"\n        }\n      } else if (button.style == \"default\") {//BTN DEFAULT\n        if (button.size == \"small\") {\n          classes += \" btn-sm \"\n        } else if (button.size == \"large\") {\n          classes += \" btn-lg \"\n        }\n        if (button.type && button.type !== \"reset\") {\n          classes += \" btn-primary \"\n        } else {\n          classes += \" btn-muted \"\n        }\n      } else if (button.style == \"outline\") {//BTN OUTLINE\n        if (button.size == \"small\") {\n          classes += \" btn-sm \"\n        } else if (button.size == \"large\") {\n          classes += \" btn-lg \"\n        }\n        if (button.type && button.type !== \"reset\") {\n          classes += \" btn-outline-primary \"\n        } else {\n          classes += \" btn-outline-muted \"\n        }\n      }\n      button.customStyleClass += classes;\n      this._button = button;\n      if(button.help && button.help.openOnDrawing){\n        this.showHelp();\n      }\n    }\n  }\n\n  showHelp(){\n    setTimeout(()=>{\n      this.forceShowTooltip=true;\n    },500)\n  }\n\n\n  btnClick(confirmation: boolean = false) {\n    if ((this.button && (this.button as PageBuilderDefaultButton).popConfirm && confirmation) || (this.button && !(this.button as PageBuilderDefaultButton).popConfirm)) {\n      this.btnClickedIndex.emit(this.btnIndex);\n      (this.button as any).operation = {\n        message: null,\n        loading: false,\n      }\n      let sub: Subject<{\n        loading?: boolean,\n        message?: string\n      }> = new Subject<{\n        loading?: boolean,\n        message?: string\n      }>();\n      sub.subscribe(\n        res => {\n          if (res) {\n            (this.button as any).operation.loading = res.loading;\n            (this.button as any).operation.message = res.message;\n            this.changePopover(res.message !== null);\n            if (!res.loading)//vuol dire che ho finito il caricamento\n              sub.unsubscribe();\n          }\n        }\n      )\n      this.btnClickedOutput.emit({\n        btn: this.button as any,\n        sub\n      })\n    }\n  }\n\n  changePopover(newMsg: boolean) {\n    if (this.popoverSub) {//se c'è già elimino\n      this.popoverSub.unsubscribe();\n      this.showPopover = false;//nascondo\n    }\n    if (newMsg) {//se devo mostrare qualcosa\n      this.showPopover = true;//mostro\n      const __timer = timer(2000);\n      this.popoverSub = __timer.subscribe(val => this.showPopover = false);//aspetto due secondi e nascondo\n    }\n  }\n\n}\n","<ng-container *ngIf=\"btn\">\n  <!-- [nzTooltipTrigger]=\"null\" -->\n  <ng-container *ngIf=\"!btn.style || (btn.style !== 'link' && btn.style !== 'dropdown')\">\n    <button class=\"btn my-1 d-flex justify-content-center align-items-center\" (click)=\"btnClick()\"\n      [disabled]=\"btn.operation&&btn.operation.loading || btn.isDisabled\" [class]=\"btn.customStyleClass\" nz-tooltip\n      [nzTooltipVisible]=\"forceShowTooltip\" [nzTooltipPlacement]=\"'top'\"\n      [nzTooltipTrigger]=\"forceShowTooltip ? null : 'hover'\"\n      [nzTooltipTitle]=\"(btn.help?.html || btn.help?.text) && !btn.popConfirm ? helpTooltip : null\"\n      nzTooltipOverlayClassName=\"tooltip-help\" nz-popover \n      [nzPopoverContent]=\"btn.operation&&btn.operation.message ? (btn.operation.message | translate) : null\"\n      [nzPopoverTrigger]=\"null\" [nzPopoverVisible]=\"showPopover\" nzPopoverOverlayClassName=\"popover-result\"\n      style=\"min-width: -webkit-fill-available; gap: 8px;\" [nz-popconfirm]=\"btn.popConfirm\"\n      [nzPopconfirmTitle]=\"btn.popConfirm?btn.popConfirm.title?(btn.popConfirm.title | translate):('FEPB_DEFAULTBTN_CONFIRM' | translate):''\"\n      nzPopconfirmShowArrow=\"false\" [nzOkText]=\"btn.popConfirm?btn.popConfirm.confirmText?(btn.popConfirm.confirmText | translate) :('FEPB_DEFAULTBTN_CONFIRM_YES' |\n      translate):''\" [nzCancelText]=\"btn.popConfirm?btn.popConfirm.cancelText?(btn.popConfirm.cancelText | translate):('FEPB_DEFAULTBTN_CONFIRM_NO' |\n      translate):''\" (nzOnConfirm)=\"btnClick(true)\">\n      <!-- [nzTooltipTitle]=\"btn.help?.html || btn.operation&&btn.operation.message ? helpTooltip : null\" -->\n      <!-- gestione loading -->\n      <ng-template [ngIf]=\"btn.operation&&btn.operation.loading\" [ngIfElse]=\"btnIcon\">\n        <span class=\"fa fa-spinner-third fa-spin\" [class.ml-2]=\"btn.text && !showOnlyIcon\"></span>\n      </ng-template>\n      <ng-template #btnIcon>\n        <span class=\"fas \" [class]=\"btn.icon\" *ngIf=\"btn.icon\" [class.ml-1]=\"btn.text && !showOnlyIcon\"></span>\n      </ng-template>\n      <ng-container *ngIf=\"!showOnlyIcon\">\n        {{btn.text | translate}}\n      </ng-container>\n    </button>\n  </ng-container>\n  <ng-container *ngIf=\"btn.style == 'link'\">\n    <div class=\"d-flex align-items-center\">\n      <a href=\"javascript:void(0);\" (click)=\"btnClick()\"\n        [class.disabled]=\"btn.operation&&btn.operation.loading || btn.isDisabled\" [class]=\"btn.customStyleClass\"\n        nz-tooltip [nzTooltipTitle]=\"(btn.help?.html || btn.help?.text) && !btn.popConfirm ? helpTooltip : null\"\n        nzTooltipOverlayClassName=\"tooltip-help\" nz-popover \n        [nzPopoverContent]=\"btn.operation&&btn.operation.message ? (btn.operation.message | translate) : null\"\n        [nzPopoverTrigger]=\"null\" [nzPopoverVisible]=\"showPopover\" nzPopoverOverlayClassName=\"popover-result\"\n        [nz-popconfirm]=\"btn.popConfirm\" [nzPopconfirmTitle]=\"btn.popConfirm?btn.popConfirm.title?(btn.popConfirm.title | translate):('FEPB_DEFAULTBTN_CONFIRM' |\n        translate):''\" nzPopconfirmShowArrow=\"false\" [nzOkText]=\"btn.popConfirm?btn.popConfirm.confirmText?(btn.popConfirm.confirmText | translate):('FEPB_DEFAULTBTN_CONFIRM_YES'\n        |\n        translate):''\" [nzCancelText]=\"btn.popConfirm?btn.popConfirm.cancelText?(btn.popConfirm.cancelText | translate):('FEPB_DEFAULTBTN_CONFIRM_NO'\n        |\n        translate):''\" (nzOnConfirm)=\"btnClick(true)\">\n        <ng-container *ngIf=\"!showOnlyIcon\">\n          {{btn.text | translate}}\n        </ng-container>\n        <ng-template [ngIf]=\"btn.operation&&btn.operation.loading\" [ngIfElse]=\"btnIcon\">\n          <span class=\"fa fa-spinner-third fa-spin\" [class.ml-2]=\"btn.text && !showOnlyIcon\"></span>\n        </ng-template>\n        <ng-template #btnIcon>\n          <span class=\"fas \" [class]=\"btn.icon\" *ngIf=\"btn.icon\" [class.ml-1]=\"btn.text && !showOnlyIcon\"></span>\n        </ng-template>\n      </a>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"btn.style == 'dropdown'\">\n    <div class=\"d-flex align-items-center flex-grow-1\">\n      <a href=\"javascript:void(0);\" (click)=\"btnClick()\"\n        class=\"flex-grow-1 d-flex align-items-center justify-content-between\"\n        [class.disabled]=\"btn.operation&&btn.operation.loading || btn.isDisabled\" [class]=\"btn.customStyleClass\"\n        nz-tooltip [nzTooltipTitle]=\"(btn.help?.html || btn.help?.text) && !btn.popConfirm ? helpTooltip : null\"\n        nzTooltipOverlayClassName=\"tooltip-help\" nz-popover \n        [nzPopoverContent]=\"btn.operation&&btn.operation.message ? (btn.operation.message | translate) : null\"\n        [nzPopoverTrigger]=\"null\" [nzPopoverVisible]=\"showPopover\" nzPopoverOverlayClassName=\"popover-result\"\n        [nz-popconfirm]=\"btn.popConfirm\"\n        [nzPopconfirmTitle]=\"btn.popConfirm?btn.popConfirm.title?(btn.popConfirm.title | translate):('FEPB_DEFAULTBTN_CONFIRM' | translate):''\"\n        nzPopconfirmShowArrow=\"false\" [nzOkText]=\"btn.popConfirm?btn.popConfirm.confirmText?(btn.popConfirm.confirmText | translate):('FEPB_DEFAULTBTN_CONFIRM_YES' | translate):''\"\n        [nzCancelText]=\"btn.popConfirm?btn.popConfirm.cancelText?(btn.popConfirm.cancelText | translate):('FEPB_DEFAULTBTN_CONFIRM_NO' | translate):''\"\n        (nzOnConfirm)=\"btnClick(true)\">\n        <ng-container *ngIf=\"!showOnlyIcon\">\n          {{btn.text | translate}}\n        </ng-container>\n        <ng-template [ngIf]=\"btn.operation&&btn.operation.loading\" [ngIfElse]=\"btnIcon\">\n          <span class=\"fa fa-spinner-third fa-spin\" [class.ml-2]=\"btn.text && !showOnlyIcon\"></span>\n        </ng-template>\n        <ng-template #btnIcon>\n          <span class=\"fas ml-auto\" [class]=\"btn.icon\" *ngIf=\"btn.icon\" [class.ml-1]=\"btn.text && !showOnlyIcon\"></span>\n        </ng-template>\n      </a>\n    </div>\n  </ng-container>\n\n  <ng-template #helpTooltip>\n    <div [innerHtml]=\"btn.help?.html  | safeHtml:'html'\" *ngIf=\"btn.help&&btn.help.html\"></div>\n    <div *ngIf=\"btn.help&&btn.help.text\">{{btn.help.text | translate}}</div>\n  </ng-template>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PbDefaultButtonOutput, PageBuilderDefaultButton } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-default-buttons',\n  templateUrl: './pb-default-buttons.component.html',\n  styleUrls: ['./pb-default-buttons.component.scss']\n})\nexport class PbDefaultButtonsComponent implements OnInit {\n\n  @Output() btnClickedIndex: EventEmitter<number> = new EventEmitter<number>();\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n\n  @Input() set buttons(buttons) {\n    this._buttons = buttons;\n  }\n\n  get buttons() {\n    return this._buttons;\n  }\n\n  @Input() btnRow: boolean = false;\n  @Input() btnAutoSize: boolean = false;\n  @Input() position: \"left\" | \"center\" | \"right\" = \"center\";\n\n  _buttons: PageBuilderDefaultButton[] | null = null;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  handlerOutput(event: any) {\n    this.btnClickedOutput.emit(event);\n  }\n\n  handlerIndex(event: any) {\n    this.btnClickedIndex.emit(event);\n  }\n\n}\n\n\n","<ng-container *ngIf=\"_buttons && _buttons.length > 0\">\n  <div class=\"d-flex w-100\" [class.flex-column]=\"!btnRow\" [class.btn-group]=\"btnRow\"\n    [class.align-items-center]=\"position == 'center'\" [class.justify-content-center]=\"btnRow\" [class.align-items-start]=\"position == 'left'\"\n    [class.align-items-end]=\"position == 'right'\">\n    <ng-container *ngFor=\"let btn of _buttons; let currentIndex = index\">\n      <div class=\"d-flex pb-default-button\" [btnIndex]=\"currentIndex\" [button]=\"btn\"\n        (btnClickedIndex)=\"handlerIndex($event)\" (btnClickedOutput)=\"handlerOutput($event)\" [class.btn-group]=\"btnRow\"\n        [class.w-30]=\"!btnRow && !btnAutoSize\"></div>\n    </ng-container>\n  </div>\n</ng-container>\n","import { Component, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { NzDrawerRef } from 'ng-zorro-antd/drawer';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { Subject, Subscription } from 'rxjs';\nimport { BuilderDriverService } from '../services/builder-driver.service';\nimport { PageBuilderGuiService } from '../services/page-builder-gui.service';\nimport { PageBuilderService } from '../services/page-builder.service';\nimport { PageBuilderClassForm } from './page-builder-class-form';\nimport { DefaultResponseFormSub } from './page-builder-form';\nimport { DynamicFormGeneratorComponent } from '@alfercom/dynamic-form';\nimport { TranslateService } from '@ngx-translate/core'\nimport { PageBuilderDefaultInput, PbDefaultButtonOutput, PageBuilderModalResponse } from '../types/pb-types/page-builder.type';\nimport { ActionButtonCodecService } from '../services/action-button-codec.service';\n\n@Component({\n  selector: 'app-page-builder-form',\n  templateUrl: './page-builder-form.component.html',\n  styleUrls: ['./page-builder-form.component.scss']\n})\nexport class PageBuilderFormComponent extends PageBuilderClassForm implements OnDestroy {\n\n  @ViewChild('currentDynamicForm') dynamicForm!: DynamicFormGeneratorComponent;\n\n  @Input() set data(value: PageBuilderDefaultInput) {\n    this.pageBuilderParameters = value;\n    this.initInputData(value);\n  }\n\n  @Input() set modalRef(value: NzModalRef) {\n    this.modal = value;\n  }\n  @Input() set drawerRef(value: NzDrawerRef) {\n    this.drawer = value;\n  }\n  areFormsValid: boolean = false;\n\n  formValidOnce: boolean = false;\n\n  lastSub!: Subscription;\n\n  constructor(\n    pageBuilderGuiService: PageBuilderGuiService,\n    builderDriverService: BuilderDriverService,\n    pageBuilderService: PageBuilderService,\n    private translateService: TranslateService,\n    actionButtonCodecService: ActionButtonCodecService\n  ) {\n    super(pageBuilderGuiService, builderDriverService, pageBuilderService, actionButtonCodecService);\n  }\n\n  override handleResStructure(res: any): void {\n    // Call parent method to handle afterLoadBtn and standardStructureParser\n    super.handleResStructure(res);\n\n    if (res && res.result && res.structure) {\n      if (this.page && this.page.body && this.page.body.form) {\n        this.debug = this.page.body.form.debug || false;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.lastSub) {\n      if (!this.lastSub.closed)\n        this.lastSub.unsubscribe();\n    }\n  }\n\n  areFormsValidHandler(event: boolean) {\n    this.areFormsValid = event;\n    if (event) {\n      this.formValidOnce = true; // In call SZ FC e AV non ci ricordiamo/sappiamo perchè esista sta roba abbiamo optato per creare isValidationForced (Federico-san fanboy Giappone)\n    }\n  }\n\n  override btnHandler(eventButton: PbDefaultButtonOutput) {\n    if (eventButton) {\n      let btnClicked = eventButton.btn;\n      let subBtn = eventButton.sub;\n      if (btnClicked.type == \"commit\") {\n        if (this.dynamicForm) {\n          if (this.debug)\n            console.log(\"this.page.body.form.isValidationOFF\", this.page.body.form.isValidationOFF, \"this.areFormsValid\", this.areFormsValid, \"this.formValidOnce\", this.formValidOnce, \"this.page.body.form.isValidationForced\", this.page.body.form.isValidationForced);\n          if (this.page.body.form.isValidationOFF || (this.areFormsValid || (this.formValidOnce && !this.page.body.form.isValidationForced))) {\n            // if (this.areFormsValid) {\n            const data = this.dynamicForm.getData(false);\n            const subStatus: Subject<DefaultResponseFormSub> = new Subject<DefaultResponseFormSub>();\n            if (subBtn)\n              subBtn.next({\n                loading: true\n              })\n            this.lastSub = subStatus.subscribe(\n              res => {\n                if (res && res.result) {\n                  if (subBtn)\n                    subBtn.next({\n                      loading: false\n                    })\n                  if (!subStatus.closed)\n                    subStatus.unsubscribe();\n                } else if (!res.result) {\n                  if (subBtn)\n                    subBtn.next({\n                      loading: false,\n                      message: this.translateService.instant('FEPB_FORM_BUTTON_ERROR_MESSAGE')\n                    })\n                  if (res.formErrors && res.formErrors.length > 0) {\n                    this.dynamicForm.setControlErrorsManually(res.formErrors);\n                  }\n                }\n              }\n            )\n            this.commit({ data, viewParameters: btnClicked.viewRequestParameters || [] }, subStatus);\n          } else {\n            if (subBtn)\n              subBtn.next({\n                loading: false,\n                message: this.translateService.instant('FEPB_FORM_BUTTON_ERROR_MESSAGE')\n              })\n            // this.showInvalidMessage = true;\n            this.dynamicForm.touchAndDirty();\n          }\n        }\n      } else if (btnClicked.action == \"close-modal\" || btnClicked.action == \"close-drawer\") {\n        let res: PageBuilderModalResponse = {\n          refreshFather: false,\n          committed: false,\n        }\n        if (this.modal)\n          this.modal.destroy(res);\n        if (this.drawer)\n          this.drawer.close(res);\n      }\n    }\n  }\n}\n","<!-- PRIMO PAGE BUILDER <3 -->\n<ng-container *ngIf=\"page\">\n  <ng-container *ngIf=\"page.head\">\n    <div class=\"w-100 pb-main-title\" [title]=\"page.head.title\"></div>\n  </ng-container>\n  <ng-container *ngIf=\"page.body\">\n    <div class=\"w-100 pb-helpers-messages\" [helpers]=\"page.body.helpers\"></div>\n    <ng-container *ngIf=\"page.body.form\">\n      <div\n        class=\"dynamic-form-generator p-2 sm:p-3 md:p-5\"\n        #currentDynamicForm\n        [ngClass]=\"page.body.form.customCSS\"\n        [debug]=\"page.body.form.debug || debug\"\n        [formVariables]=\"page.body.form.formVariables\"\n        [formTemplate]=\"page.body.form.formTemplate\"\n        [data]=\"page.body.form.data\"\n        [guiOpt]=\"page.body.form.guiOption\"\n        (areFormsValid)=\"areFormsValidHandler($event)\"\n        (remoteItemsFetchRequest)=\"handleRemoteItemsFetchRequest($event)\"\n        (remoteValueFetchRequest)=\"handleRemoteValuesFetchRequest($event)\"\n      ></div>\n    </ng-container>\n    <ng-container *ngIf=\"page.body.buttons\">\n      <div\n        class=\"w-100 pb-default-buttons my-5\"\n        [buttons]=\"page.body.buttons\"\n        [btnRow]=\"true\"\n        (btnClickedOutput)=\"btnHandler($event)\"\n      ></div>\n    </ng-container>\n  </ng-container>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PbDefaultButtonOutput, PageBuilderDropdownButton } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-dropdown-button',\n  templateUrl: './pb-dropdown-button.component.html',\n  styleUrls: ['./pb-dropdown-button.component.scss']\n})\nexport class PbDropdownButtonComponent implements OnInit {\n\n  @Output() btnClickedIndex: EventEmitter<number> = new EventEmitter<number>();\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n\n  @Input() set dropdown(dropdown: PageBuilderDropdownButton) {\n    const dropdownBtns = dropdown.list ? dropdown.list.map((el: any) => { el.style = \"dropdown\"; return el }) : null\n    this._dropdown = dropdown;\n    if(dropdownBtns && dropdownBtns.length > 0) {\n      this._dropdown.list = dropdownBtns;\n    }\n  }\n\n  get dropdown() {\n    return this._dropdown;\n  }\n\n  _dropdown!: PageBuilderDropdownButton;\n\n  constructor() {\n  }\n\n  ngOnInit(): void {\n  }\n\n  handlerOutput(event: any) {\n    this.btnClickedOutput.emit(event);\n  }\n\n  handlerIndex(event: any) {\n    this.btnClickedIndex.emit(event);\n  }\n\n}\n","<ng-container *ngIf=\"dropdown\">\n  <ng-container *ngIf=\"dropdown.buttonDropdown\">\n    <button class=\"btn my-2 d-flex justify-content-center align-items-center btn-outline-primary\" nz-dropdown\n      nzTrigger=\"click\" [nzDropdownMenu]=\"menu\" [nzClickHide]=\"false\"\n      [nzPlacement]=\"dropdown.dropdownPosition ? dropdown.dropdownPosition : 'bottomLeft'\"\n      [class]=\"dropdown.buttonDropdown.customStyleClass\" [class.btn-sm]=\"dropdown.buttonDropdown.size == 'small'\"\n      [title]=\"dropdown.buttonDropdown.isDisabled ? ('FEPB_GENERIC_BTNNOACTION' | translate) : ''\" nz-tooltip\n      [nzTooltipTitle]=\"dropdown.buttonDropdown.help?.html ? helpTooltip : null\"\n      [disabled]=\"dropdown.buttonDropdown.isDisabled\" nzTooltipOverlayClassName=\"tooltip-help\">\n      <ng-template #helpTooltip>\n        <ng-container *ngIf=\"dropdown&&dropdown.buttonDropdown&&dropdown.buttonDropdown.help\">\n          <div [innerHtml]=\"dropdown.buttonDropdown.help?.html  | safeHtml:'html'\"\n            *ngIf=\"dropdown.buttonDropdown.help.html\"></div>\n          <div *ngIf=\"dropdown.buttonDropdown.help.text\">{{dropdown.buttonDropdown.help.text | translate}}</div>\n        </ng-container>\n      </ng-template>\n      <ng-container *ngIf=\"!dropdown.iconOnly && dropdown.buttonDropdown.text\">\n        {{dropdown.buttonDropdown.text | translate}}\n      </ng-container>\n      <ng-container *ngIf=\"dropdown.buttonDropdown.icon\">\n        <span class=\"fas \" [class]=\"dropdown.buttonDropdown.icon\"\n          [class.ml-1]=\"dropdown.buttonDropdown.text && !dropdown.iconOnly\"></span>\n      </ng-container>\n    </button>\n  </ng-container>\n  <ng-container *ngIf=\"dropdown.labelDropdown\">\n    <span class=\"text-secondary cursor-pointer\" [class]=\"dropdown.labelDropdown.customStyleClass\" nz-dropdown\n      nzTrigger=\"click\" [nzClickHide]=\"false\" [nzDropdownMenu]=\"menu\"\n      [nzPlacement]=\"dropdown.dropdownPosition ? dropdown.dropdownPosition : 'bottomLeft'\" nz-tooltip\n      [nzTooltipTitle]=\"dropdown.labelDropdown.help?.html ? helpLabelTooltip : null\"\n      nzTooltipOverlayClassName=\"tooltip-help\">\n      <span *ngIf=\"dropdown.labelDropdown.icon && !dropdown.iconOnly\" [class]=\"dropdown.labelDropdown.icon\" class=\"fas\"\n        [class.mr-1]=\"dropdown.labelDropdown.label\" [class.mx-3]=\"!dropdown.labelDropdown.label\"></span>\n      <ng-container *ngIf=\"!dropdown.iconOnly\">\n        {{dropdown.labelDropdown.label | translate}}\n      </ng-container>\n    </span>\n    <ng-template #helpLabelTooltip>\n      <ng-container *ngIf=\"dropdown&&dropdown.labelDropdown&&dropdown.labelDropdown.help\">\n        <div [innerHtml]=\"dropdown.labelDropdown.help?.html  | safeHtml:'html'\"\n          *ngIf=\"dropdown.labelDropdown.help.html\"></div>\n        <div *ngIf=\"dropdown.labelDropdown.help.text\">{{dropdown.labelDropdown.help.text | translate}}</div>\n      </ng-container>\n    </ng-template>\n  </ng-container>\n  <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n    <ul nz-menu *ngIf=\"dropdown.list && dropdown.list.length\">\n      <ng-container *ngFor=\"let btn of dropdown.list; let currentIndex = index\">\n        <li nz-menu-item>\n          <div class=\"d-flex pb-default-button\" [btnIndex]=\"currentIndex\" [button]=\"btn\"\n            (btnClickedIndex)=\"handlerIndex($event)\" (btnClickedOutput)=\"handlerOutput($event)\"></div>\n        </li>\n      </ng-container>\n    </ul>\n    <ng-container *ngIf=\"dropdown.list && dropdown.list.length<1\">\n      <ul nz-menu class=\"bg-light\">\n        <li nz-menu-item nzDisabled>\n          <div class=\"d-flex\">\n            {{\"FEPB_GENERIC_BTNNOACTION\" | translate}}\n          </div>\n        </li>\n      </ul>\n    </ng-container>\n  </nz-dropdown-menu>\n</ng-container>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { PbDefaultSearchboxOutput, PageBuilderSearchbox } from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-default-searchbox',\n  templateUrl: './pb-default-searchbox.component.html',\n  styleUrls: ['./pb-default-searchbox.component.scss']\n})\nexport class PbDefaultSearchboxComponent implements OnInit, OnDestroy {\n\n  @Output() searchboxOutput: EventEmitter<PbDefaultSearchboxOutput> = new EventEmitter<PbDefaultSearchboxOutput>();//gestione loading e messaggio di risposta\n\n  @Input() set searchbox(searchbox) {\n    this._searchbox = searchbox;\n    this.initInputSub();\n    if (searchbox && searchbox.onValChangesSearch) {\n      // this.initValueChangesListener(); //Fa un ciclo infinito\n    }\n  }\n\n  get searchbox() {\n    return this._searchbox;\n  }\n\n  _searchbox!: PageBuilderSearchbox;\n  searchboxFG: FormGroup = new FormGroup({\n    'search': new FormControl()\n  })\n\n  inputSub!: Subscription;\n\n  valueChangesSub!: Subscription;\n\n  constructor() { }\n\n  initInputSub() {\n    const inputSub = new Subject<string>();\n    this.inputSub = inputSub.subscribe(\n      res => {\n        // console.log(\"searchbox value dal crud\", res);\n        if(this.searchboxFG && this.searchboxFG.get('search')){\n          this.searchboxFG.get('search')?.setValue(res)\n        }\n      }\n    );\n    this.searchboxOutput.emit({\n      value: '',\n      inputSub\n    })\n  }\n\n  initValueChangesListener() {\n    const formControl = this.searchboxFG.get('search');\n    if (!this.valueChangesSub && formControl) {\n      const valueChangesObs = (formControl.valueChanges as any).pipe(debounceTime(800));\n      this.valueChangesSub = valueChangesObs.subscribe((res: any) => {\n        this.doSearch();\n      })\n    }\n\n  }\n\n  ngOnInit(): void {\n  }\n\n  ngOnDestroy(): void {\n    if (this.valueChangesSub) {\n      this.valueChangesSub.unsubscribe();\n    }\n  }\n\n  doSearch() {\n    const newVal = this.searchboxFG.get('search')?.value;\n    this.searchboxOutput.emit({\n      value: newVal\n    })\n  }\n\n  setSearchValue(value: string = \"\") {\n    this.searchboxFG.get('search')?.setValue(value);\n    this.doSearch();\n  }\n}\n","<ng-container *ngIf=\"searchbox\">\n  <div class=\"d-flex w-100\" [formGroup]=\"searchboxFG\">\n    <nz-input-group [nzSuffix]=\"suffixIconSearch\" class=\"secondary\">\n      <input type=\"text\" nz-input formControlName=\"search\"\n        placeholder=\"{{searchbox.placeholder ? (searchbox.placeholder | translate) : ('FEPB_DEFAULTSB_PLACEHOLDER' | translate)}}\"\n        (keyup.enter)=\"doSearch()\" nz-tooltip [nzTooltipTitle]=\"searchbox.help?.html ? helpTooltip : null\"\n        nzTooltipOverlayClassName=\"tooltip-help\" />\n    </nz-input-group>\n    <button (click)=\"doSearch()\" type=\"button\" class=\"btn btn-outline-secondary\"\n      *ngIf=\"!searchbox.onValChangesSearch\"><i class=\"fas fa-search\"></i>\n    </button>\n    <ng-template #suffixIconSearch>\n      <!-- <i nz-icon nzType=\"search\"></i> -->\n      <span class=\"fas fa-times px-2 cursor-pointer text-muted\" *ngIf=\"searchboxFG.controls['search'].value\"\n        (click)=\"setSearchValue()\"></span>\n    </ng-template>\n    <!-- <input class=\"form-control rounded-left\" formControlName=\"search\" type=\"text\" autocomplete=\"off\"\n            placeholder=\"{{searchbox.placeholder || 'Cerca tra le colonne'}}\" (keyup.enter)=\"doSearch()\" nz-tooltip\n            [nzTooltipTitle]=\"searchbox.help?.html ? helpTooltip : null\" nzTooltipOverlayClassName=\"tooltip-help\" />\n        <div class=\"input-group-append\" *ngIf=\"!searchbox.onValChangesSearch\">\n            <button (click)=\"doSearch()\" type=\"button\" class=\"btn btn-outline-info\"><i class=\"fas fa-search\"></i>\n            </button>\n        </div> -->\n    <ng-template #helpTooltip>\n      <div [innerHtml]=\"searchbox.help?.html  | safeHtml:'html'\" *ngIf=\"searchbox.help&&searchbox.help.html\">\n      </div>\n      <div *ngIf=\"searchbox.help&&searchbox.help.text\">{{searchbox.help.text | translate}}</div>\n    </ng-template>\n  </div>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PbDefaultButtonOutput, PbDefaultSearchboxOutput, PageBuilderToolbarButtons } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-toolbar-buttons',\n  templateUrl: './pb-toolbar-buttons.component.html',\n  styleUrls: ['./pb-toolbar-buttons.component.scss']\n})\nexport class PbToolbarButtonsComponent implements OnInit {\n\n  @Output() btnClickedIndex: EventEmitter<number> = new EventEmitter<number>();\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n  @Output() searchboxOutput: EventEmitter<PbDefaultSearchboxOutput> = new EventEmitter<PbDefaultSearchboxOutput>();//gestione loading e messaggio di risposta\n  @Output() filterToggleOutput: EventEmitter<boolean> = new EventEmitter<boolean>();//gestione loading e messaggio di risposta\n\n  @Input() set toolbar(toolbar: PageBuilderToolbarButtons) {\n    // console.log(\"PbToolbarButtonsComponent toolbar\", toolbar);\n    if(toolbar.exportDropdown && toolbar.exportDropdown.labelDropdown){\n      if (toolbar.exportDropdown.labelDropdown.icon && !toolbar.exportDropdown.labelDropdown.label){\n        toolbar.exportDropdown.labelDropdown.label = 'ESPORTA';\n      }\n    }\n    this._toolbar = toolbar;\n  }\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  _toolbar!: PageBuilderToolbarButtons;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  btnHandler(event:any) {\n    this.btnClickedOutput.emit(event);\n  }\n\n  searchboxHandler(event:any) {\n    this.searchboxOutput.emit(event);\n  }\n\n  filterToggle() {\n    if (!this.toolbar?.filterToggle?.isDisabled) {\n      this.filterToggleOutput.emit(true);\n    }\n  }\n}\n\n\n","<ng-container *ngIf=\"toolbar\">\n    <div class=\"w-100 d-flex justify-content-between align-items-center\">\n        <div class=\"d-flex w-50 pr-3 justify-content-between align-items-center\">\n            <ng-container *ngIf=\"toolbar.buttons && toolbar.buttons.length\">\n                <div class=\"d-flex pb-default-buttons\" [btnRow]=\"true\" [buttons]=\"toolbar.buttons\"\n                    (btnClickedOutput)=\"btnHandler($event)\"></div>\n            </ng-container>\n            <ng-container *ngIf=\"toolbar.dropdown\">\n                <div class=\"pb-dropdown-button\" [dropdown]=\"toolbar.dropdown\" (btnClickedOutput)=\"btnHandler($event)\">\n                </div>\n            </ng-container>\n        </div>\n        <div class=\"d-flex w-50 pl-3 justify-content-end align-items-center\">\n            <ng-container *ngIf=\"toolbar.searchBox\">\n                <div class=\"pb-default-searchbox w-40 \" [searchbox]=\"toolbar.searchBox\"\n                    (searchboxOutput)=\"searchboxHandler($event)\"></div>\n            </ng-container>\n            <ng-container *ngIf=\"toolbar.exportDropdown\">\n                <div class=\"pb-dropdown-button ml-2\" [dropdown]=\"toolbar.exportDropdown\"\n                    (btnClickedOutput)=\"btnHandler($event)\"></div>\n            </ng-container>\n            <ng-container *ngIf=\"toolbar.filterToggle\">\n                <button class=\"btn btn-outline-secondary ml-2\" (click)=\"filterToggle()\"\n                    [disabled]=\"toolbar.filterToggle.isDisabled\" [title]=\"'Apri la finestra dei filtri'\">\n                    <span class=\"fas fa-filter\"></span>\n                </button>\n            </ng-container>\n        </div>\n    </div>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\nimport { PageBuilderDefaultBreadcrumb } from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-default-breadcrumbs',\n  templateUrl: './pb-default-breadcrumbs.component.html',\n  styleUrls: ['./pb-default-breadcrumbs.component.scss']\n})\nexport class PbDefaultBreadcrumbsComponent implements OnInit {\n\n  @Input() lastAsTitle: boolean = false;\n\n  @Input() set breadcrumbs(breadcrumbs: PageBuilderDefaultBreadcrumb[]) {\n    // console.log(\"PbDefaultBreadcrumbsComponent breadcrumb\", breadcrumbs);\n    this._breadcrumbs = breadcrumbs;\n  }\n\n  get breadcrumbs() {\n    return this._breadcrumbs;\n  }\n\n  _breadcrumbs!: PageBuilderDefaultBreadcrumb[];\n\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  goBack() {\n    history.back();\n  }\n}\n","<ng-container *ngIf=\"breadcrumbs\">\n  <ng-container *ngIf=\"breadcrumbs.length > 0\">\n    <nz-breadcrumb [nzSeparator]=\"iconTemplate\">\n      <ng-container *ngFor=\"let bread of breadcrumbs; let currentIndex = index\">\n        <nz-breadcrumb-item *ngIf=\"bread\">\n          <ng-container *ngIf=\"bread.historyBack\">\n            <a href=\"javascript:void(0);\" (click)=\"goBack()\" nz-tooltip\n              [nzTooltipTitle]=\"bread.tooltip ? helpTooltip : null\" nzTooltipOverlayClassName=\"tooltip-help\" class=\"\"\n              [ngClass]=\"currentIndex+1 == breadcrumbs.length ? 'bold text-dark' : ''\">\n              <span class=\"fa mr-2\" [class]=\"bread.icon\" *ngIf=\"bread.icon\"></span>{{bread.label | translate}}</a>\n          </ng-container>\n          <ng-container *ngIf=\"!bread.historyBack\">\n            <a [routerLink]=\"bread.routerLink\" [queryParams]=\"bread.queryParams\" nz-tooltip\n              [nzTooltipTitle]=\"bread.tooltip ? helpTooltip : null\" nzTooltipOverlayClassName=\"tooltip-help\" class=\"\"\n              [ngClass]=\"currentIndex+1 == breadcrumbs.length ? 'bold text-dark' : ''\">\n              <span class=\"fa mr-2\" [class]=\"bread.icon\" *ngIf=\"bread.icon\"></span>{{bread.label | translate}}</a>\n          </ng-container>\n          <ng-template #helpTooltip>\n            <div [innerHtml]=\"bread.tooltip?.html  | safeHtml:'html'\" *ngIf=\"bread.tooltip&&bread.tooltip.html\"></div>\n            <div *ngIf=\"bread.tooltip&&bread.tooltip.text\">{{bread.tooltip.text | translate}}</div>\n          </ng-template>\n        </nz-breadcrumb-item>\n      </ng-container>\n    </nz-breadcrumb>\n    <ng-template #iconTemplate><i class=\"fal fa-chevron-right\"></i></ng-template>\n    <div *ngIf=\"lastAsTitle && breadcrumbs.length > 1 && breadcrumbs[breadcrumbs.length-1] &&\n      breadcrumbs[breadcrumbs.length-1].label\" class=\"d-block my-2\">\n      <span class=\"text-primary font-x-large bold\">{{breadcrumbs[breadcrumbs.length-1].label | translate}}</span>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"breadcrumbs.length == 0\">\n    <div class=\"d-flex mb-3 align-items-center cursor-pointer\">\n      <a href=\"javascript:void(0);\" (click)=\"goBack()\" class=\"text-dark bold\">\n        <span class=\"fa fa-arrow-left mr-2\"></span>\n        {{'FEPB_BREADCRUMBS_GOBACK' | translate}}\n      </a>\n    </div>\n  </ng-container>\n</ng-container>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PageBuilderDefaultImage } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-default-image',\n  templateUrl: './pb-default-image.component.html',\n  styleUrls: ['./pb-default-image.component.scss']\n})\nexport class PbDefaultImageComponent implements OnInit {\n\n  @Input() set image(image) {\n    this._image = image;\n  }\n  get image() {\n    return this._image;\n  }\n\n  @Input('cover') cover: 'container' | 'default' | 'contain' = 'default';\n\n  @Input('cssClass') cssClass: string | null = null;//va sopra a tutto. Esigenze di singola pagina\n\n  @Input('innerHTMLIN') innerHTMLIN: string | undefined = undefined;\n\n  _image: PageBuilderDefaultImage | undefined;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  getImage() {\n    if (this.image) {\n      if (this.image.base64) {\n        return this.image.base64;\n      }\n      if (this.image.url) {\n        return this.image.url;\n      }\n    }\n    return null;\n  }\n\n}\n","<ng-container *ngIf=\"image\">\n  <ng-container *ngIf=\"image.base64 || image.url\">\n    <ng-container *ngIf=\"(!image.size &&  cover == 'default') || (image.size == 'default' && cover == 'default')\">\n      <img [src]=\"image.base64 || image.url\"\n        [attr.height]=\"image.customSize&&image.customSize.height?image.customSize.height : 'auto'\"\n        [attr.width]=\"image.customSize&&image.customSize.width?image.customSize.width : 'auto'\"\n        [class]=\"image.customStyleClass || cssClass\" />\n    </ng-container>\n    <ng-container *ngIf=\"cover == 'container'\">\n      <div class=\"p-1 w-100 h-100\" [class]=\"image.customStyleClass || cssClass || ''\"\n        style=\"min-height: inherit;    background-position: center center;    background-size: cover;\"\n        [ngStyle]=\"{ 'background-image': 'url(' + getImage() + ')' }\"\n        [ngClass]=\"innerHTMLIN ? 'd-flex align-items-center justify-content-center' : ''\">\n        <span *ngIf=\"innerHTMLIN\" [innerHtml]=\"innerHTMLIN  | safeHtml:'html'\" class=\"text-overlay\"></span>\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"cover == 'contain'\">\n      <div class=\"p-1 w-100 h-100\" [class]=\"image.customStyleClass || cssClass || ''\"\n        style=\"min-height: inherit;    background-position: center center;    background-size: contain; background-repeat: no-repeat;\"\n        [ngClass]=\"innerHTMLIN ? 'd-flex align-items-center justify-content-center' : ''\"\n        [ngStyle]=\"{ 'background-image': 'url(' + getImage() + ')' }\">\n        <span *ngIf=\"innerHTMLIN\" [innerHtml]=\"innerHTMLIN  | safeHtml:'html'\" class=\"text-overlay\"></span>\n      </div>\n    </ng-container>\n  </ng-container>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subject, timer } from 'rxjs';\nimport { PbDefaultButtonOutput, PageBuilderDefaultBanner, PageBuilderDefaultButton } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-default-banner',\n  templateUrl: './pb-default-banner.component.html',\n  styleUrls: ['./pb-default-banner.component.scss']\n})\nexport class PbDefaultBannerComponent implements OnInit {\n\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n\n  @Input() set banner(banner) {\n    this._banner = banner;\n  }\n  get banner() {\n    return this._banner;\n  }\n\n  _banner!: PageBuilderDefaultBanner;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  btnClick(button: PageBuilderDefaultButton | undefined) {\n    if (button) {\n      (button as any).operation = {\n        message: null,\n        loading: false,\n        showPopover: false,\n        popoverSub: null\n      }\n      let sub: Subject<{\n        loading?: boolean,\n        message?: string\n      }> = new Subject<{\n        loading?: boolean,\n        message?: string\n      }>();\n      sub.subscribe(\n        res => {\n          if (res) { //TODO da capì\n            (button as any).operation.loading = res.loading;\n            (button as any).operation.message = res.message;\n            this.changePopover(res.message !== null, button);\n            if (!res.loading)//vuol dire che ho finito il caricamento\n              sub.unsubscribe();\n          }\n        }\n      )\n      this.btnClickedOutput.emit({\n        btn: button as any,\n        sub\n      })\n    }\n  }\n\n  changePopover(newMsg: boolean, button: PageBuilderDefaultButton) {\n    if ((button as any).operation.popoverSub) {//se c'è già elimino\n      (button as any).operation.popoverSub.unsubscribe();\n      (button as any).operation.popoverSub = null;\n      (button as any).operation.showPopover = false;//nascondo \n    }\n    if (newMsg) {//se devo mostrare qualcosa\n      (button as any).operation.showPopover = true;//mostro\n      const __timer = timer(2000);\n      (button as any).operation.popoverSub = __timer.subscribe(val => (button as any).operation.showPopover = false);//aspetto due secondi e nascondo\n    }\n  }\n}\n","<ng-container *ngIf=\"banner\">\n  <div class=\"d-flex justify-content-start align-items-stretch h-100 w-100\">\n    <ng-container *ngIf=\"banner.image\">\n      <div class=\"pb-default-image w-50 br-25 \" [cover]=\"'container'\" [image]=\"banner.image\"\n        [cssClass]=\"'br-25 child-overlay'\" [class.cursor-pointer]=\"banner.button\" (click)=\"btnClick(banner.button)\"\n        [innerHTMLIN]=\"banner.button?banner.button.text : ''\"\n        [class.parent-overlay]=\"banner.button&&banner.button.text\">\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"banner.description\">\n      <div class=\"d-flex align-items-stretch ml-5\" style=\"flex-grow:1; max-width: 40%;\">\n        <div class=\"br-25 shadow-sm border p-4\" [innerHtml]=\"banner.description  | safeHtml:'html'\"\n          [class.cursor-pointer]=\"banner.button\" (click)=\"btnClick(banner.button)\" nz-tooltip\n          [nzTooltipTitle]=\"banner.button?.help?.html ? helpTooltip : null\" nzTooltipOverlayClassName=\"tooltip-help\"\n          style=\"overflow: hidden;\n    overflow-y: auto;\n    text-overflow: ellipsis;\n    \">\n        </div>\n      </div>\n    </ng-container>\n  </div>\n</ng-container>\n<ng-template #helpTooltip>\n  <ng-container *ngIf=\"banner.button && banner.button.help && banner.button.help !== undefined\">\n    <ng-container *ngIf=\"banner.button.help.html\">\n      <div [innerHtml]=\"banner.button.help!.html  | safeHtml:'html'\">\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"banner.button.help.text\">\n      <div>{{banner.button.help!.text | translate}}</div>\n    </ng-container>\n  </ng-container>\n</ng-template>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PbDefaultButtonOutput, PageBuilderDefaultCardImage, PageBuilderDefaultImage } from '../../../types/pb-types/page-builder.type';\n\n\n@Component({\n  selector: '.pb-default-card-image',\n  templateUrl: './pb-default-card-image.component.html',\n  styleUrls: ['./pb-default-card-image.component.scss']\n})\nexport class PbDefaultCardImageComponent implements OnInit {\n\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> = new EventEmitter<PbDefaultButtonOutput>();//gestione loading e messaggio di risposta\n\n  @Input('orientation') orientation: 'column' | 'row' = 'column';\n\n  @Input() set cardImage(cardImage) {\n    this._cardImage = cardImage;\n  }\n  get cardImage() {\n    return this._cardImage;\n  }\n\n  _cardImage!: PageBuilderDefaultCardImage;\n\n  imageNotFound : PageBuilderDefaultImage = {\n    url : 'https://www.allianceplast.com/wp-content/uploads/2017/11/no-image.png', //ZS 12052022: WOW\n    size : 'default'\n  }\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  handlerOutput(event: any) {\n    this.btnClickedOutput.emit(event);\n  }\n}\n","<ng-container *ngIf=\"cardImage\">\n  <ng-container *ngIf=\"orientation == 'column'\">\n    <div class=\"d-flex w-100 flex-column rounded shadow-sm\">\n      <div class=\"w-100 rounded-top\" style=\"min-height: 20vh;\">\n        <ng-container *ngIf=\"cardImage.image && (cardImage.image.url || cardImage.image.base64)\">\n          <div class=\"pb-default-image h-100 w-100 rounded-top mh-inherit\" [image]=\"cardImage.image\" [cover]=\"'contain'\"\n            [cssClass]=\"'rounded-top'\"></div>\n        </ng-container>\n        <ng-container *ngIf=\"!cardImage.image || (!cardImage.image.url && !cardImage.image.base64)\">\n          <div class=\"pb-default-image h-100 w-100 rounded-top mh-inherit\" [image]=\"imageNotFound\" [cover]=\"'contain'\"\n            [cssClass]=\"'rounded-top'\"></div>\n        </ng-container>\n      </div>\n      <div class=\"d-flex p-3 mt-2 flex-column\" nz-tooltip\n        [nzTooltipTitle]=\"cardImage.help?.html ? helpCardImageTooltip : null\" nzTooltipOverlayClassName=\"tooltip-help\">\n        <span class=\"bold text-uppercase fs-large text-ellipsis d-block\" style=\"max-width: inherit;\"\n          [title]=\"cardImage.title? (cardImage.title | translate) : null\">\n          {{cardImage.title ? (cardImage.title | translate) :  \"\"}}\n        </span>\n        <span class=\"text-muted font-small \"\n          style=\"max-width: inherit; max-height: 6.5vh;overflow-y: hidden;min-height: 6.5vh;\" nz-tooltip\n          [nzTooltipTitle]=\"cardImage && cardImage.description ? (cardImage.description | translate) : null\"\n          nzTooltipOverlayClassName=\"tooltip-help\">\n          {{cardImage.description ? (cardImage.description | translate) :  \"\"}}\n        </span>\n      </div>\n    </div>\n    <div class=\"d-flex justify-content-center mt-2\" *ngIf=\"cardImage.button\">\n      <div class=\"pb-default-button\" [button]=\"cardImage.button\" (btnClickedOutput)=\"handlerOutput($event)\"></div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"orientation == 'row'\">\n    <div class=\"w-100 d-flex align-items-center\">\n      <div class=\"rounded\"\n        style=\"max-width: 12vw !important;max-height: 10vh !important;min-height:10vh !important;min-width: 12vw !important;\">\n        <ng-container *ngIf=\"cardImage.image && (cardImage.image.url || cardImage.image.base64)\">\n          <div class=\"pb-default-image h-100 w-100 mh-inherit rounded\" [image]=\"cardImage.image\" [cover]=\"'contain'\"\n            [cssClass]=\"'rounded'\"></div>\n        </ng-container>\n        <ng-container *ngIf=\"!cardImage.image || (!cardImage.image.url && !cardImage.image.base64)\">\n          <div class=\"pb-default-image h-100 w-100 mh-inherit rounded\" [image]=\"imageNotFound\" [cover]=\"'contain'\"\n            [cssClass]=\"'rounded'\"></div>\n        </ng-container>\n      </div>\n      <div class=\"d-flex flex-column p-3 rounded mx-2 shadow-sm w-100\" style=\"flex-grow: 1;max-width: inherit;\"\n        nz-tooltip [nzTooltipTitle]=\"cardImage.help?.html ? helpCardImageTooltip : null\"\n        nzTooltipOverlayClassName=\"tooltip-help\">\n        <span class=\"bold text-uppercase fs-large l-height-normal \" style=\"max-width: inherit;\"\n          [title]=\"cardImage.title? (cardImage.title | translate) : null\">\n          {{cardImage.title ? (cardImage.title | translate) :  \"\"}}\n        </span>\n        <span class=\"text-muted font-small \" style=\"max-width: inherit; max-height: 8vh;overflow-y:\n          hidden;\">{{cardImage.description ? (cardImage.description | translate) :  \"\"}}</span>\n      </div>\n      <div class=\"d-flex flex-column justify-content-center align-items-center w-20\" *ngIf=\"cardImage.button\">\n        <div class=\"pb-default-button\" [button]=\"cardImage.button\" (btnClickedOutput)=\"handlerOutput($event)\"></div>\n      </div>\n    </div>\n  </ng-container>\n  <ng-template #helpCardImageTooltip>\n    <div [innerHtml]=\"cardImage.help?.html  | safeHtml:'html'\" *ngIf=\"cardImage.help&&cardImage.help.html\"></div>\n    <div *ngIf=\"cardImage.help&&cardImage.help.text\">{{cardImage.help.text | translate}}</div>\n  </ng-template>\n</ng-container>\n","import { PbDefaultButtonOutput } from '@alfercom/crud/lib/types/crud-buttons.types';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  PbDefaultSearchboxOutput,\n  PageBuilderToolbarButtonsV2,\n} from '../../../../types/pb-types/page-builder.type';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n  selector: '.pb-toolbar-buttons-v2',\n  templateUrl: './pb-toolbar-buttons-v2.component.html',\n  styleUrls: ['./pb-toolbar-buttons-v2.component.scss'],\n})\nexport class PbToolbarButtonsComponentV2 implements OnInit {\n  @Input() showFilterPreview: boolean = true; // Default enabled\n  @Input() activeFilters: {label: string, value: any}[] = [];\n  @Input() activeFiltersCount: number = 0;\n\n  @Output() btnClickedIndex: EventEmitter<number> = new EventEmitter<number>();\n  @Output() btnClickedOutput: EventEmitter<PbDefaultButtonOutput> =\n    new EventEmitter<PbDefaultButtonOutput>(); //gestione loading e messaggio di risposta\n  @Output() searchboxOutput: EventEmitter<PbDefaultSearchboxOutput> =\n    new EventEmitter<PbDefaultSearchboxOutput>(); //gestione loading e messaggio di risposta\n  @Output() filterToggleOutput: EventEmitter<boolean> =\n    new EventEmitter<boolean>(); //gestione loading e messaggio di risposta\n\n\n  @Input() set selectedCount(value: number) {\n    const needsTextUpdate = this._selectedCount !== value;\n    this._selectedCount = value;\n    \n    if (needsTextUpdate) { // Optimization: only update text if count changed\n      this.updateMultipleSelectionButtonText();\n    }\n    this.updateDropdownStates();\n  }\n\n  get selectedCount(): number {\n    return this._selectedCount;\n  }\n\n  private _selectedCount: number = 0;\n  private _originalMultipleSelectionButtonText: string | undefined;\n\n  private updateDropdownStates() {\n    if (this._toolbar) {\n      // Update single selection dropdown state\n      if (this._toolbar.singleSelectionDropdown?.buttonDropdown) {\n        this._toolbar.singleSelectionDropdown.buttonDropdown.isDisabled = this._selectedCount !== 1;\n      }\n\n      // Update multiple selection dropdown state\n      if (this._toolbar.multipleSelectionDropdown?.buttonDropdown) {\n        this._toolbar.multipleSelectionDropdown.buttonDropdown.isDisabled = this._selectedCount === 0;\n      }\n    }\n  }\n\n  @Input() set toolbar(toolbarInput: PageBuilderToolbarButtonsV2) {\n    // Store the original text for multiple selection dropdown if it exists in the input\n    // This must happen BEFORE this._toolbar is potentially modified by other logic\n    if (toolbarInput?.multipleSelectionDropdown?.buttonDropdown?.text) {\n      this._originalMultipleSelectionButtonText = toolbarInput.multipleSelectionDropdown.buttonDropdown.text;\n    } else {\n      this._originalMultipleSelectionButtonText = undefined;\n    }\n\n    // Existing logic for exportDropdown label (operates on toolbarInput)\n    if (toolbarInput.exportDropdown && toolbarInput.exportDropdown.labelDropdown) {\n      if (\n        toolbarInput.exportDropdown.labelDropdown.icon &&\n        !toolbarInput.exportDropdown.labelDropdown.label\n      ) {\n        toolbarInput.exportDropdown.labelDropdown.label =\n          'FEPB_CRUD_TOOLBARBTNEXPORT';\n      }\n    }\n    \n    this._toolbar = toolbarInput; // Assign to internal property\n\n    // Call methods that might modify this._toolbar or use its state\n    this.updateMultipleSelectionButtonText(); \n    this.updateDropdownStates(); \n  }\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  _toolbar!: PageBuilderToolbarButtonsV2;\n\n  constructor(private translateService: TranslateService) {}\n\n  ngOnInit(): void {}\n\n  // Add this new private method\n  private updateMultipleSelectionButtonText(): void {\n    if (this._toolbar?.multipleSelectionDropdown?.buttonDropdown && typeof this._originalMultipleSelectionButtonText === 'string') {\n      const translatedText = this.translateService.instant(this._originalMultipleSelectionButtonText);\n      if (this._selectedCount > 0) {\n        this._toolbar.multipleSelectionDropdown.buttonDropdown.text = `${translatedText} (${this._selectedCount})`;\n      } else {\n        this._toolbar.multipleSelectionDropdown.buttonDropdown.text = translatedText;\n      }\n    }\n  }\n\n  btnHandler(event: any) {\n    this.btnClickedOutput.emit(event);\n  }\n\n  searchboxHandler(event: PbDefaultSearchboxOutput) {\n    this.searchboxOutput.emit(event);\n  }\n\n  filterToggle() {\n    if (!this.toolbar?.filterToggle?.isDisabled) {\n      this.filterToggleOutput.emit(true);\n    }\n  }\n}\n","<ng-container *ngIf=\"toolbar\">\n  <div class=\"w-100 d-flex justify-content-between align-items-center\">\n    <div class=\"d-flex pr-3 justify-content-start align-items-center\">\n      <ng-container\n        *ngIf=\"\n          toolbar.singleSelectionDropdown &&\n          toolbar.singleSelectionDropdown.list &&\n          toolbar.singleSelectionDropdown.list.length > 0\n        \"\n      >\n        <div\n          class=\"pb-dropdown-button mr-2\"\n          [dropdown]=\"toolbar.singleSelectionDropdown\"\n          [class.d-none]=\"\n            toolbar.singleSelectionDropdown.buttonDropdown?.isDisabled\n          \"\n          (btnClickedOutput)=\"btnHandler($event)\"\n        ></div>\n      </ng-container>\n      <ng-container\n        *ngIf=\"\n          toolbar.multipleSelectionDropdown &&\n          toolbar.multipleSelectionDropdown.list &&\n          toolbar.multipleSelectionDropdown.list.length > 0\n        \"\n      >\n        <div\n          class=\"pb-dropdown-button mr-2\"\n          [dropdown]=\"toolbar.multipleSelectionDropdown\"\n          [class.d-none]=\"\n            toolbar.multipleSelectionDropdown.buttonDropdown?.isDisabled\n          \"\n          (btnClickedOutput)=\"btnHandler($event)\"\n        ></div>\n      </ng-container>\n      <ng-container *ngIf=\"toolbar.buttons && toolbar.buttons.length\">\n        <div\n          class=\"d-flex pb-default-buttons\"\n          [btnRow]=\"true\"\n          [buttons]=\"toolbar.buttons\"\n          (btnClickedOutput)=\"btnHandler($event)\"\n        ></div>\n      </ng-container>\n      <ng-container *ngIf=\"toolbar.dropdown\">\n        <div\n          class=\"pb-dropdown-button\"\n          [dropdown]=\"toolbar.dropdown\"\n          (btnClickedOutput)=\"btnHandler($event)\"\n        ></div>\n      </ng-container>\n    </div>\n    <div class=\"d-flex flex-grow-1 pl-3 justify-content-end align-items-center\">\n      <ng-container *ngIf=\"toolbar.searchBox\">\n        <div\n          class=\"pb-default-searchbox flex-grow-1\"\n          [searchbox]=\"toolbar.searchBox\"\n          (searchboxOutput)=\"searchboxHandler($event)\"\n        ></div>\n      </ng-container>\n      <ng-container *ngIf=\"toolbar.exportDropdown\">\n        <div\n          class=\"pb-dropdown-button ml-3\"\n          [dropdown]=\"toolbar.exportDropdown\"\n          (btnClickedOutput)=\"btnHandler($event)\"\n        ></div>\n      </ng-container>\n      <ng-container *ngIf=\"toolbar.filterToggle\">\n        <button\n          class=\"btn btn-outline-secondary ml-3 position-relative\"\n          (click)=\"filterToggle()\"\n          [disabled]=\"toolbar.filterToggle.isDisabled\"\n          nz-tooltip\n          [nzTooltipTitle]=\"activeFiltersTooltip\"\n          [nzTooltipVisible]=\"\n            activeFilters && activeFilters.length > 0 && showFilterPreview\n              ? true\n              : false\n          \"\n          [nzTooltipPlacement]=\"'left'\"\n          [nzTooltipOverlayStyle]=\"{ minWidth: '300px' }\"\n        >\n          <span class=\"fas fa-filter\"></span\n          >{{ \"FEPB_CRUD_TOOLBARBTNFILTER\" | translate }}\n          <nz-badge\n            *ngIf=\"showFilterPreview && activeFiltersCount > 0\"\n            [nzCount]=\"activeFiltersCount\"\n            [nzOffset]=\"[7, -7]\"\n          >\n          </nz-badge>\n        </button>\n\n        <ng-template #activeFiltersTooltip>\n          <div class=\"filter-preview\">\n            <h5 class=\"filter-preview-title\">\n              {{ \"FEPB_CRUD_ACTIVEFILTERS_TITLE\" | translate }}\n            </h5>\n            <nz-divider class=\"my-2\"></nz-divider>\n            <div class=\"filter-preview-content\">\n              <ul\n                class=\"filter-list\"\n                *ngIf=\"activeFilters.length > 0; else noFilters\"\n              >\n                <li *ngFor=\"let filter of activeFilters\" class=\"filter-item\">\n                  <div class=\"filter-label\">{{ filter.label | translate }}</div>\n                  <div class=\"filter-value\">\n                    {{ filter.value | translate }}\n                  </div>\n                </li>\n              </ul>\n              <ng-template #noFilters>\n                <div class=\"text-center text-light\">\n                  {{ \"FEPB_CRUD_NOACTIVEFILTERS\" | translate }}\n                </div>\n              </ng-template>\n            </div>\n          </div>\n        </ng-template>\n      </ng-container>\n    </div>\n  </div>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport { ApiCallerService } from '../../../services/api-caller.service';\nimport { PageBuilderService } from '../../../services/page-builder.service';\nimport {\n  ApiCallParams,\n  CallApiInput,\n  PageBuilderDefaultButton,\n} from '../../../types/pb-types/page-builder.type';\nimport { SectionElement } from '../../../types/external-types/sectionElement';\nimport { SectionElementContent } from '../../../types/external-types/sectionElementContent';\n\n@Component({\n  selector: '.pb-card-data',\n  templateUrl: './pb-card-data.component.html',\n  styleUrls: ['./pb-card-data.component.scss'],\n})\nexport class PbCardDataComponent implements OnInit {\n  /**\n   * Componente per le cardine singole color primary con possibilità di ActionButton sull'header e sulla destra e icona sulla sinistra\n   */\n\n  @Input('componentName') set componentName(value: string) {\n    if (value) {\n      this.contextName = value;\n    }\n  }\n\n  @Input('apiCallData') set apiCallData(value: ApiCallParams) {\n    if (value) {\n      this.callApiParams = value;\n      this.initPageDataFromApi();\n      this.populateFromApi = true;\n    }\n  }\n\n  @Input('pageStructure') set pageStructure(value: any) {\n    if (value) {\n      this.initPageDataFromInput(value);\n      this.populateFromApi = false;\n    }\n  }\n\n  @Input('hideButtons') hideButtons: boolean = false;\n\n  @Output('onUpdate') onUpdate: EventEmitter<void> = new EventEmitter();\n\n  pageData: SectionElement | null = null;\n  isLoading: boolean = true;\n  callApiParams: ApiCallParams | null = null;\n  populateFromApi: boolean = false;\n  contextName: string | undefined = undefined;\n\n  globalSingleRow: boolean = false;\n  globalValueAHead: boolean = false;\n\n  constructor(\n    private apiCallerService: ApiCallerService,\n    private pageBuilderService: PageBuilderService\n  ) {}\n\n  ngOnInit(): void {}\n\n  initPageDataFromApi() {\n    if (this.callApiParams) {\n      this.isLoading = true;\n      const callApiForSectionParams: CallApiInput = {\n        apiMethod: 'getSectionElementInfo',\n        apiService: this.callApiParams.apiService,\n        viewId: this.callApiParams.viewId,\n        params: this.callApiParams.params || [],\n        body: {\n          context: this.contextName as any, //Messo as any per errore di compilazione, da capì più tardi\n        },\n      };\n      this.apiCallerService\n        .callApi(callApiForSectionParams)\n        .subscribe((res: any) => {\n          let response = _.get(res, 'response', null);\n          if (response) {\n            this.pageData = _.cloneDeep(response);\n            this.globalSingleRow = _.get(\n              this.pageData,\n              'sectionOptions.singleRow',\n              false\n            );\n            this.globalValueAHead = _.get(\n              this.pageData,\n              'sectionOptions.valueAHead',\n              false\n            );\n            this.isLoading = false;\n          } else {\n            this.isLoading = false;\n          }\n        });\n    }\n  }\n\n  initPageDataFromInput(value: SectionElement) {\n    this.isLoading = true;\n    if (value) {\n      this.pageData = _.cloneDeep(value);\n      this.globalSingleRow = _.get(\n        this.pageData,\n        'sectionOptions.singleRow',\n        false\n      );\n      this.globalValueAHead = _.get(\n        this.pageData,\n        'sectionOptions.valueAHead',\n        false\n      );\n      if (this.pageData && this.pageData.buttons) {\n        if (this.pageData.buttons.length > 2) {\n          this.pageData.buttons.map((el) => (el.style = 'link'));\n        }\n      }\n    }\n    this.isLoading = false;\n  }\n\n  handlerOutput(event: any) {\n    if (event) {\n      const { btn, sub } = event;\n      this.handleBtnClick(btn, sub);\n    }\n  }\n\n  handleBtnClick(btn: PageBuilderDefaultButton, subLoading: any) {\n    if (btn) {\n      if (subLoading) {\n        subLoading.next({\n          loading: true,\n        });\n      }\n      this.pageBuilderService\n        .handlerActionButton(btn)\n        .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n    }\n  }\n\n  getSingleRowElements(): SectionElementContent[] {\n    if (!this.pageData?.content) return [];\n    return this.pageData.content.filter(\n      (data) =>\n        this.globalSingleRow ||\n        (data.sectionOptions && data.sectionOptions.singleRow)\n    );\n  }\n\n  getNonSingleRowElements(): SectionElementContent[] {\n    if (!this.pageData?.content) return [];\n    return this.pageData.content.filter(\n      (data) =>\n        !this.globalSingleRow &&\n        (!data.sectionOptions || !data.sectionOptions.singleRow)\n    );\n  }\n\n  handlerActionButtonResFn(res: any, subLoading: any) {\n    if (res) {\n      if (res.result) {\n        let refreshed = false; // Flag to prevent double emission\n        if (res.needRefresh) {\n          refreshed = true;\n          if (!this.populateFromApi) {\n            //andrà in un servizio\n            this.onUpdate.emit();\n          } else {\n            this.initPageDataFromApi();\n          }\n        }\n        if (res.closeModal) {\n        }\n        if (res.eventToHandle) {\n          if (res.eventToHandle.eventName == 'need-refresh') {\n            console.log('pb-card-data received need-refresh event');\n            if (!refreshed) {\n              if (!this.populateFromApi) {\n                console.log('pb-card-data emitting onUpdate');\n                this.onUpdate.emit();\n              } else {\n                console.log('pb-card-data re-calling initPageDataFromApi');\n                this.initPageDataFromApi();\n              }\n            }\n          }\n        }\n        if (subLoading) {\n          subLoading.next({ loading: false });\n        }\n      } else {\n        if (res.error) {\n          if (subLoading) {\n            subLoading.next({\n              loading: false,\n              message: res.error.messages[0] || 'FEPB_GENERIC_OPERATIONERROR',\n            });\n          }\n        } else {\n          if (subLoading) {\n            subLoading.next({ loading: false });\n          }\n        }\n      }\n    } else {\n      if (subLoading) {\n        subLoading.next({ loading: false });\n      }\n    }\n  }\n}\n","<ng-container *ngIf=\"!isLoading && pageData\">\n  <div\n    class=\"pb-card-row d-flex flex-column\"\n    style=\"width: inherit; min-width: inherit\"\n    [title]=\"pageData?.state?.help?.text ? pageData?.state?.help?.text : ''\"\n    nz-tooltip\n    [nzTooltipTitle]=\"pageData?.state?.help?.html ? helpStateTooltip : null\"\n    nzTooltipOverlayClassName=\"tooltip-help\"\n  >\n    <div\n      class=\"d-flex pb-card-title justify-content-between flex-grow-1\"\n      *ngIf=\"pageData.title\"\n      [ngStyle]=\"{\n        'margin-left': pageData.icon ? '4em' : '',\n        'margin-right':\n          pageData.buttons && pageData.buttons.length > 0 ? '8em' : ''\n      }\"\n    >\n      <span\n        class=\"bold fs-large\"\n        [class.text-primary]=\"!pageData.state\"\n        [class.text-danger]=\"pageData.state && pageData.state.type == 'danger'\"\n        [class.text-warning]=\"\n          pageData.state && pageData.state.type == 'warning'\n        \"\n        [class.text-success]=\"\n          pageData.state && pageData.state.type == 'success'\n        \"\n        [class.text-info]=\"pageData.state && pageData.state.type == 'info'\"\n      >\n        <span\n          class=\"far fa-lg mr-2\"\n          *ngIf=\"pageData.header && pageData.header.icon\"\n          [class.text-primary]=\"!pageData.state\"\n          [class.text-danger]=\"\n            pageData.state && pageData.state.type == 'danger'\n          \"\n          [class.text-warning]=\"\n            pageData.state && pageData.state.type == 'warning'\n          \"\n          [class.text-success]=\"\n            pageData.state && pageData.state.type == 'success'\n          \"\n          [class.text-info]=\"pageData.state && pageData.state.type == 'info'\"\n          [class]=\"pageData.header.icon\"\n        ></span>\n        {{ pageData.title | translate }}\n      </span>\n      <ng-container\n        *ngIf=\"\n          pageData.header &&\n          pageData.header.buttons &&\n          pageData.header.buttons.length > 0\n        \"\n      >\n        <div\n          class=\"pb-default-buttons\"\n          [buttons]=\"pageData.header.buttons\"\n          [btnRow]=\"true\"\n          (btnClickedOutput)=\"handlerOutput($event)\"\n        ></div>\n      </ng-container>\n    </div>\n    <div class=\"d-flex flex-grow-1\">\n      <ng-container\n        *ngIf=\"pageData.state && pageData.state.type; else elseBlockStatusIcon\"\n      >\n        <div\n          class=\"d-flex pb-card-icon-section flex-column justify-content-center align-items-center\"\n          style=\"width: 4em; min-width: 4em\"\n          *ngIf=\"pageData.icon\"\n        >\n          <span\n            class=\"far fa-2x\"\n            [class.text-danger]=\"pageData.state.type == 'danger'\"\n            [class.text-warning]=\"pageData.state.type == 'warning'\"\n            [class.text-success]=\"pageData.state.type == 'success'\"\n            [class.text-info]=\"pageData.state.type == 'info'\"\n            [ngClass]=\"\n              pageData.state.type == 'danger'\n                ? 'fa-exclamation-circle'\n                : pageData.state.type == 'warning'\n                ? 'fa-exclamation-triangle'\n                : pageData.state.type == 'success'\n                ? 'fa-check-circle'\n                : pageData.icon\n            \"\n          ></span>\n        </div>\n      </ng-container>\n      <ng-template #elseBlockStatusIcon>\n        <div\n          class=\"d-flex pb-card-icon-section flex-column justify-content-center align-items-center\"\n          style=\"width: 4em; min-width: 4em\"\n          *ngIf=\"pageData.icon\"\n        >\n          <span class=\"far fa-2x text-primary\" [ngClass]=\"pageData.icon\"></span>\n        </div>\n      </ng-template>\n      <ng-container *ngIf=\"pageData.content && pageData.content.length > 0\">\n        <div\n          class=\"pb-card-content-container border rounded shadow-sm py-2 px-2 border d-flex flex-wrap flex-grow-1 align-content-start\"\n          [class.flex-grow-1]=\"\n            pageData.icon || (pageData.buttons && pageData.buttons.length > 0)\n          \"\n          [class.w-100]=\"\n            !pageData.icon &&\n            (!(pageData.buttons && pageData.buttons.length > 0) || hideButtons)\n          \"\n          [class.border-primary]=\"!pageData.state\"\n          [class.border-3]=\"pageData.state\"\n          [class.border-danger]=\"\n            pageData.state && pageData.state.type == 'danger'\n          \"\n          [class.border-warning]=\"\n            pageData.state && pageData.state.type == 'warning'\n          \"\n          [class.border-success]=\"\n            pageData.state && pageData.state.type == 'success'\n          \"\n          [class.border-info]=\"pageData.state && pageData.state.type == 'info'\"\n        >\n          <!-- Multi Column Elements -->\n          <ng-container *ngFor=\"let data of getNonSingleRowElements()\">\n            <span\n              class=\"d-flex pb-card-content-element font-small justify-content-start w-50\"\n              [class.bg-default-body]=\"data?.highlight\"\n            >\n              <ng-container *ngIf=\"data\">\n                <span\n                  class=\"text-muted text-uppercase w-50\"\n                  [class.text-truncate]=\"\n                    !data.sectionOptions || !data.sectionOptions.doNotTruncate\n                  \"\n                  [title]=\"data.label ? (data.label | translate) : ''\"\n                  >{{ data.label | translate }}</span\n                >\n\n                <ng-container\n                  *ngIf=\"\n                    data.sectionOptions?.isActionButton && data.actionButton;\n                    else regularMultiValue\n                  \"\n                >\n                  <span\n                    class=\"bold w-50 cursor-pointer text-primary\"\n                    (click)=\"handleBtnClick(data.actionButton, null)\"\n                  >\n                    <i class=\"fas fa-link mr-1\"></i>{{ data.value | translate }}\n                  </span>\n                </ng-container>\n                <ng-template #regularMultiValue>\n                  <span\n                    class=\"bold w-50\"\n                    [class.text-truncate]=\"\n                      !data.sectionOptions || !data.sectionOptions.doNotTruncate\n                    \"\n                    [title]=\"data.value ? data.value : ''\"\n                    [style.white-space]=\"\n                      data.sectionOptions && data.sectionOptions.doNotTruncate\n                        ? 'pre-line'\n                        : 'inherit'\n                    \"\n                    doubleclick-copy\n                    >{{ data.value | translate }}</span\n                  >\n                </ng-template>\n              </ng-container>\n            </span>\n          </ng-container>\n\n          <!-- Single Row Elements -->\n          <ng-container *ngFor=\"let data of getSingleRowElements()\">\n            <span\n              class=\"d-flex pb-card-content-element font-small justify-content-start w-100\"\n              [class.bg-default-body]=\"data?.highlight\"\n            >\n              <ng-container *ngIf=\"data\">\n                <span\n                  class=\"text-muted text-uppercase w-25\"\n                  [class.text-truncate]=\"\n                    !data.sectionOptions || !data.sectionOptions.doNotTruncate\n                  \"\n                  [title]=\"data.label ? (data.label | translate) : ''\"\n                  >{{ data.label | translate }}</span\n                >\n\n                <ng-container\n                  *ngIf=\"\n                    data.sectionOptions?.isActionButton && data.actionButton;\n                    else regularValue\n                  \"\n                >\n                  <span\n                    class=\"bold w-75 cursor-pointer text-primary\"\n                    (click)=\"handleBtnClick(data.actionButton, null)\"\n                  >\n                    <i class=\"fas fa-link mr-1\"></i>{{ data.value | translate }}\n                  </span>\n                </ng-container>\n                <ng-template #regularValue>\n                  <span\n                    class=\"bold w-75\"\n                    [class.text-truncate]=\"\n                      !data.sectionOptions || !data.sectionOptions.doNotTruncate\n                    \"\n                    [title]=\"data.value ? data.value : ''\"\n                    [style.white-space]=\"\n                      data.sectionOptions && data.sectionOptions.doNotTruncate\n                        ? 'pre-line'\n                        : 'inherit'\n                    \"\n                    doubleclick-copy\n                    >{{ data.value | translate }}</span\n                  >\n                </ng-template>\n              </ng-container>\n            </span>\n          </ng-container>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"pageData.content && pageData.content.length == 0\">\n        <div class=\"border rounded shadow-sm py-2 px-2 border flex-grow-1\">\n          <div class=\"w-100 d-flex flex-column\">\n            <div\n              class=\"d-flex align-items-center justify-content-between mx-2 my-1\"\n            >\n              <span class=\"text-muted font-small\">{{\n                pageData.emptyMessage\n                  ? pageData.emptyMessage\n                  : (\"FEPB_CARD_NO_DATA_CONTENT\" | translate)\n              }}</span>\n            </div>\n          </div>\n        </div>\n      </ng-container>\n      <div\n        class=\"d-flex flex-column justify-content-center align-items-center pl-2\"\n        style=\"width: 8em; min-width: 8em\"\n        *ngIf=\"!hideButtons\"\n      >\n        <ng-container *ngIf=\"pageData.buttons && pageData.buttons.length > 0\">\n          <ng-container *ngIf=\"pageData.buttons.length > 2\">\n            <button\n              class=\"btn my-1 d-flex justify-content-center align-items-center btn-outline-primary btn-sm\"\n              style=\"min-width: -webkit-fill-available\"\n              nz-dropdown\n              [nzDropdownMenu]=\"menu\"\n            >\n              {{ \"FEPB_CARD_DROPDOWN_BTN_LABEL\" | translate }}\n              <span class=\"ml-1 fas fa-chevron-down\"></span>\n            </button>\n            <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n              <div\n                class=\"pb-default-buttons border border-primary p-2 bg-white\"\n                [buttons]=\"pageData.buttons\"\n                [btnAutoSize]=\"true\"\n                [position]=\"'left'\"\n                (btnClickedOutput)=\"handlerOutput($event)\"\n              ></div>\n            </nz-dropdown-menu>\n          </ng-container>\n          <ng-container *ngIf=\"pageData.buttons.length < 3\">\n            <div\n              class=\"pb-default-buttons\"\n              [buttons]=\"pageData.buttons\"\n              [btnAutoSize]=\"true\"\n              [position]=\"'left'\"\n              (btnClickedOutput)=\"handlerOutput($event)\"\n            ></div>\n          </ng-container>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"!isLoading && !pageData\">\n  <div class=\"mt-5 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{\n        \"FEPB_CARD_NO_DATA\" | translate\n      }}</span>\n    </div>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"isLoading\">\n  <div class=\"d-flex justify-content-start w-100\">\n    <div\n      class=\"d-flex flex-column justify-content-center align-items-center\"\n      style=\"width: 4em; margin-top: 27px !important\"\n    >\n      <span class=\"far fa-2x text-primary fa-spinner fa-spin\"></span>\n    </div>\n    <div class=\"d-flex w-70 flex-column\">\n      <div class=\"d-flex text-uppercase text-primary justify-content-between\">\n        <span class=\"bold fs-large\">{{ \"FEPB_CARD_LOADING\" | translate }}</span>\n      </div>\n      <div class=\"border rounded shadow-sm py-2 px-2 border border-primary\">\n        <div class=\"d-flex flex-wrap\">\n          <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n        </div>\n      </div>\n    </div>\n  </div>\n</ng-container>\n\n<ng-template #helpStateTooltip>\n  <div\n    [innerHtml]=\"pageData?.state?.help?.html | safeHtml : 'html'\"\n    *ngIf=\"\n      pageData &&\n      pageData.state &&\n      pageData.state.help &&\n      pageData.state.help.html\n    \"\n  ></div>\n  <div\n    *ngIf=\"\n      pageData &&\n      pageData.state &&\n      pageData.state.help &&\n      pageData.state.help.text\n    \"\n  >\n    {{ pageData.state.help.text | translate }}\n  </div>\n</ng-template>\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\nimport { interval, Subscription } from 'rxjs';\nimport * as _ from 'lodash';\nimport { NzProgressComponent } from 'ng-zorro-antd/progress';\nimport { RemoteLoadingParams, PbDefaultButtonOutput } from '../../../types/pb-types/page-builder.type';\n\n\nconst DEFAULT_INTERVAL = 2500;\n\n@Component({\n  selector: '.pb-remote-loading',\n  templateUrl: './pb-remote-loading.component.html',\n  styleUrls: ['./pb-remote-loading.component.scss']\n})\nexport class PbRemoteLoadingComponent implements AfterViewInit, OnDestroy {\n\n  @ViewChild('loadingComponent') loadingComponent!: NzProgressComponent;\n\n  @Input('loadingParams') set loadingParams(value: RemoteLoadingParams) {\n    this.setCallingParams(value);\n  }\n\n  @Output('repeatCall') repeatCall: EventEmitter<PbDefaultButtonOutput> = new EventEmitter();\n\n  pageParams: RemoteLoadingParams | null = null;\n\n  callSubscription!: Subscription;\n\n  drawProgress: boolean = true;\n\n  strokeColor: '#1890ff' | '#32bea6' | '#eb445a' | '#42a5f5' = '#1890ff';\n\n  constructor(\n    private changeDetectionRef: ChangeDetectorRef\n  ) { }\n\n  ngAfterViewInit(): void {\n    if (this.pageParams && this.pageParams.callParams && this.pageParams.interval) {\n      if (this.pageParams.lastCallResponse == 'KO' || this.pageParams.lastCallResponse == 'OK') {\n        this.callUnsubscribe()\n      } else if (!this.pageParams.lastCallResponse || (this.pageParams.lastCallResponse == 'PENDING' && !this.callSubscription)) {\n        const source = interval(this.pageParams.interval)\n        this.callSubscription = source.subscribe(o => this.emitCall())\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.callUnsubscribe()\n  }\n\n  setCallingParams(value: any) {\n    // console.log('setCallingParams', new Date(), value)\n    if (value) {\n      this.pageParams = _.cloneDeep(value);\n      if (this.pageParams && this.pageParams.percent > 100) {\n        this.pageParams.percent = 100;\n      }\n      this.changeDetectionRef.detectChanges();\n    } else {\n      this.initDefaultValues();\n    }\n  }\n\n  callUnsubscribe() {\n    // this.refreshProgress()\n    if (this.callSubscription) {\n      this.callSubscription.unsubscribe()\n    }\n  }\n\n  emitCall() {\n    if (this.pageParams && this.pageParams.callParams && (this.pageParams.lastCallResponse == 'PENDING' || !this.pageParams.lastCallResponse)) {\n      const btnResponse: PbDefaultButtonOutput = {\n        btn: {\n          action: 'call-api',\n          type: 'standard',\n          extra: {\n            remoteParams: this.pageParams\n          },\n          callAPIActionButton: this.pageParams.callParams as any\n        }\n      }\n      this.repeatCall.emit(btnResponse)\n    } else {\n      this.callUnsubscribe()\n    }\n  }\n\n  //TODO need check on type (callParams not accepting null or undefined)\n  initDefaultValues() {\n    this.pageParams = {\n      interval: DEFAULT_INTERVAL,\n      percent: 0,\n      callParams: {\n        apiMethod: '',\n        apiService: ''\n      }\n    }\n  }\n\n  //TODO remove hardcoded colors\n  calcolateStrokeColor() {\n    this.changeDetectionRef.detectChanges();\n    let color: any = '#1890ff' //default zorro\n    if (this.pageParams) {\n      if (this.pageParams.lastCallResponse == 'OK') {\n        color = '#32bea6' //success\n      } else if (this.pageParams.lastCallResponse == 'KO') {\n        color = '#eb445a' //danger\n      } else {\n        color = '#42a5f5' //primary\n      }\n    }\n    this.strokeColor = color;\n    // console.log('calcolateStrokeColor', new Date(), color, this.strokeColor, this.pageParams);\n    this.changeDetectionRef.detectChanges();\n  }\n\n\n  progressFormatFn =\n    (percent: number) =>\n      `${percent} %`\n}\n\n","<ng-container *ngIf=\"pageParams\">\n  <div class=\"w-100 h-100 d-flex flex-column justify-content-center align-items-center my-4 p-4\">\n    <!--style=\"background-color: #f9f9f9; border-radius: 25px!important;\"-->\n    <ng-container *ngIf=\"!pageParams.lastCallResponse || pageParams.lastCallResponse == 'PENDING'\">\n      <img class=\"my-4\" src=\"assets/img/loader/loading-spinning.gif\" height=\"150rel\" />\n      <div class=\"font-x-large text-primary my-4\">{{'FEPB_REMOTE_LOADING_LOADING' | translate}}</div>\n    </ng-container>\n    <ng-container *ngIf=\"pageParams.lastCallResponse == 'KO'\">\n      <img class=\"my-4\" src=\"assets/img/loader/folder-error.jpg\" height=\"150rel\" />\n      <div class=\"font-x-large text-danger my-4\">{{'FEPB_REMOTE_LOADING_FAIL' | translate}}</div>\n    </ng-container>\n    <ng-container *ngIf=\"pageParams.lastCallResponse == 'OK'\">\n      <img class=\"my-4\" src=\"assets/img/laptop_ok.png\" height=\"150rel\" />\n      <div class=\"font-x-large text-success my-4\">{{'FEPB_REMOTE_LOADING_SUCCESS' | translate}}</div>\n    </ng-container>\n    <nz-progress #loadingComponent [nzPercent]=\"pageParams.percent\" [nzSteps]=\"50\" [nzStrokeWidth]=\"20\"\n      [nzFormat]=\"progressFormatFn\" class=\"my-4\" nzStatus=\"active\"\n      [nzStrokeColor]=\"pageParams&&pageParams.lastCallResponse == 'KO' ? '#eb445a' :\n        pageParams&&pageParams.lastCallResponse == 'OK' ? '#32bea6' : '#42a5f5'\">\n    </nz-progress>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"!pageParams\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n    </div>\n  </div>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport Fuse from 'fuse.js';\nimport * as _ from 'lodash';\nimport { PageBuilderService } from '../../../services/page-builder.service';\nimport { SectionContent } from '../../../types/external-types/sectionContent';\nimport {\n  PageBuilderHelpers,\n  ListCardOptions,\n  PageBuilderDefaultButton,\n} from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-list-card-data',\n  templateUrl: './pb-list-card-data.component.html',\n  styleUrls: ['./pb-list-card-data.component.scss'],\n})\nexport class PbListCardDataComponent implements OnInit {\n  /**\n   * Componente per instanziare più cardine color primary (stile generic-card-data) + titolo e barra di ricerca\n   * Gli elementi da instanziare devono trovarsi all'interno del campo elements della SectionElement in input\n   * A piè di pagina c'è la gestione degli ActionButton del componente\n   */\n\n  @Input('pageStructure') set pageStructure(value: SectionContent) {\n    if (value) {\n      this.initPage(value);\n    }\n  }\n\n  @Input('helpers') helpers!: PageBuilderHelpers[];\n\n  @Output('onUpdate') onUpdate: EventEmitter<void> = new EventEmitter();\n\n  pageData: SectionContent | null = null;\n\n  pageOptions: ListCardOptions = {\n    searchBarOptions: {\n      minChar: 3,\n      noElemFoundMessage: 'Nessun elemento trovato',\n      placeholder: 'Ricerca (almeno 4 caratteri)',\n    },\n    showSearchBar: true,\n    counterLabel: 'Elementi',\n  };\n\n  isLoading: boolean = true;\n\n  searchString: string | null = null;\n\n  itemsList: any[] = [];\n\n  itemsToDisplay: any[] = [];\n\n  itemsSelected: any[] = [];\n\n  pageTitle: string | null = null;\n\n  constructor(private pageBuilderService: PageBuilderService) {}\n\n  ngOnInit(): void {}\n\n  initPage(pageStructure: SectionContent) {\n    if (pageStructure) {\n      this.pageData = _.cloneDeep(pageStructure);\n      if (pageStructure.title) {\n        this.pageTitle = pageStructure.title;\n      }\n      if (this.pageData) {\n        this.initItems(this.pageData);\n      }\n      this.initPageOptions((this.pageData as any).options);\n    }\n  }\n\n  initItems(value: any) {\n    this.isLoading = true;\n    this.itemsList = _.cloneDeep(value.elements);\n    this.itemsToDisplay = [...this.itemsList];\n    this.isLoading = false;\n  }\n\n  initPageOptions(options: any) {\n    if (options) {\n      this.pageOptions = _.cloneDeep(options);\n    }\n  }\n\n  onSearch(event: any) {\n    if (event) {\n      if (event && this.searchString) {\n        this.search(this.searchString);\n      } else if (!this.searchString || this.searchString == '') {\n        this.resetSearchField();\n      }\n    }\n  }\n\n  resetSearchField() {\n    this.searchString = null;\n    this.itemsToDisplay = [...this.itemsList];\n  }\n\n  search(label: string | null = null) {\n    const searchMinCar = 3; //this.pageOptions.searchBarOptions.minChar||0;\n    let results = [];\n    if (label) {\n      var options = {\n        threshold: 0.1,\n        distance: 1000,\n        location: 10,\n        keys: ['header.title'],\n      };\n      var fuse = new Fuse(this.itemsList, options);\n      try {\n        if (label.length > searchMinCar) {\n          results = fuse.search(label);\n          this.itemsToDisplay = [];\n\n          this.itemsToDisplay = _.cloneDeep(results.map((el) => el.item));\n          // }\n        } else {\n          this.itemsToDisplay = [...this.itemsList];\n        }\n      } catch (e) {\n        results = [];\n      }\n    } else {\n    }\n  }\n\n  btnClick(btn: PageBuilderDefaultButton, confirmation: boolean = false) {\n    const _btn = _.cloneDeep(btn);\n    let btnClicked = _btn;\n    if (btnClicked) {\n      if (!btnClicked.popConfirm || (btnClicked.popConfirm && confirmation)) {\n        // *** START MODIFICATION ***\n        // Add a loading indicator/mechanism if needed, similar to other components\n        this.pageBuilderService.handlerActionButton(btnClicked).subscribe(\n          (res: any) => {\n            // Use the correct type\n            if (res) {\n              // Check if res is defined\n              if (res.result) {\n                if (res.needRefresh) {\n                  this.onUpdate.emit();\n                }\n                if (\n                  res.eventToHandle &&\n                  res.eventToHandle.eventName == 'need-refresh'\n                ) {\n                  console.log(\n                    'pb-list-card-data received need-refresh event, emitting onUpdate'\n                  );\n                  this.onUpdate.emit();\n                }\n                // Handle other potential outcomes like closeModal, etc. if needed\n              } else {\n                // Handle error case, maybe show message using pageBuilderGuiService\n                console.error(\n                  'Error in pb-list-card-data btnClick:',\n                  res.error\n                );\n                // Optionally show a message to the user\n                // this.pageBuilderService.getGuiService().showMessage('error', res.error?.messages?.[0] || 'FEPB_GENERIC_OPERATIONERROR');\n              }\n            }\n          },\n          (error) => {\n            // Handle subscription error\n            console.error(\n              'Error subscribing to handlerActionButton in pb-list-card-data:',\n              error\n            );\n            // Optionally show a message to the user\n            // this.pageBuilderService.getGuiService().showMessage('error', 'FEPB_GENERIC_OPERATIONERROR');\n          }\n        );\n        // *** END MODIFICATION ***\n      }\n    }\n  }\n}\n","<ng-container *ngIf=\"pageData\">\n  <div class=\"d-flex  text-primary font-x-large justify-content-start  w-100 mb-2\">\n    <ng-container *ngIf=\"pageTitle && pageTitle!==''\">\n      <span class=\"bold text-uppercase\"> {{pageTitle | translate}}\n      </span>\n      <ng-container *ngIf=\"helpers && helpers.length>0\">\n        <i class=\"far fa-info-circle fa-lg ml-2 align-self-center\" nz-tooltip\n          [nzTooltipTitle]=\"helpers[0] && helpers[0].text ?(helpers[0].text | translate):''\"\n          nzTooltipOverlayClassName=\"tooltip-help\"></i>\n      </ng-container>\n    </ng-container>\n  </div>\n  <div class=\"d-flex flex-grow-1 mb-2\"\n    *ngIf=\"pageOptions && pageOptions.showSearchBar && itemsList && itemsList.length>0\">\n    <input class=\"w-100 form-control\" [placeholder]=\"(pageOptions?.searchBarOptions?.placeholder || '' | translate)\"\n      style=\"line-height: 24px\" type=\"text\" name=\"textSearch\" #textSearch [(ngModel)]=\"searchString\"\n      (input)=\"onSearch($event)\" />\n    <div class=\"d-flex flex-column justify-content-center align-items-center ml-2\">\n      <span class=\"far fa-search fa-lg text-primary \" *ngIf=\"!searchString\"></span>\n      <span class=\"fas fa-times p-2 fa-lg text-dark cursor-pointer\" *ngIf=\"searchString\"\n        (click)=\"resetSearchField()\"></span>\n    </div>\n  </div>\n  <div class=\"d-flex text-uppercase text-muted justify-content-between flex-grow-1 mb-1\">\n    <ng-container *ngIf=\"itemsList\">\n      <span class=\"fs-large align-self-center bold\"> {{itemsList.length}}\n        {{pageOptions.counterLabel | translate}}\n      </span>\n    </ng-container>\n    <ng-container\n      *ngIf=\"itemsList && itemsList.length>0 && pageData.showHeaderButtons && pageData.headerButtons && pageData.headerButtons.length>0\">\n      <div class=\"d-flex\">\n        <ng-container *ngFor=\"let btn of pageData.headerButtons; let currentIndex = index\">\n          <button class=\"btn btn-link my-1 text-uppercase\" (click)=\"btnClick(btn)\" [class]=\"btn.customStyleClass\"\n            [title]=\"btn.help && btn.help.text ? (btn.help.text | translate) : ''\" [disabled]=\"btn.isDisabled\">\n            <ng-container *ngIf=\"btn.text\">\n              {{btn.text | translate}}\n            </ng-container>\n            <ng-container *ngIf=\"btn.icon\">\n              <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n            </ng-container>\n          </button>\n\n        </ng-container>\n      </div>\n    </ng-container>\n  </div>\n\n  <ng-container *ngIf=\"!itemsToDisplay || itemsToDisplay.length==0 \">\n    <div class=\"mt-2 px-4 w-80\">\n      <div class=\"d-flex justify-content-center text-center flex-column\">\n        <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n        <span class=\"m-5 fs-large text-muted\">\n          {{\n          (!itemsList || itemsList.length==0) && (pageOptions && pageOptions.searchBarOptions &&\n          pageOptions.searchBarOptions.noElemFoundMessage) ?\n          (pageOptions.searchBarOptions.noElemFoundMessage | translate)\n          :('FEPB_GENERIC_NO_RESULTS' | translate)\n          }}\n        </span>\n      </div>\n    </div>\n  </ng-container>\n\n  <ng-container\n    *ngIf=\"itemsList && itemsList.length==0 && pageData.showHeaderButtons && pageData.headerButtons && pageData.headerButtons.length>0\">\n    <div class=\"d-flex flex-column justify-content-center align-items-center flex-grow-1\">\n      <ng-container *ngFor=\"let btn of pageData.headerButtons; let currentIndex = index\">\n        <button class=\"btn btn-sm my-1 \" (click)=\"btnClick(btn)\" [class]=\"btn.customStyleClass\"\n          [class.btn-outline-primary]=\"btn.style == 'outline'\" [class.btn-primary]=\"btn.style == 'default'\"\n          [title]=\"btn.help && btn.help.text ? (btn.help.text | translate) : ''\" [disabled]=\"btn.isDisabled\">\n          <ng-container *ngIf=\"btn.text\">\n            {{btn.text | translate}}\n          </ng-container>\n          <ng-container *ngIf=\"btn.icon\">\n            <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n          </ng-container>\n        </button>\n\n      </ng-container>\n    </div>\n  </ng-container>\n\n\n  <ng-container *ngFor=\"let data of itemsToDisplay; let curretIndex = index;\">\n    <div class=\"d-flex my-2 justify-content-start w-100\" style=\"min-width: 50vw !important;\">\n      <div class=\"d-flex flex-grow-1 flex-column\">\n        <div class=\"d-flex  justify-content-between\" *ngIf=\"data.header\">\n          <div class=\"d-flex flex-column\">\n            <span class=\"bold text-uppercase\" *ngIf=\"data.header.title\">{{data.header.title | translate}}</span>\n            <span class=\"text-muted font-smaller text-truncate pr-1 align-self-start\" style=\"max-width:35vw\"\n              *ngIf=\"data.header.description\" nz-tooltip [nzTooltipTitle]=\"(data.header.description | translate)\"\n              nzTooltipOverlayClassName=\"tooltip-help\">{{data.header.description | translate}}</span>\n          </div>\n          <ng-container *ngIf=\"data.header.buttons && data.header.buttons.length>0\">\n            <div class=\"d-flex justify-content-end align-items-end\">\n              <ng-container *ngFor=\"let btn of data.header.buttons; let currentIndex = index\">\n                <button class=\"btn btn-link btn-sm p-0 my-0 mx-1 font-small text-uppercase\" [disabled]=\"btn.isDisabled\"\n                  [class]=\"btn.customStyleClass\" (click)=\"btnClick(btn)\" [nz-popconfirm]=\"btn.popConfirm\"\n                  [nzPopconfirmTitle]=\"btn.popConfirm?btn.popConfirm.title?(btn.popConfirm.title | translate):('FEPB_LIST_CARD_POPCONFIRM_TITLE' | translate):''\"\n                  nzPopconfirmShowArrow=\"false\"\n                  [nzOkText]=\"btn.popConfirm?btn.popConfirm.confirmText?(btn.popConfirm.confirmText | translate):('FEPB_LIST_CARD_POPCONFIRM_OKTEXT' | translate):''\"\n                  [nzCancelText]=\"btn.popConfirm?btn.popConfirm.cancelText?(btn.popConfirm.cancelText | translate):('FEPB_LIST_CARD_POPCONFIRM_CANCELTEXT' | translate):''\"\n                  (nzOnConfirm)=\"btnClick(btn,true)\">{{btn.text | translate}}\n                  <ng-container *ngIf=\"btn.icon\">\n                    <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n                  </ng-container>\n                </button>\n              </ng-container>\n            </div>\n          </ng-container>\n        </div>\n        <div class=\"border border-primary rounded shadow-sm py-2 px-2 border h-100 d-flex my-auto\">\n          <ng-container *ngIf=\"data.content && data.content.length>0\">\n            <div class=\"d-flex flex-wrap w-100\">\n              <span class=\"d-flex font-small justify-content-start\" *ngFor=\"let dataEl of data.content\"\n                [ngClass]=\"data.content && data.content.length < 2 ? 'w-100' : 'w-50'\">\n                <ng-container *ngIf=\"dataEl\">\n                  <span class=\"text-muted text-uppercase text-truncate\"\n                    [ngClass]=\"data.content && data.content.length < 2 ? 'w-25' : 'w-50'\"\n                    [title]=\"dataEl.label?(dataEl.label | translate):''\">{{dataEl.label | translate}}</span>\n                  <span class=\"bold text-truncate pl-1\"\n                    [ngClass]=\"data.content && data.content.length < 2 ? 'w-75' : 'w-50'\"\n                    [title]=\"dataEl.value?(dataEl.value | translate):''\" doubleclick-copy>{{dataEl.value |\n                    translate}}</span>\n                </ng-container>\n              </span>\n              <!-- <span class=\"d-flex font-small justify-content-between w-50 \" *ngFor=\"let data of data.content\">\n                  <span class=\"w-50 text-muted text-uppercase\">{{data.label}}</span>\n                  <span class=\"w-50 bold pl-1\">{{data.value}}</span>\n                </span> -->\n            </div>\n          </ng-container>\n        </div>\n        <ng-container *ngIf=\"data.content && data.content.length==0\">\n          <div class=\"border rounded shadow-sm py-2 px-4 border \">\n            <div class=\"w-100 d-flex flex-column\">\n              <div class=\"d-flex align-items-center justify-content-between mx-2 my-1\">\n                <span class=\"text-muted\">{{data.emptyMessage?(data.emptyMessage | translate):('FEPB_LIST_CARD_NO_DATA' |\n                  translate)}}</span>\n              </div>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n      <ng-container *ngIf=\"data.buttons && data.buttons.length>0\">\n        <div class=\"d-flex flex-column justify-content-center align-items-center pl-2\"\n          style=\"width: 8em;min-width: 8em;\"\n          [ngStyle]=\"{'margin-top': (data.header && data.header.description) ? '40px': '22px'}\">\n          <ng-container *ngFor=\"let btn of data.buttons; let currentIndex = index\">\n            <!-- [class.btn-sm]=\"btn.size == 'small'\" -->\n            <button (click)=\"btnClick(btn)\" class=\"btn btn-sm my-1\" [class]=\"btn.customStyleClass\"\n              [class.btn-outline-primary]=\"btn.style == 'outline'\" [class.btn-primary]=\"btn.style == 'default'\"\n              [title]=\"btn.help?.text ? (btn.help?.text | translate) : ''\" [disabled]=\"btn.isDisabled\"\n              [nz-popconfirm]=\"btn.popConfirm\"\n              [nzPopconfirmTitle]=\"btn.popConfirm?btn.popConfirm.title?(btn.popConfirm.title | translate):('FEPB_LIST_CARD_POPCONFIRM_TITLE' | translate):''\"\n              nzPopconfirmShowArrow=\"false\"\n              [nzOkText]=\"btn.popConfirm?btn.popConfirm.confirmText?(btn.popConfirm.confirmText | translate):('FEPB_LIST_CARD_POPCONFIRM_OKTEXT' | translate):''\"\n              [nzCancelText]=\"btn.popConfirm?btn.popConfirm.cancelText?(btn.popConfirm.cancelText | translate):('FEPB_LIST_CARD_POPCONFIRM_CANCELTEXT' | translate):''\"\n              (nzOnConfirm)=\"btnClick(btn,true)\">\n              {{btn.text | translate}}\n              <ng-container *ngIf=\"btn.icon\">\n                <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n              </ng-container>\n            </button>\n          </ng-container>\n        </div>\n      </ng-container>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"pageData.showFooterButtons && pageData.footerButtons && pageData.footerButtons.length>0\">\n    <div class=\"d-flex flex-column justify-content-center align-items-center flex-grow-1\"\n      style=\"margin-top:22px !important;\">\n      <ng-container *ngFor=\"let btn of pageData.footerButtons; let currentIndex = index\">\n        <button class=\"btn btn-sm my-1 \" (click)=\"btnClick(btn)\" [class]=\"btn.customStyleClass\"\n          [class.btn-outline-primary]=\"btn.style == 'outline'\" [class.btn-primary]=\"btn.style == 'default'\"\n          [title]=\"btn.help && btn.help.text ? (btn.help.text | translate) : ''\" [disabled]=\"btn.isDisabled\">\n          <ng-container *ngIf=\"btn.text\">\n            {{btn.text | translate}}\n          </ng-container>\n          <ng-container *ngIf=\"btn.icon\">\n            <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n          </ng-container>\n        </button>\n\n      </ng-container>\n    </div>\n  </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!pageData\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n    </div>\n  </div>\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from 'lodash';\nimport Fuse from 'fuse.js';\nimport { PageBuilderService } from '../../../services/page-builder.service';\nimport { SectionContent } from '../../../types/external-types/sectionContent';\nimport { SectionElement } from '../../../types/external-types/sectionElement';\nimport {\n  PbPaginatedPageOptions,\n  PbChecklistDocument,\n  PageBuilderDefaultButton,\n  PageBuilderDropdownButton,\n  PbDefaultButtonOutput,\n} from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-checklist-documents',\n  templateUrl: './pb-checklist-documents.component.html',\n  styleUrls: ['./pb-checklist-documents.component.scss'],\n})\nexport class PbChecklistDocumentsComponent implements OnInit {\n  /**\n   * Componente per instanziare una lista di documenti differenziati per il loro status + titolo e barra di ricerca\n   * Gli elementi da instanziare devono trovarsi all'interno del campo elements della SectionElement in input\n   * Il metodo mapInputValues controlla i campi 'status' e 'data caricamento' [esposto] e sposta tutti gli altri campi all'interno degli extraData a scomparsa\n   * I documenti con status a 'false' risulteranno come richiesti all'utente\n   * A piè di pagina c'è la gestione degli ActionButton del componente\n   */\n\n  @Input('pageStructure') set pageStructure(value: SectionElement) {\n    if (value) {\n      this.initPage(value);\n    }\n  }\n\n  @Output('onUpdate') onUpdate: EventEmitter<void> = new EventEmitter();\n\n  pageData: SectionContent | null = null; //SectionElement manca elements sul tipo\n\n  pageOptions: PbPaginatedPageOptions = {\n    searchBarOptions: {\n      minChar: 3,\n      noElemFoundMessage: 'FEPB_CHECKLIST_DOC_NO_ELEM_FOUND',\n      placeholder: 'FEPB_CHECKLIST_DOC_PLACEHOLDER',\n    },\n    showSearchBar: true,\n    pageIndex: 1,\n    pageSize: 10, // Ensure valid default\n    itemButtonDisplayMode: 'dropdown', // Explicit default\n  };\n\n  itemsToDisplay: PbChecklistDocument[] = [];\n  paginatedItemsToDisplay: PbChecklistDocument[] = [];\n\n  itemsList: PbChecklistDocument[] = [];\n\n  isLoading: boolean = false;\n\n  searchString: string | null = null;\n\n  pageTitle: string | null = null;\n\n  errors: string[] | null = null; //vecchia gestione errori ancora implementabile se arrivano in qualche modo da server\n\n  constructor(private pageBuilderService: PageBuilderService) {}\n\n  ngOnInit(): void {}\n\n  initPage(pageStructure: SectionElement) {\n    if (pageStructure) {\n      this.pageData = _.cloneDeep(pageStructure) as any;\n      //this.pageData = _.cloneDeep(value);\n      if (pageStructure.title) {\n        this.pageTitle = pageStructure.title;\n      }\n      if (this.pageData?.elements) {\n        this.initItems(this.pageData.elements);\n      }\n      this.initPageOptions((this.pageData as any).options);\n    }\n  }\n\n  initItems(value: any) {\n    this.isLoading = true;\n    let mappedDocs = _.cloneDeep(this.mapInputValues(value));\n    this.itemsList = _.cloneDeep(mappedDocs); //no sort  mock_dock_2 as any;\n    this.itemsToDisplay = [...this.itemsList];\n    this.setPaginatedItemsToDisplay(\n      this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n    );\n    this.isLoading = false;\n  }\n\n  initPageOptions(options: any) {\n    if (options) {\n      // Merge defaults with incoming options carefully\n      const defaultOptions = {\n        // Re-state defaults for merging\n        searchBarOptions: {\n          minChar: 3,\n          noElemFoundMessage: 'FEPB_CHECKLIST_DOC_NO_ELEM_FOUND',\n          placeholder: 'FEPB_CHECKLIST_DOC_PLACEHOLDER',\n        },\n        showSearchBar: true,\n        pageIndex: 1,\n        pageSize: 10,\n        itemButtonDisplayMode: 'dropdown',\n      };\n      // Deep merge, ensuring incoming options don't overwrite with invalid values for critical fields\n      this.pageOptions = _.merge({}, defaultOptions, options);\n\n      // Explicitly validate pageSize after merge\n      if (!this.pageOptions.pageSize || this.pageOptions.pageSize <= 0) {\n        console.warn('Invalid pageSize received in options, defaulting to 10.');\n        this.pageOptions.pageSize = 10;\n      }\n      // Reset pageIndex if it's invalid or doesn't make sense with new data/pageSize (optional but good practice)\n      if (!this.pageOptions.pageIndex || this.pageOptions.pageIndex <= 0) {\n        this.pageOptions.pageIndex = 1;\n      }\n    } else {\n      // If no options passed, ensure the initial defaults are set (already done at property declaration)\n    }\n    // Reset page index if it's out of bounds after options potentially changed total items/pageSize\n    // This is better done after items are initialized\n  }\n\n  mapInputValues(value: any) {\n    return value.map((el: any) => {\n      const content = _.cloneDeep(el.content);\n      if (content) {\n        el.content = content.filter(\n          (o: any) => o.label.toLowerCase() == 'data caricamento'\n        );\n        const status = content.find(\n          (o: any) => o.label.toLowerCase() == 'status'\n        );\n        el.docStatus = status ? status.value == 'true' : false;\n        el.extraData = content.filter(\n          (o: any) =>\n            o.label.toLowerCase() !== 'data caricamento' &&\n            o.label.toLowerCase() !== 'status'\n        );\n      }\n      return el;\n    });\n  }\n\n  onSearch(event: any) {\n    if (event) {\n      if (event && this.searchString) {\n        this.search(this.searchString);\n      } else if (!this.searchString || this.searchString == '') {\n        this.resetSearchField();\n      }\n    }\n  }\n\n  resetSearchField() {\n    this.searchString = null;\n    this.itemsToDisplay = [...this.itemsList];\n    this.setPaginatedItemsToDisplay(\n      this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n    );\n  }\n\n  search(label: string | null = null) {\n    let results = [];\n    if (label) {\n      var options = {\n        threshold: 0.1,\n        distance: 1000,\n        location: 10,\n        keys: ['header.title'],\n      };\n      var fuse = new Fuse(this.itemsList, options);\n      try {\n        if (label.length > this.pageOptions.searchBarOptions.minChar) {\n          results = fuse.search(label);\n          this.itemsToDisplay = [];\n          this.itemsToDisplay = _.cloneDeep(results.map((el) => el.item));\n          this.setPaginatedItemsToDisplay(\n            this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n          );\n        } else {\n          this.itemsToDisplay = [...this.itemsList];\n          this.setPaginatedItemsToDisplay(\n            this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n          );\n        }\n      } catch (e) {\n        results = [];\n      }\n    } else {\n    }\n  }\n\n  /**\n   * ZS centralizzo i set\n   * @param items\n   */\n  setPaginatedItemsToDisplay(items: PbChecklistDocument[]) {\n    const itemsToDisplay: PbChecklistDocument[] = _.cloneDeep(items);\n    itemsToDisplay.forEach((element: PbChecklistDocument) => {\n      // Only create dropdown if mode is not 'row' (dropdown is default)\n      if (\n        !(element as any).dropdownButton &&\n        this.pageOptions?.itemButtonDisplayMode !== 'row'\n      ) {\n        // Directly use element.buttons, assuming addPreviewButton is removed or handled elsewhere if needed\n        (element as any).dropdownButton = this.getDropdownFromButtons(\n          element.buttons\n        );\n      }\n      // If mode is 'row', we'll let the template render element.buttons directly\n    });\n    this.paginatedItemsToDisplay = itemsToDisplay;\n  }\n\n  addPreviewButton(_buttons: PageBuilderDefaultButton[]) {\n    let buttons: PageBuilderDefaultButton[] = _.cloneDeep(_buttons);\n    const downloadButton = buttons.find(\n      (el) =>\n        el.callAPIActionButton && el.callAPIActionButton.apiMethod == 'download'\n    );\n    const previewButtons = buttons.filter(\n      (el) =>\n        el.callAPIActionButton &&\n        el.callAPIActionButton.apiMethod == 'downloadPreview'\n    );\n    if (\n      downloadButton &&\n      ((previewButtons && previewButtons.length == 0) || !previewButtons)\n    ) {\n      let previewButton: PageBuilderDefaultButton = _.cloneDeep(downloadButton);\n      (previewButton.text = 'FEPB_CHECKLIST_DOC_BTNTEXT'), //'Anteprima';\n        (previewButton.icon = downloadButton.icon ? 'fa-search' : undefined);\n      if (previewButton.callAPIActionButton) {\n        previewButton.callAPIActionButton.apiMethod = 'downloadPreview';\n      }\n      buttons.unshift(previewButton);\n    }\n    return buttons;\n  }\n\n  getDropdownFromButtons(buttons: PageBuilderDefaultButton[]) {\n    let dropdown: PageBuilderDropdownButton | null = null;\n    if (buttons.length > 0) {\n      dropdown = {\n        labelDropdown: {\n          icon: 'fa-chevron-down',\n          label: 'FEPB_CHECKLIST_DOC_BTNACTIONS',\n          customStyleClass: 'link-goes-bigger',\n        },\n        list: buttons,\n      };\n    }\n    return dropdown;\n  }\n\n  btnHandler(event: PbDefaultButtonOutput) {\n    if (event) {\n      let btn = _.cloneDeep(event.btn);\n      let subLoading = event.sub;\n      if (btn) {\n        if (subLoading) {\n          subLoading.next({ loading: true });\n        }\n\n        this.pageBuilderService\n          .handlerActionButton(btn)\n          .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n      }\n    }\n  }\n\n  handlerActionButtonResFn(res: any, subLoading: any) {\n    if (res) {\n      if (res.result) {\n        if (res.needRefresh) {\n          this.onUpdate.emit();\n        }\n\n        if (res.closeModal) {\n        }\n        if (res.eventToHandle) {\n          if (res.eventToHandle.eventName == 'need-refresh') {\n            console.log(\n              'pb-checklist-documents received need-refresh event, emitting onUpdate'\n            );\n            this.onUpdate.emit();\n          }\n        }\n        if (subLoading) {\n          subLoading.next({ loading: false });\n        }\n      } else {\n        if (res.error) {\n          if (subLoading) {\n            subLoading.next({\n              loading: false,\n              message: res.error.messages[0] || 'FEPB_GENERIC_OPERATIONERROR',\n            });\n          }\n        } else {\n          if (subLoading) {\n            subLoading.next({ loading: false });\n          }\n        }\n      }\n    } else {\n      if (subLoading) {\n        subLoading.next({ loading: false });\n      }\n    }\n  }\n\n  pageIndexChange(newIndex: number) {\n    // Ensure options and items exist\n    if (!this.pageOptions || !this.itemsToDisplay) return;\n\n    // Ensure pageSize is valid\n    const pageSize =\n      this.pageOptions.pageSize > 0 ? this.pageOptions.pageSize : 10;\n    const totalItems = this.itemsToDisplay.length || 0;\n    const maxPageIndex = Math.max(1, Math.ceil(totalItems / pageSize)); // Calculate max valid page index\n\n    // Clamp the index\n    const validIndex = Math.max(1, Math.min(newIndex, maxPageIndex));\n    this.pageOptions.pageIndex = validIndex; // Update the model value\n\n    const startIndex = (validIndex - 1) * pageSize;\n    const endIndex = startIndex + pageSize;\n    const pagedItems = this.itemsToDisplay.slice(startIndex, endIndex);\n    this.setPaginatedItemsToDisplay(_.cloneDeep(pagedItems));\n  }\n}\n","<ng-container *ngIf=\"pageData\">\n  <div\n    class=\"d-flex text-uppercase text-primary font-x-large justify-content-start w-100 mb-2\"\n  >\n    <ng-container *ngIf=\"pageTitle && pageTitle !== ''\">\n      <span class=\"bold\"> {{ pageTitle | translate }} </span>\n    </ng-container>\n  </div>\n  <div\n    class=\"d-flex w-100 mb-2\"\n    *ngIf=\"\n      pageOptions &&\n      pageOptions.showSearchBar &&\n      itemsList &&\n      itemsList.length > 0\n    \"\n  >\n    <input\n      class=\"w-100 form-control\"\n      [placeholder]=\"\n        pageOptions?.searchBarOptions?.placeholder || '' | translate\n      \"\n      style=\"line-height: 24px\"\n      type=\"text\"\n      name=\"textSearch\"\n      #textSearch\n      [(ngModel)]=\"searchString\"\n      (input)=\"onSearch($event)\"\n    />\n    <div\n      class=\"d-flex flex-column justify-content-center align-items-center ml-2\"\n    >\n      <span\n        class=\"far fa-search fa-lg text-primary\"\n        *ngIf=\"!searchString\"\n      ></span>\n      <span\n        class=\"fas fa-times p-2 fa-lg text-dark cursor-pointer\"\n        *ngIf=\"searchString\"\n        (click)=\"resetSearchField()\"\n      ></span>\n    </div>\n  </div>\n  <ng-container *ngIf=\"!itemsToDisplay || itemsToDisplay.length == 0\">\n    <div class=\"mt-2 py-4 px-4 w-100\">\n      <div class=\"d-flex justify-content-center text-center flex-column\">\n        <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n        <span class=\"m-5 fs-large text-muted\">\n          {{\n            (!itemsList || itemsList.length == 0) &&\n            pageOptions &&\n            pageOptions.searchBarOptions &&\n            pageOptions.searchBarOptions.noElemFoundMessage\n              ? (pageOptions.searchBarOptions.noElemFoundMessage | translate)\n              : (\"FEPB_GENERIC_NO_RESULTS\" | translate)\n          }}\n        </span>\n      </div>\n    </div>\n  </ng-container>\n\n  <nz-pagination\n    [(nzPageIndex)]=\"pageOptions.pageIndex\"\n    [nzPageSize]=\"pageOptions?.pageSize || 10\"\n    (nzPageSizeChange)=\"pageOptions.pageSize = $event; pageIndexChange(1)\"\n    [nzTotal]=\"itemsToDisplay?.length || 0\"\n    [nzSize]=\"'small'\"\n    (nzPageIndexChange)=\"pageIndexChange($event)\"\n  >\n  </nz-pagination>\n\n  <div class=\"flex-column flex-grow-1 d-flex\">\n    <ng-container *ngIf=\"errors && errors.length > 0\">\n      <nz-alert nzType=\"error\" [nzDescription]=\"msgErrors\"> </nz-alert>\n      <ng-template #msgErrors>\n        <div class=\"d-flex flex-column\">\n          <span class=\"text-danger bold\"\n            >{{ errors.length }}\n            {{ \"FEPB_CHECKLIST_DOC_ERROR_MSG\" | translate }}:</span\n          >\n          <span class=\"font-small\" *ngFor=\"let err of errors\">{{\n            err | translate\n          }}</span>\n        </div>\n      </ng-template>\n    </ng-container>\n    <!-- style=\"min-height: 40vh;max-height: 40vh;overflow-y: auto;\" -->\n    <div class=\"mt-3\">\n      <ng-container\n        *ngFor=\"let data of paginatedItemsToDisplay; let currentIndex = index\"\n      >\n        <ng-container *ngIf=\"data.docStatus\">\n          <div class=\"d-flex justify-content-between\">\n            <div class=\"d-flex justify-content-around my-2 w-80\">\n              <ng-container *ngIf=\"data.state && data.state.type\">\n                <div\n                  class=\"d-flex flex-column justify-content-center align-items-center\"\n                  style=\"width: 4em\"\n                >\n                  <div\n                    class=\"d-flex align-items-center px-3 justify-content-center\"\n                    style=\"border-radius: 25px; width: 35px; height: 35px\"\n                    [class.bg-danger]=\"\n                      data.state && data.state.type == 'danger'\n                    \"\n                    [class.bg-warning]=\"\n                      data.state && data.state.type == 'warning'\n                    \"\n                    [class.bg-success]=\"\n                      data.state && data.state.type == 'success'\n                    \"\n                    nz-tooltip\n                    [nzTooltipTitle]=\"data.state.help ? helpDocTooltip : null\"\n                    nzTooltipOverlayClassName=\"tooltip-help\"\n                  >\n                    <ng-container *ngIf=\"data.state.type == 'danger'\">\n                      <span class=\"far fa-lg text-white fa-times\"></span>\n                    </ng-container>\n                    <ng-container *ngIf=\"data.state.type == 'warning'\">\n                      <span class=\"far fa-lg text-white fa-clock\"></span>\n                    </ng-container>\n                    <ng-container *ngIf=\"data.state.type == 'success'\">\n                      <span class=\"far fa-lg text-white fa-check\"></span>\n                    </ng-container>\n                    <ng-template #helpDocTooltip>\n                      <ng-container *ngIf=\"data.state.help\">\n                        <div\n                          [innerHtml]=\"data.state.help.html | safeHtml : 'html'\"\n                          *ngIf=\"data.state.help.html\"\n                        ></div>\n                        <div *ngIf=\"data.state.help.text\">\n                          {{ data.state.help.text | translate }}\n                        </div>\n                      </ng-container>\n                    </ng-template>\n                  </div>\n                </div>\n              </ng-container>\n              <ng-container *ngIf=\"!data.state\">\n                <div\n                  class=\"d-flex flex-column justify-content-center align-items-center\"\n                  style=\"width: 4em\"\n                >\n                  <span class=\"far fa-file-check fa-2x text-success\"></span>\n                </div>\n              </ng-container>\n              <div class=\"d-flex w-100 flex-column justify-content-center\">\n                <div\n                  class=\"d-flex justify-content-start mb-1\"\n                  *ngIf=\"data.header\"\n                >\n                  <span class=\"bold text-uppercase\" *ngIf=\"data.header.title\">{{\n                    data.header.title | translate\n                  }}</span>\n                  <ng-container *ngIf=\"data.header.description\">\n                    <span\n                      class=\"text-muted font-smaller text-truncate font-italic px-1 align-self-center\"\n                      style=\"max-width: 20vw\"\n                      nz-tooltip\n                      [nzTooltipTitle]=\"data.header.description | translate\"\n                      nzTooltipOverlayClassName=\"tooltip-help\"\n                      >- {{ data.header.description | translate }}\n                    </span>\n                  </ng-container>\n                </div>\n                <ng-container *ngIf=\"data.content && data.content.length > 0\">\n                  <div class=\"d-flex flex-wrap w-100\">\n                    <span\n                      class=\"d-flex font-small justify-content-between w-50\"\n                      *ngFor=\"let data of data.content\"\n                    >\n                      <span class=\"w-50 text-muted text-uppercase\">{{\n                        data.label | translate\n                      }}</span>\n                      <span class=\"w-50 bold pl-1\">{{\n                        data.value | translate\n                      }}</span>\n                    </span>\n                  </div>\n                </ng-container>\n                <ng-container\n                  *ngIf=\"data.extraData && data.extraData.length > 0\"\n                >\n                  <a\n                    href=\"javascript:void(0);\"\n                    class=\"font-small\"\n                    data-toggle=\"collapse\"\n                    aria-expanded=\"false\"\n                    [attr.aria-controls]=\"'dati_' + currentIndex\"\n                    [attr.data-target]=\"'#dati_' + currentIndex\"\n                    >{{ \"FEPB_CHECKLIST_DOC_SHOW_HIDE\" | translate }}</a\n                  >\n                  <div\n                    class=\"d-flex flex-wrap collapse\"\n                    [attr.id]=\"'dati_' + currentIndex\"\n                  >\n                    <span\n                      class=\"d-flex justify-content-between w-50\"\n                      *ngFor=\"let extra of data.extraData\"\n                    >\n                      <span class=\"w-50 text-muted text-uppercase\">{{\n                        extra.label | translate\n                      }}</span>\n                      <span class=\"w-50 bold\">{{\n                        extra.value | translate\n                      }}</span>\n                    </span>\n                  </div>\n                </ng-container>\n              </div>\n            </div>\n            <div\n              class=\"d-flex flex-column justify-content-center align-items-end\"\n            >\n              <ng-container\n                *ngIf=\"pageOptions?.itemButtonDisplayMode !== 'row'\"\n              >\n                <ng-container *ngIf=\"data.dropdownButton\">\n                  <div\n                    class=\"pb-dropdown-button ml-2\"\n                    [dropdown]=\"data.dropdownButton\"\n                    (btnClickedOutput)=\"btnHandler($event)\"\n                  ></div>\n                </ng-container>\n              </ng-container>\n              <ng-container\n                *ngIf=\"pageOptions?.itemButtonDisplayMode === 'row'\"\n              >\n                <!-- New Row Buttons -->\n                <div class=\"d-flex align-items-center\">\n                  <ng-container\n                    *ngFor=\"let btn of data.buttons; let btnIndex = index\"\n                  >\n                    <button\n                      *ngIf=\"btn\"\n                      type=\"button\"\n                      class=\"btn btn-sm btn-link mx-1 text-body btn-pb-document\"\n                      [class]=\"btn.customStyleClass\"\n                      [nz-tooltip]=\"btn.text! | translate\"\n                      nzPlacement=\"top\"\n                      [disabled]=\"btn.isDisabled\"\n                      [nz-popconfirm]=\"btn.popConfirm?.title\"\n                      [nzPopconfirmTitle]=\"\n                        btn.popConfirm?.title\n                          ? (btn.popConfirm?.title || 'PROCEED?' | translate)\n                          : ''\n                      \"\n                      nzPopconfirmPlacement=\"topRight\"\n                      [nzOkText]=\"\n                        btn.popConfirm?.confirmText\n                          ? (btn.popConfirm?.confirmText! | translate)\n                          : ('FEPB_GENERIC_YES' | translate)\n                      \"\n                      [nzCancelText]=\"\n                        btn.popConfirm?.cancelText\n                          ? (btn.popConfirm?.cancelText! | translate)\n                          : ('FEPB_GENERIC_NO' | translate)\n                      \"\n                      (nzOnConfirm)=\"btnHandler({ btn: btn })\"\n                      (click)=\"!btn.popConfirm && btnHandler({ btn: btn })\"\n                    >\n                      <span\n                        *ngIf=\"btn.icon\"\n                        class=\"fas fa-lg\"\n                        [class]=\"btn.icon\"\n                      ></span>\n                      <!-- Fallback to text if no icon? Optional -->\n                      <span *ngIf=\"!btn.icon\">{{ btn.text! | translate }}</span>\n                    </button>\n                  </ng-container>\n                </div>\n              </ng-container>\n            </div>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"!data.docStatus\">\n          <div class=\"d-flex justify-content-between\">\n            <div class=\"d-flex justify-content-around my-2 w-80\">\n              <div\n                class=\"d-flex flex-column justify-content-center align-items-center\"\n                style=\"width: 4em\"\n              >\n                <span class=\"far fa-file-exclamation fa-lg text-muted\"></span>\n              </div>\n              <div class=\"d-flex w-100 flex-column justify-content-center\">\n                <div\n                  class=\"d-flex w-100 justify-content-start\"\n                  *ngIf=\"data.header\"\n                >\n                  <span class=\"bold text-uppercase\" *ngIf=\"data.header.title\">{{\n                    data.header.title | translate\n                  }}</span>\n                  <ng-container *ngIf=\"data.header.description\">\n                    <span\n                      class=\"text-muted font-smaller text-truncate font-italic px-1 align-self-center\"\n                      style=\"max-width: 20vw\"\n                      nz-tooltip\n                      [nzTooltipTitle]=\"data.header.description | translate\"\n                      nzTooltipOverlayClassName=\"tooltip-help\"\n                      >- {{ data.header.description | translate }}\n                    </span>\n                  </ng-container>\n                </div>\n                <span class=\"text-muted font-smaller\">{{\n                  \"FEPB_CHECKLIST_DOC_NO_ELEMENT\" | translate\n                }}</span>\n              </div>\n            </div>\n            <div\n              class=\"d-flex flex-column justify-content-center align-items-center\"\n            >\n              <ng-container\n                *ngIf=\"pageOptions?.itemButtonDisplayMode !== 'row'\"\n              >\n                <div\n                  class=\"w-100 pb-default-buttons\"\n                  [buttons]=\"data.buttons\"\n                  [btnAutoSize]=\"true\"\n                  [position]=\"'right'\"\n                  (btnClickedOutput)=\"btnHandler($event)\"\n                ></div>\n              </ng-container>\n              <ng-container\n                *ngIf=\"pageOptions?.itemButtonDisplayMode === 'row'\"\n              >\n                <!-- New Row Buttons -->\n                <div class=\"d-flex align-items-center\">\n                  <ng-container\n                    *ngFor=\"let btn of data.buttons; let btnIndex = index\"\n                  >\n                    <button\n                      *ngIf=\"btn\"\n                      type=\"button\"\n                      class=\"btn btn-sm btn-link mx-1 text-body btn-pb-document\"\n                      [class]=\"btn.customStyleClass\"\n                      [nz-tooltip]=\"btn.text! | translate\"\n                      nzPlacement=\"top\"\n                      [disabled]=\"btn.isDisabled\"\n                      [nz-popconfirm]=\"btn.popConfirm?.title\"\n                      [nzPopconfirmTitle]=\"\n                        btn.popConfirm?.title\n                          ? (btn.popConfirm?.title! | translate)\n                          : ''\n                      \"\n                      nzPopconfirmPlacement=\"topRight\"\n                      [nzOkText]=\"\n                        btn.popConfirm?.confirmText\n                          ? (btn.popConfirm?.confirmText! | translate)\n                          : ('FEPB_GENERIC_YES' | translate)\n                      \"\n                      [nzCancelText]=\"\n                        btn.popConfirm?.cancelText\n                          ? (btn.popConfirm?.cancelText! | translate)\n                          : ('FEPB_GENERIC_NO' | translate)\n                      \"\n                      (nzOnConfirm)=\"btnHandler({ btn: btn })\"\n                      (click)=\"!btn.popConfirm && btnHandler({ btn: btn })\"\n                    >\n                      <span\n                        *ngIf=\"btn.icon\"\n                        class=\"fas fa-lg\"\n                        [class]=\"btn.icon\"\n                      ></span>\n                    </button>\n                  </ng-container>\n                </div>\n              </ng-container>\n            </div>\n          </div>\n        </ng-container>\n        <nz-divider class=\"my-2\"></nz-divider>\n      </ng-container>\n    </div>\n  </div>\n\n  <ng-container\n    *ngIf=\"\n      pageData.showFooterButtons &&\n      pageData.footerButtons &&\n      pageData.footerButtons.length > 0\n    \"\n  >\n    <div\n      class=\"w-100 pb-default-buttons my-2\"\n      [buttons]=\"pageData.footerButtons\"\n      (btnClickedOutput)=\"btnHandler($event)\"\n    ></div>\n    <!-- <div class=\"d-flex flex-column justify-content-center align-items-center ml-2\">\n      <ng-container *ngFor=\"let btn of pageData.footerButtons; let currentIndex = index\">\n        <button class=\"btn btn-sm my-1 \" (click)=\"btnClick(btn)\" [class]=\"btn.customStyleClass\"\n          [class.btn-outline-primary]=\"btn.style == 'outline'\" [class.btn-primary]=\"btn.style == 'default'\"\n          [title]=\"btn.help?.text ? btn.help?.text : ''\" [disabled]=\"btn.isDisabled\">\n          {{btn.text}}\n          <ng-container *ngIf=\"btn.icon\">\n            <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n          </ng-container>\n        </button>\n      </ng-container>\n    </div> -->\n  </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!pageData\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{\n        \"FEPB_GENERIC_NO_DATA_CONTENT\" | translate\n      }}</span>\n    </div>\n  </div>\n</ng-container>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { ApiCallerService } from '../../services/api-caller.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UploadParamsDTO } from '../../types/external-types/uploadParamsDTO';\nimport { HTTPUtils } from '@alfercom/common';\n\n@Component({\n  selector: '.multi-file-dropper',\n  templateUrl: './multi-file-dropper.component.html',\n  styleUrls: ['./multi-file-dropper.component.scss'],\n})\nexport class MultiFileDropperComponent implements OnInit {\n  @Input('extensions') set extensions(value: string[]) {\n    if (value) {\n      this.fileExtensions = value;\n    } else {\n      this.fileExtensions = [];//se è vuoto accetto ogni tipo\n    }\n  }\n  @Input('maxFileNumber') set maxFileNumber(value: number) {\n    if (value) {\n      this.maxNumber = value;\n    } else {\n      this.maxNumber = 5; //massimo numero di file caricabili in una volta\n    }\n  }\n  @Input('maxFileSize') set maxFileSize(value: number) {\n    if (value) {\n      this.maxSize = value;\n    } else {\n      this.maxSize = 2;//dimensione massima dei singoli file in MB\n    }\n  }\n  @Input('stickyDropper') set stickyDropper(value: boolean) {\n    if (value !== null && value !== undefined) {\n      this.keepDropper = value;\n    } else {\n      this.keepDropper = true; //mantiene il file dropper in alto anche dopo il primo caricamento\n    }\n  }\n\n  @Input('errors') set errorMessages(values: string[]) {\n    if (values) {\n      this.errorMessages = values;\n    }\n  }\n\n  @Input('settingsInput') set settingsInput(settingsInput: UploadParams) {\n    if (settingsInput) {\n      this.settings = _.cloneDeep(settingsInput);\n    } else {\n      console.error(\"Upload settings missing!\")\n      this.settings = {\n        context: null,\n        filetype: null,\n        referenceId: null,\n      };\n    }\n  }\n\n  @Output('outputData') outputDataEmitter: EventEmitter<\n    any\n  > = new EventEmitter();\n\n  filesDropped: boolean = false; //flag se qualcosa è stato buttato dentro il dropper\n\n  filesToUpload: MultiFileDropped[] = []; //lista contentente i file da caricare\n\n  extensionErrors: string[] = [];\n  numberOverflowErrors: string[] = [];\n  sizeOverflowErrors: string[] = [];\n  alreadyPresentErrors: string[] = [];\n  errorFlag = false;\n\n  editFlag = false;\n\n  loading = false; // caricamento generico della pagina\n\n  settings!: UploadParams;\n  fileExtensions: string[] | undefined = undefined;\n  maxNumber: number = 1;\n  maxSize: number = 10; //MB\n  keepDropper: boolean = false;\n\n  editDataForm = new FormGroup({\n    name: new FormControl(),\n    note: new FormControl(),\n  });\n\n  refreshFatherComponent: boolean = false;\n\n  counterFileToUp: number = 0;\n  numberFileToUp: number = 0;\n\n  multiFileDropper: boolean = true;\n\n  constructor(\n    private apiCallerService: ApiCallerService,\n    private modal: NzModalRef,\n    private translateService: TranslateService\n    ) { }\n\n  ngOnInit(): void { }\n\n  ngOnDestroy(): void {\n    for (let file of this.filesToUpload) {\n      if (file.sub && !file.sub.closed) {\n        file.sub.unsubscribe();\n      }\n    }\n  }\n\n  fileOver(event: any) {\n    //do nothing\n  }\n\n  public dropped(event: any) {\n    //UploadEvent\n    const files = event.files ? event.files : event;\n    this.clearErrors();\n    if (files.length > this.maxNumber) {\n      this.errorFlag = true;\n      this.numberOverflowErrors.push('FEPB_MULTIDROPPER_OVERFLOWERROR');\n    } else {\n      for (const droppedFile of files) {\n        if (droppedFile.fileEntry.isFile) {\n          const fileEntry = droppedFile.fileEntry as any; //FileSystemFileEntry;\n          fileEntry.file(async (file: File) => {\n            // Here you can access the real file\n            this.checkFile(file);\n          });\n        } else {\n          //not a file\n          this.errorFlag = true;\n          this.errorMessages.push('FEPB_MULTIDROPPER_INVALID_FILE');\n        }\n      }\n    }\n  }\n\n  async checkFile(file: any) {\n    //check se è già presente\n    let indexPres = this.filesToUpload.findIndex(\n      (el) => el.fullName == file.name\n    );\n    if (indexPres == -1) {\n      //check dimensione massima\n      const sizeMB = file.size / 1024 / 1024;\n      if (sizeMB < this.maxSize) {\n        let indexExt =\n          file.name.indexOf('.') !== -1 ? file.name.indexOf('.') : undefined;\n        const extension = file.name.substr(indexExt + 1);\n        if (this.fileExtensions && this.fileExtensions.length > 0) {\n          const isPermitted = this.fileExtensions.findIndex(\n            (el) => el == extension\n          );\n          if (isPermitted == -1) {\n            this.errorFlag = true;\n            this.extensionErrors.push(file.name + this.translateService.instant('FEPB_MULTIDROPPER_UNSUPPORTED_FORMAT_SUFFIX'));\n          } else {\n            await this.addFile(file);\n          }\n        } else {\n          //nessun controllo sull'estensione\n          await this.addFile(file);\n        }\n      } else {\n        this.errorFlag = true;\n        this.sizeOverflowErrors.push(file.name + this.translateService.instant('FEPB_MULTIDROPPER_DIMENSION_EXCEEDED_SUFFIX'));\n      }\n    } else {\n      this.errorFlag = true;\n      this.alreadyPresentErrors.push(file.name + this.translateService.instant('FEPB_MULTIDROPPER_ALREADY_LOADED_SUFFIX'));\n    }\n  }\n\n  async addFile(file: any) {\n    this.filesDropped = true;\n    let fileToUpload = this.newFileDropped();\n    let indexExt =\n      file.name.indexOf('.') !== -1 ? file.name.indexOf('.') : undefined;\n    const extension = file.name.substr(indexExt + 1) || '';\n    const rawB64 = await this.ottieniB64(file);\n    const base64 = rawB64.split(',')[1];\n    const mime = rawB64.split(',')[0];\n    const fileNameUploaded = file.name;\n    const sizeMB = file.size / 1024 / 1024;\n\n    fileToUpload.base64 = base64;\n    fileToUpload.blob = file;\n    fileToUpload.fullName = fileNameUploaded;\n    fileToUpload.mime = mime;\n    fileToUpload.dimension = file.size;\n    fileToUpload.sizeMB = sizeMB;\n    fileToUpload.extention = extension ? extension.toLowerCase() : null;\n    fileToUpload.lastModified = file.lastModified;\n    fileToUpload.name = fileNameUploaded;\n    fileToUpload.note = null;\n    fileToUpload.editing = false;\n    fileToUpload.loading = false;\n    fileToUpload.uploaded = false;\n\n    this.filesToUpload.push(_.cloneDeep(fileToUpload));\n  }\n\n  initDocUploaded() { }\n\n  async ottieniB64(raw: Blob | File) {\n    return new Promise<any>((resolve, reject) => {\n      let reader = new FileReader();\n      reader.readAsDataURL(raw);\n      reader.onloadend = (event) => {\n        resolve(reader.result);\n      };\n      reader.onerror = (event) => {\n        reject(reader.error);\n      };\n    });\n  }\n\n  onFileChange(event: any) {\n    if (event.target.files && event.target.files.length > 0) {\n      if (event.target.files.length > this.maxNumber) {\n        this.errorFlag = true;\n        this.numberOverflowErrors.push('FEPB_MULTIDROPPER_OVERFLOWERROR');\n      } else {\n        this.clearErrors();\n        this.changeFileUploaded(event.target.files);\n      }\n    }\n  }\n\n  async changeFileUploaded(files: any) {\n    if (files) {\n      for (const file of files) {\n        this.checkFile(file);\n      }\n    }\n  }\n\n  clearAll() {\n    this.filesDropped = false;\n    this.filesToUpload = [];\n    this.clearErrors();\n  }\n\n  clearErrors() {\n    this.errorFlag = false;\n    this.extensionErrors = [];\n    this.numberOverflowErrors = [];\n    this.sizeOverflowErrors = [];\n    this.alreadyPresentErrors = [];\n  }\n\n  editFile(index: number) {\n    this.clearEditForm();\n    this.editDataForm.setValue({\n      name: this.filesToUpload[index].name,\n      note: this.filesToUpload[index].note,\n    });\n    if (this.filesToUpload[index]) {\n      this.editFlag = !this.editFlag;\n      this.filesToUpload[index].editing = true;\n    }\n  }\n\n  clearEditForm() {\n    this.editDataForm = new FormGroup({\n      name: new FormControl(null),\n      note: new FormControl(null),\n    });\n  }\n\n  newFileDropped(): MultiFileDropped {\n    return {\n      base64: '',\n      dimension: null,\n      sizeMB: null,\n      extention: '',\n      name: '',\n      fullName: '',\n      mime: '',\n      editing: false,\n      note: '',\n      blob: null,\n      lastModified: null,\n      loading: false,\n      sub: null,\n      uploaded: false,\n      errorMsg: '',\n    };\n  }\n\n  uploadAll() {\n    const needToUpload = this.filesToUpload.filter(el => !el.uploaded);\n    this.numberFileToUp = needToUpload ? needToUpload.length : 0;\n    if (this.settings && this.settings.context && this.settings.filetype && this.settings.referenceId && needToUpload.length > 0) {\n      this.loading = true;\n      let request: UploadParamsDTO = {\n        context: this.settings.context,\n        filetype: this.settings.filetype,\n        referenceId: this.settings.referenceId,\n      };\n      for (let fileToUp of this.filesToUpload) {\n        if (!fileToUp.uploaded) {\n          fileToUp.loading = true;\n          const sub = this.makeUploadCall(request, fileToUp).subscribe(\n            (res) => this.uploadFileResFn(fileToUp, res, true),\n            (error) => this.uploadFileResFn(fileToUp, error, false)\n            // {\n            //   this.loading = false;\n            //   this.errorMessages.push( HTTPUtils.getErrorMsgFromError(error));\n            // }\n          );\n          fileToUp.sub = sub;\n        }\n      }\n    }\n  }\n\n  uploadFileResFn(file: MultiFileDropped, res: any, isOk: boolean) {\n    file.loading = false;\n    //agisce sui file direttamente\n\n    //gestione contatore caricamenti\n    this.counterFileToUp += 1;\n    if (this.counterFileToUp == this.numberFileToUp) {\n      this.counterFileToUp = 0;\n      this.numberFileToUp = 0;\n    }\n\n    if (isOk && res) {\n      this.refreshFatherComponent = true;\n      file.uploaded = true;\n    } else if (!isOk && res) {\n      file.uploaded = false;\n      file.errorMsg = HTTPUtils.getErrorMsgFromError(res);\n    } else {\n      file.uploaded = false;\n      file.errorMsg = 'FEPB_MULTIDROPPER_GENERIC_ERROR';\n    }\n  }\n\n\n\n  private makeUploadCall(params: any, file: any) {\n    params.metadata = {\n      name: file.name,\n      fullName: file.fullName,\n      note: file.note,\n      sizeMB: file.sizeMB\n    };\n    return this.apiCallerService.uploadFile(params, file.blob);\n  }\n\n  removeFromUploadList(index: number) {\n    if (this.filesToUpload && this.filesToUpload[index]) {\n      this.filesToUpload.splice(index, 1);\n    }\n  }\n\n  confirmFormData(index: number) {\n    let data = this.editDataForm.getRawValue();\n    if (data) {\n      this.filesToUpload[index].name =\n        data.name && data.name.trim() !== ''\n          ? data.name\n          : this.filesToUpload[index].name;\n      this.filesToUpload[index].note = data.note\n        ? data.note\n        : this.filesToUpload[index].note;\n      this.clearEditForm();\n      this.editFlag = false;\n      this.filesToUpload[index].editing = false;\n    }\n  }\n\n  close() {\n    this.modal.close({ refreshFather: this.refreshFatherComponent });\n  }\n}\n\nexport type MultiFileDropped = {\n  base64: string;\n  blob: File | null;\n  name: string;\n  fullName: string; //con l'estensione\n  mime: string;\n  extention: string;\n  dimension: number | null;\n  sizeMB: number | null;\n  lastModified: Date | null;\n  note: string | null;\n  editing: boolean;\n  loading: boolean;\n  uploaded: boolean;\n  sub: Subscription | null;\n  errorMsg: string;\n};\n\nexport type UploadParams = {\n  context: string | null;\n  filetype: string | null;\n  referenceId: string | null;\n};","<ng-container *ngIf=\"keepDropper || !filesDropped \">\n  <div class=\"d-flex flex-column w-100\">\n    <nz-alert nzType=\"info\" [nzDescription]=\"msgInfo\" class=\"mb-4\"> </nz-alert>\n    <ng-template #msgInfo>\n      <div class=\"d-flex flex-column\">\n        <span class=\"text-primary\">{{'FEPB_MULTIDROPPER_MAXFILECOUNT' | translate}} <span class=\"bold\">{{maxNumber}}</span></span>\n        <span class=\"text-primary\">{{'FEPB_MULTIDROPPER_MAXFILESIZE' | translate}} <span class=\"bold\">{{maxSize}}MB</span></span>\n        <div class=\"d-flex text-primary\" *ngIf=\"fileExtensions && fileExtensions.length>0\">\n          <span>{{'FEPB_MULTIDROPPER_SUPPORTEDEXT' | translate}}</span>\n          <ng-container *ngFor=\"let ext of fileExtensions\"><span class=\"bold mx-1\">{{ext}}</span></ng-container>\n        </div>\n      </div>\n    </ng-template>\n    <div class=\"w-100\" style=\"min-height: 150px;\">\n      <ngx-file-drop (onFileDrop)=\"dropped($event)\" (onFileOver)=\"fileOver($event)\" [multiple]=\"multiFileDropper\" #filedrop\n        id=\"filedrop\">\n        <ng-template ngx-file-drop-content-tmp>\n          <span class=\"d-flex flex-column text-center\">\n            <span class=\"d-flex justify-content-center p-3 \">\n              <i class=\"fad fa-file-import fa-2x fa-beat\"></i>\n            </span>\n            <span class=\"p-1\">{{'FEPB_MULTIDROPPER_DROPHERE' | translate}}\n              {{'FEPB_MULTIDROPPER_OR' | translate}}\n            </span>\n            <span class=\"p-1\">\n              <label class=\"cursor-pointer\">\n                <b><u>\n                    {{'FEPB_MULTIDROPPER_SELECTFROMPC' | translate}}\n                  </u></b>\n                <input type=\"file\" style=\"display: none\" file-handler (change)=\"onFileChange($event)\"\n                  multiple=\"multiple\" />\n              </label>\n            </span>\n          </span>\n        </ng-template>\n      </ngx-file-drop>\n    </div>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"errorFlag\">\n  <div class=\"w-100 my-2\">\n    <nz-alert nzType=\"error\" [nzDescription]=\"msgErrors\"> </nz-alert>\n    <ng-template #msgErrors>\n      <div class=\"d-flex flex-column text-danger\">\n          <ng-container *ngFor=\"let numErr of numberOverflowErrors\">\n            <div class=\"w-100\">\n              <span class=\"font-small mr-2\">{{'FEPB_MULTIDROPPER_ERRORS_LABEL' | translate}} </span>\n              <span class=\"text-danger bold\">{{numErr | translate}}</span>\n            </div>\n          </ng-container>\n          <ng-container *ngFor=\"let extErr of extensionErrors\">\n            <div class=\"w-100\">\n              <span class=\"font-small mr-2\">{{'FEPB_MULTIDROPPER_ERRORS_LABEL' | translate}} </span>\n              <span class=\"text-danger bold\">{{extErr | translate}}</span>\n            </div>\n          </ng-container>\n          <ng-container *ngFor=\"let overErr of sizeOverflowErrors\">\n            <div class=\"w-100\">\n              <span class=\"font-small mr-2\">{{'FEPB_MULTIDROPPER_ERRORS_LABEL' | translate}} </span>\n              <span class=\"text-danger bold\">{{overErr | translate}}</span>\n            </div>\n          </ng-container>\n          <ng-container *ngFor=\"let presErr of alreadyPresentErrors\">\n            <div class=\"w-100\">\n              <span class=\"font-small mr-2\">{{'FEPB_MULTIDROPPER_ERRORS_LABEL' | translate}} </span>\n              <span class=\"text-danger bold\">{{presErr | translate}}</span>\n            </div>\n          </ng-container>\n      </div>\n    </ng-template>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"!filesDropped\">\n  <div class=\"d-flex justify-content-center text-center flex-column pt-5\">\n    <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n    <span\n      class=\"m-2 text-small text-muted\">{{'FEPB_MULTIDROPPER_NOFILEREADY' | translate}}</span>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"filesDropped && filesToUpload && filesToUpload.length>0\">\n  <div class=\"w-100 p-3 d-flex flex-column\">\n    <span class=\"d-flex align-items-start justify-content-between  mb-3\">\n      <span class=\"bold text-uppercase\">{{'FEPB_MULTIDROPPER_FILETOUPLOAD' | translate}} {{filesToUpload.length}}</span>\n    </span>\n    <div class=\"mt-3\">\n      <ng-container *ngFor=\"let fileInfo of filesToUpload;let currentIndex = index\">\n        <ng-container *ngIf=\"fileInfo\">\n          <div class=\"d-flex justify-content-between\">\n            <div class=\"d-flex justify-content-around my-2 w-80\">\n              <div class=\"d-flex flex-column justify-content-center align-items-center\" style=\"width: 4em; \">\n                <span class=\"far fa-file fa-2x text-muted \"\n                  [class.fa-file-word]=\"fileInfo.extention == 'doc' || fileInfo.extention == 'docx'\"\n                  [class.fa-file-powerpoint]=\"fileInfo.extention == 'ppt' || fileInfo.extention == 'pptx'\"\n                  [class.fa-file-pdf]=\"fileInfo.extention == 'pdf'\"\n                  [class.fa-file-spreadsheet]=\"fileInfo.extention == 'xls' || fileInfo.extention == 'xlsx'\"\n                  [class.fa-file-image]=\"fileInfo.extention == 'jpeg' || fileInfo.extention == 'png' || fileInfo.extention == 'gif'\"></span>\n              </div>\n              <div class=\"d-flex w-100 flex-column justify-content-center\">\n                <div class=\"d-flex justify-content-between\" *ngIf=\"fileInfo.name\">\n                  <span class=\"bold text-uppercase\">{{fileInfo.name}} </span>\n                </div>\n\n                <div class=\"d-flex flex-wrap w-100\" >\n                  <span class=\"d-flex font-small justify-content-between w-30 \" *ngIf=\"fileInfo.name && fileInfo.fullName && fileInfo.name!==fileInfo.fullName\">\n                    <span class=\"w-50 text-muted text-uppercase\">{{'FEPB_MULTIDROPPER_FILENAMEORIGIN' | translate}}</span>\n                    <span class=\"w-50 bold\">{{fileInfo.fullName }}</span>\n                  </span>\n                  <span class=\"d-flex font-small justify-content-between w-30 \" *ngIf=\"fileInfo.sizeMB\">\n                    <span class=\"w-50 text-muted text-uppercase\">{{'FEPB_MULTIDROPPER_FILEDIMENSION' | translate}}</span>\n                    <span class=\"w-50 bold\">{{fileInfo.sizeMB | number:'0.0-2'}} MB</span>\n                  </span>\n                  <span class=\"d-flex font-small justify-content-between w-30 \" *ngIf=\"fileInfo.lastModified\">\n                    <span class=\"w-50 text-muted text-uppercase\">{{'FEPB_MULTIDROPPER_FILELASTMODIFIED' | translate}}</span>\n                    <span class=\"w-50 bold\">{{fileInfo.lastModified | dateOnly}}</span>\n                  </span>\n                  <span class=\"d-flex font-small justify-content-between w-30 \" *ngIf=\"fileInfo.note\">\n                    <span class=\"w-50 text-muted text-uppercase\">{{'FEPB_MULTIDROPPER_FILENOTE' | translate}}</span>\n                    <span class=\"w-50 bold\">{{fileInfo.note}}</span>\n                  </span>\n                </div>\n                <ng-container *ngIf=\"!fileInfo.loading\">\n                <div class=\"d-flex justify-content-between\" *ngIf=\"!editFlag && !fileInfo.uploaded\">\n                  <button class=\"btn btn-link text-primary font-small p-0 m-0 text-uppercase\" (click)=\"editFile(currentIndex)\">Modifica informazioni</button>\n                </div>\n                <ng-container *ngIf=\"fileInfo.editing && !fileInfo.uploaded\">\n                  <div class=\"d-flex flex-column p-1\">\n                    <div class=\"d-flex justify-content-between\">\n                      <span class=\"bold text-uppercase text-muted\">{{'FEPB_MULTIDROPPER_FILEMOREINFO' | translate}} </span>\n                    </div>\n                    <form nzForm [formGroup]=\"editDataForm\" class=\"w-50\">\n                      <nz-form-item class=\"m-0\">\n                        <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"name\" >{{'FEPB_MULTIDROPPER_FILENAME_FORM' | translate}}\n                        </nz-form-label>\n                        <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" >\n                            <input nz-input id=\"name\" formControlName=\"name\"\n                                placeholder=\"Nome file\" />\n                        </nz-form-control>\n                    </nz-form-item>\n                    <nz-form-item class=\"m-0\">\n                      <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"note\" >{{'FEPB_MULTIDROPPER_FILENOTE_FORM' | translate}}\n                      </nz-form-label>\n                      <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" >\n                        <textarea nz-input id=\"note\" formControlName=\"note\"\n                            placeholder=\"Note\" ></textarea>\n                    </nz-form-control>\n                  </nz-form-item>\n                    </form>\n                  </div>\n                  <div class=\"d-flex justify-content-center w-50\">\n                    <button class=\"btn btn-link text-primary font-small p-0 text-uppercase\" (click)=\"confirmFormData(currentIndex)\">Conferma</button>\n                  </div>\n                </ng-container>\n\n                <div class=\"w-100 my-2\" *ngIf=\"fileInfo.errorMsg\">\n                  <nz-alert nzType=\"error\" [nzDescription]=\"fileError\"> </nz-alert>\n                  <ng-template #fileError>\n                    <div class=\"d-flex flex-column text-danger\">\n                          <div class=\"w-100\">\n                            <span class=\"font-small mr-2\">{{'FEPB_MULTIDROPPER_ERRORS_LABEL' | translate}} </span>\n                            <span class=\"text-danger bold\">{{fileInfo.errorMsg | translate}}</span>\n                          </div>\n                    </div>\n                  </ng-template>\n                </div>\n\n              </ng-container>\n                <!-- <ng-container *ngIf=\"fileInfo.loading\">\n                  <div class=\"w-100 h-100 p-2 d-flex align-items-start\" style=\"min-height: 80px;\">\n                    <div class=\"w-100 h-100\">\n                      <nz-spin class=\"h-100\" nzTip=\"Caricamento documento...\">\n                      </nz-spin>\n                    </div>\n                  </div>\n                </ng-container> -->\n              </div>\n            </div>\n            <ng-container *ngIf=\"!fileInfo.loading && !fileInfo.uploaded\">\n            <div class=\"d-flex flex-column justify-content-center align-items-end\">\n              <button class=\"btn btn-link text-danger font-small pr-0 text-uppercase\" (click)=\"removeFromUploadList(currentIndex)\">{{'FEPB_MULTIDROPPER_REMOVE' | translate}} <span class=\"fa fa-times\"></span></button>\n            </div>\n          </ng-container>\n          <ng-container *ngIf=\"fileInfo.loading && !fileInfo.uploaded\">\n            <div class=\"d-flex flex-column justify-content-center align-items-end\">\n              <span class=\"ml-3 text-primary text-uppercase text-small d-flex justify-content-between\" >{{'FEPB_MULTIDROPPER_LOADING' | translate}} <nz-spin nzSimple class=\"ml-2\"> </nz-spin></span>\n            </div>\n          </ng-container>\n          <ng-container *ngIf=\"fileInfo.uploaded\">\n            <div class=\"d-flex flex-column justify-content-center align-items-end\">\n              <span class=\"ml-3 text-success text-uppercase\" >{{'FEPB_MULTIDROPPER_FILEUPLOADED' | translate}} <span class=\"fas fa-check-circle\"></span></span>\n            </div>\n          </ng-container>\n\n          </div>\n        </ng-container>\n        <nz-divider class=\"my-2\"></nz-divider>\n      </ng-container>\n    </div>\n  </div>\n</ng-container>\n<div class=\"d-flex w-100 flex-column justify-content-center mt-4 mb-2 align-items-center\" *ngIf=\"filesToUpload && filesToUpload.length>0\">\n  <span class=\"text-warning w-100 d-flex justify-content-center my-2\" *ngIf=\"editFlag\">\n    {{'FEPB_MULTIDROPPER_MODIFYWARNING' | translate}}\n  </span>\n  <button class=\"btn btn-primary w-30 m-1 text-uppercase\" (click)=\"uploadAll()\" nz-button [nzLoading]=\"this.counterFileToUp !== this.numberFileToUp\">{{'FEPB_MULTIDROPPER_FILELOAD' | translate}} <span class=\"fa fa-upload ml-1\"></span></button>\n</div>\n<div class=\"d-flex w-100 flex-column justify-content-center mt-4 mb-2 align-items-center\" >\n  <button class=\"btn btn-link text-dark w-30 m-1 text-uppercase\" (click)=\"close()\" >{{'FEPB_MULTIDROPPER_CLOSE' | translate}} <span class=\"fa fa-times\"></span></button>\n</div>\n<!-- <button class=\"btn btn-link text-danger\" (click)=\"clearAll()\">Reset</button> -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MultiFileDropperComponent } from './multi-file-dropper.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxFileDropModule } from 'ngx-file-drop';\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { CommonPipesModule } from '@alfercom/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n\n@NgModule({\n  declarations: [MultiFileDropperComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    NgxFileDropModule,\n    NzAlertModule,\n    NzDividerModule,\n    CommonPipesModule,\n    NzInputModule,\n    NzFormModule,\n    ReactiveFormsModule,\n    NzSpinModule,\n    NzButtonModule,\n    NzEmptyModule,\n    TranslateModule\n  ],\n  exports: [MultiFileDropperComponent]\n})\nexport class MultiFileDropperModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport Fuse from 'fuse.js';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { PageBuilderService } from '../../../services/page-builder.service';\nimport { MultiFileDropperComponent } from '../../multi-file-dropper/multi-file-dropper.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AppLocaleService, AppLocaleUtils } from '@alfercom/common';\nimport { SectionContent } from '../../../types/external-types/sectionContent';\nimport { SectionElement } from '../../../types/external-types/sectionElement';\nimport {\n  PbPaginatedPageOptions,\n  PbDefaultButtonOutput,\n  PageBuilderDefaultButton,\n  PageBuilderDropdownButton,\n} from '../../../types/pb-types/page-builder.type';\n\n@Component({\n  selector: '.pb-list-documents',\n  templateUrl: './pb-list-documents.component.html',\n  styleUrls: ['./pb-list-documents.component.scss'],\n})\nexport class PbListDocumentsComponent implements OnInit {\n  //TODO APPLOCALE UTILS\n  /**\n   * Componente per instanziare una lista di documenti con la loro icona colorata (se passata) + titolo e barra di ricerca\n   * Gli elementi da instanziare devono trovarsi all'interno del campo elements della SectionElement in input\n   * Il metodo mapInputValues ordina per il campo 'data caricamento' e sposta tutti gli altri campi all'interno degli extraData a scomparsa\n   * A piè di pagina c'è la gestione degli ActionButton del componente\n   * è presente la gestione per aprire il MultiFileDropper (calderone) tramite emit-event dell'action button\n   */\n\n  @Input('pageStructure') set pageStructure(value: SectionContent) {\n    if (value) {\n      this.initPage(value);\n    }\n  }\n\n  @Output('onUpdate') onUpdate: EventEmitter<void> = new EventEmitter();\n\n  pageData: SectionContent | null = null;\n\n  pageOptions: PbPaginatedPageOptions = {\n    searchBarOptions: {\n      minChar: 3,\n      noElemFoundMessage: 'FEPB_LIST_DOC_SEARCH_NOELEM',\n      placeholder: 'FEPB_LIST_DOC_SEARCHPLACEHOLDER',\n    },\n    showSearchBar: true,\n    pageIndex: 1,\n    pageSize: 10, // Ensure valid default\n    itemButtonDisplayMode: 'dropdown', // Explicit default\n  };\n\n  errors = [];\n\n  searchString: string | null = null;\n\n  itemsToDisplay: any[] = [];\n  paginatedItemsToDisplay: any[] = [];\n\n  itemsList: GenericOrderedDocument[] = [];\n\n  pageTitle: string = 'FEPB_LIST_DOC_PAGETITLE';\n\n  isLoading: boolean = false;\n\n  extraDataCollapsed: { [key: number]: boolean } = {};\n\n  selectedTagFilters: string[] = [];\n\n  constructor(\n    private modalService: NzModalService,\n    private pageBuilderService: PageBuilderService,\n    private translateService: TranslateService,\n    private appLocale: AppLocaleService\n  ) {}\n\n  ngOnInit(): void {}\n\n  initPage(value: any) {\n    this.isLoading = true;\n    this.pageData = _.cloneDeep(value);\n    if (value.title) {\n      this.pageTitle = value.title;\n    }\n    this.initPageOptions((this.pageData as any).options);\n    let mappedDocs = _.cloneDeep(this.mapInputValues(value.elements));\n    this.itemsList = _.sortBy(mappedDocs, ['orderData.dataCaricamento']);\n    this.itemsToDisplay = [...this.itemsList];\n    this.setPaginatedItemsToDisplay(\n      this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n    );\n    this.isLoading = false;\n  }\n\n  initPageOptions(options: any) {\n    if (options) {\n      // Merge defaults with incoming options carefully\n      const defaultOptions = {\n        // Re-state defaults for merging\n        searchBarOptions: {\n          minChar: 3,\n          noElemFoundMessage: 'FEPB_LIST_DOC_SEARCH_NOELEM',\n          placeholder: 'FEPB_LIST_DOC_SEARCHPLACEHOLDER',\n        },\n        showSearchBar: true,\n        pageIndex: 1,\n        pageSize: 10,\n        itemButtonDisplayMode: 'dropdown',\n      };\n      // Deep merge, ensuring incoming options don't overwrite with invalid values for critical fields\n      this.pageOptions = _.merge({}, defaultOptions, options);\n\n      // Explicitly validate pageSize after merge\n      if (!this.pageOptions.pageSize || this.pageOptions.pageSize <= 0) {\n        console.warn('Invalid pageSize received in options, defaulting to 10.');\n        this.pageOptions.pageSize = 10;\n      }\n      // Reset pageIndex if it's invalid\n      if (!this.pageOptions.pageIndex || this.pageOptions.pageIndex <= 0) {\n        this.pageOptions.pageIndex = 1;\n      }\n    } else {\n      // If no options passed, ensure the initial defaults are set (already done at property declaration)\n    }\n  }\n\n  mapInputValues(value: any) {\n    return value.map((el: any) => {\n      const content = _.cloneDeep(el?.content);\n      el.icon = el.icon\n        ? el.icon\n        : el.header\n        ? this.getIconFromFileName(el.header.title)\n        : this.getIconFromFileName(null);\n      if (content) {\n        el.content = content.filter(\n          (o: any) => o.label.toLowerCase() == 'data caricamento'\n        );\n        el.extraData = content.filter(\n          (o: any) => o.label.toLowerCase() !== 'data caricamento'\n        );\n        // const currentLocale = this.appLocale.getCurrentLocale() || 'it-IT';\n        // const momentDateFormat = AppLocaleUtils.dateFormatMoment(currentLocale);\n        // let date: Date | undefined = undefined;\n        // if(momentDateFormat){\n        //   date = moment(el.content[0]?.value, AppLocaleUtils.dateFormatMoment(currentLocale)).toDate()\n        // }\n        // el.orderData = {\n        //   dataCaricamento: date\n        // }\n      }\n      return el;\n    });\n  }\n\n  getIconFromFileName(fileName: string | null = null) {\n    let icon = 'fa-file';\n    if (fileName) {\n      let estensione = null;\n      try {\n        const fileNameSplitted = fileName.split('.');\n        const fileExtension = fileNameSplitted\n          ? fileNameSplitted[fileNameSplitted.length - 1]\n          : null;\n        if (fileExtension) estensione = (fileExtension || '').toLowerCase();\n      } catch (e) {\n        console.error(e);\n      }\n      if (estensione && (ICON_ESTESIONE as any)[estensione]) {\n        icon = (ICON_ESTESIONE as any)[estensione];\n      }\n    }\n\n    return icon;\n  }\n\n  onSearch(event: any) {\n    if (event) {\n      if (event && this.searchString) {\n        this.search(this.searchString);\n      } else if (!this.searchString || this.searchString == '') {\n        this.resetSearchField();\n      }\n    }\n  }\n\n  resetSearchField() {\n    this.searchString = null;\n    this.applyFilters();\n  }\n\n  search(label: string | null = null) {\n    this.applyFilters();\n  }\n\n  /**\n   * Applica i filtri combinando ricerca testuale e filtro per tag\n   */\n  applyFilters() {\n    let filteredItems = [...this.itemsList];\n\n    // Applica filtro per tag (se ci sono tag selezionati)\n    if (this.selectedTagFilters.length > 0) {\n      filteredItems = filteredItems.filter((item: GenericOrderedDocument) => {\n        // Se il documento non ha tag, non viene mostrato quando ci sono filtri attivi\n        if (!item.tags || item.tags.length === 0) {\n          return false;\n        }\n        // Il documento deve avere almeno uno dei tag selezionati\n        return this.selectedTagFilters.some(selectedTag =>\n          item.tags!.includes(selectedTag)\n        );\n      });\n    }\n\n    // Applica ricerca testuale (se presente)\n    if (this.searchString && this.searchString.length > this.pageOptions.searchBarOptions.minChar) {\n      const fuseOptions = {\n        threshold: 0.1,\n        distance: 1000,\n        location: 10,\n        keys: ['header.title'],\n      };\n      const fuse = new Fuse(filteredItems, fuseOptions);\n      try {\n        const results = fuse.search(this.searchString);\n        filteredItems = _.cloneDeep(results.map((el) => el.item));\n      } catch (e) {\n        console.error('Search error:', e);\n      }\n    }\n\n    this.itemsToDisplay = filteredItems;\n    this.pageOptions.pageIndex = 1;\n    this.setPaginatedItemsToDisplay(\n      this.itemsToDisplay.slice(0, this.pageOptions.pageSize)\n    );\n  }\n\n  btnHandler(event: PbDefaultButtonOutput) {\n    if (event) {\n      let btn = _.cloneDeep(event.btn);\n      let subLoading = event.sub;\n      if (btn) {\n        if (subLoading) {\n          subLoading.next({ loading: true });\n        }\n\n        this.pageBuilderService\n          .handlerActionButton(btn)\n          .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n      }\n    }\n  }\n\n  handlerActionButtonResFn(res: any, subLoading: any) {\n    if (res) {\n      if (res.result) {\n        if (res.needRefresh) {\n          this.onUpdate.emit();\n        }\n        if (res.closeModal) {\n        }\n        if (res.eventToHandle) {\n          if (res.eventToHandle.eventName == 'open-multi-file-dropper') {\n            this.openMultiFileDropper(res.eventToHandle.params);\n          }\n          if (res.eventToHandle.eventName == 'need-refresh') {\n            console.log(\n              'pb-list-documents received need-refresh event, emitting onUpdate'\n            );\n            this.onUpdate.emit();\n          }\n        }\n        if (subLoading) {\n          subLoading.next({ loading: false });\n        }\n      } else {\n        if (res.error) {\n          if (subLoading) {\n            subLoading.next({\n              loading: false,\n              message:\n                res.error.messages[0] ||\n                this.translateService.instant('FEPB_GENERIC_OPERATIONERROR'),\n            });\n          }\n        } else {\n          if (subLoading) {\n            subLoading.next({ loading: false });\n          }\n        }\n      }\n    } else {\n      if (subLoading) {\n        subLoading.next({ loading: false });\n      }\n    }\n  }\n\n  openMultiFileDropper(inputParams: any) {\n    const {\n      extensions,\n      maxFileNumber,\n      maxFileSize,\n      stickyDropper,\n      settingsInput,\n    } = inputParams;\n    const modalRef = this.modalService.create({\n      nzTitle: this.translateService.instant(\n        'FEPB_LIST_DOC_MULTIDROPPER_MODAL_TITLE'\n      ),\n      nzContent: MultiFileDropperComponent,\n      nzData: {\n        settingsInput,\n        extensions,\n        maxFileNumber,\n        maxFileSize,\n        stickyDropper,\n      },\n      nzOkLoading: false,\n      nzFooter: null,\n      nzClassName: 'w-60',\n      nzMaskClosable: false,\n      nzClosable: false,\n      nzKeyboard: false,\n    });\n    modalRef.afterClose.subscribe((res) => {\n      if (res && res.refreshFather) {\n        this.onUpdate.emit(res.refreshFather);\n      }\n    });\n  }\n\n  pageIndexChange(newIndex: number) {\n    // Ensure options and items exist\n    if (!this.pageOptions || !this.itemsToDisplay) return;\n\n    // Ensure pageSize is valid\n    const pageSize =\n      this.pageOptions.pageSize > 0 ? this.pageOptions.pageSize : 10;\n    const totalItems = this.itemsToDisplay.length || 0;\n    const maxPageIndex = Math.max(1, Math.ceil(totalItems / pageSize)); // Calculate max valid page index\n\n    // Clamp the index\n    const validIndex = Math.max(1, Math.min(newIndex, maxPageIndex));\n    this.pageOptions.pageIndex = validIndex; // Update the model value\n\n    const startIndex = (validIndex - 1) * pageSize;\n    const endIndex = startIndex + pageSize;\n    const pagedItems = this.itemsToDisplay.slice(startIndex, endIndex);\n    this.setPaginatedItemsToDisplay(_.cloneDeep(pagedItems)); // Use cloneDeep here too for consistency\n  }\n  /**\n   * ZS centralizzo i set\n   * @param items\n   */\n  setPaginatedItemsToDisplay(items: GenericOrderedDocument[]) {\n    const itemsToDisplay: GenericOrderedDocument[] = _.cloneDeep(items);\n    itemsToDisplay.forEach((element: GenericOrderedDocument) => {\n      // Only create dropdown if mode is not 'row' (dropdown is default)\n      if (\n        !(element as any).dropdownButton &&\n        this.pageOptions?.itemButtonDisplayMode !== 'row'\n      ) {\n        // Directly use element.buttons, assuming addPreviewButton is removed or handled elsewhere if needed\n        (element as any).dropdownButton = this.getDropdownFromButtons(\n          element.buttons\n        );\n      }\n      // If mode is 'row', we'll let the template render element.buttons directly\n    });\n    this.paginatedItemsToDisplay = itemsToDisplay;\n  }\n\n  addPreviewButton(_buttons: PageBuilderDefaultButton[]) {\n    let buttons: PageBuilderDefaultButton[] = _.cloneDeep(_buttons);\n    const downloadButton = buttons.find(\n      (el) =>\n        el &&\n        el.callAPIActionButton &&\n        el.callAPIActionButton.apiMethod == 'download'\n    );\n    const previewButtons = buttons.filter(\n      (el) =>\n        el &&\n        el.callAPIActionButton &&\n        el.callAPIActionButton.apiMethod == 'downloadPreview'\n    );\n    if (\n      downloadButton &&\n      ((previewButtons && previewButtons.length == 0) || !previewButtons)\n    ) {\n      let previewButton: PageBuilderDefaultButton = _.cloneDeep(downloadButton);\n      previewButton.text = 'FEPB_LIST_DOC_PREVIEWBUTTON';\n      previewButton.icon = downloadButton.icon ? 'fa-search' : undefined;\n      if (previewButton.callAPIActionButton) {\n        previewButton.callAPIActionButton.apiMethod = 'downloadPreview';\n      }\n      buttons.unshift(previewButton);\n    }\n    return buttons;\n  }\n\n  getDropdownFromButtons(buttons: PageBuilderDefaultButton[]) {\n    let dropdown: PageBuilderDropdownButton | null = null;\n    if (buttons.length > 0) {\n      dropdown = {\n        labelDropdown: {\n          icon: 'fa-chevron-down',\n          label: 'FEPB_LIST_DOC_DROPDOWNBUTTON',\n          customStyleClass: 'link-goes-bigger',\n        },\n        list: buttons,\n      };\n    }\n    return dropdown;\n  }\n\n  toggleExtraData(index: number) {\n    this.extraDataCollapsed[index] = !this.extraDataCollapsed[index];\n  }\n\n  onTagFilterChange(tagValue: string, checked: boolean) {\n    if (checked) {\n      if (!this.selectedTagFilters.includes(tagValue)) {\n        this.selectedTagFilters = [...this.selectedTagFilters, tagValue];\n      }\n    } else {\n      this.selectedTagFilters = this.selectedTagFilters.filter(v => v !== tagValue);\n    }\n    this.applyFilters();\n  }\n}\n\nexport const ICON_ESTESIONE = {\n  doc: 'fa-file-word',\n  docx: 'fa-file-word',\n  ppt: 'fa-file-powerpoint',\n  pptx: 'fa-file-powerpoint',\n  pdf: 'fa-file-pdf',\n  xls: 'fa-file-spreadsheet',\n  xlsx: 'fa-file-spreadsheet',\n  jpeg: 'fa-file-image',\n  jpg: 'fa-file-image',\n  png: 'fa-file-image',\n  gif: 'fa-file-image',\n};\n\nexport interface GenericOrderedDocument extends SectionElement {\n  orderData: {\n    dataCaricamento: Date;\n  };\n  extraData: {\n    label: string;\n    value: string;\n  }[];\n}\n","<ng-container *ngIf=\"pageData && pageOptions\">\n  <div class=\"flex-column d-flex flex-grow-1\">\n    <ng-container *ngIf=\"errors && errors.length > 0\">\n      <nz-alert nzType=\"error\" [nzDescription]=\"msgErrors\"> </nz-alert>\n      <ng-template #msgErrors>\n        <div class=\"d-flex flex-column\">\n          <span class=\"text-danger bold\"\n            >{{ errors.length }}\n            {{ \"FEPB_LIST_DOC_ERROR_MSG\" | translate }}:</span\n          >\n          <span class=\"font-small\" *ngFor=\"let err of errors\">{{\n            err | translate\n          }}</span>\n        </div>\n      </ng-template>\n    </ng-container>\n    <div\n      class=\"d-flex text-uppercase text-primary font-x-large justify-content-start w-100 mb-2\"\n    >\n      <ng-container *ngIf=\"pageTitle && pageTitle !== ''\">\n        <span class=\"bold\"> {{ pageTitle | translate }} </span>\n      </ng-container>\n    </div>\n    <div\n      class=\"d-flex w-100 mb-2\"\n      *ngIf=\"\n        pageOptions &&\n        pageOptions.showSearchBar &&\n        itemsList &&\n        itemsList.length > 0\n      \"\n    >\n      <input\n        class=\"w-100 form-control\"\n        [placeholder]=\"\n          pageOptions?.searchBarOptions?.placeholder || '' | translate\n        \"\n        style=\"line-height: 24px\"\n        type=\"text\"\n        name=\"textSearch\"\n        #textSearch\n        [(ngModel)]=\"searchString\"\n        (input)=\"onSearch($event)\"\n      />\n      <div\n        class=\"d-flex flex-column justify-content-center align-items-center ml-2\"\n      >\n        <span\n          class=\"far fa-search fa-lg text-primary\"\n          *ngIf=\"!searchString\"\n        ></span>\n        <span\n          class=\"fas fa-times p-2 fa-lg text-dark cursor-pointer\"\n          *ngIf=\"searchString\"\n          (click)=\"resetSearchField()\"\n        ></span>\n      </div>\n    </div>\n    <div\n      class=\"d-flex flex-column w-100 mb-3\"\n      *ngIf=\"pageOptions?.showTagsFilters && pageOptions?.tagsFilters && pageOptions.tagsFilters!.length > 0\"\n    >\n      <span class=\"text-muted font-small mb-2 bold\">{{ 'FEPB_LIST_DOC_FILTER_BY_TYPE' | translate }}:</span>\n      <div class=\"d-flex flex-wrap gap-2\">\n        <nz-tag\n          *ngFor=\"let tag of pageOptions.tagsFilters\"\n          nzMode=\"checkable\"\n          [nzChecked]=\"selectedTagFilters.includes(tag.value)\"\n          (nzCheckedChange)=\"onTagFilterChange(tag.value, $event)\"\n          class=\"tag-filter\"\n        >\n          {{ tag.label | translate }}\n        </nz-tag>\n      </div>\n    </div>\n    <div class=\"d-flex text-uppercase text-muted justify-content-start mb-2\">\n      <ng-container *ngIf=\"itemsList\">\n        <span class=\"bold\">\n          {{ itemsList.length }}\n          {{\n            itemsList.length !== 1\n              ? (\"FEPB_LIST_DOC_TOTAL_MSG_MULTI\" | translate)\n              : (\"FEPB_LIST_DOC_TOTAL_MSG_SINGLE\" | translate)\n          }}\n        </span>\n      </ng-container>\n      <ng-container\n        *ngIf=\"\n          searchString &&\n          searchString.length > pageOptions.searchBarOptions.minChar\n        \"\n      >\n        <span class=\"bold ml-2\"\n          >- {{ itemsToDisplay.length }}\n          {{\n            itemsToDisplay.length !== 1\n              ? (\"FEPB_LIST_DOC_RESULT_MSG_MULTI\" | translate)\n              : (\"FEPB_LIST_DOC_RESULT_MSG_SINGLE\" | translate)\n          }}\n        </span>\n      </ng-container>\n    </div>\n\n    <nz-pagination\n      [(nzPageIndex)]=\"pageOptions.pageIndex\"\n      [nzPageSize]=\"pageOptions?.pageSize || 10\"\n      (nzPageSizeChange)=\"pageOptions.pageSize = $event; pageIndexChange(1)\"\n      [nzTotal]=\"itemsToDisplay?.length || 0\"\n      [nzSize]=\"'small'\"\n      (nzPageIndexChange)=\"pageIndexChange($event)\"\n    >\n    </nz-pagination>\n\n    <ng-container\n      *ngIf=\"!paginatedItemsToDisplay || paginatedItemsToDisplay.length == 0\"\n    >\n      <div class=\"mt-2 py-4 px-4 w-100\">\n        <div class=\"d-flex justify-content-center text-center flex-column\">\n          <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n          <span class=\"m-5 fs-large text-muted\">{{\n            !itemsList || itemsList.length == 0\n              ? (\"FEPB_LIST_DOC_NO_DATA\" | translate)\n              : (\"FEPB_LIST_DOC_NO_RESULT\" | translate)\n          }}</span>\n        </div>\n      </div>\n    </ng-container>\n\n    <div class=\"pb-list-docs__list mt-3\">\n      <ng-container\n        *ngFor=\"let data of paginatedItemsToDisplay; let currentIndex = index\"\n      >\n        <div class=\"pb-list-docs__item d-flex justify-content-between\">\n          <div class=\"pb-list-docs__item-content d-flex justify-content-around my-2 w-80\">\n            <div\n              class=\"pb-list-docs__item-icon d-flex flex-column justify-content-center align-items-center text-muted\"\n              *ngIf=\"data.icon\"\n            >\n              <span\n                class=\"pb-list-docs__item-icon-file far fa-file fa-2x\"\n                [ngClass]=\"data.icon\"\n                [class.pb-list-docs__item-icon-file--word]=\"data.icon == 'fa-file-word'\"\n                [class.pb-list-docs__item-icon-file--image]=\"data.icon == 'fa-file-image'\"\n                [class.pb-list-docs__item-icon-file--powerpoint]=\"data.icon == 'fa-file-powerpoint'\"\n                [class.pb-list-docs__item-icon-file--pdf]=\"data.icon == 'fa-file-pdf'\"\n                [class.pb-list-docs__item-icon-file--spreadsheet]=\"data.icon == 'fa-file-spreadsheet'\"\n              ></span>\n            </div>\n            <div class=\"pb-list-docs__item-details d-flex w-100 flex-column justify-content-center\">\n              <div class=\"pb-list-docs__item-header d-flex justify-content-between\" *ngIf=\"data.header\">\n                <span class=\"pb-list-docs__item-title bold text-uppercase\" *ngIf=\"data.header.title\"\n                  >{{ data.header.title | translate }}\n                </span>\n              </div>\n              <ng-container *ngIf=\"data.content && data.content.length > 0\">\n                <div class=\"pb-list-docs__item-meta d-flex flex-wrap w-100\">\n                  <ng-container *ngFor=\"let contentItem of data.content\">\n                    <span\n                      class=\"pb-list-docs__item-meta-row d-flex font-small justify-content-between w-50\"\n                      *ngIf=\"!contentItem.hideElement\"\n                    >\n                      <span class=\"pb-list-docs__item-meta-label w-50 text-muted text-uppercase\">{{\n                        contentItem.label | translate\n                      }}</span>\n                      <span class=\"pb-list-docs__item-meta-value w-50 bold pl-1\">{{\n                        contentItem.value | translate\n                      }}</span>\n                    </span>\n                  </ng-container>\n                </div>\n              </ng-container>\n              <ng-container *ngIf=\"data.extraData && data.extraData.length > 0\">\n                <a\n                  href=\"javascript:void(0);\"\n                  class=\"pb-list-docs__item-extra-toggle font-small\"\n                  (click)=\"toggleExtraData(currentIndex)\"\n                >\n                  {{ \"FEPB_LIST_DOC_SHOW_HIDE\" | translate }}\n                </a>\n                <div\n                  class=\"pb-list-docs__item-extra-content d-flex flex-wrap\"\n                  *ngIf=\"extraDataCollapsed[currentIndex]\"\n                >\n                  <ng-container *ngFor=\"let extra of data.extraData\">\n                    <span\n                      class=\"pb-list-docs__item-meta-row d-flex justify-content-between w-50\"\n                      *ngIf=\"!extra.hideElement\"\n                    >\n                      <span class=\"pb-list-docs__item-meta-label w-50 text-muted text-uppercase\">{{\n                        extra.label | translate\n                      }}</span>\n                      <span class=\"pb-list-docs__item-meta-value w-50 bold\">{{ extra.value | translate }}</span>\n                    </span>\n                  </ng-container>\n                </div>\n              </ng-container>\n            </div>\n          </div>\n          <div\n            class=\"pb-list-docs__item-actions d-flex flex-column justify-content-center align-items-end\"\n          >\n            <ng-container *ngIf=\"pageOptions?.itemButtonDisplayMode !== 'row'\">\n              <ng-container *ngIf=\"data.dropdownButton\">\n                <div\n                  class=\"pb-list-docs__item-actions-dropdown pb-dropdown-button ml-2\"\n                  [dropdown]=\"data.dropdownButton\"\n                  (btnClickedOutput)=\"btnHandler($event)\"\n                ></div>\n              </ng-container>\n            </ng-container>\n\n            <ng-container *ngIf=\"pageOptions?.itemButtonDisplayMode === 'row'\">\n              <div class=\"pb-list-docs__item-actions-row d-flex align-items-center\">\n                <ng-container\n                  *ngFor=\"let btn of data.buttons; let btnIndex = index\"\n                >\n                  <button\n                    *ngIf=\"btn\"\n                    type=\"button\"\n                    class=\"pb-list-docs__item-action-btn btn btn-sm btn-link mx-1 text-body btn-pb-document\"\n                    [class]=\"btn.customStyleClass\"\n                    [nz-tooltip]=\"btn.text | translate\"\n                    nzPlacement=\"top\"\n                    [disabled]=\"btn.isDisabled\"\n                    [nz-popconfirm]=\"btn.popConfirm?.title\"\n                    [nzPopconfirmTitle]=\"\n                      btn.popConfirm?.title\n                        ? (btn.popConfirm.title | translate)\n                        : ''\n                    \"\n                    nzPopconfirmPlacement=\"topRight\"\n                    [nzOkText]=\"\n                      btn.popConfirm?.confirmText\n                        ? (btn.popConfirm.confirmText | translate)\n                        : ('FEPB_GENERIC_YES' | translate)\n                    \"\n                    [nzCancelText]=\"\n                      btn.popConfirm?.cancelText\n                        ? (btn.popConfirm.cancelText | translate)\n                        : ('FEPB_GENERIC_NO' | translate)\n                    \"\n                    (nzOnConfirm)=\"btnHandler({ btn: btn })\"\n                    (click)=\"!btn.popConfirm && btnHandler({ btn: btn })\"\n                  >\n                    <span\n                      *ngIf=\"btn.icon\"\n                      class=\"pb-list-docs__item-action-btn-icon fas fa-lg\"\n                      [class]=\"btn.icon\"\n                    ></span>\n                  </button>\n                </ng-container>\n              </div>\n            </ng-container>\n          </div>\n        </div>\n        <nz-divider class=\"pb-list-docs__divider my-2\"></nz-divider>\n      </ng-container>\n    </div>\n    <ng-container\n      *ngIf=\"\n        pageData.showFooterButtons &&\n        pageData.footerButtons &&\n        pageData.footerButtons.length > 0\n      \"\n    >\n      <div\n        class=\"w-100 pb-default-buttons my-2\"\n        [buttons]=\"pageData.footerButtons\"\n        (btnClickedOutput)=\"btnHandler($event)\"\n      ></div>\n      <!-- <div class=\"d-flex flex-column justify-content-center align-items-center my-2\">\n        <ng-container *ngFor=\"let btn of pageData.footerButtons; let currentIndex = index\">\n          <button class=\"btn my-1 \" (click)=\"btnClick(btn)\" [class]=\"btn.customStyleClass\"\n            [class.btn-outline-primary]=\"btn.style == 'outline'\" [class.btn-primary]=\"btn.style == 'default'\"\n            [title]=\"btn.help?.text ? btn.help?.text : ''\" [disabled]=\"btn.isDisabled\">\n            {{btn.text}}\n            <ng-container *ngIf=\"btn.icon\">\n              <span class=\"ml-1 fas \" [class]=\"btn.icon\"></span>\n            </ng-container>\n          </button>\n\n        </ng-container>\n      </div> -->\n    </ng-container>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"!pageData || !pageOptions\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{\n        \"FEPB_GENERIC_NO_DATA_CONTENT\" | translate\n      }}</span>\n    </div>\n  </div>\n</ng-container>\n","import {\n  Directive,\n  Input,\n  Output,\n  EventEmitter,\n  ViewContainerRef,\n  OnInit,\n  OnDestroy,\n  OnChanges,\n  SimpleChanges,\n  Type,\n  ComponentRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IPbListDocumentsComponent } from './pb-components.tokens';\nimport { SectionContent } from '../../types/external-types/sectionContent';\n\n/**\n * Directive that dynamically creates a list-documents component.\n * This allows for component override via the PB_LIST_DOCUMENTS_COMPONENT token.\n *\n * @example\n * ```html\n * <ng-template\n *   pbDynamicListDocuments\n *   [component]=\"listDocumentsComponent\"\n *   [pageStructure]=\"content\"\n *   (onUpdate)=\"refreshContent()\">\n * </ng-template>\n * ```\n */\n@Directive({\n  selector: '[pbDynamicListDocuments]',\n})\nexport class PbDynamicListDocumentsDirective\n  implements OnInit, OnDestroy, OnChanges\n{\n  /**\n   * The component type to instantiate\n   */\n  @Input() component!: Type<IPbListDocumentsComponent>;\n\n  /**\n   * The page structure to pass to the component\n   */\n  @Input() pageStructure!: SectionContent;\n\n  /**\n   * Event emitted when the component requests an update\n   */\n  @Output() onUpdate = new EventEmitter<void>();\n\n  private componentRef: ComponentRef<IPbListDocumentsComponent> | null = null;\n  private updateSubscription: Subscription | null = null;\n\n  constructor(private viewContainerRef: ViewContainerRef) {}\n\n  ngOnInit(): void {\n    this.createComponent();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // If component type changes, recreate the component\n    if (changes['component'] && !changes['component'].firstChange) {\n      this.destroyComponent();\n      this.createComponent();\n    }\n    // If pageStructure changes, update the input\n    else if (changes['pageStructure'] && this.componentRef) {\n      this.componentRef.instance.pageStructure = this.pageStructure;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyComponent();\n  }\n\n  private createComponent(): void {\n    if (!this.component) {\n      console.warn('PbDynamicListDocumentsDirective: No component provided');\n      return;\n    }\n\n    // Clear the container\n    this.viewContainerRef.clear();\n\n    // Create the component\n    this.componentRef = this.viewContainerRef.createComponent(this.component);\n\n    // Set the input\n    if (this.pageStructure) {\n      this.componentRef.instance.pageStructure = this.pageStructure;\n    }\n\n    // Subscribe to the output\n    if (this.componentRef.instance.onUpdate) {\n      this.updateSubscription = this.componentRef.instance.onUpdate.subscribe(\n        () => {\n          this.onUpdate.emit();\n        }\n      );\n    }\n  }\n\n  private destroyComponent(): void {\n    if (this.updateSubscription) {\n      this.updateSubscription.unsubscribe();\n      this.updateSubscription = null;\n    }\n    if (this.componentRef) {\n      this.componentRef.destroy();\n      this.componentRef = null;\n    }\n  }\n}\n","import { InjectionToken, Type, EventEmitter } from '@angular/core';\nimport { SectionContent } from '../../types/external-types/sectionContent';\n\n// =============================================================================\n// PB-LIST-DOCUMENTS Component Override\n// =============================================================================\n\n/**\n * Interface that custom list-documents components must implement.\n * This ensures compatibility with the page-builder system.\n */\nexport interface IPbListDocumentsComponent {\n  /**\n   * Input: The page structure containing the list data\n   */\n  pageStructure: SectionContent;\n\n  /**\n   * Output: Emitted when the component needs to refresh its parent\n   */\n  onUpdate: EventEmitter<void>;\n}\n\n/**\n * Injection token for providing a custom list-documents component.\n *\n * Usage in app module:\n * ```typescript\n * import { PB_LIST_DOCUMENTS_COMPONENT } from 'fe-page-builder';\n *\n * @NgModule({\n *   providers: [\n *     { provide: PB_LIST_DOCUMENTS_COMPONENT, useValue: MyCustomListDocumentsComponent }\n *   ]\n * })\n * export class AppModule {}\n * ```\n *\n * Or using forRoot:\n * ```typescript\n * PbComponentsModule.forRoot({\n *   listDocumentsComponent: MyCustomListDocumentsComponent\n * })\n * ```\n */\nexport const PB_LIST_DOCUMENTS_COMPONENT = new InjectionToken<Type<IPbListDocumentsComponent>>(\n  'PbListDocumentsComponent'\n);\n\n// =============================================================================\n// Configuration interface for forRoot\n// =============================================================================\n\n/**\n * Configuration options for PbComponentsModule.forRoot()\n */\nexport interface PbComponentsConfig {\n  /**\n   * Custom component to use instead of the default PbListDocumentsComponent.\n   * Must implement IPbListDocumentsComponent interface.\n   */\n  listDocumentsComponent?: Type<IPbListDocumentsComponent>;\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PbMainTitleComponent } from './pb-main-title/pb-main-title.component';\nimport { PbHelpersMessagesComponent } from './pb-helpers-messages/pb-helpers-messages.component';\nimport { PbDefaultButtonsComponent } from './pb-default-buttons/pb-default-buttons.component';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { PbDropdownButtonComponent } from './pb-dropdown-button/pb-dropdown-button.component';\nimport { PbToolbarButtonsComponent } from './pb-toolbar-buttons/pb-toolbar-buttons.component';\nimport { PbDefaultSearchboxComponent } from './pb-default-searchbox/pb-default-searchbox.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PbDefaultButtonComponent } from './pb-default-button/pb-default-button.component';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { PbDefaultBreadcrumbsComponent } from './pb-default-breadcrumbs/pb-default-breadcrumbs.component';\nimport { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';\nimport { RouterModule } from '@angular/router';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';\nimport { PbDefaultImageComponent } from './pb-default-image/pb-default-image.component';\nimport { PbDefaultBannerComponent } from './pb-default-banner/pb-default-banner.component';\nimport { PbDefaultCardImageComponent } from './pb-default-card-image/pb-default-card-image.component';\nimport { PbToolbarButtonsComponentV2 } from './pb-toolbar-buttons/v2/pb-toolbar-buttons-v2.component';\nimport { PbModalGenericConfirmComponent } from './pb-modal-generic-confirm/pb-modal-generic-confirm.component';\nimport { PbModalResultSimpleComponent } from './pb-modal-result-simple/pb-modal-result-simple.component';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { PbCardDataComponent } from './pb-card-data/pb-card-data.component';\nimport { PbRemoteLoadingComponent } from './pb-remote-loading/pb-remote-loading.component';\nimport { PbListCardDataComponent } from './pb-list-card-data/pb-list-card-data.component';\nimport { PbChecklistDocumentsComponent } from './pb-checklist-documents/pb-checklist-documents.component';\nimport { MultiFileDropperModule } from '../multi-file-dropper/multi-file-dropper.module';\nimport { PbListDocumentsComponent } from './pb-list-documents/pb-list-documents.component';\nimport { PbDynamicListDocumentsDirective } from './pb-dynamic-list-documents.directive';\nimport { CommonPipesModule, CommonLibModule } from '@alfercom/common';\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzBadgeModule } from 'ng-zorro-antd/badge';\nimport { NzTagModule } from 'ng-zorro-antd/tag';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n  PB_LIST_DOCUMENTS_COMPONENT,\n  PbComponentsConfig,\n} from './pb-components.tokens';\n\n@NgModule({\n  declarations: [\n    PbMainTitleComponent,\n    PbHelpersMessagesComponent,\n    PbDefaultButtonsComponent,\n    PbDropdownButtonComponent,\n    PbToolbarButtonsComponent,\n    PbDefaultSearchboxComponent,\n    PbDefaultButtonComponent,\n    PbDefaultBreadcrumbsComponent,\n    PbDefaultImageComponent,\n    PbDefaultBannerComponent,\n    PbDefaultCardImageComponent,\n    PbToolbarButtonsComponentV2,\n    PbModalGenericConfirmComponent,\n    PbModalResultSimpleComponent,\n    PbCardDataComponent,\n    PbRemoteLoadingComponent,\n    PbListCardDataComponent,\n    PbChecklistDocumentsComponent,\n    PbListDocumentsComponent,\n    PbDynamicListDocumentsDirective,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    CommonPipesModule,\n    CommonLibModule,\n    ReactiveFormsModule,\n    RouterModule,\n    NzAlertModule,\n    NzDropDownModule,\n    NzPopoverModule,\n    NzToolTipModule,\n    NzBreadCrumbModule,\n    NzInputModule,\n    NzPopconfirmModule,\n    NzEmptyModule,\n    NzSkeletonModule,\n    NzSpinModule,\n    MultiFileDropperModule,\n    NzDividerModule,\n    NzPaginationModule,\n    NzButtonModule,\n    NzProgressModule,\n    NzModalModule,\n    NzBadgeModule,\n    NzTagModule,\n    TranslateModule,\n  ],\n  exports: [\n    PbMainTitleComponent,\n    PbHelpersMessagesComponent,\n    PbDefaultButtonsComponent,\n    PbDropdownButtonComponent,\n    PbToolbarButtonsComponent,\n    PbDefaultSearchboxComponent,\n    PbDefaultButtonComponent,\n    PbDefaultBreadcrumbsComponent,\n    PbDefaultImageComponent,\n    PbDefaultBannerComponent,\n    PbDefaultCardImageComponent,\n    PbToolbarButtonsComponentV2,\n    PbModalGenericConfirmComponent,\n    PbModalResultSimpleComponent,\n    PbCardDataComponent,\n    PbRemoteLoadingComponent,\n    PbListCardDataComponent,\n    PbChecklistDocumentsComponent,\n    PbListDocumentsComponent,\n    PbDynamicListDocumentsDirective,\n  ],\n})\nexport class PbComponentsModule {\n  /**\n   * Use forRoot to provide custom component overrides for the page-builder components.\n   *\n   * @example\n   * ```typescript\n   * // In your app.module.ts\n   * import { PbComponentsModule } from 'fe-page-builder';\n   * import { MyCustomListDocumentsComponent } from './my-custom-list-documents.component';\n   *\n   * @NgModule({\n   *   imports: [\n   *     PbComponentsModule.forRoot({\n   *       listDocumentsComponent: MyCustomListDocumentsComponent\n   *     })\n   *   ]\n   * })\n   * export class AppModule {}\n   * ```\n   *\n   * @param config Configuration object with custom component types\n   * @returns ModuleWithProviders for the PbComponentsModule\n   */\n  static forRoot(\n    config?: PbComponentsConfig\n  ): ModuleWithProviders<PbComponentsModule> {\n    return {\n      ngModule: PbComponentsModule,\n      providers: [\n        {\n          provide: PB_LIST_DOCUMENTS_COMPONENT,\n          useValue: config?.listDocumentsComponent || PbListDocumentsComponent,\n        },\n      ],\n    };\n  }\n}\n","import { NgModule, ComponentFactoryResolver, ComponentFactory } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderFormComponent } from './page-builder-form.component';\nimport { PbComponentsModule } from '../utils/pb-components/pb-components.module';\nimport { DynamicFormGeneratorModule } from '@alfercom/dynamic-form';\nimport { TranslateModule } from '@ngx-translate/core';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderFormComponent': PageBuilderFormComponent\n};\n\n@NgModule({\n  declarations: [\n    PageBuilderFormComponent\n  ],\n  imports: [\n    CommonModule,\n    DynamicFormGeneratorModule,\n    PbComponentsModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderFormModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"DynamicPageFormModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderFormComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-page-builder-notfound',\n  templateUrl: './page-builder-notfound.component.html',\n  styleUrls: ['./page-builder-notfound.component.scss']\n})\nexport class PageBuilderNotfoundComponent {\n\n  constructor() { }\n\n}\n","<p>page-builder-notfound works!</p>\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderNotfoundComponent } from './page-builder-notfound.component';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderNotfoundComponent': PageBuilderNotfoundComponent\n};\n\n@NgModule({\n  declarations: [PageBuilderNotfoundComponent],\n  imports: [\n    CommonModule\n  ]\n})\nexport class PageBuilderNotfoundModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"PageBuilderErrorModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderNotfoundComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { NzDrawerRef } from 'ng-zorro-antd/drawer';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { PageBuilderMain } from '../page-builder-main.class';\n\nimport { PageBuilderService } from '../services/page-builder.service';\nimport { PageBuilderGuiService } from '../services/page-builder-gui.service';\nimport { PageBuilderCardView, PageBuilderDefaultInput } from '../types/pb-types/page-builder.type';\nimport { ActionButtonCodecService } from '../services/action-button-codec.service';\n\n@Component({\n  selector: 'app-page-builder-cardview',\n  templateUrl: './page-builder-cardview.component.html',\n  styleUrls: ['./page-builder-cardview.component.scss']\n})\nexport class PageBuilderCardviewComponent extends PageBuilderMain<PageBuilderCardView> implements OnDestroy{\n\n  @Input() set data(value: PageBuilderDefaultInput) {\n    this.pageBuilderParameters = value;\n    this.initInputData(value);\n  }\n\n  @Input() set modalRef(value: NzModalRef) {\n    this.modal = value;\n  }\n  @Input() set drawerRef(value: NzDrawerRef) {\n    this.drawer = value;\n  }\n\n  readOnlyCards: boolean = false;\n\n  constructor(\n    protected pageBuilderGuiService: PageBuilderGuiService,\n    protected override pageBuilderService: PageBuilderService,\n    protected override actionButtonCodecService: ActionButtonCodecService\n  ) {\n    super(pageBuilderService, actionButtonCodecService);\n    this.initLoadingSub();\n  }\n  \n  ngOnDestroy(): void {\n    this.standardOnDestroyFn();\n  }\n\n  override handleResStructure(res: any) {\n    // Call parent method to handle afterLoadBtn and standardStructureParser\n    super.handleResStructure(res);\n\n    if (res && res.result && res.structure) {\n      this.verifyReadOnly();\n      if (this.page && this.page.tourNames)//fare una prova, forse non va per questione di millisecondi\n        setTimeout(() => this.pageBuilderGuiService.checkTours(this.page.tourNames), 500);//Do del tempo alla pagina di disegnarsi\n    }\n  }\n\n  actionButtonResNeedRefreshFn(res: any): void {\n    this.refreshPage();\n  }\n  actionButtonResCloseModalFn(res: any): void { }\n  actionButtonResEventToHandleFn(res: any): void {\n    if (res.eventToHandle && res.eventToHandle.eventName == \"need-refresh\") {\n      this.refreshPage();\n    }\n  }\n\n  verifyReadOnly() {\n    if (this.page && this.page.body && this.page.body.cards) {\n      const cardsWithButtons = this.page.body.cards.filter(el => el.buttons && el.buttons.length > 0);\n      this.readOnlyCards = cardsWithButtons && cardsWithButtons.length == 0 ? true : false;\n    }\n  }\n\n  override refreshPage(): void {\n    if (this.pageBuilderParameters) {\n      this.pageBuilderParameters.structure = null;\n      this.initInputData(this.pageBuilderParameters)\n    }\n  }\n}\n","<ng-container *ngIf=\"page\">\n  <ng-container *ngIf=\"page.head\">\n    <ng-container *ngIf=\"page.head.breadcrumbs\">\n      <div class=\"w-100 pb-default-breadcrumbs py-2\" [breadcrumbs]=\"page.head.breadcrumbs\"></div>\n    </ng-container>\n    <div class=\"w-100 pb-main-title mb-2\" [title]=\"page.head.title\"></div>\n  </ng-container>\n  <div class=\"d-flex flex-column pb-content\" [class.align-items-end]=\"page.extra?.position == 'right'\"\n    [class.align-items-center]=\"page.extra?.position == 'center'\"\n    [class.align-items-start]=\"page.extra?.position == 'left'\">\n    <div [class.w-100]=\"!page.extra || !page.extra?.pageSize || page.extra?.pageSize == 'default'\"\n      [class.w-40]=\" page.extra?.pageSize == 'small'\" [class.w-60]=\" page.extra?.pageSize == 'medium'\"\n      [class.w-80]=\"page.extra?.pageSize == 'large'\">\n      <ng-container *ngIf=\"page.body\">\n        <div class=\"w-50 d-flex justify-content-center mx-auto\" *ngIf=\"page.body.helpersSmall\">\n          <div class=\"w-100 pb-helpers-messages my-4\" [helpers]=\"page.body.helpersSmall\" [size]=\"'small'\"\n            [width]=\"'default'\"></div>\n        </div>\n        <ng-container *ngIf=\"page.body.helpers\">\n        <div class=\"w-100 pb-helpers-messages\" [helpers]=\"page.body.helpers\"\n          [margin]=\"page.body.helpersSmall ? 'mt-2 mb-5' : 'my-5'\"></div>\n        </ng-container>\n        <ng-container *ngIf=\"(page.body.cards&&page.body.cards.length==0) || !page.body.cards\">\n          <div class=\"mt-2 py-4 px-4 w-100\">\n            <div class=\"d-flex justify-content-center text-center flex-column\">\n              <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n              <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n            </div>\n          </div>\n        </ng-container>\n        <ng-container *ngIf=\"page.body.cards&&page.body.cards.length>0\">\n          <ng-container *ngFor=\"let card of page.body.cards; let currentIndex = index\">\n            <div class=\"w-100 pb-card-data\" [pageStructure]=\"card\" (onUpdate)=\"refreshPage()\"\n              [hideButtons]=\"readOnlyCards\" [class.mb-2]=\"currentIndex == 0\"\n              [class.my-2]=\"currentIndex > 0 && currentIndex < (page.body.cards.length-1)\"\n              [class.mt-2]=\"currentIndex == (page.body.cards.length-1)\"></div>\n          </ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"page.body.buttons\">\n          <div class=\"w-100 pb-default-buttons my-5\" [buttons]=\"page.body.buttons\"\n            (btnClickedOutput)=\"btnHandler($event)\">\n          </div>\n        </ng-container>\n      </ng-container>\n    </div>\n    </div>\n</ng-container>\n<ng-container *ngIf=\"!pageLoading && !page\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n    </div>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"pageLoading\">\n  <div class=\"d-flex flex-column w-100 h-100 justify-content-center align-items-center\">\n    <div class=\"w-80\">\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n    </div>\n  </div>\n</ng-container>\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderCardviewComponent } from './page-builder-cardview.component';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { PbComponentsModule } from '../utils/pb-components/pb-components.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderCardviewComponent': PageBuilderCardviewComponent\n};\n\n@NgModule({\n  declarations: [PageBuilderCardviewComponent],\n  imports: [\n    CommonModule,\n    NzEmptyModule,\n    NzSkeletonModule,\n    PbComponentsModule,\n    NzModalModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderCardviewModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"PageBuilderCardviewModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderCardviewComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import {\n  Component,\n  ComponentRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Type,\n  ViewChild,\n} from '@angular/core';\nimport { NzTabSetComponent } from 'ng-zorro-antd/tabs';\nimport { Subject } from 'rxjs';\nimport * as _ from 'lodash';\nimport { AdDirective } from '../ad.directive';\nimport { PageInstantiatorService } from '../../services/page-builder-instantiator.service';\nimport { BuilderDriverService } from '../../services/builder-driver.service';\nimport { PageBuilderService } from '../../services/page-builder.service';\nimport {\n  PageBuilderHelpers,\n  PageBuilderDefaultInput,\n  ActionButtonResponse,\n} from '../../types/pb-types/page-builder.type';\nimport { TabsetInterface } from './tabset.interface';\nimport { ActionButton } from '../../types/external-types/actionButton';\nimport {\n  PB_LIST_DOCUMENTS_COMPONENT,\n  IPbListDocumentsComponent,\n} from '../pb-components/pb-components.tokens';\nimport { PbListDocumentsComponent } from '../pb-components/pb-list-documents/pb-list-documents.component';\n\nconst VIEW_TIMEOUT = 450;\n@Component({\n  selector: '.tabset',\n  templateUrl: './tabset.component.html',\n  styleUrls: ['./tabset.component.scss'],\n})\nexport class TabsetComponent implements OnInit, OnDestroy {\n  @ViewChild('tabsetComponent') tabsetComponent!: NzTabSetComponent;\n  @ViewChild(AdDirective, { static: false }) adHost!: AdDirective;\n\n  @Input('tabset') set tabsetInput(_tabset: Tabset) {\n    if (_tabset) {\n      this.initTabset(_tabset);\n      if (this.currentTabIndex !== null && this.currentTabIndex !== undefined) {\n        this.changeCurrentIndex(this.currentTabIndex, true);\n      }\n    }\n  }\n\n  @Input('pageTitle') pageTitle!: string;\n  @Input('helpers') helpers!: PageBuilderHelpers[];\n  @Input('pageBuilderParameters')\n  pageBuilderParameters!: PageBuilderDefaultInput;\n  @Input('cssClass') cssClass!: string;\n\n  tabset!: Tabset;\n\n  @Output('onUpdate') onUpdate: EventEmitter<void> = new EventEmitter();\n\n  //ng zorro tabset\n  currentTabIndex: number | undefined = undefined;\n  currentTabStructure: any = null;\n  contentType: 'view' | 'section-content' | 'action-button' | null = null;\n\n  savedSectionContents: { [key: string]: any } = {};\n\n  currentTabTitle: string | null = null;\n\n  /**\n   * The component type to use for list-generic-documents.\n   * Uses the custom component if provided via PB_LIST_DOCUMENTS_COMPONENT token,\n   * otherwise falls back to the default PbListDocumentsComponent.\n   */\n  listDocumentsComponent: Type<IPbListDocumentsComponent>;\n\n  constructor(\n    private pageInstaService: PageInstantiatorService,\n    private builderService: BuilderDriverService,\n    private pageBuilderService: PageBuilderService,\n    @Optional()\n    @Inject(PB_LIST_DOCUMENTS_COMPONENT)\n    customListDocumentsComponent?: Type<IPbListDocumentsComponent>\n  ) {\n    // Use custom component if provided, otherwise use default\n    this.listDocumentsComponent =\n      customListDocumentsComponent || PbListDocumentsComponent;\n  }\n\n  ngOnInit(): void {\n    this.initWindowEventListeners();\n    if (this.tabset) {\n      this.initFirstTab();\n    }\n  }\n\n  ngOnDestroy(): void {\n    window.removeEventListener('switchTab', this.switchTabHandler, false);\n  }\n\n  private initWindowEventListeners(): void {\n    window.addEventListener('switchTab', this.switchTabHandler, false);\n  }\n\n  private switchTabHandler = (event: any): void => {\n    const tabId = _.get(event, 'detail.params.tabId') || _.get(event, 'detail.tabId');\n    if (tabId && this.tabset && this.tabset.tabs) {\n      const tabIndex = this.tabset.tabs.findIndex((tab) => tab.id === tabId);\n      if (tabIndex !== -1) {\n        this.changeCurrentIndex(tabIndex, true);\n      }\n    }\n  };\n\n  initFirstTab() {\n    if (this.tabset) {\n      let firstIndex = { index: 0 };\n      if (this.tabset.firstActiveTabIndex) {\n        firstIndex = this.tabset.firstActiveTabIndex;\n      }\n      this.tabChanged(firstIndex);\n    }\n  }\n\n  initTabset(tabset: Tabset) {\n    this.tabset = tabset;\n  }\n\n  /** ng zorro tabset gestione */\n  tabChanged(event: any, forceTabSet: boolean = false) {\n    const previousTabIndex = this.currentTabIndex;\n    const previousTab: TabsetTabs | null =\n      previousTabIndex !== undefined && previousTabIndex !== null\n        ? this.tabset.tabs[previousTabIndex]\n        : null; // Added null check for previousTabIndex\n\n    if (event && event.index !== null && event.index !== undefined) {\n      // Only update currentTabIndex if it's different or forced\n      if (this.currentTabIndex === event.index && !forceTabSet) {\n        return; // Avoid redundant processing if the tab hasn't actually changed\n      }\n\n      this.currentTabIndex = event.index;\n      if (\n        this.currentTabIndex !== null &&\n        this.currentTabIndex !== undefined &&\n        this.tabset &&\n        this.tabset.tabs &&\n        this.tabset.tabs[this.currentTabIndex]\n      ) {\n        const currentTab: TabsetTabs = this.tabset.tabs[this.currentTabIndex];\n        this.currentTabTitle = currentTab.title || '';\n        if (currentTab.content) {\n          const contentType = currentTab.content.type;\n          const data = currentTab.content.data;\n          if (contentType) {\n            switch (contentType) {\n              case 'view':\n                this.contentType = 'view';\n                // Clear previous content immediately for faster perceived change\n                if (this.adHost) {\n                  this.adHost.viewContainerRef.clear();\n                }\n                this.getContentFromInsta(data);\n                break;\n              case 'action-button':\n                // *** START MODIFICATION ***\n                // Revert index visually *before* executing action\n                this.currentTabIndex = previousTabIndex;\n                this.currentTabTitle = previousTab?.title || null; // Revert title too\n                // Make sure the tabset component reflects the reverted index\n                // Use setTimeout to allow Angular's change detection cycle to finish before setting index\n                setTimeout(() => {\n                  if (\n                    this.tabsetComponent &&\n                    previousTabIndex !== undefined &&\n                    previousTabIndex !== null\n                  ) {\n                    this.tabsetComponent.setSelectedIndex(previousTabIndex);\n                  }\n                }, 0);\n\n                // Handle the action button click\n                if (data && data.actionButton) {\n                  console.log(\n                    `Tabset: Executing action-button for tab index ${event.index}`,\n                    data.actionButton\n                  );\n                  // Introduce loading state if applicable\n                  this.pageBuilderService\n                    .handlerActionButton(data.actionButton)\n                    .subscribe({\n                      next: (res: ActionButtonResponse | undefined) => {\n                        console.log('Tabset: Action button response:', res);\n                        if (res) {\n                          if (\n                            res.eventToHandle &&\n                            res.eventToHandle.eventName == 'need-refresh'\n                          ) {\n                            console.log(\n                              'Tabset: action-button emitted need-refresh, calling refreshContent()'\n                            );\n                            // Refresh the content of the *previously* selected tab (which is now the current one again)\n                            this.refreshContent();\n                          } else if (res.needRefresh) {\n                            // If the action button itself signals a general refresh, handle it.\n                            // This might refresh the *whole page* depending on how onUpdate bubbles up.\n                            console.log(\n                              'Tabset: action-button indicated needRefresh, calling refreshContent()'\n                            );\n                            this.refreshContent(); // Or maybe this.onUpdate.emit()? Depends on desired scope. Refreshing current tab seems logical.\n                          }\n                          // Handle other potential results like modal closing, navigation etc.\n                          // e.g., check res.closeModal, res.landingUrl\n                        }\n                        // Remove loading state if applicable\n                      },\n                      error: (err) => {\n                        console.error(\n                          'Tabset: Error executing action-button:',\n                          err\n                        );\n                        // Remove loading state and show error message if applicable\n                      },\n                    });\n                } else {\n                  console.warn(\n                    `Tabset: Clicked action-button tab index ${event.index} but no actionButton data found.`\n                  );\n                }\n                // *** END MODIFICATION ***\n                break;\n              case 'section-content':\n                // *** START MODIFICATION ***\n                if (this.adHost) {\n                  this.adHost.viewContainerRef.clear();\n                }\n                // *** END MODIFICATION ***\n                this.contentType = 'section-content';\n                this.getContentFromApi(data);\n                break;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  getContentFromInsta(contentData: any) {\n    if (contentData.view) {\n      setTimeout(() => {\n        this.loadTabContent(contentData.view);\n      }, VIEW_TIMEOUT);\n    }\n  }\n\n  async loadTabContent(viewData: PageBuilderDefaultInput) {\n    const viewContainerRef = this.adHost.viewContainerRef;\n    viewContainerRef.clear();\n\n    if (viewData) viewData.passiveRefresh = true;\n\n    this.pageBuilderService\n      .getInstanceParametersAndStructureFromDefaultInput(\n        viewData,\n        new Subject<boolean>()\n      )\n      .subscribe({\n        next: async (res) => {\n          if (\n            res &&\n            res.result &&\n            res.instanceParameters &&\n            res.instanceParameters.moduleId\n          ) {\n            const tabsetInstance: ComponentRef<TabsetInterface> | undefined =\n              await this.pageInstaService.loadComponent(\n                res.instanceParameters.moduleId,\n                viewContainerRef\n              );\n            if (tabsetInstance) {\n              tabsetInstance.instance.data =\n                res.instanceParameters.componentInstanceParameters;\n            }\n          } else {\n            throw new Error(\n              `Parameters for view incompleted. Check params received: ${JSON.stringify(\n                res\n              )}`\n            );\n          }\n        },\n        error: (error) => {\n          console.error(error);\n        },\n      });\n  }\n\n  getContentFromApi(contentData: any, forceUpdate: boolean = false) {\n    const section = contentData.section || null;\n    if (\n      section &&\n      this.savedSectionContents[section.sectionId] &&\n      section.parameters &&\n      section.parameters.length > 0\n    ) {\n      const paramDiference = _.difference(\n        this.savedSectionContents[section.sectionId].parameters,\n        section.parameters\n      );\n      if (paramDiference && paramDiference.length > 0) {\n        //tab con parametri diversi forzo l'update del contenuto\n        forceUpdate = true;\n      }\n    }\n    if (section && section.sectionId) {\n      if (this.savedSectionContents[section.sectionId] && !forceUpdate) {\n        this.currentTabStructure = _.cloneDeep(\n          this.savedSectionContents[section.sectionId].response\n        );\n      } else {\n        this.builderService\n          .callApi({\n            apiMethod: 'getSectionContent',\n            params: { context: section.sectionId },\n            parameters: section.parameters ? section.parameters : [],\n            viewId: this.pageBuilderParameters\n              ? this.pageBuilderParameters.viewId\n              : undefined,\n          })\n          .subscribe((res) => {\n            this.currentTabStructure = _.cloneDeep(res);\n            this.savedSectionContents[section.sectionId] = {\n              response: _.cloneDeep(res),\n              parameters: section.parameters,\n            };\n            // console.log(res);\n          });\n      }\n    }\n  }\n\n  changeCurrentIndex(index: number, force: boolean = false) {\n    if (index !== undefined && index !== null) {\n      //this.tabChanged({ index });\n      this.tabsetComponent.setSelectedIndex(index);\n      if (force)\n        setTimeout(() => {\n          this.tabChanged({ index });\n        }, 400);\n    }\n  }\n\n  refreshContent() {\n    if (this.currentTabIndex !== null && this.currentTabIndex !== undefined) {\n      console.log(\n        `Tabset: Refreshing content for tab index ${this.currentTabIndex}`\n      ); // Add log\n      const currentTab: TabsetTabs | undefined =\n        this.tabset?.tabs[this.currentTabIndex]; // Add safe navigation\n      if (currentTab?.content) {\n        // Add safe navigation\n        const contentType = currentTab.content.type;\n        const data = currentTab.content.data;\n        if (contentType == 'section-content') {\n          console.log(\n            `Tabset: Re-fetching section-content for sectionId: ${data?.section?.sectionId}`\n          ); // Add log\n          this.getContentFromApi(data, true); // Force update\n          // Do NOT emit onUpdate here, as this component IS the one handling the refresh request.\n          // Emitting onUpdate would likely cause the parent (e.g., page-builder-tabset) to refresh everything,\n          // which might be more than intended. If a full page refresh IS intended, the original action button\n          // response should have indicated needRefresh: true which would be handled higher up.\n          // this.onUpdate.emit();\n        } else if (contentType == 'view') {\n          console.log(`Tabset: Re-fetching view content`); // Add log\n          // Re-load the view component\n          this.getContentFromInsta(data);\n        } else if (contentType === 'action-button') {\n          console.warn(\n            `Tabset: Attempted to refresh an action-button tab (index: ${this.currentTabIndex}). This usually doesn't make sense.`\n          );\n          // Action buttons don't have content to refresh in this context.\n        }\n      } else {\n        console.warn(\n          `Tabset: Could not refresh content for tab index ${this.currentTabIndex}, currentTab or currentTab.content is missing.`\n        );\n      }\n    } else {\n      console.warn(\n        `Tabset: Attempted to refresh content, but currentTabIndex is not set.`\n      );\n    }\n  }\n\n  /** FINE ng zorro tabset gestione */\n}\n\nexport type Tabset = {\n  tabs: TabsetTabs[];\n  position: 'top' | 'right' | 'bottom' | 'left';\n  shortcut?: {\n    selectionLabel: string;\n    displayPrefix: boolean;\n  };\n  hideTabs?: boolean;\n  firstActiveTabIndex?: {\n    index: number;\n  };\n};\n\nexport type TabsetTabs = {\n  title?: string;\n  id: string;\n  icon?: string;\n  badge?: string;\n  badgeTitle?: string;\n  disabled?: boolean;\n  disabledMessage?: string;\n  content: {\n    type: 'view' | 'section-content' | 'action-button';\n    data: {\n      view: PageBuilderDefaultInput;\n      actionButton: ActionButton;\n      section: any; // Tipo che contiene GetSectionContentResponse o i campi che gli servono per effettuare la chiamata\n    };\n  };\n};\n\nexport type GenericSection = any;\n","<ng-container *ngIf=\"tabset\">\n  <div class=\"d-flex flex-column\" [class]=\"cssClass\"\n    [ngClass]=\"tabset.position && !cssClass ? tabset.position !== 'left' && tabset.position !== 'right' ? '' : 'w-90 ml-5 mr-auto' : ''\">\n    <div class=\"d-flex  text-primary font-x-large justify-content-start  w-100 mb-2\"\n      *ngIf=\"pageTitle || (helpers && helpers.length > 0)\">\n      <ng-container *ngIf=\"pageTitle && pageTitle!==''\">\n        <span class=\"bold text-uppercase\"> {{pageTitle | translate}}\n        </span>\n        <ng-container *ngIf=\"helpers && helpers.length>0\">\n          <i class=\"far fa-info-circle fa-lg ml-2 align-self-center\" nz-tooltip\n            [nzTooltipTitle]=\"helpers[0] && helpers[0].text ? (helpers[0].text | translate):''\" nzTooltipOverlayClassName=\"tooltip-help\"></i>\n        </ng-container>\n      </ng-container>\n    </div>\n    <ng-container *ngIf=\"tabset.tabs && tabset.tabs.length > 0\">\n      <div class=\"w-100 d-flex flex-column\">\n        <ng-container *ngIf=\"tabset.shortcut\">\n          <div class=\"d-flex justify-content-start my-3\">\n            <span class=\"text-info font-small fs-large text-uppercase cursor-pointer\" nz-dropdown nzTrigger=\"click\"\n              [nzDropdownMenu]=\"menu\"\n              nz-tooltip [nzTooltipTitle]=\"'FEPB_TABSET_DROPDOWN_TOOLTIP' | translate\" nzTooltipOverlayClassName=\"tooltip-help\" *ngIf=\"currentTabTitle\"\n              >{{(currentTabTitle | translate) || ('FEPB_TABSET_DROPDOWN_PLACEHOLDER' | translate)}}<i class=\"ml-1 fa fa-chevron-down\"></i>\n            </span>\n          </div>\n          <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n            <ul nz-menu>\n              <ng-container *ngFor=\"let tab of tabset.tabs; let currentIndex = index;\">\n                <li nz-menu-item [nzDisabled]=\"tab.disabled\" [nzSelected]=\"currentIndex == currentTabIndex\"\n                  (click)=\"changeCurrentIndex(currentIndex)\">\n                  <i class=\"mr-1 fa \" [ngClass]=\"tab.icon\" *ngIf=\"tab && tab.icon\"></i>\n                  <span class=\"fs-large\">\n                    <ng-container *ngIf=\"tabset.shortcut&&tabset.shortcut.displayPrefix && tab && !tab.icon\">\n                      {{currentIndex+1}}</ng-container>\n                    <span class=\"font-small pl-2\" *ngIf=\"tab.title\">{{tab.title  | translate}}</span>\n                    <span class=\"ml-2 badge badge-primary text-white\" *ngIf=\"tab.badge && tab.badge!=='0' && tab.badgeTitle\"\n                      [title]=\"(tab.badgeTitle | translate) || (tab.badge | translate)\">{{tab.badge | translate}}</span>\n                  </span>\n                </li>\n              </ng-container>\n            </ul>\n          </nz-dropdown-menu>\n        </ng-container>\n        <nz-tabset [nzTabPosition]=\"tabset.position\" style=\"min-height:35vh;\" (nzSelectChange)=\"tabChanged($event)\"\n          class=\"w-100\" [class.hide-tabs-nav]=\"tabset.hideTabs\" #tabsetComponent>\n          <nz-tab *ngFor=\"let tab of tabset.tabs; let currentIndex = index;\" [nzTitle]=\"titleTabsetTemplate\"\n            [nzDisabled]=\"tab.disabled\">\n            <ng-template #titleTabsetTemplate>\n              <div class=\"w-100 d-flex flex-column align-items-end\" *ngIf=\"!tabset.hideTabs\">\n                <span class=\"d-flex align-items-center justify-content-center  w-100\"\n                  [class.text-disabled]=\"tab.disabled && tab.disabledMessage\" nz-tooltip\n                  [nzTooltipTitle]=\"tab.title ? tabTitleTooltip : null\">\n                  <ng-template #tabTitleTooltip>\n                    <div>\n                      <ng-container *ngIf=\"tab.disabled && tab.disabledMessage\">\n                        {{tab.disabledMessage | translate}}\n                      </ng-container>\n                      <ng-container *ngIf=\"tab.title && !(tab.disabled && tab.disabledMessage)\">\n                        {{tab.title | translate}}\n                      </ng-container>\n                    </div>\n                  </ng-template>\n                  <i class=\"mr-1 fa\" [class]=\"tab.disabled && tab.disabledMessage ? 'fa-ban' : tab.icon\"\n                    *ngIf=\"tab && tab.icon\"></i>\n                  <!-- <span class=\"fs-large\"> -->\n                  <span class=\"text-ellipsis text-left\"\n                    [ngClass]=\"tabset.position && tabset.position !== 'left' && tabset.position !== 'right' ? '' : 'w-90'\" *ngIf=\"tab.title\">{{tab.title | translate}}</span>\n                  <!-- </span> -->\n                </span>\n              </div>\n            </ng-template>\n            <ng-container *ngIf=\"currentIndex == currentTabIndex\">\n              <ng-container *ngIf=\"contentType == 'section-content'; else elseBlock\">\n                <ng-template\n                  [ngIf]=\"currentTabStructure && currentTabStructure.content && currentTabStructure.content.length > 0\"\n                  [ngIfElse]=\"currentStructureEmpty\">\n                  <ng-container *ngFor=\"let content of currentTabStructure.content; let _currentIndex = index\">\n                    <ng-container *ngIf=\"content\">\n                      <div class=\"d-flex mb-2 flex-1\"  [class.mb-2]=\"_currentIndex == 0\"\n                        [class.my-2]=\"_currentIndex > 0 && _currentIndex < (currentTabStructure.content.length-1)\"\n                        [class.mt-2]=\"_currentIndex == (currentTabStructure.content.length-1) && _currentIndex !== 0\"\n                        [class.mt-3]=\"_currentIndex == 0 && (tabset&&!tabset.shortcut)\">\n                        <ng-container *ngIf=\"content.type == 'generic'\">\n                          <div class=\"pb-card-data w-100\" [componentName]=\"content.name\"\n                            [apiCallData]=\"content.apiCallData\" [pageStructure]=\"content.pageStructure\"\n                            (onUpdate)=\"refreshContent()\">\n                          </div>\n                        </ng-container>\n                        <ng-container *ngIf=\"content.type == 'generic-checklist-documents'\">\n                          <div class=\"pb-checklist-documents w-100\" [pageStructure]=\"content\"\n                            (onUpdate)=\"refreshContent()\">\n                          </div>\n                        </ng-container>\n                        <ng-container *ngIf=\"content.type == 'generic-list'\">\n                          <div class=\"pb-list-card-data w-100\" [pageStructure]=\"content\"\n                            [helpers]=\"currentTabStructure.helpers\" (onUpdate)=\"refreshContent()\">\n                          </div>\n                        </ng-container>\n                        <ng-container *ngIf=\"content.type == 'list-generic-documents'\">\n                          <ng-template pbDynamicListDocuments [component]=\"listDocumentsComponent\" [pageStructure]=\"content\" (onUpdate)=\"refreshContent()\"></ng-template>\n                        </ng-container>\n                        <ng-container *ngIf=\"content.type == 'generic-tabset'\">\n                          <div class=\"w-100 tabset\" [tabset]=\"content.tabset\" [pageTitle]=\"content.title\"\n                            [helpers]=\"content.helpers\" [pageBuilderParameters]=\"pageBuilderParameters\"\n                            (onUpdate)=\"refreshContent()\"></div>\n                        </ng-container>\n                      </div>\n                    </ng-container>\n                  </ng-container>\n                </ng-template>\n                <ng-template #currentStructureEmpty>\n                  <div class=\"d-flex justify-content-center text-center flex-column mt-5\">\n                    <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n                    <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n                  </div>\n                </ng-template>\n                <ng-template #innerContentEmpty>\n                  <div class=\"d-flex justify-content-center text-center flex-column mt-5\">\n                    <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n                    <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n                  </div>\n                </ng-template>\n              </ng-container>\n              <ng-template adHost #elseBlock></ng-template>\n            </ng-container>\n            <ng-container *ngIf=\"currentIndex !== currentTabIndex\">\n              <div class=\"w-80\">\n                <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n                <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n              </div>\n            </ng-container>\n          </nz-tab>\n        </nz-tabset>\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"!tabset.tabs || tabset.tabs.length == 0\">\n      <div class=\"d-flex justify-content-center text-center flex-column mt-5\">\n        <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n        <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n      </div>\n    </ng-container>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"!tabset\">\n  <div class=\"d-flex justify-content-center text-center flex-column mt-5\">\n    <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n    <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n  </div>\n</ng-container>\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { PageBuilderMain } from '../page-builder-main.class';\nimport { PageBuilderService } from '../services/page-builder.service';\nimport {\n  PageBuilderTabset,\n  PageBuilderDefaultInput,\n  ActionButtonResponse,\n} from '../types/pb-types/page-builder.type';\nimport { TabsetInterface } from '../utils/tabset/tabset.interface';\nimport { ActionButtonCodecService } from '../services/action-button-codec.service';\n\n@Component({\n  selector: 'app-page-builder-tabset',\n  templateUrl: './page-builder-tabset.component.html',\n  styleUrls: ['./page-builder-tabset.component.scss'],\n})\nexport class PageBuilderTabsetComponent\n  extends PageBuilderMain<PageBuilderTabset>\n  implements OnDestroy, TabsetInterface\n{\n  @Input() set data(value: PageBuilderDefaultInput) {\n    this.pageBuilderParameters = value;\n    this.initInputData(value);\n  }\n\n  constructor(\n    protected override pageBuilderService: PageBuilderService,\n    protected override actionButtonCodecService: ActionButtonCodecService\n  ) {\n    super(pageBuilderService, actionButtonCodecService);\n  }\n\n  ngOnDestroy(): void {\n    this.standardOnDestroyFn();\n  }\n\n  actionButtonResNeedRefreshFn(res: ActionButtonResponse): void {\n    console.log(\n      'PageBuilderTabsetComponent: actionButtonResNeedRefreshFn called, refreshing page.'\n    );\n    this.refreshPage();\n  }\n\n  actionButtonResCloseModalFn(res: ActionButtonResponse): void {\n    console.log(\n      'PageBuilderTabsetComponent: actionButtonResCloseModalFn called (no modal/drawer here).'\n    );\n    // This component itself isn't typically a modal/drawer, so this might be empty\n    // or handle specific cleanup if needed.\n  }\n  actionButtonResEventToHandleFn(res: ActionButtonResponse): void {\n    // No need to check for 'need-refresh' here, PageBuilderMain handles it by calling refreshPage.\n    // Handle *other* specific events if this component needs to react to them.\n    console.log(\n      'PageBuilderTabsetComponent: actionButtonResEventToHandleFn called with event:',\n      res.eventToHandle\n    );\n    // Example:\n    // if (res.eventToHandle?.eventName === 'some-other-event') {\n    //   // Do something specific for page-builder-tabset\n    // }\n  }\n}\n","<ng-container *ngIf=\"page\">\n  <ng-container *ngIf=\"page.head\">\n    <ng-container *ngIf=\"page.head.breadcrumbs\">\n      <div class=\"w-100 pb-default-breadcrumbs py-2\" [breadcrumbs]=\"page.head.breadcrumbs\"></div>\n    </ng-container>\n    <div class=\"w-100 pb-main-title\" [title]=\"page.head.title\"></div>\n  </ng-container>\n  <ng-container *ngIf=\"page.body\">\n    <!-- [ngClass]=\"(page.body.helpers && page.body.helpers.length == 0) || !page.body.helpers ? 'my-5 p-2' : ''\" -->\n    <div class=\"w-50 d-flex justify-content-center mx-auto\" *ngIf=\"page.body.helpersSmall\">\n      <div class=\"w-100 pb-helpers-messages my-4\" [helpers]=\"page.body.helpersSmall\" [size]=\"'small'\"\n        [width]=\"'default'\"></div>\n    </div>\n    <div class=\"w-100 pb-helpers-messages\" [helpers]=\"page.body.helpers\"\n      [margin]=\"page.body.helpersSmall ? 'mt-2 mb-5' : 'my-5'\"></div>\n    <ng-container *ngIf=\"page.body.tabset\">\n      <div class=\"d-flex w-100 justify-content-center\"\n        [ngClass]=\"(page.body.helpers && page.body.helpers.length > 0) ? 'mt-3' : ''\">\n        <div class=\"tabset generic-tabset\"\n          [class.w-100]=\"!page.extra || !page.extra?.pageSize || page.extra?.pageSize == 'default'\"\n          [class.w-40]=\" page.extra?.pageSize == 'small'\" [class.w-60]=\" page.extra?.pageSize == 'medium'\"\n          [class.w-80]=\"page.extra?.pageSize == 'large'\" [tabset]=\"page.body.tabset\"\n          [pageBuilderParameters]=\"pageBuilderParameters\" (onUpdate)=\"refreshPage()\"></div>\n      </div>\n    </ng-container>\n  </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!pageLoading && !page\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{'FEPB_GENERIC_NO_DATA_CONTENT' | translate}}</span>\n    </div>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"pageLoading\">\n  <div class=\"d-flex flex-column w-100 h-100 justify-content-center align-items-center\">\n    <div class=\"w-80\">\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n    </div>\n  </div>\n</ng-container>\n<!-- MOCK -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { TabsetComponent } from './tabset.component';\nimport { PageBuilderUtilsModule } from '../page-builder-utils.module';\nimport { PbComponentsModule } from '../pb-components/pb-components.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n\n\n@NgModule({\n  declarations: [TabsetComponent],\n  imports: [\n    CommonModule,\n    NzTabsModule,\n    NzSkeletonModule,\n    NzDropDownModule,\n    NzEmptyModule,\n    PageBuilderUtilsModule,\n    PbComponentsModule,\n    NzToolTipModule,\n    TranslateModule\n  ],\n  exports: [TabsetComponent]\n})\nexport class TabsetModule { }\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderTabsetComponent } from './page-builder-tabset.component';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { PbComponentsModule } from '../utils/pb-components/pb-components.module';\nimport { TabsetModule } from '../utils/tabset/tabset.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderTabsetComponent': PageBuilderTabsetComponent\n};\n\n@NgModule({\n  declarations: [PageBuilderTabsetComponent],\n  imports: [\n    CommonModule,\n    TabsetModule,\n    NzEmptyModule,\n    NzSkeletonModule,\n    PbComponentsModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderTabsetModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"DynamicPageFormModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderTabsetComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import { Component, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { NzDrawerRef } from 'ng-zorro-antd/drawer';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { PageBuilderMain } from '../page-builder-main.class';\nimport { PageBuilderService } from '../services/page-builder.service';\nimport { PageBuilderGuiService } from '../services/page-builder-gui.service';\nimport { PbRemoteLoadingComponent } from '../utils/pb-components/pb-remote-loading/pb-remote-loading.component';\nimport { ActionButtonResponse, PageBuilderDefaultInput, PageBuilderModalResponse, PageBuilderSimpleView, PbDefaultButtonOutput } from '../types/pb-types/page-builder.type';\nimport { ActionButtonCodecService } from '../services/action-button-codec.service';\n\n@Component({\n  selector: 'app-page-builder-simpleview',\n  templateUrl: './page-builder-simpleview.component.html',\n  styleUrls: ['./page-builder-simpleview.component.scss']\n})\nexport class PageBuilderSimpleviewComponent extends PageBuilderMain<PageBuilderSimpleView> implements OnDestroy {\n\n  @ViewChild('remoteLoadingComponent') remoteLoadingComponent!: PbRemoteLoadingComponent;\n\n  @Input() set data(value: PageBuilderDefaultInput) {\n    this.pageBuilderParameters = value;\n    this.initInputData(value);\n  }\n\n  @Input() set modalRef(value: NzModalRef) {\n    this.modal = value;\n  }\n  @Input() set drawerRef(value: NzDrawerRef) {\n    this.drawer = value;\n  }\n\n  innerButtonsListenersSubs: { [key: string]: { btnHTMLElement: Element, fnToRemove: any }; } = {};\n\n  constructor(\n    protected override pageBuilderService: PageBuilderService,\n    protected pageBuilderGuiService: PageBuilderGuiService,\n    protected override actionButtonCodecService: ActionButtonCodecService\n  ) {\n    super(pageBuilderService, actionButtonCodecService);\n  }\n\n  ngOnDestroy(): void {\n    if (this.evetEmitterSubs) {\n      for (let event in this.evetEmitterSubs) {\n        if (this.evetEmitterSubs[event]) {\n          this.evetEmitterSubs[event].unsubscribe();\n          delete this.evetEmitterSubs[event];\n        }\n      }\n    }\n    if (this.innerButtonsListenersSubs) {\n      for (let btnId in this.innerButtonsListenersSubs) {\n        if (this.innerButtonsListenersSubs[btnId]) {\n          if (this.innerButtonsListenersSubs[btnId].btnHTMLElement && this.innerButtonsListenersSubs[btnId].fnToRemove) {\n            this.innerButtonsListenersSubs[btnId].btnHTMLElement.removeEventListener(\"click\", this.innerButtonsListenersSubs[btnId].fnToRemove);\n            delete this.innerButtonsListenersSubs[btnId];\n          }\n        }\n      }\n    }\n    this.stopLoading();\n  }\n\n  override handleResStructure(res: any){\n    // Call parent method to handle afterLoadBtn and standardStructureParser\n    super.handleResStructure(res);\n\n    if (res && res.result && res.structure) {\n      // Tours check\n      if (this.page && this.page.tourNames)//fare una prova, forse non va per questione di millisecondi\n        setTimeout(() => this.pageBuilderGuiService.checkTours(this.page.tourNames), 500);//Do del tempo alla pagina di disegnarsi\n      if (this.page && this.page.eventsOpts && this.page.eventsOpts.afterInit && this.page.eventsOpts.afterInit.length > 0) {\n        setTimeout(() => {\n          if (this.page.eventsOpts && this.page.eventsOpts.afterInit) {\n            for (let event of this.page.eventsOpts.afterInit) {\n              if (event && event.eventName) {\n                if (event.params && event.timeout) {//in via sperimentale 18/05/2021\n                  setTimeout(() => {\n                    window.dispatchEvent(new CustomEvent(event.eventName, { detail: { params: event.params || null } }));\n                    // getCustomEM().emit({\n                    //   eventName: event.eventName,\n                    //   params: event.params || null\n                    // })\n                  }, +event.timeout)\n                } else {\n                  window.dispatchEvent(new CustomEvent(event.eventName, { detail: { params: event.params || null } }));\n                  // getCustomEM().emit({\n                  //   eventName: event.eventName,\n                  //   params: event.params || null\n                  // })\n                }\n              }\n            }\n          }\n        }, 600);\n      }\n      if (this.page && this.page.body && this.page.body.innersButtons) {\n        for (let innerButton of this.page.body.innersButtons) {\n          if (innerButton && innerButton.htmlElementId && innerButton.button) {\n            const btnClickFn = () => {\n              this.btnHandler({ btn: innerButton.button }, false);\n            }\n            setTimeout(() => {\n              const btnHTMLElement = document.getElementById(innerButton.htmlElementId);\n              if (btnHTMLElement && (!this.innerButtonsListenersSubs || (this.innerButtonsListenersSubs && !this.innerButtonsListenersSubs[innerButton.htmlElementId]))) {\n                btnHTMLElement.addEventListener(\"click\", btnClickFn);\n                this.innerButtonsListenersSubs[innerButton.htmlElementId] = {\n                  btnHTMLElement,\n                  fnToRemove: btnClickFn\n                }\n              }\n            }, 500)//aspetto il disegno della pagina\n          }\n        }\n      }\n    }\n  }\n\n  override btnHandler(eventButton: PbDefaultButtonOutput, isLoadingCall: boolean = false) {\n    if (eventButton) {\n      let btnClicked = eventButton.btn;\n      if (btnClicked.action == \"close-modal\" || btnClicked.action == \"close-drawer\") {\n        let res: PageBuilderModalResponse = {\n          refreshFather: false,\n          committed: false,\n        }\n        if (this.modal) {\n          this.modal.destroy(res);\n        }\n        if (this.drawer) {\n          this.drawer.close(res);\n        }\n      } else {\n        this.pageBuilderService\n          .handlerActionButton(btnClicked)\n          .subscribe((res: any) => {\n            if (!isLoadingCall) {\n              this.handlerActionButtonResFn(res, undefined)\n            } else {\n              this.handlerActionButtonLoadingResFn(res)\n            }\n          });\n      }\n    }\n  }\n\n  actionButtonResEventToHandleFn(res: any): void {\n    if (res.eventToHandle && res.eventToHandle.eventName == \"need-refresh\") {\n      this.refreshPage()\n    }\n  }\n\n  actionButtonResNeedRefreshFn(): void {\n    this.refreshPage();\n  }\n  \n  actionButtonResCloseModalFn(): void {}\n\n  handlerActionButtonLoadingResFn(res: ActionButtonResponse) {\n    if (res) {\n      if (res.rawResponse) {\n        if (this.page && this.page.remoteLoading && this.page.remoteLoading.remoteLoadingParams) {\n          if (res.rawResponse.extra.remoteParams && res.rawResponse.extra.remoteParams.remoteLoadingParams) {\n            const receivedLoadingParams = res.rawResponse.extra.remoteParams.remoteLoadingParams;\n            if (receivedLoadingParams.lastCallResponse && (receivedLoadingParams.percent !== null && receivedLoadingParams.percent !== undefined)) {\n              // this.page.remoteLoading.remoteLoadingParams.percent = receivedLoadingParams.percent;\n              // this.page.remoteLoading.remoteLoadingParams.lastCallResponse = receivedLoadingParams.lastCallResponse;\n              this.remoteLoadingComponent.setCallingParams(receivedLoadingParams);\n            }\n            if (receivedLoadingParams.percent == 100) {//receivedLoadingParams.lastCallResponse == 'OK' ||\n              setTimeout(() => this.refreshPage(), 2000); //attesa alla conclusione\n            }\n            if (receivedLoadingParams.lastCallResponse == 'KO') {\n              setTimeout(() => this.refreshPage(), 2000); //attesa al fallimento\n            }\n          }\n        }\n      }\n    } else {\n      this.refreshPage();\n    }\n  }\n\n\n  override refreshPage() {\n    this.removeInnerButtonsListeners();\n    if (this.pageBuilderParameters) {\n      this.pageBuilderParameters.structure = null;\n      this.initInputData(this.pageBuilderParameters)\n    }\n  }\n\n  //gestione remote loading\n  repeatRemoteCall(event: PbDefaultButtonOutput) {\n    if (this.page && this.page.remoteLoading && this.page.remoteLoading.remoteLoadingParams) {\n      if (event) {\n        this.btnHandler(event, true)\n      }\n    }\n  }\n\n  removeInnerButtonsListeners() {\n    if (this.innerButtonsListenersSubs) {\n      for (let btnId in this.innerButtonsListenersSubs) {\n        if (this.innerButtonsListenersSubs[btnId]) {\n          if (this.innerButtonsListenersSubs[btnId].btnHTMLElement && this.innerButtonsListenersSubs[btnId].fnToRemove) {\n            this.innerButtonsListenersSubs[btnId].btnHTMLElement.removeEventListener(\"click\", this.innerButtonsListenersSubs[btnId].fnToRemove);\n            delete this.innerButtonsListenersSubs[btnId];\n          }\n        }\n      }\n    }\n  }\n}\n\n","<ng-container *ngIf=\"page\">\n  <ng-container *ngIf=\"page.head\">\n    <ng-container *ngIf=\"page.head.breadcrumbs\">\n      <div\n        class=\"w-100 pb-default-breadcrumbs py-2\"\n        [breadcrumbs]=\"page.head.breadcrumbs\"\n      ></div>\n    </ng-container>\n    <ng-container\n      *ngIf=\"\n        page.head.header &&\n        (page.head.header.logo ||\n          (page.head.header.buttons && page.head.header.buttons.length > 0))\n      \"\n    >\n      <div class=\"w-100 d-flex my-4 pl-3\">\n        <div class=\"w-10\" style=\"height: 5vh\">\n          <div\n            class=\"pb-default-image mr-auto h-100\"\n            [image]=\"page.head.header.logo\"\n            [cover]=\"'contain'\"\n          ></div>\n        </div>\n        <div\n          class=\"d-flex ml-auto\"\n          *ngIf=\"\n            page.head.header.buttons && page.head.header.buttons.length > 0\n          \"\n        >\n          <ng-container *ngFor=\"let btn of page.head.header.buttons\">\n            <div\n              class=\"px-2 pb-default-button\"\n              [button]=\"btn\"\n              (btnClickedOutput)=\"btnHandler($event)\"\n            ></div>\n          </ng-container>\n        </div>\n      </div>\n    </ng-container>\n    <div class=\"w-100 pb-main-title\" [title]=\"page.head.title\"></div>\n  </ng-container>\n  <ng-container\n    *ngIf=\"\n      page.remoteLoading &&\n      page.remoteLoading.hasRemoteLoading &&\n      page.remoteLoading.remoteLoadingParams\n    \"\n  >\n    <div\n      class=\"pb-remote-loading\"\n      #remoteLoadingComponent\n      (repeatCall)=\"repeatRemoteCall($event)\"\n      [loadingParams]=\"page.remoteLoading.remoteLoadingParams\"\n    ></div>\n  </ng-container>\n  <ng-container *ngIf=\"page.body && !page.remoteLoading?.hasRemoteLoading\">\n    <div\n      class=\"w-50 d-flex justify-content-center mx-auto\"\n      *ngIf=\"page.body.helpersSmall\"\n    >\n      <div\n        class=\"w-100 pb-helpers-messages my-4\"\n        [helpers]=\"page.body.helpersSmall\"\n        [size]=\"'small'\"\n        [width]=\"'default'\"\n      ></div>\n    </div>\n    <div\n      class=\"w-100 pb-helpers-messages\"\n      [helpers]=\"page.body.helpers\"\n      [margin]=\"page.body.helpersSmall ? 'mt-2 mb-5' : 'my-5'\"\n    ></div>\n    <ng-container *ngIf=\"page.body.content && page.body.content.html\">\n      <div\n        class=\"w-100\"\n        [innerHtml]=\"page.body.content.html | safeHtml : 'html'\"\n      ></div>\n    </ng-container>\n    <ng-container *ngIf=\"!page.body.content || !page.body.content.html\">\n      <div class=\"mt-2 py-4 px-4 w-100\">\n        <div class=\"d-flex justify-content-center text-center flex-column\">\n          <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n          <span class=\"m-5 fs-large text-muted\">{{\n            \"FEPB_GENERIC_NO_DATA_CONTENT\" | translate\n          }}</span>\n        </div>\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"page.body.buttons\">\n      <div\n        class=\"w-100 pb-default-buttons my-5\"\n        [btnRow]=\"true\"\n        [buttons]=\"page.body.buttons\"\n        (btnClickedOutput)=\"btnHandler($event)\"\n      ></div>\n    </ng-container>\n  </ng-container>\n</ng-container>\n<ng-container *ngIf=\"!pageLoading && !page\">\n  <div class=\"mt-2 py-4 px-4 w-100\">\n    <div class=\"d-flex justify-content-center text-center flex-column\">\n      <nz-empty [nzNotFoundContent]=\"null\"></nz-empty>\n      <span class=\"m-5 fs-large text-muted\">{{\n        \"FEPB_GENERIC_NO_DATA_CONTENT\" | translate\n      }}</span>\n    </div>\n  </div>\n</ng-container>\n<ng-container *ngIf=\"pageLoading\">\n  <div\n    class=\"d-flex flex-column w-100 h-100 justify-content-center align-items-center\"\n  >\n    <div class=\"w-80\">\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n      <nz-skeleton [nzActive]=\"true\"></nz-skeleton>\n    </div>\n  </div>\n</ng-container>\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderSimpleviewComponent } from './page-builder-simpleview.component';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\nimport { PbComponentsModule } from '../utils/pb-components/pb-components.module';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { CommonPipesModule } from '@alfercom/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderSimpleviewComponent': PageBuilderSimpleviewComponent\n};\n\n@NgModule({\n  declarations: [PageBuilderSimpleviewComponent],\n  imports: [\n    CommonModule,\n    NzEmptyModule,\n    NzSkeletonModule,\n    PbComponentsModule,\n    CommonPipesModule,\n    NzModalModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderSimpleviewModule {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"PageBuilderSimpleviewModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderSimpleviewComponent | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable, zip } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { BuilderDriverService } from '../services/builder-driver.service';\nimport {\n  CRUDResolver,\n  CRUDResolverResponse,\n  CRUDServerSideResponse,\n} from '@alfercom/crud';\n\ntype CRUDElement = { [key: string]: any };\n\nexport interface CRUDResolverResult extends CRUDResolverResponse<CRUDElement> {\n  crud: CRUDElement[];\n}\n\n@Injectable()\nexport class PageBuilderCRUDResolver extends CRUDResolver<\n  CRUDElement,\n  CRUDResolverResult\n> {\n  private viewId: string | undefined = undefined;\n  private api!: BuilderDriverService;\n  private parameters: string[] | undefined;\n\n  setService(api: BuilderDriverService) {\n    this.api = api;\n  }\n\n  setViewId(viewId: string) {\n    this.viewId = viewId;\n  }\n\n  setParameters(parameters: string[] | undefined) {\n    this.parameters = parameters;\n  }\n\n  getParams(route: ActivatedRouteSnapshot) {\n    return {};\n  }\n  resolve(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot\n  ):\n    | CRUDResolverResult\n    | Observable<CRUDResolverResult>\n    | Promise<CRUDResolverResult> {\n    return zip(this.getData()).pipe(\n      map(([elements]) => {\n        return {\n          crud: elements as CRUDElement[],\n        };\n      })\n    );\n  }\n  getData(\n    params?: { [key: string]: any },\n    query?: {\n      where?: { [key: string]: any };\n      offset: number;\n      limit: number;\n      order?: any;\n    }\n  ): Observable<CRUDElement[] | CRUDServerSideResponse<CRUDElement>> {\n    const limit = query ? query.limit || undefined : undefined;\n    const offset = query ? query.offset || 0 : 0;\n    const filters = {\n      where: query ? query.where || {} : {},\n    };\n    const order = query ? (query.order ? query.order : null) : null;\n\n    return this.api.callApi({\n      viewId: this.viewId,\n      parameters: this.parameters || [],\n      apiMethod: 'serverSideFind',\n      params: {\n        limit,\n        filters,\n        offset,\n        order,\n      } as any,\n    }) as any;\n  }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as moment from 'moment';\nimport { NzDrawerService } from 'ng-zorro-antd/drawer';\nimport { BuilderDriverService } from '../services/builder-driver.service';\nimport { PageBuilderService } from '../services/page-builder.service';\nimport { PageBuilderCRUDResolver } from './page-builder-crud.resolver';\nimport * as _ from 'lodash';\nimport { PageBuilderGuiService } from '../services/page-builder-gui.service';\nimport { CRUDPayloadData, CRUDServerSide, CRUDService, PbCrudCellEventOutput } from '@alfercom/crud';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, first } from 'rxjs';\nimport { AppLocaleService, AppLocaleUtils } from '@alfercom/common';\nimport {\n  PageBuilderDefaultInput,\n  PageBuilderDropdownButton,\n  PageBuilderDefaultButton,\n  PageBuilderCRUDV2,\n  PbDefaultButtonOutput,\n  PbDefaultSearchboxOutput,\n} from '../types/pb-types/page-builder.type';\nimport { ActivatedRoute } from '@angular/router';\n\nexport const CRUDV2_ACTION_COLUMN_NAME = 'FEPB_CRUD_ACTIONSCOL';\nexport const CRUDV2_ACTION_COLUMN_PROP = 'action-column';\n\n// Define RowButtonsTypes if it's not already globally available or imported elsewhere\nexport type RowButtonsTypes =\n  | 'crud-row-preview'\n  | 'crud-row-edit'\n  | 'crud-row-delete';\n\n@Component({\n  selector: 'app-page-builder-crud-v2',\n  templateUrl: './page-builder-crud-v2.component.html',\n  styleUrls: ['./page-builder-crud-v2.component.scss'],\n  providers: [CRUDService],\n})\nexport class PageBuilderCrudV2Component\n  extends CRUDServerSide<any, any>\n  implements OnInit {\n  @Input() set data(value: PageBuilderDefaultInput) {\n    this.pageBuilderParameters = value;\n    this.initInputData(value);\n  }\n\n  pageBuilderParameters!: PageBuilderDefaultInput;\n\n  //gestione toolbar\n  singleButtonDropdown!: PageBuilderDropdownButton;\n  multiButtonDropdown!: PageBuilderDropdownButton;\n  showActionColumn = false;\n\n  //gestione rowButtons\n  crudRowButtons: PageBuilderDefaultButton[] | undefined = undefined;\n  // These specific button properties are populated by parseRowsActions\n  // For direct template access if needed, but customRowButtons is the main array.\n  crudRowPreviewButton: PageBuilderDefaultButton | undefined = undefined;\n  crudRowEditButton: PageBuilderDefaultButton | undefined = undefined;\n  crudRowDeleteButton: PageBuilderDefaultButton | undefined = undefined;\n\n  page!: PageBuilderCRUDV2;\n\n  showFilterPreview: boolean = true;\n\n  private landingSearchValue: string | undefined = undefined;\n  private landingSearchApplied: boolean = false;\n\n  private crudPBPayloadData!: CRUDPayloadData;\n\n  declare pageSub: BehaviorSubject<PageBuilderCRUDV2 | undefined>;\n\n  @Output('cellEvent')\n  cellEventOutput: EventEmitter<PbCrudCellEventOutput> = new EventEmitter();\n\n  onCrudCellEvent(e: PbCrudCellEventOutput) {\n    this.cellEventOutput.emit(e);\n  }\n\n  constructor(\n    crudService: CRUDService,\n    private pageBuilderService: PageBuilderService,\n    private builderDriverService: BuilderDriverService,\n    protected override drawerService: NzDrawerService,\n    protected pageBuilderGuiService: PageBuilderGuiService,\n    protected override translateService: TranslateService,\n    protected override activatedRoute: ActivatedRoute,\n    private appLanguageService: AppLocaleService\n  ) {\n    super({ crudService, drawerService, translateService: translateService });\n    this.initPageSub();\n  }\n\n  get selectedCount(): number {\n    return this.selected ? this.selected.length : 0;\n  }\n\n  override onSelect(event: any): void {\n    super.onSelect(event);\n  }\n\n  get activeFiltersCount(): number {\n    return this.crudService.getFiltersService()?.getNFiltriAttivi() || 0;\n  }\n\n  getDefaultDeactivateLabel(): string {\n    return this.page.body.crud.options.filtersOptions?.defaultDeactivateLabel || 'FEPB_CRUD_FILTERDRAWER_SELECTALLOPTION';\n  }\n\n  getActiveFilters(): { label: string; value: string }[] {\n    if (!this.crudService.getFiltersService()) {\n      return [];\n    }\n\n    const filters = this.crudService\n      .getFiltersService()\n      .getListaFiltriSnapshot();\n    if (!filters) {\n      return [];\n    }\n\n    return filters\n      .filter((filter) => filter.isAttivo && filter.visibile !== false)\n      .map((filter) => {\n        let displayValue;\n        if (filter.configFiltro) {\n          if (\n            filter.configFiltro.controlType === 'selezione-multipla' ||\n            filter.configFiltro.controlType === 'selezione-singola'\n          ) {\n            if (filter.configFiltro.options && filter.valore) {\n              const selectedOption = filter.configFiltro.options.find(\n                (opt) => opt.id === filter.valore\n              );\n              displayValue = selectedOption\n                ? selectedOption.text\n                : filter.valore;\n            } else {\n              displayValue = filter.valore;\n            }\n          } else if (\n            filter.configFiltro.controlType === 'date' ||\n            filter.configFiltro.controlType === 'datetime'\n          ) {\n            try {\n              const locale =\n                this.appLanguageService.getCurrentLocale() || 'it-IT';\n              const dateFormat =\n                filter.configFiltro.controlType === 'date'\n                  ? AppLocaleUtils.dateFormatAngular(locale)\n                  : AppLocaleUtils.dateTimeFormatAngular(locale);\n              displayValue = moment(filter.valore).format(dateFormat);\n            } catch (e) {\n              displayValue = filter.valore;\n            }\n          } else {\n            displayValue = filter.formValue || filter.valore;\n            if (displayValue && displayValue.$regex) {\n              displayValue = displayValue.$regex;\n            }\n          }\n        } else {\n          displayValue = filter.formValue || filter.valore;\n        }\n        if (displayValue === null || displayValue === undefined) {\n          displayValue = '-';\n        }\n        if (\n          typeof displayValue === 'object' &&\n          !(displayValue instanceof Date)\n        ) {\n          return null;\n        }\n        return {\n          label: filter.label,\n          value: displayValue,\n        };\n      })\n      .filter((item) => item !== null) as { label: string; value: string }[];\n  }\n\n  private initInputData(\n    value: PageBuilderDefaultInput,\n    isRefresh: boolean = false\n  ) {\n    this.pageBuilderService.getStructureFromDefaultInput(value).subscribe(\n      (res) => {\n        if (res && res.result && res.structure) {\n          this.standardStructureParser(res.structure as any);\n          if (this.page && this.page.tourNames) {\n            setTimeout(\n              () => this.pageBuilderGuiService.checkTours(this.page.tourNames),\n              500\n            );\n          }\n\n          this.showFilterPreview = _.get(\n            this.page,\n            'body.crud.options.showFilterPreview',\n            true\n          );\n\n          this.crudRowButtons = undefined;\n          this.showActionColumn = false; // Default to false\n\n          if (this.page && this.page.body && this.page.body.crud) {\n            if (\n              this.page.body.crud.rowButtons &&\n              this.page.body.crud.rowButtons.length > 0\n            ) {\n              this.showActionColumn = true;\n              if (\n                !this.page.body.crud.columns.find(\n                  (col) => col.prop === CRUDV2_ACTION_COLUMN_PROP\n                )\n              ) {\n                this.page.body.crud.columns.push({\n                  name: CRUDV2_ACTION_COLUMN_NAME,\n                  prop: CRUDV2_ACTION_COLUMN_PROP,\n                  style: 'width: 8rem',\n                });\n              }\n              this.crudRowButtons = _.cloneDeep(this.page.body.crud.rowButtons);\n            }\n            this.useFiltri =\n              !!this.page.body.crud.filtri &&\n              this.page.body.crud.filtri.length > 0;\n            this.crudService.setSearchFilterName(\n              this.page.body.crud.defaultSearchFieldName\n            );\n          }\n\n          this.parseToolbarButtons();\n          this.hasFiltersSettings = _.get(\n            this.page,\n            'body.crud.options.hasFiltersSettings',\n            false\n          );\n          this.hideCheckboxColumn = _.get(\n            this.page,\n            'body.crud.options.hideCheckboxColumn',\n            false\n          );\n          this.crudService.initFiltersAndCheckConfigs(\n            _.get(this.page, 'body.crud.filtri', [])\n          );\n\n          this.runInitialization(isRefresh);\n        }\n      },\n      (error) => {\n        console.error('initInputData', error);\n      }\n    );\n  }\n\n  private standardStructureParser(structure: PageBuilderCRUDV2) {\n    this.updatePageSub(structure);\n    let _structure = _.cloneDeep(structure);\n    if ((this.pageBuilderParameters as any)?.guiOptions?.externalHead) {\n      _structure.head = undefined;\n    }\n    this.page = _structure as any;\n  }\n\n  protected updatePageSub(page: PageBuilderCRUDV2 | undefined = undefined) {\n    this.pageSub.next(page);\n  }\n\n  getPageStructureObs() {\n    if (!this.pageSub) this.initPageSub();\n    return this.pageSub ? this.pageSub.asObservable() : null;\n  }\n\n  private initPageSub(): void {\n    if (!this.pageSub)\n      this.pageSub = new BehaviorSubject<PageBuilderCRUDV2 | undefined>(\n        undefined\n      );\n  }\n\n  runInitialization(forceRefresh: boolean = false) {\n    this.crudPBPayloadData = this.handleRouteData({ data: null });\n    this.resolverClass = this.getPageBuilderResolver();\n    this.init();\n    this.crudService.runQuery({ forceRunQuery: forceRefresh });\n  }\n\n  private getPageBuilderResolver() {\n    const resolver = new PageBuilderCRUDResolver();\n    resolver.setService(this.builderDriverService);\n    resolver.setViewId(this.pageBuilderParameters.viewId);\n    resolver.setParameters(this.pageBuilderParameters.parameters);\n    return resolver;\n  }\n\n  ngOnInit(): void {\n    this.activatedRoute?.queryParams.subscribe((params) => {\n      const searchValue = params['search'];\n      if (searchValue) {\n        this.landingSearchValue = searchValue;\n        if (this.crudService.hasBeenInit) {\n          this.onCerca(this.landingSearchValue);\n          this.landingSearchApplied = true;\n        }\n      }\n    });\n  }\n\n  retrieveResolverParams() {\n    return {};\n  }\n  override retrievePayloadData() {\n    return this.crudPBPayloadData;\n  }\n  retrieveResolverClass() {\n    return this.resolverClass;\n  }\n\n  override retrieveColumns(extra: { isExport?: boolean }) {\n    const baseColumns = this.page?.body?.crud?.columns\n      ? [...this.page.body.crud.columns]\n      : [];\n    if (extra && extra.isExport) {\n      if (\n        baseColumns.length > 0 &&\n        baseColumns[baseColumns.length - 1].prop ===\n        CRUDV2_ACTION_COLUMN_PROP &&\n        this.showActionColumn\n      ) {\n        return baseColumns.slice(0, -1);\n      }\n      return baseColumns;\n    }\n    return baseColumns;\n  }\n\n  handleRouteData(data: { data: any }): CRUDPayloadData {\n    return {\n      hasFiltersSettings: this.hasFiltersSettings,\n      currentQuery: { limit: 20 },\n      dataset: _.get(this.page, 'body.crud.data.dataset', []) || [],\n      limit: _.get(this.page, 'body.crud.data.limit', 20) || 20,\n      offset: _.get(this.page, 'body.crud.data.offset', 0) || 0,\n      order: _.get(this.page, 'body.crud.data.order', null) || null,\n      total: _.get(this.page, 'body.crud.data.total', 0) || 0,\n    };\n  }\n\n  toolbarButtonHandler(event: PbDefaultButtonOutput) {\n    if (event?.btn) {\n      const btn = _.cloneDeep(event.btn);\n      const subLoading = event.sub;\n      if (subLoading) subLoading.next({ loading: true });\n      switch (btn.type) {\n        case 'crud-single-selection':\n          this.handleCrudSingleSelection(btn, subLoading);\n          break;\n        case 'crud-multiple-selection':\n          this.handleCrudMultipleSelection(btn, subLoading);\n          break;\n        case 'crud-export':\n          this.handleCrudExport(btn, subLoading);\n          break;\n        default:\n          this.pageBuilderService\n            .handlerActionButton(btn)\n            .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n      }\n    }\n  }\n\n  handleCrudExport(btn: PageBuilderDefaultButton, subLoading: any) {\n    if (btn.extra?.['crudExportConfig']) {\n      const config = btn.extra['crudExportConfig'] as any;\n      const fileName = config.fileName || 'export';\n      const exportType = config.exportType || 'pdf';\n      const columns =\n        config.columns || this.retrieveColumns({ isExport: true });\n      if (\n        config.rowsLimit &&\n        ((this.selected.length > 0 &&\n          this.selected.length > config.rowsLimit) ||\n          this.rows.length > config.rowsLimit)\n      ) {\n        if (subLoading)\n          subLoading.next({\n            loading: false,\n            message:\n              this.translateService.instant(\n                'FEPB_CRUD_TOOLBARBTNEXPORT_MAXROWERROR'\n              ) + config.rowsLimit,\n          });\n      } else {\n        this.export(exportType, fileName, columns)\n          .pipe(first())\n          .subscribe(() => {\n            if (subLoading) subLoading.next({ loading: false });\n          });\n      }\n    }\n  }\n\n  handleCrudSingleSelection(btn: PageBuilderDefaultButton, subLoading: any) {\n    if (!this.selected || this.selected.length !== 1) {\n      if (subLoading)\n        subLoading.next({\n          loading: false,\n          message: 'FEPB_CRUD_SINGLESELECT_SELECTERROR',\n        });\n    } else {\n      this.pageBuilderService\n        .handlerActionButton(btn, _.cloneDeep(this.selected[0]))\n        .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n    }\n  }\n\n  handleCrudMultipleSelection(btn: PageBuilderDefaultButton, subLoading: any) {\n    if (!this.selected || this.selected.length < 1) {\n      if (subLoading)\n        subLoading.next({\n          loading: false,\n          message: 'FEPB_CRUD_MULTISELECT_HELP',\n        });\n    } else {\n      this.pageBuilderService\n        .handlerActionButton(btn, _.cloneDeep(this.selected))\n        .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n    }\n  }\n\n  handlerActionButtonResFn(res: any, subLoading: any) {\n    if (res) {\n      if (res.result) {\n        if (res.needRefresh) this.crudService.runQuery({ forceRunQuery: true });\n        if (res.eventToHandle?.eventName === 'need-refresh') this.refreshPage();\n        if (subLoading) subLoading.next({ loading: false });\n      } else {\n        let errorMsg = 'FEPB_GENERIC_OPERATIONERROR';\n        if (res.error?.messages?.[0]) {\n          errorMsg = res.error.messages[0];\n          if (subLoading) subLoading.next({ loading: false, message: errorMsg });\n        } else {\n          if (subLoading) subLoading.next({ loading: false });\n        }\n      }\n    } else {\n      if (subLoading) subLoading.next({ loading: false });\n    }\n  }\n\n  crudRowButtonHandler(event: PbDefaultButtonOutput) {\n    if (event?.btn) {\n      const btn = _.cloneDeep(event.btn);\n      const subLoading = event.sub;\n      if (subLoading) subLoading.next({ loading: true });\n      this.pageBuilderService\n        .handlerActionButton(btn)\n        .subscribe((res) => this.handlerActionButtonResFn(res, subLoading));\n    }\n  }\n\n  toolbarSearchboxHandler(event: PbDefaultSearchboxOutput) {\n    if (event) {\n      if (event.inputSub) {\n        this.crudService.getSearchValue().subscribe((val) => {\n          if (val) event.inputSub?.next(val);\n        });\n      }\n      if (\n        event.value !== undefined &&\n        !(\n          event.value === '' &&\n          this.landingSearchValue &&\n          this.landingSearchApplied\n        )\n      ) {\n        this.onCerca(event.value);\n      }\n    }\n  }\n\n  refreshPage() {\n    if (this.pageBuilderParameters) {\n      this.pageBuilderParameters.structure = null;\n      this.initInputData(this.pageBuilderParameters, true);\n    }\n  }\n\n  override mapRows(row: any, index = null) {\n    row = this.parseRowsActions(row);\n    return row;\n  }\n\n  private parseRowsActions(row: any) {\n    if (!row) return row;\n\n    // Initialize to \"no buttons\" state for the current row\n    row.customRowButtons = [];\n    row.previewBtn = undefined;\n    row.editBtn = undefined;\n    row.deleteBtn = undefined;\n\n    const hasPageLevelConfiguredButtons =\n      this.crudRowButtons && this.crudRowButtons.length > 0;\n    const hasRowLevelConfiguredButtons =\n      row.rowButtons &&\n      (row.rowButtons as PageBuilderDefaultButton[]).length > 0;\n\n    // If no buttons are configured either at page level or specific to this row,\n    // then this row should display no action buttons.\n    if (!hasPageLevelConfiguredButtons && !hasRowLevelConfiguredButtons) {\n      return row; // Return with empty/undefined button properties\n    }\n\n    let unprocessedCustomRowButtons: (PageBuilderDefaultButton | undefined)[] =\n      [];\n    const processedTypes = new Set<string>(); // To track types already handled\n\n    // 1. Process buttons from page-level configuration (this.crudRowButtons)\n    if (hasPageLevelConfiguredButtons) {\n      this.crudRowButtons!.forEach((buttonConfig) => {\n        // createRowButton will internally check row.rowButtons for overrides of the same type.\n        const btn = this.createRowButton(buttonConfig, row, buttonConfig.type);\n        if (btn) {\n          unprocessedCustomRowButtons.push(btn);\n        }\n        processedTypes.add(buttonConfig.type); // Mark type as processed\n      });\n    }\n\n    // 2. Process any row-specific buttons from `row.rowButtons` that were NOT\n    //    already covered by a page-level config of the same type.\n    if (hasRowLevelConfiguredButtons) {\n      (row.rowButtons as PageBuilderDefaultButton[]).forEach(\n        (rowButtonConfig) => {\n          if (!processedTypes.has(rowButtonConfig.type)) {\n            // This is a row-specific button not defined at page-level.\n            // `defaultConfigForType` is undefined for createRowButton, so it uses `rowButtonConfig`.\n            const btn = this.createRowButton(\n              undefined,\n              row,\n              rowButtonConfig.type\n            );\n            if (btn) {\n              unprocessedCustomRowButtons.push(btn);\n            }\n            // No need to add to processedTypes here for this specific button,\n            // as we are iterating unique types from row.rowButtons and only processing if not already handled.\n          }\n        }\n      );\n    }\n\n    // 3. Standard 'crud-row-preview', 'crud-row-edit', 'crud-row-delete' buttons\n    //    are NO LONGER ADDED BY DEFAULT here. They will only be present if explicitly configured\n    //    in this.crudRowButtons (handled in step 1) or row.rowButtons (handled in step 2).\n\n    // 4. Filter out any undefined buttons (e.g., if translateParametricBtnParams decided not to show them)\n    row.customRowButtons = unprocessedCustomRowButtons.filter(\n      (b): b is PageBuilderDefaultButton => !!b\n    );\n\n    // 5. Populate specific preview/edit/delete properties for direct template access or compatibility,\n    //    based on the buttons that were actually configured and processed.\n    row.previewBtn = row.customRowButtons.find(\n      (b: PageBuilderDefaultButton) => b.type === 'crud-row-preview'\n    );\n    row.editBtn = row.customRowButtons.find(\n      (b: PageBuilderDefaultButton) => b.type === 'crud-row-edit'\n    );\n    row.deleteBtn = row.customRowButtons.find(\n      (b: PageBuilderDefaultButton) => b.type === 'crud-row-delete'\n    );\n\n    return row;\n  }\n\n  private createRowButton(\n    defaultConfigForType: PageBuilderDefaultButton | undefined, // From this.crudRowButtons OR undefined\n    row: any,\n    type: string // Type from either defaultConfigForType or row.rowButtons' item\n  ): PageBuilderDefaultButton | undefined {\n    let buttonToProcess: PageBuilderDefaultButton | undefined;\n\n    // Priority 1: Check for a specific configuration for this button type within the row's data\n    const rowSpecificButtonData = (\n      row.rowButtons as PageBuilderDefaultButton[]\n    )?.find((el) => el.type === type);\n\n    if (rowSpecificButtonData) {\n      // Use the row-specific data, clone it, and apply common default properties\n      buttonToProcess = this.setDefaultPropertiesToRowButton(\n        _.cloneDeep(rowSpecificButtonData)\n      );\n    } else if (defaultConfigForType) {\n      // Priority 2: Use the page-level default configuration for this button type (passed as defaultConfigForType)\n      buttonToProcess = this.setDefaultPropertiesToRowButton(\n        _.cloneDeep(defaultConfigForType)\n      );\n    }\n    // If neither row-specific nor page-level config is found for this 'type',\n    // buttonToProcess remains undefined, and no button is created for this type.\n    // This correctly implements \"if not passed, not added\".\n\n    if (buttonToProcess) {\n      // `translateParametricBtnParams` can modify the button (e.g., set isDisabled based on row data)\n      // or return `undefined` if the button should not be shown for this row.\n      return this.pageBuilderService.translateParametricBtnParams(\n        buttonToProcess,\n        row\n      );\n    }\n\n    return undefined;\n  }\n\n  private createDefaultRowButton(\n    type: RowButtonsTypes\n  ): PageBuilderDefaultButton {\n    let btn: PageBuilderDefaultButton = {\n      action: undefined,\n      type: type,\n      isDisabled: true,\n    };\n    return this.setDefaultPropertiesToRowButton(btn);\n  }\n\n  private setDefaultPropertiesToRowButton(\n    btnInput: PageBuilderDefaultButton | null | undefined\n  ): PageBuilderDefaultButton {\n    const btnMapped: PageBuilderDefaultButton =\n      _.cloneDeep(btnInput) ||\n      ({ type: 'standard', action: undefined } as PageBuilderDefaultButton);\n\n    btnMapped.size = btnMapped.size || 'small';\n    btnMapped.style = btnMapped.style || 'default';\n    btnMapped.customStyleClass =\n      btnMapped.customStyleClass || 'btn-secondary my-0';\n\n    if (typeof btnMapped.isDisabled === 'undefined') {\n      btnMapped.isDisabled = false;\n    }\n\n    let helpTextForTooltip = btnMapped.help?.text;\n    if (!helpTextForTooltip && btnMapped.text) {\n      helpTextForTooltip = btnMapped.text;\n    }\n\n    const standardCrudTypes: ReadonlyArray<string> = [\n      'crud-row-preview',\n      'crud-row-edit',\n      'crud-row-delete',\n    ];\n    if (btnMapped.type && standardCrudTypes.includes(btnMapped.type)) {\n      if (!btnMapped.icon) {\n        btnMapped.icon =\n          btnMapped.type === 'crud-row-preview'\n            ? 'fa-eye'\n            : btnMapped.type === 'crud-row-edit'\n              ? 'fa-pencil'\n              : 'fa-trash';\n      }\n      if (!helpTextForTooltip) {\n        helpTextForTooltip =\n          btnMapped.type === 'crud-row-preview'\n            ? 'FEPB_CRUDROWBUTTON_PREVIEW'\n            : btnMapped.type === 'crud-row-edit'\n              ? 'FEPB_CRUDROWBUTTON_EDIT'\n              : 'FEPB_CRUDROWBUTTON_DELETE';\n      }\n    } else {\n      btnMapped.icon = btnMapped.icon || '';\n    }\n\n    btnMapped.text = undefined;\n\n    if (helpTextForTooltip) {\n      btnMapped.help = {\n        text: helpTextForTooltip,\n        html: btnMapped.help?.html || '',\n      };\n    } else {\n      btnMapped.help = undefined;\n    }\n\n    return btnMapped;\n  }\n\n  private parseToolbarButtons() {\n    if (this.page?.body?.toolbar?.buttons) {\n      const currentToolbarButtons = _.cloneDeep(this.page.body.toolbar.buttons);\n      const groupedButtons = _.groupBy(currentToolbarButtons, 'type');\n\n      this.populateSingleSelectionDropdown(\n        groupedButtons['crud-single-selection'] || []\n      );\n      this.populateMultipleSelectionDropdown(\n        groupedButtons['crud-multiple-selection'] || []\n      );\n\n      this.page.body.toolbar.buttons = currentToolbarButtons.filter(\n        (el) =>\n          el.type !== 'crud-single-selection' &&\n          el.type !== 'crud-multiple-selection'\n      );\n\n      this.page.body.toolbar.singleSelectionDropdown =\n        this.singleButtonDropdown;\n      this.page.body.toolbar.multipleSelectionDropdown =\n        this.multiButtonDropdown;\n    }\n  }\n\n  private populateSingleSelectionDropdown(\n    singleSelectionButtons: PageBuilderDefaultButton[]\n  ) {\n    const buttons = singleSelectionButtons || [];\n    const isDisabled = buttons.length === 0;\n    this.singleButtonDropdown = {\n      buttonDropdown: {\n        icon: 'fa-chevron-down',\n        customStyleClass: 'btn-outline-primary',\n        text: 'FEPB_CRUD_SINGLESELECT_TEXT',\n        type: 'standard',\n        action: undefined,\n        isDisabled,\n        help: !isDisabled\n          ? { html: '', text: 'FEPB_CRUD_SINGLESELECT_HELP' }\n          : undefined,\n      },\n      list: buttons.map((el) => ({ ...el, style: 'link' })),\n    };\n  }\n\n  private populateMultipleSelectionDropdown(\n    multipleSelectionButtons: PageBuilderDefaultButton[]\n  ) {\n    const buttons = multipleSelectionButtons || [];\n    const isDisabled = buttons.length === 0;\n    this.multiButtonDropdown = {\n      buttonDropdown: {\n        icon: 'fa-chevron-down',\n        customStyleClass: 'btn-outline-primary',\n        text: 'FEPB_CRUD_MULTISELECT_TEXT',\n        type: 'standard',\n        action: undefined,\n        isDisabled,\n        help: !isDisabled\n          ? { html: '', text: 'FEPB_CRUD_MULTISELECT_HELP' }\n          : undefined,\n      },\n      list: buttons.map((el) => ({ ...el, style: 'link' })),\n    };\n  }\n}\n","<div class=\"pb-crud\">\n  <ng-container *ngIf=\"page\">\n    <ng-container *ngIf=\"page.head\">\n      <ng-container *ngIf=\"page.head.breadcrumbs\">\n        <div\n          class=\"w-100 pb-default-breadcrumbs py-2\"\n          [breadcrumbs]=\"page.head.breadcrumbs\"\n          [lastAsTitle]=\"!page.head.title\"\n        ></div>\n      </ng-container>\n      <ng-container *ngIf=\"page.head.title\">\n        <div class=\"w-100 pb-main-title mb-2\" [title]=\"page.head.title\"></div>\n      </ng-container>\n    </ng-container>\n    <div class=\"w-100 d-flex flex-column pb-content\">\n      <ng-container *ngIf=\"page && page.body\">\n        <ng-container *ngIf=\"page.body && page.body.toolbar\">\n          <div\n            class=\"w-100 pb-toolbar-buttons-v2\"\n            [toolbar]=\"page.body.toolbar\"\n            [selectedCount]=\"selectedCount\"\n            [showFilterPreview]=\"showFilterPreview\"\n            [activeFilters]=\"getActiveFilters()\"\n            [activeFiltersCount]=\"activeFiltersCount\"\n            (btnClickedOutput)=\"toolbarButtonHandler($event)\"\n            (searchboxOutput)=\"toolbarSearchboxHandler($event)\"\n            (filterToggleOutput)=\"apriFiltri()\"\n          ></div>\n        </ng-container>\n      </ng-container>\n      <div\n        class=\"crud-dom\"\n        [rows]=\"rows\"\n        [columns]=\"columns\"\n        [showCheckbox]=\"!hideCheckboxColumn\"\n        [isLoading]=\"isLoading\"\n        [expandableRow]=\"expandableRow\"\n        [isServerSide]=\"true\"\n        [paginationPosition]=\"'both'\"\n        [offset]=\"offset\"\n        (changePage)=\"changePage($event)\"\n        [total]=\"total\"\n        (onSort)=\"onSort($event)\"\n        (onSelect)=\"onSelect($event)\"\n        [expandableRowPropBL]=\"expandableRowPropBL\"\n        (refreshCrud)=\"onRefreshCrud($event)\"\n        [showActionColumn]=\"showActionColumn\"\n        (rowButtonClick)=\"crudRowButtonHandler($event)\"\n        (cellEvent)=\"onCrudCellEvent($event)\"\n      ></div>\n    </div>\n  </ng-container>\n</div>\n","import { ComponentFactory, ComponentFactoryResolver, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageBuilderCrudV2Component } from './page-builder-crud-v2.component';\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\nimport { PbComponentsModule } from '../utils/pb-components/pb-components.module';\nimport { CrudServerSideModule } from '@alfercom/crud';\nimport { TranslateModule } from '@ngx-translate/core';\n\n\nconst BUILDABLE_COMPONENTS: { [key: string]: any } =\n{\n  'PageBuilderCrudV2Component': PageBuilderCrudV2Component\n};\n\n@NgModule({\n  declarations: [PageBuilderCrudV2Component],\n  imports: [\n    CommonModule,\n    CrudServerSideModule,\n    PbComponentsModule,\n    NzDrawerModule,\n    TranslateModule\n  ]\n})\nexport class PageBuilderCrudV2Module {\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\n    // console.log(\"PageBuilderCrudModule Module\");\n  }\n\n  public resolveComponent(componentName: string): ComponentFactory<PageBuilderCrudV2Component | any> {\n    return this.componentFactoryResolver.resolveComponentFactory(BUILDABLE_COMPONENTS[componentName]);\n  }\n\n}\n","//modulo\nexport * from './pb-components.module';\n\n//tokens e interfacce per override\nexport * from './pb-components.tokens';\n\n//direttive\nexport * from './pb-dynamic-list-documents.directive';\n\n//componenti\nexport * from './pb-card-data/pb-card-data.component';\nexport * from './pb-checklist-documents/pb-checklist-documents.component';\nexport * from './pb-default-banner/pb-default-banner.component';\nexport * from './pb-default-breadcrumbs/pb-default-breadcrumbs.component';\nexport * from './pb-default-button/pb-default-button.component';\nexport * from './pb-default-buttons/pb-default-buttons.component';\nexport * from './pb-default-card-image/pb-default-card-image.component';\nexport * from './pb-default-image/pb-default-image.component';\nexport * from './pb-default-searchbox/pb-default-searchbox.component';\nexport * from './pb-dropdown-button/pb-dropdown-button.component';\nexport * from './pb-helpers-messages/pb-helpers-messages.component';\nexport * from './pb-list-card-data/pb-list-card-data.component';\nexport * from './pb-list-documents/pb-list-documents.component';\nexport * from './pb-main-title/pb-main-title.component';\nexport * from './pb-modal-generic-confirm/pb-modal-generic-confirm.component';\nexport * from './pb-modal-result-simple/pb-modal-result-simple.component';\nexport * from './pb-remote-loading/pb-remote-loading.component';\nexport * from './pb-toolbar-buttons/pb-toolbar-buttons.component';\nexport * from './pb-toolbar-buttons/v2/pb-toolbar-buttons-v2.component';","/*\n * Public API Surface of pb\n */\n\n//servizi globali\nexport * from './lib/services/page-builder.service';\nexport * from './lib/services/page-builder-instantiator.service';\nexport * from './lib/services/api-caller.service';\nexport * from './lib/services/builder-driver.service';\n\n//export 'core'\nexport * from './lib/page-builder.component';\nexport * from './lib/page-builder.resolver';\nexport * from './lib/page-builder.module';\nexport * from './lib/page-builder.token';\nexport * from './lib/page-builder-main.class';\n\n//direttiva per istanziare i pagebuilder\nexport * from './lib/utils/page-builder-utils.module';\nexport * from './lib/utils/ad.directive';\n\n//moduli\nexport * from './lib/page-builder-error/page-builder-error.module';\nexport * from './lib/page-builder-form/page-builder-form.module';\nexport * from './lib/page-builder-notfound/page-builder-notfound.module';\nexport * from './lib/page-builder-cardview/page-builder-cardview.module';\nexport * from './lib/page-builder-tabset/page-builder-tabset.module';\nexport * from './lib/page-builder-simpleview/page-builder-simpleview.module';\nexport * from './lib/page-builder-crud/page-builder-crud-v2.module';\n\n//pb-components\nexport * from './lib/utils/pb-components/public-api-pb-components'\n\n// Re-export custom-cell types for host app consumers\nexport {\n  PB_CRUD_CUSTOM_CELLS,\n  PB_CRUD_CUSTOM_HEADERS,\n  IPbCrudCustomCell,\n  IPbCrudCustomHeader,\n  PbCrudCustomCellEvent,\n  PbCrudCustomCellRegistry,\n  PbCrudCustomHeaderRegistry,\n  CrudServerSideModuleCustomConfig,\n  PbCrudCellEventOutput,\n} from '@alfercom/crud';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PageInstantiatorService","i2","i3","i4","i5","i1","i2.PageBuilderGuiService","i1.PageBuilderGuiService","i2.BuilderDriverService","i3.ApiCallerService","i6","i8","i3.AdDirective","i1.PageBuilderService","BUILDABLE_COMPONENTS","i2.PbDefaultButtonComponent","i3.PageBuilderService","i5.ActionButtonCodecService","i8.PbMainTitleComponent","i9.PbHelpersMessagesComponent","i10.PbDefaultButtonsComponent","i6.PbDefaultButtonComponent","i7","i2.PbDefaultButtonsComponent","i3.PbDropdownButtonComponent","i4.PbDefaultSearchboxComponent","i3.PbDefaultImageComponent","i3.PbDefaultButtonComponent","i4.PbDefaultImageComponent","i6.PbDefaultButtonsComponent","i7.PbDropdownButtonComponent","i8.PbDefaultSearchboxComponent","i1.ApiCallerService","i2.PageBuilderService","i9.PbDefaultButtonsComponent","i10","i11.PbDropdownButtonComponent","i12","i13","i9","i14","i16","i17","i11","i14.PbDefaultButtonsComponent","i15.PbDropdownButtonComponent","i3.ActionButtonCodecService","i7.PbMainTitleComponent","i8.PbHelpersMessagesComponent","i10.PbDefaultBreadcrumbsComponent","i11.PbCardDataComponent","i2.ActionButtonCodecService","i4.TabsetComponent","i9.PbDefaultBreadcrumbsComponent","i10.PbDefaultButtonComponent","i11.PbDefaultBreadcrumbsComponent","i12.PbDefaultImageComponent","i13.PbRemoteLoadingComponent","i15","i3.BuilderDriverService","i5.PageBuilderGuiService","i10.PbMainTitleComponent","i12.PbToolbarButtonsComponentV2"],"mappings":"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"}