{"version":3,"file":"ng-inail-common.mjs","sources":["../../../projects/ng-inail-common/src/lib/ng-inail-common.service.ts","../../../projects/ng-inail-common/src/lib/ng-inail-common.component.ts","../../../projects/ng-inail-common/src/lib/ng-inail-common.config.ts","../../../projects/ng-inail-common/src/lib/utils/common.operators.ts","../../../projects/ng-inail-common/src/lib/components/core/base.component.ts","../../../projects/ng-inail-common/src/lib/components/core/basic-ux-element.component.ts","../../../projects/ng-inail-common/src/lib/components/core/responsive-element.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/form-element.component.ts","../../../projects/ng-inail-common/src/lib/utils/date.operators.ts","../../../projects/ng-inail-common/src/lib/components/utilities/pre/pre.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/pre/pre.component.html","../../../projects/ng-inail-common/src/lib/components/utilities/state-propertie/state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/state-propertie/state-propertie.component.html","../../../projects/ng-inail-common/src/lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component.ts","../../../projects/ng-inail-common/src/lib/components/utilities/form-element-state-propertie/form-element-state-propertie.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/popover/popover.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/popover/popover.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-text/input-text.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-text/input-text.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/dynamic-layout-element.component.ts","../../../projects/ng-inail-common/src/lib/services/agw-rest.service.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/footer/footer.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/footer/footer.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/select/select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/select/select.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-principale/navigazione-principale.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-principale/navigazione-principale.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/menu-intranet/menu-intranet.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu-intranet/cs.internet.headersecondariointranet.html","../../../projects/ng-inail-common/src/lib/components/core/layout/logo-header/logo-header.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/logo-header/logo-header.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/header-secondario/header-secondario.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/header-secondario/header-secondario.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/header/header.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/header/header.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/loader/loader.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/loader/loader.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/webkit-resources.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu/menu.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/menu/menu.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/button/button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/button/button.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/breadcrumb/breadcrumb.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/breadcrumb/breadcrumb.component.html","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/inail-layout.component.ts","../../../projects/ng-inail-common/src/lib/components/core/layout/inail-layout/inail-layout.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/form-grey/form-grey.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/form-grey/form-grey.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/page-title/page-title.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/page-title/page-title.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/feedback/feedback.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/feedback/feedback.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/accordion/accordion.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/accordion/accordion.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-pane/tab-pane.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-pane/tab-pane.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-group/tab-group.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/tab-group/tab-group.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/textarea/textarea.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/textarea/textarea.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-date/input-date.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-date/input-date.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/radio-select/radio-select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/radio-select/radio-select.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/checkbox/checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/checkbox/checkbox.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/modal/modal.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/modal/modal.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/alert/alert.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/alert/alert.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/confirm/confirm.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/confirm/confirm.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/table-page-length-selector/table-page-length-selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table-page-length-selector/table-page-length-selector.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/th-label/th-label.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/th-label/th-label.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/tr-checkbox/tr-checkbox.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/tr-checkbox/tr-checkbox.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/table/table.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/table/table.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-file/input-file.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-file/input-file.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-number/input-number.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-number/input-number.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/container/container.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/container/container.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/selector/selector.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/selector/selector.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/wizard/wizard.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/wizard/wizard.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/progress-bar/progress-bar.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/progress-bar/progress-bar.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/multi-select/multi-select.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/multi-select/multi-select.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-time/input-time.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-time/input-time.component.html","../../../projects/ng-inail-common/src/lib/components/core/table/tr-accordion/tr-accordion.component.ts","../../../projects/ng-inail-common/src/lib/components/core/table/tr-accordion/tr-accordion.component.html","../../../projects/ng-inail-common/src/lib/components/core/form/input-money/input-money.component.ts","../../../projects/ng-inail-common/src/lib/components/core/form/input-money/input-money.component.html","../../../projects/ng-inail-common/src/lib/components/core/ux/icon-button/icon-button.component.ts","../../../projects/ng-inail-common/src/lib/components/core/ux/icon-button/icon-button.component.html","../../../projects/ng-inail-common/src/lib/ng-inail-common.module.ts","../../../projects/ng-inail-common/src/public-api.ts","../../../projects/ng-inail-common/src/ng-inail-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgInailCommonService {\n\n  constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-ng-inail-common',\n  template: `\n    <p>\n      ng-inail-common works!\n    </p>\n  `,\n  styles: [\n  ]\n})\nexport class NgInailCommonComponent {\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const NG_INAIL_COMMON_CONFIG = new InjectionToken('NG_INAIL_COMMON_CONFIG');\n\nexport type WebKitVersion = '3.1.0' | '3.3.0';\n\nexport const DEFAULT_WEBKIT_VERSION: WebKitVersion = '3.3.0';\n\nexport interface BaseComponentConfig {\n\n  logOnConsole?: boolean;\n}\n\nexport interface BasicUxElementComponentConfig extends BaseComponentConfig {\n}\n\nexport interface ResponsiveElementComponentConfig extends BasicUxElementComponentConfig {\n}\n\nexport interface FormElementComponentConfig extends ResponsiveElementComponentConfig {\n\n  requiredSimbol?: string;\n  requiredSimbolPosition?: 'left' | 'right';\n  cleanErrorOnChange?: boolean;\n}\n\nexport interface CheckboxComponentConfig extends FormElementComponentConfig {\n}\n\nexport interface InputDateComponentConfig extends FormElementComponentConfig {\n\n  options?: { [key: string]: any };\n  selfValidation?: boolean;\n  selfValidationError?: string;\n}\n\nexport interface InputFileComponentConfig extends FormElementComponentConfig {\n\n  placeholder?: string;\n  chooseButtonText?: string;\n  addButtonText?: string;\n  chooseButton?: boolean;\n  addButton?: boolean;\n  accept?: string;\n}\n\nexport interface InputNumberComponentConfig extends FormElementComponentConfig {\n\n  max?: number;\n  min?: number;\n  step?: number;\n  numberOfDecimals?: number;\n  hideArrows?: boolean;\n}\n\nexport interface InputTextComponentConfig extends FormElementComponentConfig {\n\n  placeholder?: string;\n  preventPasting?: boolean;\n}\n\nexport interface InputTimeComponentConfig extends FormElementComponentConfig {\n\n  placeholder?: string;\n  preventPasting?: boolean;\n  step?: number;\n  nativeInputTypeTime?: boolean;\n  withSeconds?: boolean;\n  selfValidation?: boolean;\n  selfValidationError?: string;\n}\n\nexport interface InputMoneyComponentConfig extends FormElementComponentConfig {\n\n  max?: number;\n  min?: number;\n  numberOfDecimals?: number;\n  placeholder?: string;\n  preventPasting?: boolean;\n  selfValidation?: boolean;\n  selfValidationError?: string;\n  currency?: 'EURO' | 'DOLLARS';\n  showThousandsSeparator?: boolean;\n  // decimalSeparatorSymbol?: string;\n  // thousandsSeparatorSymbol?: string;\n}\n\nexport interface MultiSelectComponentConfig extends FormElementComponentConfig {\n\n  placeholder?: string;\n  sort?: 'asc' | 'desc';\n}\n\nexport interface RadioSelectComponentConfig extends FormElementComponentConfig {\n\n  inline?: boolean;\n  sort?: 'asc' | 'desc';\n}\n\nexport interface SelectComponentConfig extends FormElementComponentConfig {\n\n  blankOption?: boolean;\n  blankOptionText?: string;\n  blankOptionDisabled?: boolean;\n  sort?: 'asc' | 'desc';\n}\n\nexport interface TextareaComponentConfig extends FormElementComponentConfig {\n\n  placeholder?: string;\n  maxlength?: number;\n  rows?: number;\n  cols?: number;\n  preventPasting?: boolean;\n}\n\nexport interface PageTitleComponentConfig extends BasicUxElementComponentConfig {\n\n  autoCatchFocus?: boolean;\n}\n\nexport interface TableComponentConfig extends ResponsiveElementComponentConfig {\n\n  elementsPerPage?: number;\n  elementsPerPageOptions?: number[];\n  noDataFoundText?: string;\n  tallRows?: boolean;\n  captionHidden?: boolean;\n  bgWhite?: boolean;\n  showFullListSize?: boolean;\n  fullListSizeText?: string;\n}\n\nexport interface TrCheckboxComponentConfig extends BasicUxElementComponentConfig {\n\n  hiddenLabel?: boolean;\n}\n\nexport interface TrAccordionComponentConfig extends BasicUxElementComponentConfig {\n\n  expanded?: boolean;\n}\n\nexport interface AccordionComponentConfig extends BasicUxElementComponentConfig {\n\n  ariaLabel?: string;\n  ariaLabelOpened?: string;\n  ariaLabelClosed?: string;\n  collapsed?: boolean;\n  requiredSimbol?: string;\n  requiredSimbolPosition?: 'left' | 'right';\n}\n\nexport interface ModalComponentConfig extends BasicUxElementComponentConfig {\n\n  title?: string;\n  closeButtonTitle?: string;\n  width?: 'S' | 'M' | 'L';\n  setFocusOnError?: boolean;\n  preventPageScroll?: boolean;\n}\n\nexport interface AlertComponentConfig extends ModalComponentConfig {\n}\n\nexport interface ConfirmComponentConfig extends ModalComponentConfig {\n\n  message?: string;\n  confirmButtonLabel?: string;\n  rejectButtonLabel?: string;\n}\n\nexport interface FeedbackComponentConfig extends BasicUxElementComponentConfig {\n\n  showIcon?: boolean;\n  detailsAsList?: boolean;\n  detailsAsOrderedList?: boolean;\n  autoCatchFocus?: boolean;\n  scrollToFocus?: boolean;\n}\n\nexport interface MenuComponentConfig extends BasicUxElementComponentConfig {\n\n  disableLinkOverwriting?: boolean;\n  collapsible?: boolean;\n  collapsed?: boolean;\n  collapseOther?: boolean;\n  expandAutomatically?: boolean;\n}\n\nexport interface PopoverComponentConfig extends BasicUxElementComponentConfig {\n\n  iconClass?: string;\n  buttonTitle?: string;\n}\n\nexport interface SelectorComponentConfig extends BasicUxElementComponentConfig {\n\n  showNumber?: boolean;\n  separator?: string;\n  showSeparator?: boolean;\n  fullNavigation?: boolean;\n  contentsHidden?: boolean;\n  prevButtonTitle?: string;\n  nextButtonTitle?: string;\n}\n\nexport interface WizardComponentConfig extends BasicUxElementComponentConfig {\n\n  contentsHidden?: boolean;\n  prevButtonTitle?: string;\n  nextButtonTitle?: string;\n}\n\nexport interface TabPaneComponentConfig extends BasicUxElementComponentConfig {\n\n  requiredSimbol?: string;\n  requiredSimbolPosition?: 'left' | 'right';\n}\n\nexport interface NgInailCommonConfig extends BaseComponentConfig {\n\n  webkitVersion?: WebKitVersion; // TODO: inserire nella doc\n  logOnConsole?: boolean;\n\n  // ---- Form Element Components -------------------------------\n  formElementComponent?: FormElementComponentConfig;\n  checkboxComponent?: CheckboxComponentConfig;\n  inputDateComponent?: InputDateComponentConfig;\n  inputFileComponent?: InputFileComponentConfig;\n  inputNumberComponent?: InputNumberComponentConfig;\n  inputTextComponent?: InputTextComponentConfig;\n  inputTimeComponent?: InputTimeComponentConfig;\n  inputMoneyComponent?: InputMoneyComponentConfig;\n  multiSelectComponent?: MultiSelectComponentConfig;\n  radioSelectComponent?: RadioSelectComponentConfig;\n  selectComponent?: SelectComponentConfig;\n  textareaComponent?: TextareaComponentConfig;\n\n  // ---- Table Components --------------------------------------\n  tableComponent?: TableComponentConfig;\n  trCheckboxComponent?: TrCheckboxComponentConfig;\n  trAccordionComponent?: TrAccordionComponentConfig;\n\n  // ---- UX ----------------------------------------------------\n  accordionComponent?: AccordionComponentConfig;\n  alertComponent?: AlertComponentConfig;\n  confirmComponent?: ConfirmComponentConfig;\n  feedbackComponent?: FeedbackComponentConfig;\n  menuComponent?: MenuComponentConfig;\n  modalComponent?: ModalComponentConfig;\n  pageTitleComponent?: PageTitleComponentConfig;\n  popoverComponent?: PopoverComponentConfig;\n  selectorComponent?: SelectorComponentConfig;\n  tabPaneComponent?: TabPaneComponentConfig;\n  wizardComponent?: WizardComponentConfig;\n}\n\n\n","import {isFunction} from 'rxjs/internal/util/isFunction';\n\nexport const isBlankOrNull = (s: string): boolean => s == undefined || String(s).trim().length == 0;\nexport const isNotBlankOrNull = (s: string): boolean => !isBlankOrNull(s);\nexport const isNumber = (o: any): boolean => typeof o === 'number';\nexport const isString = (o: any): boolean => typeof o === 'string';\nexport const isAbsolute = (url: string): boolean => startWith(url, 'http');\nexport const startWithSlash = (url: string): boolean => startWith(url, '/');\nexport const startWith = (url: string, s: string): boolean => url != undefined && String(url).startsWith(s);\nexport const isListEmptyOrNull = (s: any[]): boolean => !s || !(s.length > 0);\nexport const isListNotEmptyOrNull = (s: any[]): boolean => !isListEmptyOrNull(s);\nexport const clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\nexport const isCodiceFiscale = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^(?:[A-Z][AEIOU][AEIOUX]|[AEIOU]X{2}|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}(?:[\\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[15MR][\\dLMNP-V]|[26NS][0-8LMNP-U])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM]|[AC-EHLMPR-T][26NS][9V])|(?:[02468LNQSU][048LQU]|[13579MPRTV][26NS])B[26NS][9V])(?:[A-MZ][1-9MNP-V][\\dLMNP-V]{2}|[A-M][0L](?:[1-9MNP-V][\\dLMNP-V]|[0L][1-9MNP-V]))[A-Z]$/i).test(s);\n\nexport const scrollTo = (top: number) => {\n  setTimeout(() => {\n    window.scroll({top, left: 0, behavior: 'smooth'});\n  });\n};\n\nexport const scrollToElement = (id: string) => {\n\n  setTimeout(() => {\n    const elem = document.getElementById(id);\n    if (elem) {\n      scrollTo(elem.getBoundingClientRect().top + window.pageYOffset - 50);\n    }\n  });\n};\n\nexport const scrollTop = () => {\n  scrollTo(130);\n};\n\nexport const setFocus = (nativeElement: HTMLElement, scroll: boolean) => {\n\n  if (nativeElement) {\n\n    if (scroll === true) {\n      scrollToElement(nativeElement.getAttribute('id'));\n    }\n\n    setTimeout(() => nativeElement.focus(), scroll === true ? 500 : 0);\n  }\n}\n\nexport const call = (e: any, f: string, a?: any) => {\n\n  let el = e && e[f] != undefined && isFunction(e[f]) ? e[f](a) : undefined;\n\n  return {\n    data: el,\n    call: (fname: string, arg?: any) => call(el, fname, arg)\n  }\n}\n\nexport const uuidv4 = (): string => {\n  return 'axxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n    return v.toString(16);\n  });\n}\n\nexport const isHidden = (element: Element) => {\n\n  let ishidden: boolean = false;\n\n  if (element) {\n\n    let cs = window.getComputedStyle(element);\n    ishidden = cs.display == 'none' || cs.visibility != 'visible' || isHidden(element.parentElement);\n  }\n\n  return ishidden;\n}\n\nexport const setPageScroll = (scroll: boolean) => document.getElementsByTagName('html')[0].style['overflow-y'] = scroll ? 'scroll' : 'hidden';\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport {isNotBlankOrNull, isString} from \"../../utils/common.operators\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {BaseComponentConfig, DEFAULT_WEBKIT_VERSION, NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../ng-inail-common.config\";\n\nexport enum LogLevel {\n\n  LOG = 'log',\n  TRACE = 'trace',\n  DEBUG = 'debug',\n  INFO = 'info',\n  WARN = 'warn',\n  ERROR = 'error'\n}\n\nexport interface LogEvent {\n\n  message: any;\n  level: LogLevel;\n}\n\nexport const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.OnPush;\n// export const CHANGE_DETECTION_STRATEGY = ChangeDetectionStrategy.Default;\n\nexport const getConfigValue = (value: any, defaultValue: any) => value != undefined ? value : defaultValue;\n\nexport interface BaseComponentChanges extends SimpleChanges {\n\n  logOnConsole: BooleanChange,\n  showState: BooleanChange\n}\n\n@Component({\n  selector: 'inail-base',\n  template: '',\n  styles: [],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class BaseComponent implements OnChanges, OnInit, AfterViewInit {\n\n  $ = window['$'];\n\n  viewInit: boolean = false;\n\n  /**\n   * Log del componente\n   */\n  @Output()\n  log: EventEmitter<LogEvent>;\n\n  /**\n   * Se true effettua il log direttamente nella console.\n   * Altrimenti emette l'evento log\n   */\n  @Input()\n  logOnConsole: boolean = getConfigValue(this.baseElementLibConfig?.logOnConsole, false);\n\n  /**\n   *\n   */\n  @Input()\n  showState: boolean = false;\n\n  @Input()\n  detectChange: Observable<void>;\n\n  logPrefix: string;\n\n  subcriptions: Subscription[] = [];\n  push = (subcription: Subscription) => this.subcriptions.push(subcription);\n\n  // Detach centralizzato\n  detach = () => {\n    this.baseComponentCdr.detach();\n  };\n\n  detectChanges = () => this.baseComponentCdr.detectChanges();\n  getMessage = (event: LogEvent) => this.logPrefix && isString(event.message) ? `${this.logPrefix} ${event.message}` : event.message;\n  getNotBlankValue = (v) => isNotBlankOrNull(`${v}`) ? v : undefined;\n\n  constructor(private baseComponentCdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private baseElementLibConfig: NgInailCommonConfig) {\n    this.log = new EventEmitter<LogEvent>();\n\n    if (baseElementLibConfig != undefined) {\n\n      baseElementLibConfig.webkitVersion = baseElementLibConfig.webkitVersion ?? DEFAULT_WEBKIT_VERSION;\n    }\n\n    saveEE();\n  }\n\n  overrideConfig(config: BaseComponentConfig) {\n\n    if (config) {\n\n      this.logOnConsole = getConfigValue(config.logOnConsole, this.logOnConsole);\n    }\n  }\n\n  ngOnChanges(changes: BaseComponentChanges) {\n    this.emitDebug(`ngOnChanges`);\n    this.emitDebug(changes);\n  }\n\n  ngOnInit() {\n\n    this.emitDebug(`ngOnInit`);\n    this.emitDebug(`this`);\n    this.emitDebug(this);\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.baseComponentCdr.detectChanges()));\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    this.emitDebug(`${this.logPrefix} ngOnDestroy`);\n    this.subcriptions.forEach(s => s?.unsubscribe());\n  }\n\n  emitLog(message: any) {\n    this.emit({message: message, level: LogLevel.LOG});\n  }\n\n  emitTrace(message: any) {\n    this.emit({message: message, level: LogLevel.TRACE});\n  }\n\n  emitDebug(message: any) {\n    this.emit({message: message, level: LogLevel.DEBUG});\n  }\n\n  emitInfo(message: any) {\n    this.emit({message: message, level: LogLevel.INFO});\n  }\n\n  emitWarn(message: any) {\n    this.emit({message: message, level: LogLevel.WARN});\n  }\n\n  emitError(message: any) {\n\n    this.emit({message: message, level: LogLevel.ERROR});\n  }\n\n  emit(event: LogEvent) {\n\n    if (event) {\n\n      if (this.logOnConsole === true) {\n\n        console[event.level].apply(this, [this.getMessage(event)]);\n      } else {\n\n        event.message = this.getMessage(event);\n        this.log.emit(event);\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    this.viewInit = true;\n    this.detectChanges();\n  }\n}\n\nexport interface BooleanChange extends SimpleChange {\n\n  currentValue: boolean;\n  previousValue: boolean;\n}\n\nexport interface StringChange extends SimpleChange {\n\n  currentValue: string;\n  previousValue: string;\n}\n\nexport interface NumberChange extends SimpleChange {\n\n  currentValue: number;\n  previousValue: number;\n}\n\nexport interface ObservableChange extends SimpleChange {\n\n  currentValue: Observable<any>;\n  previousValue: Observable<any>;\n}\n\nfunction saveEE() {\n\n  if (!window['asd']) {\n\n    window['asd'] = JSON.parse(atob('ewogICJhdXRvcmUiOiAiU2ltb25lIEFudG9uaW5pIiwKICAiZXRhIjogImRpcGVuZGUgZGFsbCdhbm5vIGNvcnJlbnRlIiwKICAiaG9iYnkiOiBbIlBlc2NhIiwgIlNub3dib2FyZCIsICJHYW1pbmciLCAiQ3Jvc3NmaXQiXSwKICAicHJlZmVyaXRpIjogewogICAgInBlc2NpIjogWyJDYXJwYSIsICJCbGFjayBCYXNzIl0sCiAgICAidmlkZW9naW9jaGkiOiBbIkZGVklJIiwgIkZGVklJUiIsICJEZWF0aCBTdHJhbmRpbmciLCAiU2VraXJvIiwgIlJlZCBEZWFkIFJlZGVtcHRpb24gMiIsICJUTE9VIiwgIlRMT1UyIl0sCiAgICAibGlicmkiOiBbCiAgICAgIHsiYXV0b3JlIjogIkdhYnJpZWwgR2FyY2lhIE1hcnF1ZXoiLCAidGl0b2xvIjogIkNlbnQnYW5uaSBkaSBzb2xpdHVkaW5lIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiQ2FzdGVsbGkgZGkgcmFiYmlhIn0sCiAgICAgIHsiYXV0b3JlIjogIkFsZXNzYW5kcm8gQmFyaWNjbyIsICJ0aXRvbG8iOiAiU2V0YSJ9LAogICAgICB7ImF1dG9yZSI6ICJZYXN1bmFyaSBLYXdhYmF0YSIsICJ0aXRvbG8iOiAiTGEgY2FzYSBkZWxsZSBiZWxsZSBhZGRvcm1lbnRhdGUifQogICAgXQogIH0sCiAgImltcHJlc2VDZWxlYnJpIjogWyJTb3Bwb3J0byBtaWEgbWFkcmUgZGEgcXVhc2kgNDAgYW5uaSJdLAogICJwcm92b0Ftb3JlUGVyIjogWyJJbCBtaW8gY2FuZSIsICJJbCBtaW8gZ2F0dG8iLCAiSWwgdGlyYW1pc3UiXQp9'));\n  }\n}\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY, StringChange} from \"./base.component\";\nimport {uuidv4} from \"../../utils/common.operators\";\nimport {BaseComponentConfig, NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../ng-inail-common.config\";\n\nexport interface BasicUxElementComponentChanges extends BaseComponentChanges {\n\n  id: StringChange,\n  class: StringChange\n}\n\n@Component({\n  selector: 'inail-basic-ux-element',\n  template: '',\n  styles: [],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class BasicUxElementComponent extends BaseComponent implements OnChanges, OnInit {\n\n  @Input()\n  id: string = uuidv4();\n\n  @Input()\n  class: string;\n\n  constructor(private uxElementCdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private uxElementLibConfig?: NgInailCommonConfig) {\n\n    super(uxElementCdr, uxElementLibConfig);\n  }\n\n  overrideConfig(config: BaseComponentConfig) {\n\n    if (config) {\n\n      super.overrideConfig(config);\n    }\n  }\n\n  ngOnChanges(changes: BasicUxElementComponentChanges) {\n\n    super.ngOnChanges(changes);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    if (this.id == undefined) {\n\n      this.id = uuidv4();\n    }\n\n    this.logPrefix = `${this.logPrefix}[${this.id}]`;\n  }\n}\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"./basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, NumberChange} from \"./base.component\";\nimport {BaseComponentConfig, NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../ng-inail-common.config\";\n\nexport type ColumnDimension = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ResponsiveElementComponentChanges extends BasicUxElementComponentChanges {\n\n  xs: NumberChange,\n  sm: NumberChange,\n  md: NumberChange,\n  lg: NumberChange\n}\n\n@Component({\n  selector: 'inail-responsive-element',\n  template: '',\n  styles: [],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ResponsiveElementComponent extends BasicUxElementComponent implements OnChanges, OnInit {\n\n  @Input()\n  lg: ColumnDimension;\n  @Input()\n  md: ColumnDimension;\n  @Input()\n  sm: ColumnDimension;\n  @Input()\n  xs: ColumnDimension = 12;\n\n  constructor(private responsiveElementCdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private responsiveElementLibConfig?: NgInailCommonConfig) {\n    super(responsiveElementCdr, responsiveElementLibConfig);\n  }\n\n  overrideConfig(config: BaseComponentConfig) {\n\n    if (config) {\n\n      super.overrideConfig(config);\n    }\n  }\n\n  ngOnChanges(changes: ResponsiveElementComponentChanges) {\n\n    super.ngOnChanges(changes);\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n  }\n\n  private xsClass = (): string => this.xs != undefined ? `col-xs-${this.xs} ` : '';\n  private smClass = (): string => this.sm != undefined ? `col-sm-${this.sm} ` : '';\n  private mdClass = (): string => this.md != undefined ? `col-md-${this.md} ` : '';\n  private lgClass = (): string => this.lg != undefined ? `col-lg-${this.lg} ` : '';\n\n  getResponsiveClass = (): string => `${this.xsClass()}${this.smClass()}${this.mdClass()}${this.lgClass()}`.trim();\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../responsive-element.component\";\nimport {isNotBlankOrNull} from \"../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, ObservableChange, StringChange} from \"../base.component\";\nimport {FormElementComponentConfig, NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../ng-inail-common.config\";\n\nexport interface FormElementComponentChanges extends ResponsiveElementComponentChanges {\n\n  label: StringChange,\n  title: StringChange,\n  name: StringChange,\n  labelTitle: StringChange,\n  labelClass: StringChange,\n  inputClass: StringChange,\n  required: BooleanChange,\n  requiredSimbol: StringChange,\n  requiredSimbolPosition: StringChange,\n  disabled: BooleanChange,\n  readonly: BooleanChange,\n  hasError: BooleanChange,\n  hiddenLabel: BooleanChange,\n  error: StringChange,\n  focus: ObservableChange\n}\n\n@Component({\n  selector: 'inail-form-element',\n  template: '',\n  styles: [],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class FormElementComponent extends ResponsiveElementComponent implements OnChanges, OnInit {\n\n  onChange: (val: any) => void\n  onTouched: () => void;\n\n  @Input()\n  label: NonNullable<string>;\n  @Input()\n  title: string;\n  @Input()\n  name: string;\n  @Input()\n  labelTitle: string;\n  @Input()\n  labelClass: string;\n  @Input()\n  inputClass: string;\n  @Input()\n  required: boolean = false;\n  @Input()\n  requiredSimbol: string = getConfigValue(this.formElementLibConfig?.formElementComponent?.requiredSimbol, '*');\n  @Input()\n  requiredSimbolPosition: 'left' | 'right' = getConfigValue(this.formElementLibConfig?.formElementComponent?.requiredSimbolPosition, 'right');\n  @Input()\n  disabled: boolean = false;\n  @Input()\n  readonly: boolean = false;\n  @Input()\n  hasError: boolean = false;\n  @Output()\n  hasErrorChange = new EventEmitter<boolean>();\n  @Input()\n  hiddenLabel: boolean = false;\n  @Input()\n  error: string;\n  @Input()\n  description: string;\n  @Output()\n  errorChange = new EventEmitter<string>();\n  @Output()\n  enterUp = new EventEmitter();\n  @Input()\n  focus: Observable<boolean | void>;\n  @Input()\n  popover: boolean = false;\n  @Input()\n  popoverButtonIcon: string;\n  @Input()\n  popoverButtonTitle: string;\n  @Input()\n  popoverHeader: string;\n  @Input()\n  popoverContent: string;\n  @Input()\n  cleanErrorOnChange: boolean = getConfigValue(this.formElementLibConfig?.formElementComponent?.cleanErrorOnChange, true);\n\n  errorId: string;\n  descriptionId: string;\n\n  getLabel = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.label}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n  isThereError = (): boolean => this.hasError || isNotBlankOrNull(this.error);\n  showError = (): boolean => this.isThereError() && isNotBlankOrNull(this.error);\n  showDescription = (): boolean => isNotBlankOrNull(this.description);\n\n  getAriaLabelledBy = (): string => this.showError() ? this.errorId : undefined;\n  getAriaDescribedBy = (): string => this.showDescription() ? this.descriptionId : undefined;\n\n  // showPopover = (): boolean => isNotBlankOrNull(this.popoverHeader) || isNotBlankOrNull(this.popoverContent);\n  showPopover = (): boolean => this.popover === true;\n\n  hasFocus = (): boolean => document.activeElement?.id == this.id;\n\n  constructor(private formElementCdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private formElementLibConfig?: NgInailCommonConfig) {\n    super(formElementCdr, formElementLibConfig);\n    super.overrideConfig(formElementLibConfig?.formElementComponent);\n  }\n\n  overrideConfig(config: FormElementComponentConfig) {\n\n    if (config) {\n\n      super.overrideConfig(config);\n      this.requiredSimbol = getConfigValue(config.requiredSimbol, this.requiredSimbol);\n      this.requiredSimbolPosition = getConfigValue(config.requiredSimbolPosition, this.requiredSimbolPosition);\n      this.cleanErrorOnChange = getConfigValue(config.cleanErrorOnChange, this.cleanErrorOnChange);\n    }\n  }\n\n  ngOnChanges(changes: FormElementComponentChanges) {\n\n    super.ngOnChanges(changes);\n    this.title = this.getNotBlankValue(this.title);\n    this.name = this.getNotBlankValue(this.name);\n    this.labelTitle = this.getNotBlankValue(this.labelTitle);\n    this.popoverButtonTitle = this.getNotBlankValue(this.popoverButtonTitle);\n\n    if (changes.id?.currentValue != undefined) {\n\n      this.errorId = `${changes.id?.currentValue}-error`;\n      this.descriptionId = `${changes.id?.currentValue}-description`;\n    }\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.logPrefix = `${this.logPrefix}[${this.label}]`;\n\n    if (this.id != undefined) {\n\n      this.errorId = `${this.id}-error`;\n      this.descriptionId = `${this.id}-description`;\n    }\n  }\n\n  setDescError(s: string) {\n\n    this.error = s;\n    this.formElementCdr.detectChanges();\n  }\n\n  setHasError(b: boolean) {\n\n    this.hasError = b;\n    this.formElementCdr.detectChanges();\n  }\n\n  cleanError() {\n\n    setTimeout(() => {\n\n      if (this.hasError) {\n\n        this.hasError = false;\n        this.hasErrorChange.emit(false);\n      }\n\n      if (this.error) {\n\n        this.error = undefined;\n        this.errorChange.emit(undefined);\n      }\n\n      this.formElementCdr.detectChanges();\n    })\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n\n    this.emitDebug(`registerOnChange`);\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n\n    this.emitDebug(`registerOnTouched`);\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n\n    this.emitDebug(`setDisabledState: ${isDisabled}`);\n    this.disabled = isDisabled;\n    this.formElementCdr.detectChanges();\n  }\n\n  onBlur() {\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n}\n","import {isNotBlankOrNull} from \"./common.operators\";\nimport {DateFormat} from \"./types\";\n\n/**\n * Verifica che la stringa sia nel formato dd/mm/aaaa\n *\n * @param s\n */\nexport const isInItalianFormat = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[0-3][0-9][\\/][0-1][0-9][\\/][1-9][0-9]{3}$/).test(s);\n\n/**\n * Verifica che la stringa sia formatta secondo lo standard ISO 8601\n *\n * E.g.\n * 2016-04-06\n * 2016-04-06T10:10:09Z\n * 2003-05-11T15:30:00.45Z\n * 1997-07-16T19:20+01:00\n * 1997-07-16T19:20:30+01:00\n * 1997-07-16T19:20:30.45+01:00\n * 1997-07-16T19:20-01:00\n * 1997-07-16T19:20:30-01:00\n * 1997-07-16T19:20:30.45-01:00\n *\n * https://rgxdb.com/r/526K7G5W\n *\n * @param s\n */\nexport const isInISO8601Format = (s: string): boolean => isNotBlankOrNull(s) && new RegExp(/^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9](T[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\.[0-9]{2})?)?(([+-][0-9]{2}:[0-9]{2})|(Z)))?$/).test(s);\n\n/**\n * Verifica che la stringa rappresenti una data\n *\n * @param s\n */\nexport const isDate = (s: string): boolean => isInItalianFormat(s) || isInISO8601Format(s);\n\n/**\n *\n * @param s\n */\nexport const toItalianFormat = (s: string): string => reformatDate(s, 'IT');\n\n/**\n *\n * @param s\n */\nexport const toISO8601Format = (s: string): string => reformatDate(s, 'ISO8061');\n\n/**\n *\n * @param s\n * @param format\n */\nexport const reformatDate = (s: string, format: DateFormat): string => dateToString(toDateObject(s), format);\n\n/**\n *\n * @param d\n * @param format\n */\nexport const dateToString = (d: Date, format: DateFormat): string => {\n\n  let s: string = undefined\n\n  if (d && !isInvalidDateObject(d)) {\n\n    switch (format) {\n\n      default:\n      case \"IT\":\n        s = `${addZero(d.getDate())}/${addZero(d.getMonth() + 1)}/${d.getFullYear()}`;\n        break\n\n      case \"ISO8061\":\n        s = `${d.getFullYear()}-${addZero(d.getMonth() + 1)}-${addZero(d.getDate())}`;\n    }\n  }\n\n  return s;\n}\n\n/**\n * Converte una stringa in un oggetto Date.\n *\n * @returns Oggetto Date se la stringa e' definita, null altrimenti.\n */\nexport const toDateObject = (s: string): Date => {\n\n  let dateObj: Date = null;\n\n  if (s) {\n    // Se la data e' in formato italiano\n    // riformatto la stringa in un formato\n    // compatibile con Date\n    if (isInItalianFormat(s)) {\n\n      let a = s.split('/');\n      s = `${a[1]}/${a[0]}/${a[2]}`\n    }\n\n    dateObj = new Date(s);\n  }\n\n  return dateObj;\n}\n\nexport const isValidDateObject = (s: Date): boolean => s && !!s.getFullYear();\n\nexport const isInvalidDateObject = (d: Date): boolean => d && d.toString() === 'Invalid Date';\n\nexport const addZero = (n: number): string => n < 10 ? `0${n}` : `${n}`;\n\nexport const isFutureDate = (s: string): boolean => compareDate(new Date(s), new Date()) > 0;\nexport const isPastDate = (s: string): boolean => compareDate(new Date(s), new Date()) < 0;\nexport const isToday = (s: string): boolean => compareDate(new Date(s), new Date()) == 0;\n\nexport const compareDate = (d1: Date, d2: Date) => {\n  d1.setHours(0, 0, 0, 0);\n  d2.setHours(0, 0, 0, 0);\n  return d1.getTime() > d2.getTime() ? 1 : (d1.getTime() < d2.getTime() ? -1 : 0);\n}\n","import {Component, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n  selector: 'debug-pre',\n  templateUrl: './pre.component.html',\n  styleUrls: ['./pre.component.css'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class PreComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<pre style=\"margin-top: 10px\"><ng-content></ng-content></pre>\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\n\n@Component({\n  selector: 'state-propertie',\n  templateUrl: './state-propertie.component.html',\n  styleUrls: ['./state-propertie.component.css'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class StatePropertieComponent implements OnInit {\n\n  @Input()\n  label: string;\n\n  @Input()\n  propertie: any;\n\n  @Input()\n  hideIfNull: boolean;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<ng-container *ngIf=\"!(propertie==undefined && hideIfNull)\">{{label}}: {{propertie != undefined ? (propertie | json) : 'undefined'}}<br></ng-container>\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {FormElementComponent} from \"../../core/form/form-element.component\";\n\n@Component({\n  selector: 'inail-form-element-state-properties',\n  templateUrl: './form-element-state-propertie.component.html',\n  styleUrls: ['./form-element-state-propertie.component.css'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class FormElementStatePropertieComponent implements OnInit {\n\n  @Input()\n  formElement: FormElementComponent;\n\n  constructor() {\n  }\n\n  ngOnInit(): void {\n  }\n\n}\n","<ng-container *ngIf=\"formElement\">\n  <state-propertie [label]=\"'hasError'\" [propertie]=\"formElement.hasError\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'error'\" [propertie]=\"formElement.error\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'hiddenLabel'\" [propertie]=\"formElement.hiddenLabel\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'title'\" [propertie]=\"formElement.title\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'name'\" [propertie]=\"formElement.name\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'labelTitle'\" [propertie]=\"formElement.labelTitle\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'labelClass'\" [propertie]=\"formElement.labelClass\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'inputClass'\" [propertie]=\"formElement.inputClass\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'required'\" [propertie]=\"formElement.required\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'requiredSimbol'\" [propertie]=\"formElement.requiredSimbol\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'requiredSimbolPosition'\" [propertie]=\"formElement.requiredSimbolPosition\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'disabled'\" [propertie]=\"formElement.disabled\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'readonly'\" [propertie]=\"formElement.readonly\" [hideIfNull]=\"false\"></state-propertie>\n\n  <state-propertie [label]=\"'xs'\" [propertie]=\"formElement.xs\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'sm'\" [propertie]=\"formElement.sm\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'md'\" [propertie]=\"formElement.md\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'lg'\" [propertie]=\"formElement.lg\" [hideIfNull]=\"false\"></state-propertie>\n\n  <state-propertie [label]=\"'class'\" [propertie]=\"formElement.class\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'popoverButtonIcon'\" [propertie]=\"formElement.popoverButtonIcon\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'popoverButtonTitle'\" [propertie]=\"formElement.popoverButtonTitle\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'popoverHeader'\" [propertie]=\"formElement.popoverHeader\" [hideIfNull]=\"false\"></state-propertie>\n  <state-propertie [label]=\"'popoverContent'\" [propertie]=\"formElement.popoverContent\" [hideIfNull]=\"false\"></state-propertie>\n</ng-container>\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Inject, Input, OnChanges, OnInit, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n// export interface Popover {\n//\n//   title?: string;\n//   content?: string;\n//   buttonTitle?: string;\n//   iconClass?: string;\n// }\n\nexport interface PopoverComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-popover',\n  templateUrl: './popover.component.html',\n  styleUrls: ['./popover.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PopoverComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit {\n\n  @ViewChild('openButton')\n  openButton: ElementRef<HTMLElement>;\n\n  @ViewChild('popover')\n  popover: ElementRef<HTMLElement>;\n\n  show: boolean;\n\n  // @Input()\n  // data: Popover;\n  @Input()\n  iconClass: string = getConfigValue(this.libConfig?.popoverComponent?.iconClass, undefined);\n  @Input()\n  buttonTitle: string;\n  @Input()\n  header: string;\n  @Input()\n  content: string;\n\n  popoverLeft: number;\n  popoverTop: number;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-popover]';\n    super.overrideConfig(libConfig?.popoverComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: PopoverComponentChanges) {\n\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    if (this.iconClass == undefined) {\n\n      this.iconClass = 'fa-question-circle';\n    }\n\n    if (this.buttonTitle == undefined) {\n\n      this.buttonTitle = getConfigValue(this.libConfig?.popoverComponent?.buttonTitle, `Visualizza informativa`)\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  onClick(b?: boolean) {\n\n    this.show = b != undefined ? b : !this.show;\n    this.cdr.detectChanges();\n\n    if (this.show) {\n\n      let yButton = this.openButton.nativeElement.getBoundingClientRect().bottom;\n      let yPo = this.popover.nativeElement.getBoundingClientRect().bottom;\n      let hPo = this.popover.nativeElement.getBoundingClientRect().height / 2\n\n      this.popoverLeft = this.openButton.nativeElement.getBoundingClientRect().left - this.popover.nativeElement.getBoundingClientRect().left + 33;\n      this.popoverTop = (yButton - yPo + hPo - 11);\n    } else {\n      this.popoverLeft = undefined;\n      this.popoverTop = undefined\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n\n    setTimeout(() => this.cdr.detectChanges());\n  }\n}\n","<span class=\"fa fa-lg\"\n      #openButton\n      [id]=\"id+'-button'\"\n      [ngClass]=\"iconClass\"\n      tabindex=\"0\"\n      data-trigger=\"focus\"\n      data-toggle=\"popover\"\n      [attr.title]=\"buttonTitle\"\n      [attr.aria-label]=\"buttonTitle\"\n      (focusin)=\"onClick(true)\"\n      (focusout)=\"onClick(false)\"\n      [attr.aria-describedby]=\"show ? id : undefined\">\n</span>\n<div #popover\n     *ngIf=\"show\"\n     class=\"popover fade in right inail-popover {{class}}\"\n     [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n     role=\"tooltip\"\n     [id]=\"id\">\n  <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n  <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n  <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from '../form-element.component';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {DatePipe} from '@angular/common';\nimport {isDate} from '../../../../utils/date.operators';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, NumberChange, StringChange} from '../../base.component';\nimport {setFocus} from '../../../../utils/common.operators';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\n\ninterface InputTextChanges extends FormElementComponentChanges {\n\n  value: StringChange;\n  placeholder: StringChange;\n  maxlength: NumberChange;\n  isDate: BooleanChange;\n}\n\nconst ONLY_DIGITS_ACCEPTED_INPUTS: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];\n\n@Component({\n  selector: 'inail-input-text',\n  templateUrl: './input-text.component.html',\n  styleUrls: ['./input-text.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputTextComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class InputTextComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLElement>;\n\n  inputValue: string;\n\n  @Input()\n  placeholder: string = getConfigValue(this.libConfig?.inputTextComponent?.placeholder, undefined);\n\n  @Input()\n  maxlength: number;\n\n  @Input()\n  isDate: boolean = false;\n\n  @Input()\n  onlyDigits: boolean = false;\n\n  @Output()\n  valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  @Input()\n  preventPasting: boolean = getConfigValue(this.libConfig?.inputTextComponent?.preventPasting, false);\n\n  constructor(private cdr: ChangeDetectorRef,\n              private datePipe: DatePipe,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-text]`;\n    this.emitDebug('NgInailCommonConfig:');\n    this.emitDebug(this.libConfig?.inputTextComponent);\n    super.overrideConfig(this.libConfig?.inputTextComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputTextChanges): void {\n\n    super.ngOnChanges(changes);\n    this.maxlength = this.getNotBlankValue(this.maxlength);\n    this.placeholder = this.getNotBlankValue(this.placeholder);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`);\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return (this.isDate && isDate(this.inputValue)) ? this.datePipe.transform(this.inputValue, 'dd/MM/yyyy') : this.inputValue;\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.inputValue != value) {\n\n      this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n      this.inputValue = value;\n      this.cdr.detectChanges();\n\n      this.emitDebug(`this.valueChange.emit(${value})`);\n      this.valueChange.emit(value);\n\n      if (this.cleanErrorOnChange) {\n\n        this.cleanError();\n      }\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n  }\n\n  onPaste($event: ClipboardEvent) {\n\n    if (this.preventPasting === true) {\n\n      $event.preventDefault();\n    }\n  }\n\n  onKeyDown(ev: KeyboardEvent) {\n\n    if (this.onlyDigits === true && !ONLY_DIGITS_ACCEPTED_INPUTS.some(v => v === ev.key) && ev.ctrlKey == false) {\n\n      ev.preventDefault();\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-input-text\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <label *ngIf=\"label\"\n         class=\"control-label {{labelClass}}\"\n         [ngClass]=\"{'sr-only': hiddenLabel}\"\n         [attr.title]=\"labelTitle\"\n         [for]=\"id\">\n    <span [innerHTML]=\"getLabel()\"></span>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\">\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <span *ngIf=\"showPopover()\"\n        [style.padding-left.px]=\"5\">\n    <inail-popover [iconClass]=\"popoverButtonIcon\"\n                   [buttonTitle]=\"popoverButtonTitle\"\n                   [header]=\"popoverHeader\"\n                   [content]=\"popoverContent\">\n    </inail-popover>\n  </span>\n  <input #formControl\n         type=\"text\"\n         [id]=\"id\"\n         class=\"form-control {{inputClass}}\"\n         [ngClass]=\"{'disabled': disabled}\"\n         [attr.name]=\"name\"\n         [attr.title]=\"title\"\n         [attr.maxlength]=\"maxlength\"\n         [disabled]=\"disabled\"\n         [readonly]=\"readonly\"\n         [attr.placeholder]=\"placeholder\"\n         [attr.aria-required]=\"required === true ? true : undefined\"\n         [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n         [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n         (blur)=\"onBlur()\"\n         (paste)=\"onPaste($event)\"\n         (keyup.enter)=\"enterUp.emit()\"\n         (keydown)=\"onKeyDown($event)\"\n         [(ngModel)]=\"value\">\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\"\n       [ngClass]=\"{'desc-margin-top': showError()}\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n  <debug-pre *ngIf=\"showState\">\n    <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n    <state-propertie [label]=\"'label'\" [propertie]=\"label\"></state-propertie>\n    <state-propertie [label]=\"'inputValue'\" [propertie]=\"inputValue\"></state-propertie>\n    <state-propertie [label]=\"'maxlength'\" [propertie]=\"maxlength\" [hideIfNull]=\"false\"></state-propertie>\n    <state-propertie [label]=\"'isDate'\" [propertie]=\"isDate\" [hideIfNull]=\"false\"></state-propertie>\n    <state-propertie [label]=\"'placeholder'\" [propertie]=\"placeholder\" [hideIfNull]=\"false\"></state-propertie>\n    <inail-form-element-state-properties [formElement]=\"this\"></inail-form-element-state-properties>\n  </debug-pre>\n</div>\n","import {AfterViewInit, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY} from \"../base.component\";\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport { HttpClient } from \"@angular/common/http\";\nimport {HFResponse} from \"../../../services/agw-rest.service\";\nimport {Observable} from \"rxjs\";\nimport {finalize, first} from \"rxjs/operators\";\nimport {isBlankOrNull} from \"../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../ng-inail-common.config\";\n\nexport interface DynamicLayoutElementComponentChanges extends BaseComponentChanges {\n\n\n}\n\n@Component({\n  selector: 'inail-dynamic-layout-element',\n  template: ``,\n  styles: [],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class DynamicLayoutElementComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  innerHtml: SafeScript;\n\n  /**\n   * Forza il componente a utilizzare il frammento html di default.\n   * Verra' preso in considerazione solamente in caso di recupero non automatico.\n   */\n  @Input()\n  useDefault: boolean = false;\n\n  /**\n   * Frammento html da far visualizzare al componente.\n   * Verra' utilizzato solamente in caso di recupero non automatico.\n   */\n  @Input()\n  html: string;\n\n  /**\n   * Url da cui recuperare il frammento html.\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPublicVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento l'html verra' visualizzato quello di default.\n   */\n  @Input()\n  url: string;\n\n  /**\n   * ClientId dell'applicazione.\n   * Viene utilizzato in caso di recupero automatico del frammento html dal servizio 'HeaderFooter-MSPublicVersion' esposto su AGW.\n   * Il recupero automatico da AGW non avviene se vengono valorizzate le proprieta' di input 'html' o 'url'.\n   */\n  @Input()\n  clientId: string;\n\n  /**\n   * Url a cui contattare l'AGW per il recupero automatico del frammento html.\n   * Per il recupero verra' contattato il servizio 'HeaderFooter-MSPublicVersion'.\n   * Se non specificato verra' utilizzato l'indirizzo relativo /api.\n   */\n  @Input()\n  apiGatewayUrl: string;\n\n  /**\n   * Alla ricezione del valore effettua il ricaricamento del frammento html recuperato automaticamente.\n   * Il ricaricamento non viene effettuato se e' stata valorizzata la proprieta' di input 'html'.\n   */\n  @Input()\n  reload: Observable<void>;\n\n  /**\n   * Se true viene recuperato automaticamente da remoto il frammento html.\n   * Il frammento html verra' recuperato all'indirizzo indicato tramite la proprieta' di input url.\n   * Se l'indirizzo non viene impostato il frammento html verra' recuperato automaticamente dal componente contattando\n   * il servizio 'HeaderFooter-MSPublicVersion' esposto su AGW.\n   * Se false il frammento html dovra essere passato in input al componente tramite la proprieta' di input html\n   * o inserito nel content del componente.\n   */\n  @Input()\n  recuperoAutomaticoHtml: boolean = false;\n\n  inizializzazioneTerminata: boolean = false;\n\n  visualizzaContentEsterno = (): boolean => this.recuperoAutomaticoHtml !== true\n    && this.useDefault !== true && this.html == undefined\n\n  visualizzaFrammentoDiDefault = (): boolean => (this.recuperoAutomaticoHtml !== true && this.useDefault === true)\n    // Recupero automatico ma frammento non recuperato.\n    || (this.recuperoAutomaticoHtml == true && this.innerHtml == undefined);\n\n  utilizzaHtmlPassatoInInput = (): boolean => this.recuperoAutomaticoHtml !== true\n    && this.useDefault != true && this.html != undefined;\n\n  hfResponse$: Observable<HFResponse>;\n\n  constructor(private dleSanitizer: DomSanitizer,\n              private dleCdr: ChangeDetectorRef,\n              private dleHttp: HttpClient,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private dleLibConfig: NgInailCommonConfig) {\n\n    super(dleCdr, dleLibConfig);\n    this.detach();\n  }\n\n  ngOnChanges(changes: DynamicLayoutElementComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // Se cambia l'html passato in input\n    if (changes?.html?.currentValue\n      && changes?.html?.firstChange === false\n      && this.utilizzaHtmlPassatoInInput()) {\n\n      this.innerHtml = this.dleSanitizer.bypassSecurityTrustHtml(this.html);\n    }\n\n    this.dleCdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    if (this.recuperoAutomaticoHtml === true) {\n\n      this.recupera();\n\n    } else {\n\n      if (this.utilizzaHtmlPassatoInInput()) {\n\n        this.innerHtml = this.dleSanitizer.bypassSecurityTrustHtml(this.html);\n      }\n\n      this.inizializzazioneTerminata = true;\n      this.dleCdr.detectChanges();\n    }\n\n    if (this.reload) {\n\n      this.reload.subscribe(() => {\n\n        if (this.recuperoAutomaticoHtml === true) {\n\n          this.recupera();\n\n        } else if (this.utilizzaHtmlPassatoInInput()) {\n\n          this.innerHtml = this.dleSanitizer.bypassSecurityTrustHtml(this.html);\n          this.dleCdr.detectChanges();\n        }\n      });\n    }\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.dleCdr.detectChanges()));\n    }\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n  }\n\n  recupera() {\n\n    // Recupero da url indicato\n    if (this.url) {\n\n      this.recuperaDaUrl(this.url);\n    }\n    // Recupero da AGW\n    else {\n\n      this.recuperaDaAGW();\n    }\n  }\n\n  recuperaDaUrl(url: string) {\n    this.emitDebug(`Recupero html da: ${url}`);\n\n    this.dleHttp.get(this.url, {responseType: 'text'})\n      .pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug(`inizializzazione terminata!`);\n          this.inizializzazioneTerminata = true;\n          this.dleCdr.detectChanges();\n        })\n      )\n      .subscribe(\n        {\n          next: (html: string) => {\n            this.innerHtml = this.dleSanitizer.bypassSecurityTrustHtml(html);\n            this.emitDebug(`html recuperato!`);\n          },\n          error: (err) => {\n            this.innerHtml = undefined;\n            this.emitError(`Errore nel recupero del frammento html`);\n            this.emitError(err);\n            this.emitWarn(`Visualizzazione html di default`);\n          }\n        }\n      );\n  }\n\n  recuperaDaAGW() {\n\n    this.emitDebug(`Recupero html da AGW`);\n\n    this.hfResponse$\n      .pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug(`Inizializzazione completata!`);\n          this.inizializzazioneTerminata = true;\n          this.dleCdr.detectChanges();\n        })\n      )\n      .subscribe(\n        {\n          next: (response: HFResponse) => {\n\n            if (isBlankOrNull(response?.html)) {\n\n              this.emitWarn(`Frammento html non ricevuto! Visualizzazione html di default`);\n\n            } else {\n\n              this.innerHtml = this.dleSanitizer.bypassSecurityTrustHtml(response?.html);\n              this.emitDebug(`html recuperato!`);\n            }\n          },\n          error: (err) => {\n            this.innerHtml = undefined;\n            this.emitError(`Errore nel recupero del frammento html`);\n            this.emitError(err);\n            this.emitWarn(`Visualizzazione html di default`);\n          }\n        }\n      );\n  }\n}\n","import {Injectable} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nexport interface ChecksessionResponse {\n  result: boolean,\n  'http-status': number,\n  message: string,\n  sid?: string,\n  'XSRF-TOKEN'?: string,\n  redirect?: string,\n  User?: string\n}\n\nexport interface GlobalConfigResponse {\n\n  cdn_endpoint: string;\n}\n\nexport interface HFResponse {\n\n  id: string;\n  updateDate: string;\n  type: string;\n  html: string;\n}\n\nexport interface HFFullHtmlResponse extends HFResponse {\n\n  htmlHead: string;\n  htmlLogo: string;\n  htmlHeader: string;\n  htmlHeaderSecondario: string;\n  htmlFooter: string;\n}\n\nexport interface AGWRequest {\n  agwEndPoint?: string;\n  clientId?: string;\n}\n\nexport interface DatiDipendenteResponse {\n\n  dipendente: DatiDipendente[];\n}\n\nexport interface DatiDipendente {\n\n  'contratto': string,\n  'mail': string,\n  'cognome': string,\n  'flagVisibilitaCellulare': string,\n  'qualifica': string,\n  'codiceUnita': string,\n  'nome': string,\n  'codiceFiscale': string,\n  'pec': string,\n  'numeroCellularePrivato': string,\n  'descrizioneUnita': string,\n  'utenteHr': string,\n  'netFax': string,\n  'numeroCellulare': string,\n  'matricola': string,\n  'livello': string,\n  'numeroBreve': string,\n  'numeroTelefono': string\n}\n\nexport interface FotoDipendenteResponse {\n\n  fotoDipendente: FotoDipendente[];\n  errorCode?: string;\n  message?: string;\n}\n\nexport interface FotoDipendente {\n\n  foto: string;\n}\n\nconst AGW_CONTEXT: string = 'api';\nconst HF_URL: string = '/hf';\nconst HF_PUBLIC_URL: string = `${HF_URL}/public`;\nconst HF_PRIVATE_URL: string = `${HF_URL}/private`;\nconst AU_DIPENDENTE: string = '/au/dipendente';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AgwRestService {\n\n  constructor(private http: HttpClient) {\n  }\n\n  private getAGWEndPoint(request: AGWRequest): string {\n\n    let endpoint: string = `/${AGW_CONTEXT}`;\n\n    if (request?.agwEndPoint) {\n\n      // Rimuovo l'ultimo slash\n      if (request.agwEndPoint.endsWith('/')) {\n\n        request.agwEndPoint = request.agwEndPoint.slice(0, -1);\n      }\n\n      // Rimuovo la context se gia specificata\n      if (request.agwEndPoint.endsWith(endpoint)) {\n\n        request.agwEndPoint = request.agwEndPoint.slice(0, -endpoint.length);\n      }\n\n      endpoint = `${request.agwEndPoint}${endpoint}`;\n    }\n\n    return endpoint;\n  }\n\n  private get<T>(url: string, request?: AGWRequest): Observable<T> {\n\n    let clientId: string = request?.clientId;\n\n    let headers = new HttpHeaders();\n\n    if (clientId) {\n\n      headers = headers.set('client_id', clientId);\n    }\n\n    return this.http.get<T>(`${this.getAGWEndPoint(request)}${url}`, {headers: headers, withCredentials: true})\n      .pipe(\n        first() // Effettua l'unsubscribe dopo l'emissione del primo valore\n      );\n  }\n\n  // --- Servizi AGW -----------------------------------------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public checksession(request?: AGWRequest): Observable<ChecksessionResponse> {\n\n    return this.get<ChecksessionResponse>(`/checksession`, request);\n  }\n\n  public getGlobalConfig(request?: AGWRequest): Observable<GlobalConfigResponse> {\n\n    return this.get<GlobalConfigResponse>(`/global-config`, request);\n  }\n\n  // --- AU_Rest_Dipendente ----------------------------------------------------------------------------------------------------------------\n\n  public estraiDatiDipendente(matricola: string, request?: AGWRequest): Observable<DatiDipendenteResponse> {\n\n    return this.get<DatiDipendenteResponse>(`${AU_DIPENDENTE}/estrai-dati-dipendente?matricola=${matricola}`, request);\n  }\n\n  public estraiFotoDipendente(matricola: string, request?: AGWRequest): Observable<FotoDipendenteResponse> {\n\n    return this.get<FotoDipendenteResponse>(`${AU_DIPENDENTE}/estrai-foto-dipendente?matricola=${matricola}`, request);\n  }\n\n  // --- HeaderFooter-MSPrivateVersion e HeaderFooter-MSPublicVersion ----------------------------------------------------------------------\n\n  // --- Head ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicHead(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/head`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicHeadRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/head_rw`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateHead(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/head`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateHeadRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/head?rewrite=true`, request);\n  }\n\n  // --- Logo ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getLogo(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/logo`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getLogoRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/logo_rw`, request);\n  }\n\n  // --- Header ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicHeader(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/header`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicHeaderRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/header?rewrite=true`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateHeader(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/header`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateHeaderRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/header?rewrite=true`, request);\n  }\n\n  // --- Header Secondario ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getHeaderSecondario(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/header-secondario`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getHeaderSecondarioRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PRIVATE_URL}/header-secondario?rewrite=true`, request);\n  }\n\n  // --- Footer ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getFooter(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/footer`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getFooterRW(request?: AGWRequest): Observable<HFResponse> {\n\n    return this.get<HFResponse>(`${HF_PUBLIC_URL}/footer_rw`, request);\n  }\n\n  // --- Full Html ------------------------------------------------------------------------------------\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicFullHtml(request?: AGWRequest): Observable<HFFullHtmlResponse> {\n\n    return this.get<HFFullHtmlResponse>(`${HF_PUBLIC_URL}/fullhtml`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPublicFullHtmlRW(request?: AGWRequest): Observable<HFFullHtmlResponse> {\n\n    return this.get<HFFullHtmlResponse>(`${HF_PUBLIC_URL}/fullhtml_rw`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateFullHtml(request?: AGWRequest): Observable<HFFullHtmlResponse> {\n\n    return this.get<HFFullHtmlResponse>(`${HF_PRIVATE_URL}/fullhtml`, request);\n  }\n\n  /**\n   *\n   * @param request\n   */\n  public getPrivateFullHtmlRW(request?: AGWRequest): Observable<HFFullHtmlResponse> {\n\n    return this.get<HFFullHtmlResponse>(`${HF_PRIVATE_URL}/fullhtml?rewrite=true`, request);\n  }\n}\n","import {ChangeDetectorRef, Component, Inject, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {AgwRestService} from '../../../../services/agw-rest.service';\nimport {DynamicLayoutElementComponent} from \"../dynamic-layout-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n/**\n * Componente per la visualizzazione del Footer INAIL.\n *\n * E' possibile indicare al componente di recuperare il frammento html da remoto, passare un frammento html al componente o dire\n * al componente di utilizzare il frammento html di default.\n *\n * Il recupero automatico puo' essere abilitato valorizzando a true la proprieta' di input 'recuperoAutomaticoHtml'.\n *\n * In caso di recupero automatico il frammento html verra' recuperato contattando il servizio 'HeaderFooter-MSPublicVersion'\n * esposto su AGW oppure, se specificato, recuperato all'indirizzo html fornito valorizzando la proprieta' di input 'url'.\n * Se il recupero automatico non va a buon fine verra' visualizzato l'html di default.\n *\n * In caso di recupero non automatico il frammento html dovra' essere fornito in input al componente valorizzando\n * la proprieta' html oppure inserito nel content del componente.\n *\n * In caso di recupero non automatico e' possibile forzare l'utilizzo del frammento html di default valorizzando a true\n * la proprieta' di input 'useDefault'.\n */\n@Component({\n  selector: 'inail-footer',\n  templateUrl: './footer.component.html',\n  styleUrls: ['./footer.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends DynamicLayoutElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  constructor(private sanitizer: DomSanitizer,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig,\n              private http: HttpClient,\n              private agw: AgwRestService) {\n\n    super(sanitizer, cdr, http, libConfig);\n    this.logPrefix = '[inail-footer]';\n    this.detach();\n  }\n\n  ngOnInit() {\n    this.hfResponse$ = this.agw.getFooterRW({clientId: this.clientId, agwEndPoint: this.apiGatewayUrl});\n    super.ngOnInit();\n  }\n}\n","<ng-container *ngIf=\"inizializzazioneTerminata\">\n  <ng-container *ngIf=\"visualizzaContentEsterno()\">\n    <ng-content></ng-content>\n  </ng-container>\n  <ng-container *ngIf=\"!visualizzaContentEsterno()\">\n    <div *ngIf=\"!this.visualizzaFrammentoDiDefault() && this.innerHtml != undefined\"\n         [innerHtml]=\"innerHtml\">\n    </div>\n    <div *ngIf=\"this.visualizzaFrammentoDiDefault()\">\n      <footer>\n        <nav id=\"navigazionealternativa\" class=\"row\"><h2 class=\"hidden\">Navigazione alternativa</h2>\n          <div class=\"row col-md-3 col-xs-12\"><span> <img class=\"logo-inail img-responsive\" src=\"https://cdn.inailcloud.it/assets/inail/static/img/LogoInail_footer.svg\"\n                                                          alt=\"INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro\"> </span></div>\n          <div id=\"contatti-wrapper\" class=\"row col-xs-12 col-md-9\">\n            <div id=\"contatti\" class=\"col-xs-12 col-sm-6\"><h3>Recapiti e contatti</h3>\n              <ul>\n                <li><p class=\"text-white\"><strong>Contact center</strong> <br> <span>(+39) 06.6001</span> <br> <span>Dal lunedì al venerdì dalle 9.00 alle 18.00</span></p></li>\n              </ul>\n            </div>\n            <div>\n              <div class=\"row no-gutters\">\n                <div class=\"col-md-6 col-xs-12 noPadding\">\n                  <ul class=\"list-unstyled\"></ul>\n                </div>\n                <div class=\"col-md-4 col-xs-12 noPadding\" id=\"accesso-rapido\"><h3>Accesso rapido</h3>\n                  <ul class=\"list-unstyled\">\n                    <li><a href=\"/portale/it/supporto.html\" title=\"Supporto\">Supporto</a></li>\n                    <li><a href=\"/portale/it/supporto/contatti.html\" title=\"Contatti\">Contatti</a></li>\n                    <li><a href=\"/portale/it/footer/accessibilita.html\" title=\"Dichiarazione di accessibilità\"> Dichiarazione di accessibilità </a></li>\n                    <li class=\"last\"><a href=\"http://pagopa.inail.it/\" title=\"Supporto\">PagoPA</a></li>\n                  </ul>\n                </div>\n              </div>\n            </div>\n          </div>\n        </nav>\n        <p class=\"hidden\"><a href=\"#navinterna\" title=\"torna alla navigazione interna alla pagina\">Torna alla navigazione interna</a></p></footer>\n      <div id=\"subfooter\"></div>\n      <div class=\"copyrightFooter\">\n        <div class=\"col-lg-8\"> © 2018 INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro - P. IVA 00968951004</div>\n        <div class=\"col-lg-4 text-right\">\n          <ul class=\"list-inline mb-0 py-2\">\n            <li><a href=\"/portale/it/amministrazione-trasparente/altri-contenuti/dati-ulteriori/privacy.html\" class=\"text-grey-1\" title=\"Privacy e Cookie\">Privacy e\n              Cookie</a>\n            </li>\n          </ul>\n        </div>\n      </div>\n      <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/custom/analytics.js\"></script>\n      <script type=\"text/javascript\" src=\"https://cdn.inailcloud.it/assets/inail/static/js/feedRSS.js\"></script>\n    </div>\n  </ng-container>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-footer]<br>\n  <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChange,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, StringChange} from \"../../base.component\";\nimport {isListNotEmptyOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface SelectOption {\n\n  /**\n   * Label dell'opzione nella select\n   */\n  label: string;\n\n  /**\n   * Valore dell'opzione nella select\n   */\n  value: string;\n\n  /**\n   * Se true l'opzione e' disabilitata\n   */\n  disabled?: boolean;\n}\n\ninterface SelectOptionsChange extends SimpleChange {\n\n  currentValue: SelectOption[];\n  previousValue: SelectOption[];\n}\n\ninterface SelectChanges extends FormElementComponentChanges {\n\n  value: StringChange;\n  blankOption: BooleanChange;\n  blankOptionText: StringChange;\n  blankOptionDisabled: BooleanChange;\n  sort: StringChange;\n  options: SelectOptionsChange;\n}\n\n@Component({\n  selector: 'inail-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectComponent),\n      multi: true\n    }\n  ]\n})\nexport class SelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl')\n  formControlElement: ElementRef<HTMLSelectElement>;\n\n  selectedValue: string = '';\n\n  @Input()\n  options: SelectOption[] = [];\n  @Input()\n  blankOption: boolean = getConfigValue(this.libConfig?.selectComponent?.blankOption, true);\n  @Input()\n  blankOptionText: string = getConfigValue(this.libConfig?.selectComponent?.blankOptionText, '- seleziona opzione -');\n  @Input()\n  blankOptionDisabled: boolean = getConfigValue(this.libConfig?.selectComponent?.blankOptionDisabled, false);\n  @Input()\n  sort: 'asc' | 'desc' = getConfigValue(this.libConfig?.selectComponent?.sort, undefined);\n  @Output()\n  select: EventEmitter<SelectOption> = new EventEmitter<SelectOption>();\n  @Output()\n  valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-select]`;\n    super.overrideConfig(libConfig?.selectComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: SelectChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n      let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n      if (direction != 0 && this.options != undefined) {\n\n        this.options.sort((a: SelectOption, b: SelectOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n      }\n    }\n\n    // if(changes?.options?.currentValue && !changes?.options?.firstChange) {\n    //\n    //   this.emitSelectedOption();\n    // }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`)\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      )\n    }\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return this.selectedValue;\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.selectedValue != value) {\n\n      setTimeout(() => {\n\n        this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n        this.selectedValue = value || '';\n        this.cdr.detectChanges();\n\n        this.emitDebug(`valueChange.emit(${this.selectedValue})`);\n        this.valueChange.emit(this.selectedValue);\n        this.emitSelectedOption();\n\n        if (this.cleanErrorOnChange) {\n\n          this.cleanError();\n        }\n\n        if (this.onChange) {\n\n          this.onChange(this.selectedValue);\n        }\n      });\n    }\n  }\n\n  emitSelectedOption() {\n\n    this.emitDebug(`emitSelectedOption`);\n    this.emitDebug(`selectedValue: ${this.selectedValue}`);\n\n    // console.warn('options', this.options)\n\n    let optionToEmit: SelectOption;\n\n    if (this.options) {\n\n      optionToEmit = this.options.find(opt => opt?.value === this.selectedValue);\n    }\n\n    if (!optionToEmit && this.blankOption && this.selectedValue === '') {\n\n      optionToEmit = {value: '', label: this.blankOptionText};\n    }\n\n    if (optionToEmit) {\n      this.emitDebug(`emit option:`);\n      this.emitDebug(optionToEmit);\n      this.select.emit(optionToEmit);\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @param blankOption\n */\nexport const isValidSelectValue = (opzioniValide: SelectOption[], opzioneScelta: string, blankOption?: boolean): boolean =>\n  (blankOption && (!opzioneScelta || opzioneScelta.length == 0))\n  || (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n","<div *ngIf=\"viewInit\"\n     class=\"form-group {{getResponsiveClass()}} {{class}} noPaddingLeft inail-select\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <label [attr.for]=\"id\"\n         [attr.title]=\"labelTitle\"\n         [attr.aria-labelledby]=\"getAriaLabelledBy()\"\n         class=\"label-select col-xs-12 noPadding {{labelClass}}\">\n    <span *ngIf=\"label\"\n          [ngClass]=\"{'sr-only': hiddenLabel}\"\n          [innerHTML]=\"getLabel()\">\n    </span>\n    <span *ngIf=\"showPopover()\"\n          [style.padding-left.px]=\"5\">\n      <inail-popover [iconClass]=\"popoverButtonIcon\"\n                     [buttonTitle]=\"popoverButtonTitle\"\n                     [header]=\"popoverHeader\"\n                     [content]=\"popoverContent\">\n      </inail-popover>\n    </span>\n    <select #formControl\n            class=\"form-control {{inputClass}}\"\n            [attr.id]=\"id\"\n            [attr.title]=\"title\"\n            [attr.name]=\"name\"\n            [disabled]=\"disabled\"\n            [attr.aria-required]=\"required === true ? true : undefined\"\n            [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n            [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n            (blur)=\"onBlur()\"\n            (keyup.enter)=\"enterUp.emit()\"\n            [(ngModel)]='value'>\n      <option *ngIf=\"blankOption\"\n              value=\"\"\n              [disabled]=\"blankOptionDisabled\"\n              [innerHTML]=\"this.blankOptionText\">\n      </option>\n      <ng-container *ngIf=\"options\">\n        <option *ngFor=\"let option of options\"\n                [ngValue]=\"option?.value\"\n                [disabled]=\"option?.disabled\"\n                [innerHTML]=\"option?.label\">\n        </option>\n      </ng-container>\n    </select>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\"\n          aria-hidden=\"false\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\"\n       [ngClass]=\"{'desc-margin-top': showError()}\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n  <debug-pre *ngIf=\"showState\">\n    <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n    <state-propertie [label]=\"'label'\" [propertie]=\"label\"></state-propertie>\n    <state-propertie [label]=\"'selectedValue'\" [propertie]=\"selectedValue\"></state-propertie>\n    <state-propertie [label]=\"'blankOption'\" [propertie]=\"blankOption\"></state-propertie>\n    <state-propertie [label]=\"'blankOptionText'\" [propertie]=\"blankOptionText\"></state-propertie>\n    <state-propertie [label]=\"'sort'\" [propertie]=\"sort\"></state-propertie>\n    <!--    TODO -->\n    <inail-form-element-state-properties [formElement]=\"this\"></inail-form-element-state-properties>\n  </debug-pre>\n</div>\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport {CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {finalize, first} from 'rxjs/operators';\nimport {AGWRequest, AgwRestService, ChecksessionResponse, HFResponse} from '../../../../services/agw-rest.service';\nimport {lastValueFrom, Observable} from 'rxjs';\nimport {isBlankOrNull} from '../../../../utils/common.operators';\nimport {DynamicLayoutElementComponent} from \"../dynamic-layout-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n/**\n * Componente per la visualizzazione della navigazione principale.\n *\n * E' possibile indicare al componente di recuperare il frammento html da remoto, passare un frammento html al componente o dire\n * al componente di utilizzare il frammento html di default.\n *\n * Il recupero automatico puo' essere abilitato valorizzando a true la proprieta' di input 'recuperoAutomaticoHtml'.\n *\n * In caso di recupero automatico il frammento html verra' recuperato contattando i servizi 'HeaderFooter-MSPublicVersion'\n * e 'HeaderFooter-MSPrivateVersion' esposti su AGW oppure, se specificato, recuperato all'indirizzo html fornito valorizzando la proprieta'\n * di input 'url'.\n * In caso di recupero da AGW, prima del recupero del frammento html, verra' contattato il servizio 'checksession'\n * esposto su AGW per determinare quale dei due servizi contattare nello specifico.\n * In caso di utente autenticato verra' contattato il servizio 'HeaderFooter-MSPrivateVersion',\n * altrimenti verra' contattato il servizio 'HeaderFooter-MSPublicVersion'.\n * Se il recupero automatico non va a buon fine verra' visualizzato l'html di default.\n *\n * In caso di recupero non automatico il frammento html dovra' essere fornito in input al componente valorizzando\n * la proprieta' html oppure inserito nel content del componente.\n *\n * In caso di recupero non automatico e' possibile forzare l'utilizzo del frammento html di default valorizzando a true\n * la proprieta' di input 'useDefault'.\n * In questo caso e' possibile indicare al componente se visualizzare il frammento html inerente l'utente autenticato oppure quello inerente\n * l'utente non autenticato attraverso la proprieta' di input 'isAuth'.\n */\n@Component({\n  selector: 'inail-navigazione-principale',\n  templateUrl: './navigazione-principale.component.html',\n  styleUrls: ['./navigazione-principale.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NavigazionePrincipaleComponent extends DynamicLayoutElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  /**\n   * Indica se l'utente e' autenticato oppure no.\n   * La proprieta' verra' presa in considerazione solamente se si sta indicando al componente di utilizzare il frammento html di default.\n   * Se 'true' visualizzera' il frammento html inerente l'utente autenticato, altrimenti quello inerente l'utente non autenticato.\n   */\n  @Input()\n  isAuth: boolean;\n\n  constructor(private sanitizer: DomSanitizer,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig,\n              private http: HttpClient,\n              private agw: AgwRestService) {\n\n    super(sanitizer, cdr, http, libConfig);\n    this.logPrefix = '[inail-navigazione-principale]';\n    this.detach();\n  }\n\n  async recuperaDaAGW() {\n\n    this.emitDebug(`Recupero html da AGW`);\n\n    let request: AGWRequest = {clientId: this.clientId, agwEndPoint: this.apiGatewayUrl};\n\n    try {\n\n      let response: ChecksessionResponse = await lastValueFrom(this.agw.checksession(request));\n\n      this.isAuth = response?.result === true;\n\n      let obs: Observable<HFResponse> = this.isAuth\n        ? this.agw.getPrivateHeaderRW(request)\n        : this.agw.getPublicHeaderRW(request);\n\n      obs.pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug(`Inizializzazione completata!`);\n          this.inizializzazioneTerminata = true;\n          this.cdr.detectChanges();\n        })\n      )\n        .subscribe(\n          {\n            next: (response: HFResponse) => {\n\n              if (isBlankOrNull(response?.html)) {\n\n                this.emitWarn(`Frammento html non ricevuto! Visualizzazione html di default`);\n\n              } else {\n\n                this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(response?.html);\n                this.emitDebug(`html recuperato!`);\n              }\n            },\n            error: (err) => {\n              this.innerHtml = undefined;\n              this.emitError(`Errore nel recupero del frammento html`);\n              this.emitError(err);\n              this.emitWarn(`Visualizzazione html di default`);\n            }\n          }\n        );\n\n    } catch (err) {\n      this.innerHtml = undefined;\n      this.isAuth = false;\n      this.inizializzazioneTerminata = true;\n      this.cdr.detectChanges();\n      this.emitError(`Errore nel recupero del frammento html`);\n      this.emitError(err);\n      this.emitWarn(`Visualizzazione html di default`);\n    }\n  }\n}\n","<ng-container *ngIf=\"inizializzazioneTerminata\">\n  <ng-container *ngIf=\"visualizzaContentEsterno()\">\n    <ng-content></ng-content>\n  </ng-container>\n  <ng-container *ngIf=\"!visualizzaContentEsterno()\">\n    <div *ngIf=\"!this.visualizzaFrammentoDiDefault() && this.innerHtml != undefined\"\n         [innerHtml]=\"this.innerHtml\">\n    </div>\n    <ng-container *ngIf=\"this.visualizzaFrammentoDiDefault()\">\n      <ng-container *ngIf=\"!this.isAuth\">\n        <nav class=\"navbar navbar-default\">\n          <div class=\"navbar-header\">\n            <p class=\"navbar-toggle collapsed\"\n               data-toggle=\"collapse\"\n               data-target=\"#menuprincipale\">\n              <span class=\"sr-only\">Menu</span>\n            </p>\n          </div>\n          <div class=\"navbar-collapse collapse\" id=\"menuprincipale\">\n            <form method=\"get\" enctype=\"application/x-www-form-urlencoded\"\n                  action='/cs/internet/risultati_ricerca.html'\n                  id=\"searchForm\"\n                  name=\"searchForm\">\n              <div class=\"navbar-form navbar-left searchsite\" role=\"search\" id=\"formRicerca\"><h2 class=\"hidden\">Cerca nel sito</h2>\n                <p class=\"form-group\"><label class=\"hidden\" for=\"textWrite\">Parametro di ricerca</label>\n                  <input type=\"text\" id=\"textWrite\" name=\"textWrite\" class=\"form-control\"\n                         placeholder=\"Cerca nel portale\"\n                         title=\"inserisci il parametro da cercare su tutto il sito\">\n                  <input type=\"hidden\"\n                         id=\"textToFind\"\n                         name=\"textToFind\"\n                         value=\"\">\n                  <button type=\"submit\" class=\"btn btn-default\">Cerca</button>\n                </p>\n                <p class=\"hidden\"><a href=\"#navinterna\" title=\"torna alla navigazione interna alla pagina\">Torna alla navigazione interna</a></p>\n              </div>\n            </form>\n            <script type=\"text/javascript\"> $(\"body\").on(\"submit\", \"#searchForm\", function () {\n              var inputValue = $(\"#textWrite\").val();\n              $(\"#textWrite\").attr('disabled', 'disabled');\n              inputValue = inputValue.replace(/\\&/g, '&amp;');\n              inputValue = inputValue.replace(/\\\"/g, '&quot;');\n              inputValue = inputValue.replace(/\\</g, '&lt;');\n              inputValue = inputValue.replace(/\\>/g, \"&gt;\");\n              inputValue = inputValue.replace(/\\'/g, \"&#39;\");\n              inputValue = inputValue.replace(/\\\\/g, \"\");\n              $(\"#textToFind\").val(inputValue);\n            });\n            $(window).ready(function () {\n              $(\"#textWrite\").autocomplete({\n                source: function (request, response) {\n                  $.ajax({\n                    url: '/rest-public-enterprisesearch-gw/SuggestionService',\n                    dataType: \"jsonp\",\n                    jsonp: \"callback\",\n                    jsonpCallback: 'jsonpCallback',\n                    contentType: \"application/json\",\n                    data: {textToFind: request.term, searchScope: 'internet'},\n                    success: function (data) {\n                      response(data.slice(0, 10));\n                    },\n                    error: function () {\n                      response([]);\n                    }\n                  });\n                }, minLength: 1, select: function (event, ui) {\n                  $(event.target).val(ui.item.value);\n                  $(\"form[name='searchForm']\").submit();\n                }\n              });\n            }); </script>\n            <h2 class=\"hidden\">Menu di navigazione principale</h2>\n            <ul id=\"navigazioneprincipale\" role=\"menu\" class=\"nav navbar-nav\">\n              <li class=\"dropdown\"><a href=\"/cs/internet/istituto.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Istituto <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Istituto</h3>\n                    <p> Presentazione dell’Ente, della sua organizzazione amministrativa e territoriale, delle relazioni con altri enti e con organi e\n                      organismi internazionali. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/istituto.html';\">vai alla sezione</button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/istituto.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/istituto/chi-siamo.html\">Chi siamo</a></li>\n                    <li><a href=\"/cs/internet/istituto/struttura-organizzativa.html\">Struttura organizzativa</a></li>\n                    <li><a href=\"/cs/internet/istituto/territorio.html\">Territorio</a></li>\n                    <li><a href=\"/cs/internet/istituto/amministrazione-trasparente.html\">Amministrazione trasparente</a></li>\n                    <li><a href=\"/cs/internet/istituto/patrimonio-immobiliare.html\">Patrimonio immobiliare</a></li>\n                    <li><a href=\"/cs/internet/istituto/progetti.html\">Progetti</a></li>\n                    <li><a href=\"/cs/internet/istituto/relazioni-internazionali.html\">Relazioni internazionali</a></li>\n                    <li><a href=\"/cs/internet/istituto/organismo-notificato-0100.html\">Organismo notificato 0100</a></li>\n                    <li><a href=\"/cs/internet/istituto/focal-point-italia.html\">Focal Point Italia</a></li>\n                    <li><a href=\"/cs/internet/istituto/concorso-europeo-buone-pratiche.html\">Concorso europeo buone pratiche</a></li>\n                    <li><a href=\"/cs/internet/istituto/innovazione-digitale.html\">Innovazione digitale</a></li>\n                    <li><a href=\"/cs/internet/istituto/programma-operativo-nazionale-2014-2020.html\">Programma operativo nazionale 2014-2020</a></li>\n                    <li><a href=\"/cs/internet/istituto/contrasto-discriminazioni-e-benessere-lavorativo.html\">Contrasto discriminazioni e benessere\n                      lavorativo</a></li>\n                    <li><a href=\"/cs/internet/istituto/provider-crediti-formativi-ecm.html\">Provider crediti formativi Ecm</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/attivita.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Attività <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Attività</h3>\n                    <p> Principali aree di azione volte a ridurre il fenomeno infortunistico, assicurare dai rischi e garantire la tutela dei\n                      lavoratori. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/attivita.html';\">vai alla sezione</button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/attivita.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/attivita/prevenzione-e-sicurezza.html\">Prevenzione e sicurezza</a></li>\n                    <li><a href=\"/cs/internet/attivita/assicurazione.html\">Assicurazione</a></li>\n                    <li><a href=\"/cs/internet/attivita/prestazioni.html\">Prestazioni</a></li>\n                    <li><a href=\"/cs/internet/attivita/ricerca-scientifica.html\">Ricerca Scientifica</a></li>\n                    <li><a href=\"/cs/internet/attivita/formazione.html\">Formazione</a></li>\n                    <li><a href=\"/cs/internet/attivita/dati-e-statistiche.html\">Dati e statistiche</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/atti-e-documenti.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Atti e\n                Documenti <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Atti e Documenti</h3>\n                    <p> Documentazione prodotta dagli Organi dell’Inail, protocolli d’intesa, convenzioni e accordi con enti e istituzioni, istruzioni\n                      operative e modulistica. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/atti-e-documenti.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/atti-e-documenti.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/moduli-e-modelli.html\">Moduli e Modelli</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/note-e-provvedimenti-redirect.html\">Note e Provvedimenti redirect</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/note-e-provvedimenti.html\">Note e Provvedimenti</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/protocolli-e-accordi.html\">Protocolli e accordi</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/istruzioni-operative.html\">Istruzioni operative</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/comunicazione.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\">\n                Comunicazione\n                <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Comunicazione</h3>\n                    <p> Comunicazione Inail </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/comunicazione.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/comunicazione.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/covid-19-prodotti-informativi.html\">Covid-19: prodotti informativi</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/avvisi-e-scadenze.html\">Avvisi e scadenze</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/news-ed-eventi.html\">News ed eventi</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/sala-stampa.html\">Sala Stampa</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/campagne.html\">Campagne</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/pubblicazioni.html\">Pubblicazioni</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/newsletter.html\">Newsletter</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/multimedia.html\">Multimedia</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/social.html\">Social</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/servizi-per-te.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Servizi Per\n                Te <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Servizi Per Te</h3>\n                    <p> Strumenti e servizi per lavoratori e aziende </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/servizi-per-te.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/servizi-per-te.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/lavoratore.html\">Lavoratore</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/datore-di-lavoro.html\">Datore di Lavoro</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/consulente.html\">Consulente</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/caf-e-patronati.html\">CAF e patronati</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/operatori-della-sanita.html\">Operatori della sanità</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/altri-utenti.html\">Altri Utenti</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a\n                href=\"/cs/Satellite?c=Page&amp;cid=2443099180834&amp;d=Touch&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout\"\n                class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\"> Supporto <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Supporto</h3>\n                    <p> Strumenti e servizi per lavoratori e aziende </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\"\n                              onclick=\"location.href='/?SSURIapptype=ContentServer&amp;d=Touch&amp;SSURIcontainer=Default&amp;c=Page&amp;SSURIsession=false&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout&amp;cid=2443099180834&amp;SSURIsscontext=Satellite+Server#satellitefragment';\">\n                        vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a\n                      href=\"/cs/Satellite?c=Page&amp;cid=2443099180834&amp;d=Touch&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout\">Vai alla\n                      sezione</a></li>\n                    <li><a href=\"/cs/internet/supporto/faq-sn.html\">Faq</a></li>\n                    <li><a href=\"/cs/internet/supporto/guide-online.html\">Guide online</a></li>\n                    <li><a href=\"/cs/internet/supporto/inail-risponde.html\">Inail risponde</a></li>\n                    <li><a href=\"/cs/internet/supporto/agenda-appuntamenti.html\">Agenda appuntamenti</a></li>\n                    <li><a href=\"/cs/internet/supporto/sedi.html\">Sedi</a></li>\n                  </ul>\n                </div>\n              </li>\n            </ul>\n            <ul role=\"menu\" class=\"nav navbar-nav navbar-right\">\n              <li><a href=\"/cs/internet/accedi-ai-servizi-online.html\" title=\"Accedi ai servizi online\"> <span>Accedi ai </span>servizi online </a>\n              </li>\n            </ul>\n          </div>\n        </nav>\n      </ng-container>\n      <ng-container *ngIf=\"this.isAuth\">\n        <nav class=\"navbar navbar-default\">\n          <div class=\"navbar-header\"><p class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#menuprincipale\"><span class=\"sr-only\">Menu</span>\n          </p></div>\n          <div class=\"navbar-collapse collapse\" id=\"menuprincipale\">\n            <form method=\"get\" enctype=\"application/x-www-form-urlencoded\" action='/cs/internet/risultati_ricerca.html' id=\"searchForm\"\n                  name=\"searchForm\">\n              <div class=\"navbar-form navbar-left searchsite\" role=\"search\" id=\"formRicerca\"><h2 class=\"hidden\">Cerca nel sito</h2>\n                <p class=\"form-group\"><label class=\"hidden\" for=\"textWrite\">Parametro di ricerca</label> <input type=\"text\" id=\"textWrite\"\n                                                                                                                name=\"textWrite\" class=\"form-control\"\n                                                                                                                placeholder=\"Cerca nel portale\"\n                                                                                                                title=\"inserisci il parametro da cercare su tutto il sito\">\n                  <input type=\"hidden\"\n                         id=\"textToFind\"\n                         name=\"textToFind\"\n                         value=\"\">\n                  <button type=\"submit\" class=\"btn btn-default\">Cerca</button>\n                </p>\n                <p class=\"hidden\"><a href=\"#navinterna\" title=\"torna alla navigazione interna alla pagina\">Torna alla navigazione interna</a></p>\n              </div>\n            </form>\n            <script type=\"text/javascript\"> $(\"body\").on(\"submit\", \"#searchForm\", function () {\n              var inputValue = $(\"#textWrite\").val();\n              $(\"#textWrite\").attr('disabled', 'disabled');\n              inputValue = inputValue.replace(/\\&/g, '&amp;');\n              inputValue = inputValue.replace(/\\\"/g, '&quot;');\n              inputValue = inputValue.replace(/\\</g, '&lt;');\n              inputValue = inputValue.replace(/\\>/g, \"&gt;\");\n              inputValue = inputValue.replace(/\\'/g, \"&#39;\");\n              inputValue = inputValue.replace(/\\\\/g, \"\");\n              $(\"#textToFind\").val(inputValue);\n            });\n            $(window).ready(function () {\n              $(\"#textWrite\").autocomplete({\n                source: function (request, response) {\n                  $.ajax({\n                    url: '/rest-public-enterprisesearch-gw/SuggestionService',\n                    dataType: \"jsonp\",\n                    jsonp: \"callback\",\n                    jsonpCallback: 'jsonpCallback',\n                    contentType: \"application/json\",\n                    data: {textToFind: request.term, searchScope: 'internet'},\n                    success: function (data) {\n                      response(data.slice(0, 10));\n                    },\n                    error: function () {\n                      response([]);\n                    }\n                  });\n                }, minLength: 1, select: function (event, ui) {\n                  $(event.target).val(ui.item.value);\n                  $(\"form[name='searchForm']\").submit();\n                }\n              });\n            }); </script>\n            <h2 class=\"hidden\">Menu di navigazione principale</h2>\n            <ul id=\"navigazioneprincipale\" role=\"menu\" class=\"nav navbar-nav\">\n              <li class=\"dropdown\"><a href=\"/cs/internet/istituto.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Istituto <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Istituto</h3>\n                    <p> Presentazione dell’Ente, della sua organizzazione amministrativa e territoriale, delle relazioni con altri enti e con organi e\n                      organismi internazionali. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/istituto.html';\">vai alla sezione</button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/istituto.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/istituto/chi-siamo.html\">Chi siamo</a></li>\n                    <li><a href=\"/cs/internet/istituto/struttura-organizzativa.html\">Struttura organizzativa</a></li>\n                    <li><a href=\"/cs/internet/istituto/territorio.html\">Territorio</a></li>\n                    <li><a href=\"/cs/internet/istituto/amministrazione-trasparente.html\">Amministrazione trasparente</a></li>\n                    <li><a href=\"/cs/internet/istituto/patrimonio-immobiliare.html\">Patrimonio immobiliare</a></li>\n                    <li><a href=\"/cs/internet/istituto/progetti.html\">Progetti</a></li>\n                    <li><a href=\"/cs/internet/istituto/relazioni-internazionali.html\">Relazioni internazionali</a></li>\n                    <li><a href=\"/cs/internet/istituto/organismo-notificato-0100.html\">Organismo notificato 0100</a></li>\n                    <li><a href=\"/cs/internet/istituto/focal-point-italia.html\">Focal Point Italia</a></li>\n                    <li><a href=\"/cs/internet/istituto/concorso-europeo-buone-pratiche.html\">Concorso europeo buone pratiche</a></li>\n                    <li><a href=\"/cs/internet/istituto/innovazione-digitale.html\">Innovazione digitale</a></li>\n                    <li><a href=\"/cs/internet/istituto/programma-operativo-nazionale-2014-2020.html\">Programma operativo nazionale 2014-2020</a></li>\n                    <li><a href=\"/cs/internet/istituto/contrasto-discriminazioni-e-benessere-lavorativo.html\">Contrasto discriminazioni e benessere\n                      lavorativo</a></li>\n                    <li><a href=\"/cs/internet/istituto/provider-crediti-formativi-ecm.html\">Provider crediti formativi Ecm</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/attivita.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Attività <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Attività</h3>\n                    <p> Principali aree di azione volte a ridurre il fenomeno infortunistico, assicurare dai rischi e garantire la tutela dei\n                      lavoratori. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/attivita.html';\">vai alla sezione</button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/attivita.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/attivita/prevenzione-e-sicurezza.html\">Prevenzione e sicurezza</a></li>\n                    <li><a href=\"/cs/internet/attivita/assicurazione.html\">Assicurazione</a></li>\n                    <li><a href=\"/cs/internet/attivita/prestazioni.html\">Prestazioni</a></li>\n                    <li><a href=\"/cs/internet/attivita/ricerca-scientifica.html\">Ricerca Scientifica</a></li>\n                    <li><a href=\"/cs/internet/attivita/formazione.html\">Formazione</a></li>\n                    <li><a href=\"/cs/internet/attivita/dati-e-statistiche.html\">Dati e statistiche</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/atti-e-documenti.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Atti e\n                Documenti <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Atti e Documenti</h3>\n                    <p> Documentazione prodotta dagli Organi dell’Inail, protocolli d’intesa, convenzioni e accordi con enti e istituzioni, istruzioni\n                      operative e modulistica. </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/atti-e-documenti.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/atti-e-documenti.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/moduli-e-modelli.html\">Moduli e Modelli</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/note-e-provvedimenti-redirect.html\">Note e Provvedimenti redirect</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/note-e-provvedimenti.html\">Note e Provvedimenti</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/protocolli-e-accordi.html\">Protocolli e accordi</a></li>\n                    <li><a href=\"/cs/internet/atti-e-documenti/istruzioni-operative.html\">Istruzioni operative</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/comunicazione.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Comunicazione\n                <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Comunicazione</h3>\n                    <p> Comunicazione Inail </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/comunicazione.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/comunicazione.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/covid-19-prodotti-informativi.html\">Covid-19: prodotti informativi</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/avvisi-e-scadenze.html\">Avvisi e scadenze</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/news-ed-eventi.html\">News ed eventi</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/sala-stampa.html\">Sala Stampa</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/campagne.html\">Campagne</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/pubblicazioni.html\">Pubblicazioni</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/newsletter.html\">Newsletter</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/multimedia.html\">Multimedia</a></li>\n                    <li><a href=\"/cs/internet/comunicazione/social.html\">Social</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a href=\"/cs/internet/servizi-per-te.html\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\"\n                                      aria-expanded=\"false\"> Servizi Per\n                Te <span class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Servizi Per Te</h3>\n                    <p> Strumenti e servizi per lavoratori e aziende </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\" onclick=\"location.href='/cs/internet/servizi-per-te.html';\">vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a href=\"/cs/internet/servizi-per-te.html\">Vai alla sezione</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/lavoratore.html\">Lavoratore</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/datore-di-lavoro.html\">Datore di Lavoro</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/consulente.html\">Consulente</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/caf-e-patronati.html\">CAF e patronati</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/operatori-della-sanita.html\">Operatori della sanità</a></li>\n                    <li><a href=\"/cs/internet/servizi-per-te/altri-utenti.html\">Altri Utenti</a></li>\n                  </ul>\n                </div>\n              </li>\n              <li class=\"dropdown\"><a\n                href=\"/cs/Satellite?c=Page&amp;cid=2443099180834&amp;d=Touch&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout\"\n                class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\"> Supporto <span\n                class=\"sr-only\">(selezionato)</span> </a>\n                <div class=\"dropdown-menu\">\n                  <div class=\"visible-sm-block visible-md-block visible-lg-block\"><h3>Supporto</h3>\n                    <p> Strumenti e servizi per lavoratori e aziende </p>\n                    <p>\n                      <button type=\"submit\" class=\"btn btn-default\"\n                              onclick=\"location.href='/?SSURIapptype=ContentServer&amp;d=Touch&amp;SSURIcontainer=Default&amp;c=Page&amp;SSURIsession=false&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout&amp;cid=2443099180834&amp;SSURIsscontext=Satellite+Server#satellitefragment';\">\n                        vai alla sezione\n                      </button>\n                    </p>\n                  </div>\n                  <ul role=\"menu\">\n                    <li class=\"visible-xs-block hidden-sm hidden-md hidden-lg\"><a\n                      href=\"/cs/Satellite?c=Page&amp;cid=2443099180834&amp;d=Touch&amp;pagename=Internet%2FPage%2FredirectPage%2Flayout\">Vai alla\n                      sezione</a></li>\n                    <li><a href=\"/cs/internet/supporto/faq-sn.html\">Faq</a></li>\n                    <li><a href=\"/cs/internet/supporto/guide-online.html\">Guide online</a></li>\n                    <li><a href=\"/cs/internet/supporto/inail-risponde.html\">Inail risponde</a></li>\n                    <li><a href=\"/cs/internet/supporto/agenda-appuntamenti.html\">Agenda appuntamenti</a></li>\n                    <li><a href=\"/cs/internet/supporto/sedi.html\">Sedi</a></li>\n                  </ul>\n                </div>\n              </li>\n            </ul>\n          </div>\n          <ul role=\"menu\" class=\"nav navbar-nav nav-exit navbar-right\">\n            <li><a href=\"/cs/LogoutUser?excludedCookies=SMSESSION\" title=\"Esci\" id=\"logoutButton\">ESCI</a></li>\n          </ul>\n        </nav>\n      </ng-container>\n    </ng-container>\n  </ng-container>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-navigazione-principale]<br>\n  <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n  <state-propertie [label]=\"'logOnConsole'\" [propertie]=\"logOnConsole\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {DomSanitizer, SafeScript} from \"@angular/platform-browser\";\nimport { HttpClient } from \"@angular/common/http\";\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {finalize, first} from \"rxjs/operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst DEFAULT_URL = '/cs/internet/headersecondariointranet.html';\n\nexport interface MenuIntranetComponentChanges extends BaseComponentChanges {\n\n}\n\n/**\n * Il componente renderizza il menu intranet.\n * E' possibile passare al componente uno specifico frammento html da visualizzare o\n * indicare al componente una url da cui recuperare l'html.\n * Nal caso in cui il recupero dell'html non vada a buon fine il componente renderizza un html di default.\n * Il componente visualizzera' l'html seguendo la seguente priorita:\n * Html passato in input, recupero tramite url, html di default.\n */\n@Component({\n  selector: 'inail-menu-intranet',\n  templateUrl: './cs.internet.headersecondariointranet.html',\n  styleUrls: ['./menu-intranet.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class MenuIntranetComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n  MAX_SM: number = 755;\n\n  innerHtml: SafeScript;\n\n  /**\n   * Url da cui recuperare l'html del menu intranet.\n   * Se non specificato la navigazione principale viene recuperata dall'indirizzo relativo /cs/internet/headersecondariointranet.html\n   * del dominio (se passato) specificato tramite l'input domainUrl\n   * Nel caso in cui non sia possibile recuperare l'html viene visualizzato quello di default.\n   */\n  @Input()\n  url: string;\n\n  /**\n   * Indica il dominio applicativo.\n   * (e.g. https://collportale.inail.it)\n   * Viene utilizzato dal componente per il recupero automatico dell'html dell'header secondario\n   * e per la customizzazione degli href nell'html di default nel caso non venga passato\n   * uno specifico html o non sia stato possibile recuperare quello in remoto.\n   * Se non specificato viene utilizzato il dominio corrente.\n   */\n  @Input()\n  domainUrl: string = '';\n\n  /**\n   * Html da visualizzare\n   */\n  @Input()\n  html: string;\n\n  inizializzazioneTerminata: boolean = false;\n  menuSecondarioElencoAperto: boolean = false;\n\n  constructor(private sanitizer: DomSanitizer,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig,\n              private http: HttpClient) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-menu-intranet]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: MenuIntranetComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // Il menu intranet viene recuperato da remoto solo se non viene\n    // passato esplicitamente dall'esterno l'html da visualizzare\n    if (changes?.url?.currentValue && !changes?.html?.currentValue) {\n\n      if (changes.url.firstChange) {\n\n        this.emitDebug('Inizializzazione Menu intranet');\n      }\n\n      this.recupera();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    if (this.html) {\n\n      this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.html);\n      this.inizializzazioneTerminata = true;\n      this.cdr.detectChanges();\n\n    } else if (!this.url) {\n\n      this.emitDebug('Inizializzazione Menu intranet, Url Menu intranet non specificato');\n\n      this.url = this.domainUrl + DEFAULT_URL;\n\n      this.recupera();\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  apriOnClick() {\n\n    this.menuSecondarioElencoAperto = !this.menuSecondarioElencoAperto;\n    this.cdr.detectChanges();\n  }\n\n  recupera() {\n    this.emitDebug(\"Recupero menu intranet da: \" + this.url);\n\n    this.http.get(this.url, {responseType: 'text'})\n      .pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug('Menu intranet inizializzato!');\n          this.inizializzazioneTerminata = true;\n          this.cdr.detectChanges();\n        })\n      )\n      .subscribe(\n        {\n          next: (menu: string) => {\n\n            this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(menu);\n            this.emitDebug('Menu intranet recuperato!');\n          },\n          error: err => {\n            this.innerHtml = undefined;\n            this.emitError(\"Errore nel recupero del Menu intranet\");\n            this.emitError(err);\n            this.emitWarn(\"Visualizzazione Menu intranet di default\");\n          }\n        }\n      );\n  }\n}\n","<div class=\"inail-menu-intranet\">\n  <nav class=\"navbar col-xs-12 col-sm-7 col-md-6\">\n    <div class=\"navbar-header\">\n      <p class=\"navbar-toggle fa fa-2x fa-chevron-circle-down visible-xs pull-left\"\n         (keyup.enter)=\"apriOnClick()\"\n         (keyup.space)=\"apriOnClick()\"\n         (click)=\"apriOnClick()\"\n         tabindex=\"0\">\n        <span class=\"sr-only\">Menu</span>\n      </p>\n    </div>\n    <div id=\"menusecondarioelenco\"\n         class=\"navbar-collapse\"\n         [ngClass]=\"{'collapsed': !menuSecondarioElencoAperto}\">\n      <ul class=\"nav navbar-nav\"\n          *ngIf=\"this.innerHtml\"\n          [innerHtml]=\"this.innerHtml\">\n      </ul>\n      <ul class=\"nav navbar-nav\"\n          *ngIf=\"!this.innerHtml\">\n        <li><a href=\"{{domainUrl}}/intracs/intranet/home.html\">My&nbsp;Home</a></li>\n        <li class=\"ESCMenuInternet\"><a href=\"{{domainUrl}}/intracs/intranet/informazioni.html\">Informazioni</a></li>\n        <li><a href=\"{{domainUrl}}/intracs/intranet/strumenti.html\">Strumenti</a></li>\n        <li><a href=\"{{domainUrl}}/intracs/intranet/formazione.html\">Formazione</a></li>\n      </ul>\n    </div>\n  </nav>\n</div>\n<debug-pre *ngIf=\"showState\">[inail-menu-intranet]<br>\n  <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n  <state-propertie [label]=\"'domainUrl'\" [propertie]=\"domainUrl\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n","import {AfterViewInit, ChangeDetectorRef, Component, Inject, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport {AgwRestService} from '../../../../services/agw-rest.service';\nimport {DynamicLayoutElementComponent} from \"../dynamic-layout-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n/**\n * Componente per la visualizzazione della prima intestazione di pagina (quella contenente il logo).\n *\n * E' possibile indicare al componente di recuperare il frammento html da remoto, passare un frammento html al componente o dire\n * al componente di utilizzare il frammento html di default.\n *\n * Il recupero automatico puo' essere abilitato valorizzando a true la proprieta' di input 'recuperoAutomaticoHtml'.\n *\n * In caso di recupero automatico il frammento html verra' recuperato contattando il servizio 'HeaderFooter-MSPublicVersion'\n * esposto su AGW oppure, se specificato, recuperato all'indirizzo html fornito valorizzando la proprieta' di input 'url'.\n * Se il recupero automatico non va a buon fine verra' visualizzato l'html di default.\n *\n * In caso di recupero non automatico il frammento html dovra' essere fornito in input al componente valorizzando\n * la proprieta' html oppure inserito nel content del componente.\n *\n * In caso di recupero non automatico e' possibile forzare l'utilizzo del frammento html di default valorizzando a true\n * la proprieta' di input 'useDefault'.\n */\n@Component({\n  selector: 'inail-logo-header',\n  templateUrl: './logo-header.component.html',\n  styleUrls: ['./logo-header.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class LogoHeaderComponent extends DynamicLayoutElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  constructor(private sanitizer: DomSanitizer,\n              private cdr: ChangeDetectorRef,\n              private http: HttpClient,\n              private agw: AgwRestService,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n\n    super(sanitizer, cdr, http, libConfig);\n    this.logPrefix = '[inail-logo-header]';\n    this.detach();\n  }\n\n  ngOnInit() {\n    this.hfResponse$ = this.agw.getLogoRW({clientId: this.clientId, agwEndPoint: this.apiGatewayUrl});\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    // @ts-ignore\n    document.querySelector('inail-logo-header a')?.focus();\n  }\n}\n","<ng-container *ngIf=\"inizializzazioneTerminata\">\n  <ng-container *ngIf=\"visualizzaContentEsterno()\">\n    <ng-content></ng-content>\n  </ng-container>\n  <ng-container *ngIf=\"!visualizzaContentEsterno()\">\n    <div *ngIf=\"!this.visualizzaFrammentoDiDefault() && this.innerHtml != undefined\"\n         [innerHtml]=\"this.innerHtml\">\n    </div>\n    <div *ngIf=\"this.visualizzaFrammentoDiDefault()\">\n      <h1 class=\"nocrawl\">INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro</h1>\n      <a href='https://www.inail.it/cs/internet/home.html'\n         title=\"torna alla homepage INAIL\">\n        <img src=\"https://cdn.inailcloud.it/assets/inail/static/img/LogoInail.svg\"\n             alt=\"INAIL - Istituto Nazionale per l'Assicurazione contro gli Infortuni sul Lavoro\" class=\"img-responsive\">\n      </a>\n      <h2 id=\"navinterna\" class=\"sr-only\">Menu di navigazione interna alla pagina</h2>\n      <ul class=\"sr-only\">\n        <li><a accesskey=\"0\" href=\"#textWrite\" title=\"vai alla ricerca nel sito\">Ricerca</a> (accesskey: 0)</li>\n        <li><a accesskey=\"1\" href=\"#contenutoprincipale\" title=\"vai al contenuto di questa pagina\">Contenuto della pagina</a> (accesskey: 1)</li>\n        <li><a accesskey=\"2\" href=\"#navigazioneprincipale\" title=\"vai al men&ugrave; di navigazione principale del portale\">Navigazione principale del portale</a> (accesskey: 2)</li>\n        <li><a accesskey=\"3\" href=\"#navigazioneutente\" title=\"vai al men&ugrave; di navigazione per tipologia di utenza\">Navigazione per tipologia di utenza</a> (accesskey: 3)</li>\n        <li><a accesskey=\"4\" href=\"#menusecondario\" title=\"vai al menu utente post login\">Menu post login</a> (accesskey: 4)</li>\n        <li><a accesskey=\"5\" href=\"#navigazionealternativa\" title=\"vai al men&ugrave; di accesso rapido ai contenuti di portale\">Navigazione alternativa</a> (accesskey: 5)</li>\n        <li><a accesskey=\"6\" href=\"#menuservizio\" title=\"vai ai servizi e informazioni\">Servizi e informazioni</a> (accesskey: 6)</li>\n        <li><a accesskey=\"7\" href=\"#menusocial\" title=\"INAIL nei Social Network\">INAIL nei Social Network</a> (accesskey: 7)</li>\n        <li><a accesskey=\"l\" href=\"#menulingua\" title=\"Language version\">Language version</a> (accesskey: l)</li>\n      </ul>\n    </div>\n  </ng-container>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-logo-header]<br>\n  <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponentChanges, CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {DomSanitizer, SafeScript} from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport {\n  AGWRequest,\n  AgwRestService,\n  ChecksessionResponse,\n  DatiDipendenteResponse,\n  FotoDipendenteResponse,\n  HFResponse\n} from '../../../../services/agw-rest.service';\nimport {lastValueFrom} from 'rxjs';\nimport {isBlankOrNull, isCodiceFiscale} from '../../../../utils/common.operators';\nimport {finalize, first} from 'rxjs/operators';\nimport {DynamicLayoutElementComponent} from \"../dynamic-layout-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst URL_FOTO_UTENTE_ANONIMO = 'https://cdn.inailcloud.it/assets/inail/static/img/anonimo.jpg';\n\nexport interface HeaderSecondarioComponentChanges extends BaseComponentChanges {\n\n}\n\nexport interface HeaderSecondarioData {\n\n  /**\n   * Se true verra' visualizzata la versione intranet del header secondario,\n   * altrimenti verra' visualizzata la versione inerente i servizi online.\n   */\n  intranet?: boolean,\n\n  /**\n   * Nominativo utente da visualizzare nel header secondario.\n   */\n  nominativo?: string,\n\n  /**\n   * Immagine codificata in base64 del profilo del utente.\n   * Visualizzata solo se la proprieta' 'intranet' e' stata valorizzata a true.\n   */\n  immagineProfilo?: string,\n}\n\n/**\n * Componente per la visualizzazione del header secondario.\n * Barra verde posta al di sotto della navigazione principale con le informazioni\n * e il menu' inerenti l'utente loggato.\n *\n * E' possibile indicare al componente di recuperare il frammento html da remoto, passare un frammento html al componente o dire\n * al componente di utilizzare il frammento html di default.\n *\n * Il recupero automatico puo' essere abilitato valorizzando a true la proprieta' di input 'recuperoAutomaticoHtml'.\n *\n * In caso di recupero automatico il frammento html verra' recuperato contattando il servizio 'HeaderFooter-MSPrivateVersion'\n * esposto su AGW oppure, se specificato, recuperato all'indirizzo html fornito valorizzando la proprieta' di input 'url'.\n * Se il recupero automatico non va a buon fine verra' visualizzato l'html di default.\n * In questo caso, per completare l'header secondario, verra' contattato il servizio 'AU_Rest_Dipendente'\n * per determinare le informazioni inerenti l'utente connesso.\n *\n * In caso di recupero non automatico il frammento html dovra' essere fornito in input al componente valorizzando\n * la proprieta' html oppure inserito nel content del componente.\n *\n * In caso di recupero non automatico e' possibile forzare l'utilizzo del frammento html di default valorizzando a true\n * la proprieta' di input 'useDefault'.\n * In questo caso sara' necessario valorizzare la proprieta' di input 'data' contenente i dati dell'utente connesso.\n */\n@Component({\n  selector: 'inail-header-secondario',\n  templateUrl: './header-secondario.component.html',\n  styleUrls: ['./header-secondario.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class HeaderSecondarioComponent extends DynamicLayoutElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  autenticato: boolean;\n  utenteServiziOnline: boolean;\n  nominativoDipendente: string;\n  immagineProfilo: SafeScript;\n\n  /**\n   * Dati da visualizzare all'interno del header secondario.\n   * Vengono ignorati se e' stata valorizzata la proprieta' di input 'html'.\n   * Se valorizzato inibisce il meccanismo di recupero automatico.\n   */\n  @Input()\n  data: HeaderSecondarioData;\n\n  getImmagineProfilo = () => this.immagineProfilo ?? URL_FOTO_UTENTE_ANONIMO;\n\n  constructor(private sanitizer: DomSanitizer,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig,\n              private http: HttpClient,\n              private agw: AgwRestService) {\n\n    super(sanitizer, cdr, http, libConfig);\n    this.logPrefix = '[inail-header-secondario]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: HeaderSecondarioComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.data?.currentValue) {\n\n      this.nominativoDipendente = this.data?.nominativo;\n      this.setImmagineProfilo(this.data?.immagineProfilo);\n      this.utenteServiziOnline = this.data?.intranet !== true;\n      this.inizializzazioneTerminata = true;\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  recuperaDaUrl(url: string) {\n\n    this.emitDebug(`Recupero html da: ${url}`);\n\n    this.http.get(this.url, {responseType: 'text'})\n      .pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug(`Inizializzazione completata!`);\n          this.inizializzazioneTerminata = true;\n          this.cdr.detectChanges();\n        })\n      )\n      .subscribe(\n        {\n          next: (html: string) => {\n            this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(html);\n            this.emitDebug(`html recuperato!`);\n          },\n          error: (err) => {\n            this.innerHtml = undefined;\n            this.emitError(`Errore nel recupero del frammento html`);\n            this.emitError(err);\n            this.emitWarn(`Visualizzazione html di default`);\n            this.recuperaInfoUtente();\n          }\n        }\n      );\n  }\n\n  recuperaDaAGW() {\n\n    this.emitDebug(`Recupero html da AGW`);\n\n    this.agw.getHeaderSecondarioRW({clientId: this.clientId, agwEndPoint: this.apiGatewayUrl})\n      .pipe(\n        first(), // Effettua l'unsubscribe dopo l'emissione del primo valore\n        finalize(() => {\n          this.emitDebug(`Inizializzazione completata!`);\n          this.inizializzazioneTerminata = true;\n          this.cdr.detectChanges();\n        })\n      )\n      .subscribe(\n        {\n          next: (response: HFResponse) => {\n\n            if (isBlankOrNull(response?.html)) {\n\n              this.emitWarn(`Frammento html non ricevuto! Visualizzazione html di default`);\n\n            } else {\n\n              this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(response?.html);\n              this.emitDebug(`html recuperato!`);\n            }\n          },\n          error: (err) => {\n            this.innerHtml = undefined;\n            this.emitError(`Errore nel recupero del frammento html`);\n            this.emitError(err);\n            this.emitWarn(`Visualizzazione html di default`);\n            this.recuperaInfoUtente();\n          }\n        }\n      );\n  }\n\n  async recuperaInfoUtente() {\n\n    this.nominativoDipendente = '';\n    this.immagineProfilo = undefined;\n\n    this.emitDebug(`Recupero info utente da AGW`);\n\n    let request: AGWRequest = {clientId: this.clientId, agwEndPoint: this.apiGatewayUrl};\n\n    try {\n\n      let checksessionResponse: ChecksessionResponse = await lastValueFrom(this.agw.checksession(request));\n\n      this.autenticato = checksessionResponse?.result === true;\n\n      if (this.autenticato) {\n\n        this.utenteServiziOnline = isCodiceFiscale(checksessionResponse?.User);\n\n        if (!this.utenteServiziOnline) {\n\n          let datiDipendenteResponse: DatiDipendenteResponse = await lastValueFrom(this.agw.estraiDatiDipendente(checksessionResponse?.User, request));\n\n          this.nominativoDipendente = this.estraiNominativo(datiDipendenteResponse);\n\n          let fotoDipendenteResponse: FotoDipendenteResponse = await lastValueFrom(this.agw.estraiFotoDipendente(checksessionResponse?.User, request));\n\n          let fotoDipendente: string = this.estraiFotoDipendente(fotoDipendenteResponse);\n\n          this.setImmagineProfilo(fotoDipendente);\n        }\n      }\n\n      this.inizializzazioneTerminata = true;\n      this.cdr.detectChanges();\n\n    } catch (e) {\n\n      this.emitDebug(`Errore recupero info utente principale da AGW`);\n      this.inizializzazioneTerminata = true;\n      this.cdr.detectChanges();\n    }\n  }\n\n  estraiNominativo(response: DatiDipendenteResponse): string {\n\n    let nominativo: string;\n\n    if (response?.dipendente?.length > 0) {\n\n      nominativo = `${response.dipendente[0].nome ?? ''} ${response.dipendente[0].cognome ?? ''}`;\n    }\n\n    return nominativo ?? '';\n  }\n\n  estraiFotoDipendente(response: FotoDipendenteResponse): string {\n\n    let foto: string;\n\n    if (response.fotoDipendente?.length > 0) {\n\n      foto = response.fotoDipendente[0].foto;\n    }\n\n    return foto;\n  }\n\n  setImmagineProfilo(b64Img: string) {\n\n    if (b64Img) {\n\n      this.immagineProfilo = this.sanitizer.bypassSecurityTrustUrl(`data:image/png;base64,${b64Img}`);\n    }\n  }\n}\n","<ng-container *ngIf=\"inizializzazioneTerminata\">\n  <ng-container *ngIf=\"visualizzaContentEsterno()\">\n    <ng-content></ng-content>\n  </ng-container>\n  <ng-container *ngIf=\"!visualizzaContentEsterno()\">\n    <div *ngIf=\"!this.visualizzaFrammentoDiDefault() && this.innerHtml != undefined\"\n         [innerHtml]=\"this.innerHtml\">\n    </div>\n    <div *ngIf=\"this.visualizzaFrammentoDiDefault() && data != undefined\">\n      <ng-container *ngIf=\"!utenteServiziOnline\">\n        <div class=\"row\" id=\"menusecondario\">\n          <nav class=\"navbar navbar-utente col-xs-12 col-sm-3 col-md-4\">\n            <div class=\"utente-loggato\">\n              <a href=\"/intracs/intranet/gestione-profilo.html\"\n                 title=\"Vai al profilo dell'utente\">\n                <img class=\"visible-md visible-lg\"\n                     alt=\"Immagine del profilo dell'utente\"\n                     [src]=\"this.getImmagineProfilo()\"/>\n                <span class=\"utente-loggato-nome\">{{ nominativoDipendente | uppercase }} </span> <span\n                class=\"utente-loggato-ruolo hidden\">dipendente </span> </a></div>\n          </nav>\n          <nav class=\"navbar col-xs-12 col-sm-7 col-md-6\">\n            <div class=\"navbar-header\"><p class=\"navbar-toggle fa fa-2x fa-chevron-circle-down visible-xs pull-left\" data-toggle=\"collapse\"\n                                          data-target=\"#menusecondarioelenco\"><span\n              class=\"sr-only\">Menu </span></p></div>\n            <div class=\"collapse navbar-collapse \" id=\"menusecondarioelenco\">\n              <ul class=\"nav navbar-nav\">\n                <li><a href=\"/intracs/intranet/home.html\">My&nbsp;Home</a></li>\n                <li class=\"ESCMenuInternet\"><a href=\"/intracs/intranet/informazioni.html\">Informazioni</a></li>\n                <li><a href=\"/intracs/intranet/strumenti.html\">Strumenti</a></li>\n                <li><a href=\"/intracs/intranet/informazioni.html\">InailAgile</a></li>\n                <li><a href=\"/intracs/intranet/formazione.html\">Formazione</a></li>\n              </ul>\n            </div>\n          </nav>\n          <nav class=\"navbar pull-right\">\n            <div class=\"notifiche-utente\">\n              <a class=\"strumenti-profilo\"\n                 title=\"Vai alla sezione Cerca Contatti\"\n                 href=\"javascript:void(0)\"\n                 data-toggle=\"collapse\"\n                 data-target=\"#menucercautente\">\n              <span class=\"fa-stack\">\n                <span class=\"fa fa-user fa-stack-2x\"> </span>\n                <span class=\"fa-stack-lg\">\n                  <span class=\"fa fa-circle fa-stack-1x\"> </span>\n                  <span class=\"fa fa-search fa-stack-lg\">\n                  </span>\n                </span>\n                <span class=\"hidden\">Cerca Contatti </span>\n              </span>\n              </a>\n            </div>\n          </nav>\n        </div>\n        <div class=\"row collapse\" id=\"menucercautente\" role=\"search\">\n          <form action=\"/intracs/intranet/informazioni/contatti/cerca-persone-fp.html\"\n                method=\"get\"\n                class=\"navbar-form col-xs-12 searchsite utente\">\n            <h2 class=\"hidden\">Cerca utente</h2>\n            <p class=\"form-group\">\n              <label class=\"hidden\" for=\"testoricercautente\">Parametro di ricerca </label>\n              <input name=\"campo_unico_menu\"\n                     type=\"text\"\n                     id=\"testoricercautente\"\n                     class=\"form-control\"\n                     placeholder=\"Cerca utente\"\n                     title=\"inserisci il parametro da cercare su tutto il sito\"/>\n              <button type=\"submit\" class=\"btn btn-default\">Cerca</button>\n            </p>\n          </form>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"utenteServiziOnline\">\n        <div class=\"row servizionline\" id=\"menusecondario\">\n          <nav class=\"navbar navbar-utente col-xs-12\">\n            <div class=\"utente-loggato\">\n              <a href=\"/cs/internet/privato/visualizza-profilo.html\"\n                 title=\"Vai al profilo dell'utente\">\n                <span class=\"hidden-xs hidden-sm\">Benvenuto/a</span>\n                <span class=\"utente-loggato-nome\">{{ nominativoDipendente | uppercase }}</span>\n              </a>\n            </div>\n            <div class=\"navbar-header\">\n              <p class=\"navbar-toggle fa fa-2x fa-chevron-circle-down visible-xs pull-left\"\n                 data-toggle=\"collapse\"\n                 data-target=\"#menusecondarioelenco\"><span\n                class=\"sr-only\">Menu</span></p></div>\n            <div class=\"collapse navbar-collapse pull-right\"\n                 id=\"menusecondarioelenco\">\n              <ul class=\"nav navbar-nav\">\n                <li class=\"\" title=\"My Home\">\n                  <a href=\"/so-access-page/\">\n                    <span class=\"fa fa-home\"></span>\n                    My Home\n                  </a>\n                </li>\n              </ul>\n            </div>\n          </nav>\n        </div>\n      </ng-container>\n    </div>\n  </ng-container>\n</ng-container>\n<debug-pre *ngIf=\"showState\">[inail-header-secondario]<br>\n  <state-propertie [label]=\"'url'\" [propertie]=\"url\"></state-propertie>\n  <state-propertie [label]=\"'autenticato'\" [propertie]=\"autenticato\"></state-propertie>\n  <state-propertie [label]=\"'nominativoDipendente'\" [propertie]=\"nominativoDipendente\"></state-propertie>\n  <state-propertie [label]=\"'utenteServiziOnline'\" [propertie]=\"utenteServiziOnline\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n</debug-pre>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {Observable} from 'rxjs';\nimport {HeaderSecondarioData} from '../header-secondario/header-secondario.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n/**\n * Componente per la visualizzazione di tutto l'header applicativo.\n *\n * L'header e' composto da:\n *\n * - Prima intestazione di pagina (quella contenente il logo).\n * - Navigazione principale (Barra blu con pulsante 'Esci' o 'Accedi ai servizi online').\n * - Header secondario (barra verde con info e menu utente loggato).\n *\n * E' possibile indicare al componente di recuperare i frammenti html da remoto, passare dei frammenti html al componente o dire\n * al componente di utilizzare i frammenti html di default.\n *\n * Il recupero automatico puo' essere abilitato valorizzando a true la proprieta' di configurazione 'recuperoAutomaticoHtml'.\n *\n * In caso di recupero automatico i frammenti html verranno recuperati contattando i servizi 'HeaderFooter-MSPublicVersion'\n * e 'HeaderFooter-MSPrivateVersion' esposti su AGW oppure, se specificate, recuperati agli indirizzi forniti valorizzando le rispettive la proprieta'\n * all'interno del file di configurazione.\n *\n * In caso di recupero da AGW, prima del recupero dei frammenti html, verra' contattato il servizio 'checksession'\n * esposto su AGW per determinare quale dei due servizi contattare nello specifico.\n * In caso di utente autenticato verra' contattato il servizio 'HeaderFooter-MSPrivateVersion',\n * altrimenti verra' contattato il servizio 'HeaderFooter-MSPublicVersion'.\n *\n * Nal caso in cui il recupero dei frammenti html non vada a buon fine il componente renderizza degli html di default.\n * In questo caso, per completare l'header secondario, verra' contattato il servizio 'AU_Rest_Dipendente'\n * per determinare le informazioni inerenti l'utente connesso.\n *\n * In caso di recupero non automatico ii frammenti html dovranno essere forniti in input al componente valorizzando\n * la rispettive proprieta' html oppure inserendoli nel content del componente utilizzando gli appositi selettori.\n *\n * In caso di recupero non automatico e' possibile forzare l'utilizzo dei frammenti html di default valorizzando a true\n * la proprieta' di input 'useDefaultHtml' dell'oggetto di configurazione del componente.\n * In questo caso, per visualizzare il frammento html di default inerente l'header secondario,\n * sara' necessario valorizzare la proprieta' di input 'headerSecondarioData'.\n * Valorizzare o meno la proprieta' 'headerSecondarioData' inoltre determinera' se visualizzare il frammento html di default\n * della navigazione principale inerente l'utente autenticato o quello inerente l'utente non autenticato\n * (In caso di utente non autenticato il layout previsto per le applicazioni INAIL non mostra l'header secondario).\n */\n@Component({\n  // E' stato scelto di utilizzare come selettore il nome del tag\n  // per consentire alle regole css definite dall'INAIL di\n  // matchare con gli elementi html,\n  // cosa che non avverrebbe se venisse utilizzato un tag custom\n  // frapposto tra il tag header e quello contenitore.\n  selector: 'header[id=\"inail-header\"]',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  /**\n   * Oggetto di configurazione del componente.\n   */\n  @Input()\n  config: HeaderConfigurations;\n\n  /**\n   * Frammento html della prima intestazione di pagina (quella contenente il logo) da far visualizzare al componente.\n   * Se passato inibisce il meccanismo di recupero automatico e ignora quanto specificato\n   * nella proprieta' 'logoHeaderUrl' dell'oggetto di configurazione del componente.\n   */\n  @Input()\n  logoHeaderHtml: string;\n\n  /**\n   * Frammento html della navigazione principale da far visualizzare al componente.\n   * Se passato inibisce il meccanismo di recupero automatico e ignora quanto specificato\n   * nella proprieta' 'navigazionePrincipaleUrl' dell'oggetto di configurazione del componente.\n   */\n  @Input()\n  navigazionePrincipaleHtml: string;\n\n  /**\n   * Frammento html del header secondario da far visualizzare al componente.\n   * Se passato inibisce il meccanismo di recupero automatico e ignora quanto specificato\n   * nella proprieta' 'headerSecondarioUrl' dell'oggetto di configurazione del componente.\n   */\n  @Input()\n  headerSecondarioHtml: string;\n\n  /**\n   * Dati da visualizzare all'interno del header secondario.\n   * Vengono ignorati se e' stata valorizzata la proprieta' di input 'headerSecondarioHtml'.\n   * Se valorizzato inibisce il meccanismo di recupero automatico e ignora quanto specificato\n   * nella proprieta' 'headerSecondarioUrl' dell'oggetto di configurazione del componente.\n   * Se impostata a 'true' la proprieta' 'useDefaultHtml' dell'oggetto di configurazione del componente,\n   * la valorizzazione della proprieta' 'headerSecondarioData' determinera' se visualizzare il frammento html di default\n   * della navigazione principale inerente l'utente autenticato o quello inerente l'utente non autenticato\n   * e se visualizzare o meno il frammento html di default inerente l'header secondario.\n   */\n  @Input()\n  headerSecondarioData: HeaderSecondarioData;\n\n  /**\n   * Alla ricezione del valore effettua il ricaricamento dei frammenti html recuperati automaticamente.\n   * Il ricaricamento non viene (rispettivamente) effettuato se sono state valorizzate la proprieta' di input:\n   * 'logoHeaderHtml', 'navigazionePrincipaleHtml' e 'headerSecondarioHtml' (o 'headerSecondarioData').\n   */\n  @Input()\n  reload: Observable<void>;\n\n  inizializzazioneCompletata: boolean = false;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-header]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n\n    this.emitDebug('ngOnChanges');\n    this.emitDebug(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n    this.emitDebug('config');\n    this.emitDebug(this.config);\n\n    if (!this.config) {\n\n      this.config = {clientId: ''};\n    }\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n    }\n\n    this.inizializzazioneCompletata = true;\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n\nexport class HeaderConfigurations {\n\n  /**\n   * Identificativo dell'applicazione corrente in accordo\n   * con l'API Gateway\n   */\n  clientId?: string;\n\n  /**\n   * Url a cui contattare l'AGW per il recupero automatico dei frammenti html.\n   * Per il recupero verra' contattati i servizi 'HeaderFooter-MSPublicVersion' e 'HeaderFooter-MSPrivateVersion'.\n   * Se non specificato verra' utilizzato l'indirizzo relativo /api.\n   */\n  apiGatewayUrl?: any;\n\n  /**\n   * Url da cui recuperare il frammento html della prima intestazione di pagina (quella contenente il logo).\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPublicVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento l'html verra' visualizzato quello di default.\n   */\n  logoHeaderUrl?: string;\n\n  /**\n   * Url da cui recuperare il frammento html della navigazione principale.\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando i servizi 'HeaderFooter-MSPublicVersion'\n   * e 'HeaderFooter-MSPrivateVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento html verra' visualizzato quello di default.\n   */\n  navigazionePrincipaleUrl?: string;\n\n  /**\n   * Url da cui recuperare il frammento html del header secondario\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPrivateVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento html verra' visualizzato quello di default.\n   */\n  headerSecondarioUrl?: string;\n\n  /**\n   * Se true vengono recuperati automaticamente i frammenti html di logo, navigazione principale e header secondario.\n   * I frammenti html verranno recuperati agli indirizzi indicati tramite le proprieta' di configurazione logoHeaderUrl, navigazionePrincipaleUrl\n   * headerSecondarioUrl.\n   * Se gli indirizzi non vengono impostati i frammenti html verranno recuperati automaticamente dal componente contattando\n   * il servizio 'HeaderFooter-MSPublicVersion' esposto su AGW.\n   * Se false i frammenti html dovranno essere passati in input al componente tramite le proprieta' di input logoHeaderHtml,\n   * navigazionePrincipaleHtml e headerSecondarioHtml o inseriti nel content del componente attraverso gli appositi selettori di contenuto.\n   */\n  recuperoAutomaticoHtml?: boolean;\n\n  /**\n   * Forza il componente a utilizzare i frammenti html di default.\n   * Se impostato a 'true' inibisce i meccanismi di recupero automatico dei frammenti html\n   * e ignora quanto specificato nelle proprieta' di input 'logoHeaderHtml', 'navigazionePrincipaleHtml' e 'headerSecondarioHtml'.\n   * In questo caso, per visualizzare il frammento html di default inerente l'header secondario,\n   * sara' necessario valorizzare la proprieta' di input 'headerSecondarioData'.\n   * Valorizzare o meno la proprieta' 'headerSecondarioData' inoltre determinera' se visualizzare il frammento html di default\n   * della navigazione principale inerente l'utente autenticato o quello inerente l'utente non autenticato\n   * (In caso di utente non autenticato il layout previsto per le applicazioni INAIL non mostra l'header secondario).\n   */\n  useDefaultHtml?: boolean;\n}\n","<!-- Prima intestazione di pagina (quella contenente il logo) -->\n<inail-logo-header [clientId]=\"config?.clientId\"\n                   [apiGatewayUrl]=\"config?.apiGatewayUrl\"\n                   [html]=\"logoHeaderHtml\"\n                   [url]=\"config?.logoHeaderUrl\"\n                   [useDefault]=\"config?.useDefaultHtml\"\n                   [recuperoAutomaticoHtml]=\"config?.recuperoAutomaticoHtml\"\n                   [reload]=\"reload\"\n                   [detectChange]=\"detectChange\"\n                   [logOnConsole]=\"logOnConsole\"\n                   (log)=\"emit($event)\">\n  <ng-content select=\"[logo-header]\"></ng-content>\n</inail-logo-header>\n\n<!-- Menu di navigazione principale recuperato (Barra blu con pulsante 'Esci' o 'Accedi ai servizi online') -->\n<inail-navigazione-principale [clientId]=\"config?.clientId\"\n                              [apiGatewayUrl]=\"config?.apiGatewayUrl\"\n                              [html]=\"navigazionePrincipaleHtml\"\n                              [url]=\"config?.navigazionePrincipaleUrl\"\n                              [useDefault]=\"config?.useDefaultHtml\"\n                              [recuperoAutomaticoHtml]=\"config?.recuperoAutomaticoHtml\"\n                              [isAuth]=\"headerSecondarioData != undefined\"\n                              [reload]=\"reload\"\n                              [detectChange]=\"detectChange\"\n                              [logOnConsole]=\"logOnConsole\"\n                              (log)=\"emit($event)\">\n  <ng-content select=\"[navigazione-principale]\"></ng-content>\n</inail-navigazione-principale>\n\n<!-- Menu di navigazione utente loggato (Barra verde) -->\n<inail-header-secondario [clientId]=\"config?.clientId\"\n                         [apiGatewayUrl]=\"config?.apiGatewayUrl\"\n                         [html]=\"headerSecondarioHtml\"\n                         [data]=\"headerSecondarioData\"\n                         [url]=\"config?.headerSecondarioUrl\"\n                         [useDefault]=\"config?.useDefaultHtml\"\n                         [recuperoAutomaticoHtml]=\"config?.recuperoAutomaticoHtml\"\n                         [reload]=\"reload\"\n                         [detectChange]=\"detectChange\"\n                         [logOnConsole]=\"logOnConsole\"\n                         (log)=\"emit($event)\">\n  <ng-content select=\"[header-secondario]\"></ng-content>\n</inail-header-secondario>\n\n<debug-pre *ngIf=\"showState\">[inail-header]<br>\n  <state-propertie [label]=\"'logOnConsole'\" [propertie]=\"logOnConsole\"></state-propertie>\n  <state-propertie [label]=\"'config'\" [propertie]=\"config\"></state-propertie>\n</debug-pre>\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n@Component({\n  selector: 'inail-loader',\n  templateUrl: './loader.component.html',\n  styleUrls: ['./loader.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class LoaderComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\n\n  @Input()\n  show: boolean;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-loader]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<ng-container *ngIf=\"show\">\n  <div class=\"loader-overlay\">\n    <span class=\"fa fa-spinner fa-pulse fa-2x\"></span>\n  </div>\n</ng-container>\n","import {ChangeDetectorRef, Component, Inject, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BaseComponent} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\n// Set the effect type\nconst effect = 'slide';\n\n// Set the options for the effect type chosen\nconst options = 'direction: left';\n\n// Set the duration (default: 400 milliseconds)\nconst duration = 500;\n\n/**\n * @deprecated\n * Modo utilizzato nella versione 1 della libreria\n */\nconst toggleMenuNavigazioneSecondaria = () => {\n\n  // Questo trick serve per verificare che non sia gia in corso\n  // un effetto di sliding sul menu\n  setTimeout(() => {\n\n     // TODO\n    // @ts-ignore\n    if ($('.ui-effects-wrapper').length == 0) {\n\n      // @ts-ignore\n      jQuery('.slider-menu').toggle(effect, options, duration);\n    }\n  })\n};\n\n@Component({\n  selector: 'inail-trigger-slider-menu-button',\n  templateUrl: './trigger-slider-menu-button.component.html',\n  styleUrls: ['./trigger-slider-menu-button.component.css'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class TriggerSliderMenuButtonComponent extends BaseComponent implements OnInit {\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n\n    super(cdr, libConfig);\n    this.detach();\n  }\n\n  ngOnInit() {\n  }\n\n  open() {\n    // toggleMenuNavigazioneSecondaria();\n  }\n}\n","<button id=\"trigger-slider-menu\"\n        (click)=\"open()\"\n        class=\"pull-left\"\n        aria-label=\"Apre il men&ugrave; laterale\"\n        aria-expanded=\"false\"\n        aria-controls=\"navigazionesecondaria\">\n  <span class=\"fa fa-2x fa-outdent\"></span>\n</button>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BaseComponent, BaseComponentChanges, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst OPENED_CLASS = 'opened';\n\nexport interface NavigazioneSecondariaComponentChanges extends BaseComponentChanges {\n}\n\n@Component({\n  selector: 'inail-navigazione-secondaria',\n  templateUrl: './navigazione-secondaria.component.html',\n  styleUrls: ['./navigazione-secondaria.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NavigazioneSecondariaComponent extends BaseComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @ViewChild('navigazionesecondaria')\n  navigazionesecondaria: ElementRef<HTMLElement>;\n\n  @ViewChild('sidebarInferiore')\n  sidebarInferiore: ElementRef<HTMLElement>;\n\n  visualizzaSidebarInferiore: boolean = true;\n\n  @Input()\n  toggle: Observable<void> = new Observable<void>()\n\n  isOpened = (): boolean => this.navigazionesecondaria.nativeElement.classList.contains(OPENED_CLASS);\n\n  constructor(private cdr: ChangeDetectorRef,\n              private renderer: Renderer2,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig)\n    this.logPrefix = '[inail-navigazione-secondaria]';\n  }\n\n  ngOnChanges(changes: NavigazioneSecondariaComponentChanges): void {\n\n    super.ngOnChanges(changes);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    this.push(\n      this.toggle.subscribe(() => {\n\n        if (this.isOpened()) {\n\n          this.renderer.removeClass(this.navigazionesecondaria.nativeElement, OPENED_CLASS);\n        } else {\n\n          this.renderer.addClass(this.navigazionesecondaria.nativeElement, OPENED_CLASS);\n        }\n      })\n    );\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n    }\n  }\n\n  close() {\n\n    this.renderer.removeClass(this.navigazionesecondaria.nativeElement, OPENED_CLASS);\n  }\n\n  ngAfterViewInit(): void {\n\n    this.emitDebug(`ngAfterViewInit`);\n    this.emitDebug(`sidebar inferiore:`);\n    this.emitDebug(this.sidebarInferiore);\n\n    setTimeout(() => {\n      this.visualizzaSidebarInferiore = this.sidebarInferiore.nativeElement.childElementCount > 0;\n      this.detach();\n      this.cdr.detectChanges()\n    });\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<nav id=\"navigazionesecondaria\"\n     #navigazionesecondaria\n     class=\"col-xs-12 col-sm-4 col-lg-3 slider-menu filtro\">\n    <div class=\"box-menu-contestuale servizi-online-secondo-livello\">\n        <button id=\"close-slider-menu\"\n                (click)=\"close()\"\n                class=\"pull-right\"\n                aria-label=\"Chiude il menu laterale\"\n                aria-expanded=\"true\"\n                aria-controls=\"navigazionesecondaria\">\n            <span class=\"fa fa-close\"></span>\n        </button>\n        <section id=\"sidebar-superiore\">\n            <ng-content select=\"[sidebar-superiore]\"></ng-content>\n        </section>\n        <section id=\"sidebar-inferiore\"\n                 #sidebarInferiore\n                 *ngIf=\"visualizzaSidebarInferiore\">\n            <ng-content select=\"[sidebar-inferiore]\"></ng-content>\n        </section>\n    </div>\n</nav>\n","import {ExternalResource, ExternalScript} from \"./static-resources\";\nimport {WebKitVersion} from \"../../../../ng-inail-common.config\";\n\nconst REL_STYLESHEET = 'stylesheet';\nconst REL_ICON = 'icon';\nconst MEDIA_SCREEN = 'screen';\nconst MEDIA_PRINT = 'print';\nconst TYPE_CSS = 'text/css';\nconst TYPE_IMAGE_ICON = 'image/x-icon';\nconst TYPE_JAVASCRIPT = 'text/javascript';\n\nconst INAIL_ASSETS_CONTEXT = '/assets/inail';\n\nconst INAIL_STATIC_PATH = `${INAIL_ASSETS_CONTEXT}/static`;\nconst INAIL_STATIC_WEBKIT_PATH = `${INAIL_ASSETS_CONTEXT}/static-webkit`;\nconst INAIL_STATIC_INTRA_PATH = `${INAIL_ASSETS_CONTEXT}/static_intra`;\nconst INAIL_STATIC_JS = `${INAIL_STATIC_PATH}/js`;\n\n// V3.3.0\nconst WEBKIT_3_3 = `${INAIL_ASSETS_CONTEXT}/3.3`;\nconst WEBKIT_3_3_STATIC = `${WEBKIT_3_3}/static`;\nconst WEBKIT_3_3_STATIC_CSS = `${WEBKIT_3_3_STATIC}/css`;\nconst WEBKIT_3_3_STATIC_JS = `${WEBKIT_3_3_STATIC}/js`;\nconst WEBKIT_3_3_STATIC_WEBKIT = `${WEBKIT_3_3}/static-webkit`;\nconst WEBKIT_3_3_STATIC_WEBKIT_CSS = `${WEBKIT_3_3_STATIC_WEBKIT}/css`;\nconst WEBKIT_3_3_STATIC_WEBKIT_JS = `${WEBKIT_3_3_STATIC_WEBKIT}/js`;\n\nexport const webkitExternalResources: ExternalResource[] = [\n\n  // Favicon\n  // {href: `/img/favicon.ico`, rel: REL_ICON, type: TYPE_IMAGE_ICON, assetUrl: INAIL_STATIC_PATH},\n\n  // CSS Media screen\n  {href: `/css/bootstrap.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/foglia.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/custom.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/form.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/font-awesome.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: `${INAIL_STATIC_PATH}/font-awesome-4.3.0`},\n  {\n    href: `/js/datepicker/bootstrap-datepicker3.standalone.min.css`,\n    rel: REL_STYLESHEET,\n    type: TYPE_CSS,\n    media: MEDIA_SCREEN,\n    assetUrl: INAIL_STATIC_PATH\n  },\n  {href: `/css/home_sezione.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/servizi.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  {href: `/css/jquery-ui.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  // {href: `/css/menu_servizi_online.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n  // {href: `/css/custom-intermedio.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_PATH},\n\n  // CSS Media print\n  {href: `/css/print.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_PATH},\n  // {href: `/css/print_intranet.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_PRINT, assetUrl: INAIL_STATIC_INTRA_PATH},\n\n  // Questo CSS e' del webkit. Da specifiche non andrebbe importato,\n  // risulta pero' necessario per la corretta visualizzazione.\n  {href: `/css/custom-webkit.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH},\n\n  // CSS Webkit v3.1.0\n  {href: `/css/slick/slick.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN, assetUrl: INAIL_STATIC_WEBKIT_PATH}\n]\n\nexport const webkitExternalResources_v330: ExternalResource[] = [\n\n  // Favicon\n  // {href: `/img/favicon.ico`, rel: REL_ICON, type: TYPE_IMAGE_ICON, assetUrl: INAIL_STATIC_PATH},\n\n  // CSS Media screen\n  {href: `${WEBKIT_3_3_STATIC_CSS}/bootstrap.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_CSS}/foglia.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_CSS}/custom.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_CSS}/form.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC}/fontawesome-free-6.4.0-web/css/all.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {\n    href: `${WEBKIT_3_3_STATIC}/js/datepicker/bootstrap-datepicker3.standalone.min.css`,\n    rel: REL_STYLESHEET,\n    type: TYPE_CSS,\n    media: MEDIA_SCREEN\n  },\n  {href: `${WEBKIT_3_3_STATIC_CSS}/home_sezione.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_CSS}/servizi.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_CSS}/jquery-ui.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_WEBKIT_CSS}/custom-webkit.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_WEBKIT_CSS}/link-webkit.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {href: `${WEBKIT_3_3_STATIC_WEBKIT_CSS}/dataTables.bootstrap.min.css`, rel: REL_STYLESHEET, type: TYPE_CSS, media: MEDIA_SCREEN},\n  {\n    href: `${WEBKIT_3_3_STATIC_WEBKIT_CSS}/slick/slick.css`,\n    rel: REL_STYLESHEET,\n    type: TYPE_CSS,\n    media: MEDIA_SCREEN\n  }\n]\n\nexport const getWebkitExternalResources = (v: WebKitVersion): ExternalResource[] => {\n\n  let resources: ExternalResource[]\n\n  switch (v) {\n\n    case \"3.1.0\":\n      resources = webkitExternalResources;\n      break;\n    default:\n    case \"3.3.0\":\n      resources = webkitExternalResources_v330;\n      break;\n  }\n\n  return resources;\n}\n\nexport const getWebkitExternalScripts = (v: WebKitVersion): ExternalScript[] => {\n\n  let resources: ExternalScript[]\n\n  switch (v) {\n\n    default:\n    case \"3.3.0\":\n      resources = webkitExternalScripts_v330;\n      break;\n  }\n\n  return resources;\n}\n\nexport const webkitExternalScripts_v330: ExternalScript[] = [\n\n  {src: `${WEBKIT_3_3_STATIC_JS}/jquery.min.js`, type: TYPE_JAVASCRIPT},\n  {src: `${WEBKIT_3_3_STATIC_JS}/jquery-ui.min.js`, type: TYPE_JAVASCRIPT},\n  {src: `${WEBKIT_3_3_STATIC_JS}/bootstrap.min.js`, type: TYPE_JAVASCRIPT},\n  {src: `${INAIL_STATIC_JS}/custom-intermedio.js`, type: TYPE_JAVASCRIPT},\n  {src: `${WEBKIT_3_3_STATIC_JS}/datepicker/bootstrap-datepicker.min.js`, type: TYPE_JAVASCRIPT},\n  {src: `${WEBKIT_3_3_STATIC_JS}/datepicker/bootstrap-datepicker.it.min.js`, type: TYPE_JAVASCRIPT},\n  {src: `${WEBKIT_3_3_STATIC_WEBKIT_JS}/slick/slick.js`, type: TYPE_JAVASCRIPT},\n];\n\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {clone, uuidv4} from '../../../../utils/common.operators';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from '../../basic-ux-element.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\nimport {getConfigValue} from '../../base.component';\nimport {isFunction} from 'rxjs/internal/util/isFunction';\n\nconst COLLAPSING_DURATION = 350;\nconst AUTO_SHOW = 'auto';\n\nconst FOCUSABLE_ITEMS_SELECTOR = 'ul.inail-menu > li > a:not([tabindex=\"-1\"])';\n\nexport declare type CheckFn = () => boolean;\nexport declare type GetStringFn = () => string;\nexport declare type MenuItemShowMode = 'auto';\n\ntype CollapseMode = 'show' | 'hide' | 'toggle';\n\nexport interface MenuItem {\n\n  id?: string;\n  label: string | GetStringFn;\n  title?: string | GetStringFn;\n  ariaLabel?: string | GetStringFn;\n  link?: string | GetStringFn;\n  linkRegex?: string | GetStringFn;\n  queryParams?: {\n    [k: string]: any;\n  };\n  callback?: Function;\n  activeLinks?: string[];\n  show?: boolean | CheckFn | MenuItemShowMode;\n  show$?: Observable<boolean>;\n  collapsible?: boolean;\n  collapsed?: boolean;\n  subItems?: MenuItem[];\n  parent?: MenuItem;\n}\n\n/**\n * Deep copy dell'oggetto MenuItem\n *\n * @param item\n * @deprecated La clonazione degli item contente Observable da problemi\n */\nconst cloneItem = (item: MenuItem): MenuItem => {\n\n  let itemClone: MenuItem;\n\n  if (item) {\n\n    itemClone = clone(item);\n\n    itemClone.label = item.label;\n    itemClone.link = item.link;\n    itemClone.linkRegex = item.linkRegex;\n    itemClone.callback = item.callback;\n    itemClone.show = item.show;\n    itemClone.parent = cloneItem(item.parent);\n    itemClone.subItems = cloneItems(item.subItems);\n  }\n\n  return itemClone;\n};\n\n/**\n * Deep copy dell'oggetto MenuItem[]\n *\n * @param items\n * @deprecated La clonazione degli item contente Observable da problemi\n */\nconst cloneItems = (items: MenuItem[]): MenuItem[] => {\n\n  let itemsClone: MenuItem[];\n\n  if (items) {\n\n    itemsClone = items.map(item => cloneItem(item));\n  }\n\n  return itemsClone;\n};\n\nexport interface MenuComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-menu',\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.css'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class MenuComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  /**\n   * Elemento parent del menu.\n   * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n   */\n  @Input()\n  parent: MenuItem;\n\n  /**\n   * Elemento parent del menu.\n   * ( Questo input non deve essere passato, serve internamente per far funzionare il menu )\n   */\n  @Input()\n  innerMenu: boolean = false;\n\n  /**\n   * id dell'elemento che si vuole attivare.\n   * Se specificato fa diventare bold la voce di menu associata\n   */\n  @Input()\n  activeItem: string;\n\n  /**\n   * Emette l'elemento del menu\n   * che corrisponde all'url corrente.\n   */\n  @Input()\n  emitCurrent: Observable<void>;\n\n  /**\n   * Collassa il menu\n   * Se passato in input un id collassa lo specifico elemento.\n   */\n  @Input()\n  collapse: Observable<string | void>;\n\n  /**\n   * Espande le voci di menu di primo livello.\n   * Se specificato un id espande il ramo del menu\n   * che porta all'elemento con l'id specificato.\n   */\n  @Input()\n  show: Observable<string | void>;\n\n  /**\n   * Espande tutte le voci del menu\n   * comprese quelle dei livelli annidati\n   */\n  @Input()\n  showAll: Observable<void>; // todo testare\n\n  /**\n   * Effettua il toggle dell'elemento specificato tramite id\n   */\n  @Input()\n  toggle: Observable<string>; // todo testare\n\n  /**\n   * Elementi del menu\n   */\n  @Input()\n  items: MenuItem[];\n  originalItems: MenuItem[];\n\n  /**\n   *\n   */\n  @Input()\n  reinit: Observable<void | MenuItem[]>;\n\n  /**\n   * Se true disabilita la sovrascrittura della proprieta\n   * link negli elementi del menu\n   * quando la proprieta linkRegex matcha\n   * con l'url corrente\n   */\n  disableLinkOverwriting: boolean = getConfigValue(this.libConfig?.menuComponent?.disableLinkOverwriting, false);\n\n  /**\n   * Se true indica che le voci del menu sono collassabili.\n   * Questa impostazione viene sovrascritta se specificato diversamente\n   * negli elementi del menu\n   */\n  @Input()\n  collapsible: boolean = getConfigValue(this.libConfig?.menuComponent?.collapsible, false);\n\n  /**\n   * Indica lo stato iniziale del menu, se colassato o espanso.\n   * Questa impostazione viene sovrascritta se specificato diversamente\n   * negli elementi del menu\n   */\n  @Input()\n  collapsed: boolean = getConfigValue(this.libConfig?.menuComponent?.collapsed, undefined);\n\n  /**\n   * Se true abilita l'effetto fisarmonica\n   * sulle voci di menu espandibili.\n   */\n  @Input()\n  collapseOther: boolean = getConfigValue(this.libConfig?.menuComponent?.collapseOther, false);\n\n  /**\n   * Se true espande automaticamente il percorso\n   * verso un elemento\n   * quando questo si riferisce all'url corrente\n   */\n  @Input()\n  expandAutomatically: boolean = getConfigValue(this.libConfig?.menuComponent?.expandAutomatically, true);\n\n  /**\n   * Emette l'oggetto MenuItem associato alla voce di menu sulla quale si e' cliccato.\n   */\n  @Output()\n  itemClick: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n  /**\n   * Emette la voce di menu che corrisponde\n   * con l'url corrente\n   * dopo un evento di routing\n   */\n  @Output()\n  currentItem: EventEmitter<MenuItem> = new EventEmitter<MenuItem>();\n\n  @ViewChild('menu')\n  menu: ElementRef<HTMLElement>;\n\n  // @ViewChildren(MenuComponent)\n  // sottoMenu: QueryList<MenuComponent>;\n\n  inizializzazioneCompletata: boolean = false;\n  mostraItem: EventEmitter<string> = new EventEmitter<string>();\n\n  // Servono per l'animazione di apertura/chiusura fluida\n  menuHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n  emitMenuHeight = () => {\n\n    if (this.isCollapsible()) {\n\n      let scrollHeight = this.menu?.nativeElement?.scrollHeight;\n      let nextHeight = this.isCollapsed() ? 0 : scrollHeight;\n\n      if (nextHeight > 0) {\n\n        this.menuHeight$.next(nextHeight);\n\n      } else {\n\n        // Imposto l'height effettivo\n        // per poi impostarlo subito dopo a 0\n        // in modo da far funzionare l'animazione.\n        // Se non viene impostato un valore iniziale\n        // l'animazione CSS non funziona.\n        this.menuHeight$.next(scrollHeight);\n        setTimeout(() => this.menuHeight$.next(0), 15);\n      }\n\n      // Rimuovo height.\n      // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n      setTimeout(() => this.menuHeight$.next(undefined), COLLAPSING_DURATION);\n    }\n  };\n\n  constructor(public router: Router,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    super.overrideConfig(libConfig?.menuComponent);\n    this.logPrefix = '[inail-menu]';\n  }\n\n  ngOnChanges(changes: MenuComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // Items\n    if (changes?.items?.currentValue) {\n\n      if (!this.innerMenu) {\n\n        // this.items = cloneItems(changes?.items?.currentValue);\n        // this.originalItems = cloneItems(changes?.items?.currentValue);\n        this.originalItems = [...changes?.items?.currentValue];\n      }\n\n      this.inizializzaItems(this.items);\n      this.emitCurrentItem();\n    }\n\n    // Emit Current\n    if (changes?.emitCurrent?.currentValue) {\n\n      this.push(changes.emitCurrent.currentValue.subscribe(() => this.emitCurrentItem()));\n    }\n\n    // Collapsed\n    if (changes?.collapsed && !changes?.collapsed.isFirstChange()) {\n\n      this.emitMenuHeight();\n    }\n\n    // Collassa Elemento o Livello\n    if (changes.collapse && changes.collapse.currentValue) {\n\n      this.push(\n        changes.collapse.currentValue.subscribe((id: string) => {\n\n          id == undefined ? this.collassaMenu() : this.collassaItem(this.findItem(id, this.items));\n        })\n      );\n    }\n\n    // Espandi Elemento o Livello\n    if (changes?.show?.currentValue) {\n\n      this.push(\n        changes.show.currentValue.subscribe((id: string) => {\n\n          id == undefined ? this.espandiMenu() : this.espandiPercorso(id);\n        })\n      );\n    }\n\n    // Toggla Elemento\n    if (changes?.toggle?.currentValue) {\n\n      this.push(changes.toggle.currentValue.subscribe((id: string) => this.toggleItem(this.findItem(id, this.items))));\n    }\n\n    // // todo\n    // // Espande tutti i livelli\n    // if (changes.showAll && changes.showAll.currentValue) {\n    //\n    //   this.push(changes.showAll.currentValue.subscribe(() => this.espandiTutti()));\n    // }\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    // Impostazioni di default\n\n    if (this.collapsible === false) {\n\n      this.collapsed = false;\n    }\n\n    if (this.collapsed == undefined) {\n\n      this.collapsed = (this.collapsible === true);\n    }\n\n    // this.inizializzaItems(this.items);\n    this.inizializzazioneCompletata = true;\n    this.emitCurrentItem();\n\n    // Ricerca ed emissione della voce di menu\n    // corrispondente all'url corrente\n    // al NavigationEnd\n    this.push(\n      this.router.events\n        .pipe(filter(event => event instanceof NavigationEnd))\n        .subscribe(() => {\n          this.impostaUrlEffettivi(this.items);\n          this.emitCurrentItem();\n        })\n    );\n\n    if (this.reinit) {\n\n      this.push(\n        this.reinit.subscribe((items: MenuItem[]) => {\n\n          this.emitDebug(`Reinit!`);\n\n          // this.items = cloneItems(items || this.originalItems);\n          this.items = [...(items ?? this.originalItems)];\n\n          if (items) {\n\n            // this.originalItems = cloneItems(items);\n            this.originalItems = [...items];\n          }\n\n          this.inizializzaItems(this.items);\n        })\n      );\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  // -------------------------- Operatori controllo stato menu --------------------------\n\n  isCollapsible = (): boolean => this.innerMenu && this.collapsible;\n  isCollapsed = (): boolean => this.isCollapsible() && this.collapsed;\n\n  // -------------------------- Operatori controllo stato item --------------------------\n\n  isItemCollapsible = (item: MenuItem) => item.collapsible && this.hasSubItems(item);\n  isItemCollapsed = (item: MenuItem) => item?.collapsible && item?.collapsed;\n  hasSubItems = (item: MenuItem): boolean => item?.subItems?.length > 0;\n  isActive = (item: MenuItem) => this.activeItem ? (item.id == this.activeItem) : this.isCurrentPageItem(item);\n\n  /**\n   * Verifica che l'elemento in input\n   * sia associato all'url corrente\n   *\n   * @param item\n   */\n  isCurrentPageItem = (item: MenuItem): boolean =>\n    this.isCurrentUrl(this.getItemLink(item))\n    || this.isCurrentUrl(this.getItemLinkRegex(item))\n    || (item.activeLinks != undefined\n      && item.activeLinks.some(this.isCurrentUrl));\n\n  /**\n   * Restituisce true se l'elemento\n   * deve essere visualizzato\n   *\n   * @param item\n   */\n  showItem = (item: MenuItem): boolean => {\n\n    return (item.show == undefined && item.show$ == undefined)\n      || item.show === true\n      || (isFunction(item.show) && (item.show as CheckFn)() === true)\n      || this.isAutoShowItem(item);\n  };\n\n  /**\n   * Restituisce true se l'elemento\n   * deve essere visualizzato in automatico\n   * quando corrisponde all'url corrente\n   * o se uno dei suoi nodi figli\n   * e' un elemento che deve essere visualizzato in automatico.\n   *\n   * @param item\n   */\n  isAutoShowItem = (item: MenuItem): boolean =>\n\n    item.show === AUTO_SHOW\n    && (this.isCurrentPageItem(item)\n      || (item.subItems && item.subItems.some(this.isAutoShowItem)));\n\n  // -------------------------- Operatori recupero info item --------------------------\n\n  getPropertyValue = (property: string | GetStringFn) => isFunction(property) ? (property as GetStringFn)() : property;\n\n  // getItemLink = (item: MenuItem): string => isFunction(item.link) ? (item.link as GetStringFn)() : item.link;\n  // getItemLinkRegex = (item: MenuItem): string => isFunction(item.linkRegex) ? (item.linkRegex as GetStringFn)() : item.linkRegex;\n  // getItemLabel = (item: MenuItem): string => isFunction(item.label) ? (item.label as GetStringFn)() : item.label;\n  // getItemTitle = (item: MenuItem): string => isFunction(item.title) ? (item.title as GetStringFn)() : item.title;\n  // getItemAriaLabel = (item: MenuItem): string => isFunction(item.ariaLabel) ? (item.ariaLabel as GetStringFn)() : item.ariaLabel;\n\n  getItemLink = (item: MenuItem): string => this.getPropertyValue(item.link);\n  getItemLinkRegex = (item: MenuItem): string => this.getPropertyValue(item.linkRegex);\n  getItemLabel = (item: MenuItem): string => this.getPropertyValue(item.label);\n  getItemTitle = (item: MenuItem): string => this.getPropertyValue(item.title);\n  getItemAriaLabel = (item: MenuItem): string => this.getPropertyValue(item.ariaLabel);\n\n  // -------------------------- Operatori di utilita --------------------------\n\n  /**\n   * Verifica che l'url dato in input\n   * sia quello corrente\n   *\n   * @param url\n   */\n  isCurrentUrl = (url: string): boolean =>\n\n    url != undefined\n    && this.router.url\n      .split('?')[0]\n      .match(new RegExp('^'.concat(url).concat('$'), 'i')) != null;\n\n  // -------------------------- Metodi --------------------------\n\n  /**\n   * Inizializza gli elementi del menu\n   *\n   * @private\n   */\n  private inizializzaItems(items: MenuItem[]) {\n\n    if (items?.length) {\n\n      // Impostazioni di default per gli elementi\n      items.forEach((item: MenuItem) => {\n\n        if (item.id == undefined) {\n\n          item.id = uuidv4();\n        }\n\n        if (item.show == undefined && item.show$ == undefined) {\n\n          item.show = true;\n        }\n\n        if (item.collapsible == undefined) {\n\n          item.collapsible = this.collapsible;\n        }\n\n        if (item.collapsible == false) {\n\n          item.collapsed = false;\n        }\n\n        if (item.collapsed == undefined) {\n\n          // item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsible;\n          item.collapsed = (this.collapsed == undefined) ? (item.collapsible == true) : this.collapsed;\n        }\n      });\n\n      this.setParent(items, this.parent);\n      this.impostaUrlEffettivi(items);\n    }\n  }\n\n  /**\n   * Sovrascrive la proprieta link degli elementi del menu\n   * se la proprieta linkRegex matcha con l'url corrente.\n   */\n  private impostaUrlEffettivi(items: MenuItem[]) {\n\n    if (items?.length) {\n\n      items.forEach(this.impostaUrlEffettivo);\n    }\n  }\n\n  /**\n   * Sovrascrive la proprieta link dell'elemento del menu\n   * se la proprieta linkRegex matcha con l'url corrente.\n   */\n  private impostaUrlEffettivo = (item: MenuItem) => {\n\n    if (!this.disableLinkOverwriting && item && this.isCurrentUrl(this.getItemLinkRegex(item))) {\n\n      item.link = this.router.url;\n    }\n  };\n\n  /**\n   * Emette l'elemento\n   * associato all'url corrente\n   */\n  private emitCurrentItem() {\n\n    let item: MenuItem = this.findCurrentItem(this.items);\n\n    if (item != undefined) {\n\n      this.impostaUrlEffettivo(item);\n\n      this.emitDebug('Emissione item menu url corrente:');\n      this.emitDebug(item);\n\n      this.currentItem.emit(item);\n\n      // todo ???\n      // if (this.collapseOther) {\n      //\n      //   this.collapseOther(item);\n      // }\n    }\n  }\n\n  /**\n   * Ricerca l'elemento di menu inerente\n   * l'url corrente\n   *\n   * @param items\n   */\n  private findCurrentItem(items: MenuItem[]): MenuItem {\n\n    let resultItem: MenuItem = undefined;\n\n    if (items?.length) {\n\n      items.forEach((item: MenuItem) => {\n\n        if (resultItem == undefined && item != undefined && this.isCurrentPageItem(item)) {\n\n          resultItem = item;\n        }\n      });\n    }\n\n    return resultItem;\n  }\n\n  /**\n   *\n   * @param id\n   * @param items\n   */\n  private findItem(id: string, items: MenuItem[]) {\n\n    let resultItem: MenuItem = undefined;\n\n    if (items?.length) {\n\n      items.forEach((item: MenuItem) => {\n\n        if (resultItem == undefined && item != undefined) {\n\n          resultItem = item.id == id ? item : this.findItem(id, item.subItems);\n        }\n      });\n    }\n\n    return resultItem;\n  }\n\n  /**\n   *\n   * @param id\n   */\n  private espandiPercorso(id: string) {\n\n    if (this.items) {\n\n      this.items.forEach((item: MenuItem) => {\n\n        let innerItem: MenuItem = this.findItem(id, item.subItems);\n\n        if ((item?.id == id) || innerItem != undefined) {\n\n          this.espandiItem(item);\n\n          if (this.collapseOther) {\n\n            this.doCollapseOther(item);\n          }\n\n          if (innerItem) {\n\n            setTimeout(() => this.mostraItem.emit(id), COLLAPSING_DURATION);\n          }\n        }\n      });\n    }\n  }\n\n  private espandiMenu = () => this.setCollapsedMenu('show');\n  private collassaMenu = () => this.setCollapsedMenu('hide');\n\n  private setCollapsedMenu(mode: CollapseMode) {\n\n    if (this.items) {\n\n      this.items.forEach(item => this.setCollapsed(item, mode));\n    }\n  }\n\n  espandiItem = (item: MenuItem) => this.setCollapsed(item, 'show');\n  collassaItem = (item: MenuItem) => this.setCollapsed(item, 'hide');\n  toggleItem = (item: MenuItem) => this.setCollapsed(item, 'toggle');\n\n  setCollapsed(item: MenuItem, mode: CollapseMode) {\n\n    if (item && item.collapsible) {\n\n      switch (mode) {\n\n        case 'hide':\n          item.collapsed = true;\n          break;\n\n        case 'show':\n          item.collapsed = false;\n          break;\n\n        default:\n        case 'toggle':\n          item.collapsed = !item.collapsed;\n          break;\n      }\n    }\n  }\n\n  private deleteParent(items: MenuItem[]) {\n\n    if (items?.length) {\n\n      items.forEach((item: MenuItem) => {\n\n        if (item != undefined) {\n\n          delete item.parent;\n          this.deleteParent(item.subItems);\n        }\n      });\n    }\n  }\n\n  private setParent(items: MenuItem[], parent: MenuItem) {\n\n    if (items?.length && parent) {\n\n      items.forEach((item: MenuItem) => {\n\n        if (item != undefined) {\n\n          item.parent = this.toLightItem(parent);\n          this.setParent(item.subItems, item);\n        }\n      });\n    }\n  }\n\n  private toLightItem(e: MenuItem): MenuItem {\n\n    return e != undefined\n      ? {\n        id: e.id,\n        label: e.label,\n        link: e.link,\n        parent: this.toLightItem(e.parent)\n      }\n      : undefined;\n  }\n\n  itemOnClick(item: MenuItem) {\n\n    if (item) {\n\n      if (item.callback && isFunction(item.callback)) {\n\n        item.callback();\n      }\n\n      if (item.collapsible) {\n\n        item.collapsed = !item.collapsed;\n\n        if (item.collapsed === false && this.collapseOther === true) {\n\n          this.doCollapseOther(item);\n        }\n      }\n    }\n\n    this.itemClick.emit(item);\n  }\n\n  /**\n   * Effetto fisarmonica\n   *\n   * @param item\n   */\n  private doCollapseOther(item: MenuItem) {\n\n    if (item) {\n\n      this.items.forEach((itm: MenuItem) => {\n\n        if (itm && itm.id != item.id) {\n\n          itm.collapsed = true;\n\n        }\n      });\n    }\n  }\n\n  /**\n   *\n   * @param currentItem\n   * @param item\n   */\n  currentItemHandler(currentItem: MenuItem, item: MenuItem) {\n\n    if (currentItem) {\n\n      this.currentItem.emit(currentItem);\n\n      if (this.expandAutomatically === true && !this.innerMenu) {\n\n        this.espandiPercorso(currentItem.id);\n      }\n    }\n  }\n\n  collapsedOnChange() {\n\n    // setTimeout(() => {\n    //   this.emitMaxHeight()\n    //   this.collapsedChange.emit(this.collapsed)\n    // }, 50)\n  }\n\n  itemOnArrowDown() {\n\n    let focusableItems = this.focusableItems;\n    focusableItems.filter((index) => index > focusableItems.index(document.activeElement)).first()?.focus();\n  }\n\n  itemOnArrowUp() {\n    let focusableItems = this.focusableItems;\n    focusableItems.filter((index) => index < focusableItems.index(document.activeElement)).last()?.focus();\n  }\n\n  get focusableItems() {\n\n    return window['$']('body').find(FOCUSABLE_ITEMS_SELECTOR);\n  }\n}\n","<ng-container *ngIf=\"inizializzazioneCompletata\">\n\n  <ul #menu\n      id=\"{{id}}\"\n      role=\"list\"\n      class=\"inail-menu {{class}}\"\n      [ngStyle]=\"{'height.px': (menuHeight$ | async)}\"\n      [ngClass]=\"{'livello_2': innerMenu, 'collapsed': isCollapsed()}\">\n\n    <debug-pre *ngIf=\"showState\">[inail-menu-intranet]<br>\n      <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n      <state-propertie [label]=\"'innerMenu'\" [propertie]=\"innerMenu\"></state-propertie>\n      <state-propertie [label]=\"'collapsible'\" [propertie]=\"collapsible\"></state-propertie>\n      <state-propertie [label]=\"'collapsed'\" [propertie]=\"collapsed\"></state-propertie>\n      <state-propertie [label]=\"'collapseOther'\" [propertie]=\"collapseOther\"></state-propertie>\n      <!--      {{elements | json}}-->\n    </debug-pre>\n\n    <ng-container *ngFor=\"let item of items\">\n\n      <li *ngIf=\"showItem(item) || (item.show$ | async)\"\n          [ngClass]=\"{selected: isActive(item)}\">\n        <a *ngIf=\"item.link\"\n           [id]=\"item.id\"\n           class=\"livello_1\"\n           [attr.title]=\"getItemTitle(item)\"\n           [attr.aria-label]=\"getItemAriaLabel(item)\"\n           [attr.tabindex]=\"isCollapsed() ? '-1' : '0'\"\n           [routerLink]=\"getItemLink(item)\"\n           [queryParams]=\"item.queryParams\"\n           [innerHTML]=\"getItemLabel(item)\"\n           [attr.aria-expanded]=\"isItemCollapsible(item) ? !item.collapsed : undefined\"\n           [attr.aria-controls]=\"isItemCollapsible(item) ? item.id+'-items' : undefined\"\n           (click)=\"itemOnClick(item)\"\n           (keyup.arrowUp)=\"itemOnArrowUp()\"\n           (keyup.arrowDown)=\"itemOnArrowDown()\"\n           (keyup.space)=\"itemOnClick($event)\">\n        </a>\n        <a *ngIf=\"!item.link\"\n           [id]=\"item.id\"\n           class=\"livello_1\"\n           [attr.title]=\"getItemTitle(item)\"\n           [attr.aria-label]=\"getItemAriaLabel(item)\"\n           [attr.tabindex]=\"isCollapsed() ? '-1' : '0'\"\n           role=\"button\"\n           [innerHTML]=\"getItemLabel(item)\"\n           [attr.aria-expanded]=\"isItemCollapsible(item) ? !item.collapsed : undefined\"\n           [attr.aria-controls]=\"isItemCollapsible(item) ? item.id+'-items' : undefined\"\n           (click)=\"itemOnClick(item)\"\n           (keyup.arrowUp)=\"itemOnArrowUp()\"\n           (keyup.arrowDown)=\"itemOnArrowDown()\"\n           (keyup.enter)=\"itemOnClick(item)\"\n           (keyup.space)=\"itemOnClick(item)\">\n        </a>\n        <debug-pre *ngIf=\"showState\">[menu-item]<br>\n          <state-propertie [label]=\"'id'\" [propertie]=\"item.id\"></state-propertie>\n          <state-propertie [label]=\"'collapsible'\" [propertie]=\"item.collapsible\"></state-propertie>\n          <state-propertie [label]=\"'collapsed'\" [propertie]=\"item.collapsed\"></state-propertie>\n          <!--          {{element | json}}-->\n        </debug-pre>\n        <inail-menu *ngIf=\"hasSubItems(item)\"\n                    [id]=\"item.id+'-items'\"\n                    [activeItem]=\"activeItem\"\n                    [items]=\"item.subItems\"\n                    [parent]=\"item\"\n                    [innerMenu]=\"true\"\n                    [emitCurrent]=\"emitCurrent\"\n                    [collapsible]=\"item.collapsible\"\n                    [collapsed]=\"item.collapsed\"\n                    [collapseOther]=\"collapseOther\"\n                    [collapse]=\"collapse\"\n                    [toggle]=\"toggle\"\n                    [show]=\"mostraItem\"\n                    [showState]=\"showState\"\n                    (itemClick)=\"itemClick.emit($event)\"\n                    (currentItem)=\"currentItemHandler($event, item)\">\n        </inail-menu>\n      </li>\n    </ng-container>\n  </ul>\n</ng-container>\n\n\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport const ERROR_BTN_CLASS: string = 'on-error-btn'\n\nexport interface ButtonComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-button',\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @Input()\n  label: string;\n  @Input()\n  title: string;\n  @Input()\n  name: string;\n  @Input()\n  disabled: boolean;\n  @Input()\n  labelClass: string;\n  @Input()\n  btnSuccess: boolean;\n  @Input()\n  btnLink: boolean;\n  @Input()\n  submit: boolean;\n  @Input()\n  angleRight: boolean;\n  @Input()\n  angleLeft: boolean;\n  @Input()\n  iconLeft: string;\n  @Input()\n  iconRight: string;\n  @Input()\n  focus: Observable<boolean | void>;\n  @Output()\n  onclick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>()\n\n  @Input()\n  setFocusOnError: boolean = false;\n\n  @ViewChild('buttonElement')\n  buttonElement: ElementRef<HTMLElement>\n\n  @ViewChild('buttonContent')\n  buttonContent: ElementRef<HTMLElement>;\n\n  visualizzaContent: boolean;\n\n  // inizializzazioneTerminata: boolean = false;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-button]`;\n  }\n\n  ngOnChanges(changes: ButtonComponentChanges) {\n\n    super.ngOnChanges(changes);\n    this.visualizzaContent = isBlankOrNull(this.label);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n    this.logPrefix = `${this.logPrefix}[${this.label}]`\n\n    if (this.focus) {\n\n      this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll)));\n    }\n\n    this.visualizzaContent = isBlankOrNull(this.label);\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n\n    // setTimeout(() => {\n    //   // this.visualizzaContent = this.buttonContent?.nativeElement?.childNodes?.length > 0;\n    //   // this.inizializzazioneTerminata = true;\n    //   this.visualizzaContent = isBlankOrNull(this.label);\n    //   this.cdr.detectChanges();\n    // });\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  onClick($event: MouseEvent) {\n\n    if (!this.disabled) {\n\n      this.onclick.emit($event);\n    }\n  }\n\n  private setFocus(scroll: boolean) {\n\n    this.emitDebug(`Catch focus!`);\n    setFocus(this.buttonElement.nativeElement, scroll);\n  }\n}\n","<button #buttonElement\n        [type]=\"submit ? 'submit' : 'button'\"\n        [id]=\"id\"\n        [attr.title]=\"getNotBlankValue(title)\"\n        [attr.name]=\"getNotBlankValue(name)\"\n        [disabled]=\"disabled\"\n        class=\"btn inail-button {{class}}\"\n        [ngClass]=\"{'btn-success': btnSuccess, 'btn-link': btnLink, 'btn-primary': !btnLink, 'on-error-btn': setFocusOnError}\"\n        (click)=\"onClick($event)\">\n    <span *ngIf=\"angleLeft\" class='fa left fa-angle-left'></span>\n    <span *ngIf=\"iconLeft\" class='fa' [ngClass]=\"iconLeft\"></span>\n    <span *ngIf=\"!visualizzaContent\" class=\"{{labelClass}}\" [innerHTML]=\"label\"></span>\n    <span #buttonContent *ngIf=\"visualizzaContent\" class=\"{{labelClass}}\">\n      <ng-content></ng-content>\n    </span>\n    <span *ngIf=\"iconRight\" class='fa' [ngClass]=\"iconRight\"></span>\n    <span *ngIf=\"angleRight\" class='fa fa-angle-right right'></span>\n</button>\n","import {ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChange, ViewEncapsulation} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface BreadcrumbStep {\n  label: string;\n  url: string;\n}\n\nexport interface AppPage {\n\n  title: string;\n  url: string;\n  parent?: AppPage;\n}\n\ninterface AppPageChange extends SimpleChange {\n\n  currentValue: AppPage;\n}\n\ninterface StepsChange extends SimpleChange {\n\n  currentValue: BreadcrumbStep[];\n}\n\ninterface BreadcrumbChanges extends BasicUxElementComponentChanges {\n\n  currentPage: AppPageChange;\n  steps: StepsChange;\n}\n\n@Component({\n  selector: 'inail-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  styleUrls: ['./breadcrumb.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  @Input()\n  currentPage: AppPage;\n\n  @Input()\n  steps: BreadcrumbStep[];\n\n  constructor(public router: Router,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-breadcrumb]'\n    this.detach();\n  }\n\n  ngOnChanges(changes: BreadcrumbChanges) {\n\n    super.ngOnChanges(changes);\n\n    if (changes.currentPage) {\n\n      this.buildBreadCrumb(changes.currentPage.currentValue);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    if (this.detectChange) {\n\n      this.push(this.detectChange.subscribe(() => this.cdr.detectChanges()));\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  buildBreadCrumb(pagina: AppPage) {\n\n    if (pagina != undefined) {\n\n      const genealogicalTree: AppPage[] = this.getGenealogicalTree(pagina);\n\n      if (genealogicalTree) {\n\n        this.steps = genealogicalTree.map((pagina: AppPage): BreadcrumbStep => ({label: pagina.title, url: pagina.url}));\n      }\n    }\n  }\n\n  private getParentsList(pagina: AppPage): AppPage[] {\n\n    let parents: AppPage[];\n\n    if (pagina) {\n\n      parents = this.getGenealogicalTree(pagina.parent);\n    }\n\n    return parents;\n  }\n\n  private getGenealogicalTree(pagina: AppPage): AppPage[] {\n\n    let genealogicalTree: AppPage[];\n\n    if (pagina) {\n\n      genealogicalTree = this.getGenealogicalTree(pagina.parent);\n      genealogicalTree.push(pagina);\n\n    } else {\n      genealogicalTree = [];\n    }\n\n    return genealogicalTree;\n  }\n\n  onClick(url: string) {\n\n    this.router.navigateByUrl(url);\n  }\n}\n","<nav aria-label=\"Breadcrumb\" [id]=\"id\" class=\"inail-breadcrumb {{class}}\">\n  <ul *ngIf=\"steps\"\n      class=\"breadcrumb visible-sm-block visible-md-block visible-lg-block\">\n    <li *ngFor=\"let step of steps; last as isLast\">\n      <ng-container *ngIf=\"!isLast\">\n        <a *ngIf=\"step.url\" [routerLink]=\"step.url\" [innerHTML]=\" step.label\"></a>\n        <a *ngIf=\"!step.url\" href=\"javascript:void(0)\" [innerHTML]=\" step.label\"></a>\n      </ng-container>\n      <span aria-current=\"page\" *ngIf=\"isLast\" [innerHTML]=\" step.label\"></span>&nbsp;\n    </li>\n  </ul>\n</nav>\n<debug-pre *ngIf=\"showState\">[inail-breadcrumb]<br>\n  <state-propertie [label]=\"'logOnConsole'\" [propertie]=\"logOnConsole\"></state-propertie>\n  <state-propertie [label]=\"'paginaCorrente'\" [propertie]=\"currentPage\"></state-propertie>\n  <state-propertie [label]=\"'steps'\" [propertie]=\"steps\"></state-propertie>\n</debug-pre>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport {HeaderConfigurations} from '../header/header.component';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {BaseComponent, CHANGE_DETECTION_STRATEGY} from '../../base.component';\nimport {isAbsolute, isHidden, isNotBlankOrNull, scrollToElement, scrollTop, startWithSlash} from '../../../../utils/common.operators';\nimport {getWebkitExternalResources} from './webkit-resources';\nimport {ExternalResource, ExternalScript} from './static-resources';\nimport {AppPage} from '../breadcrumb/breadcrumb.component';\nimport {GetStringFn, MenuComponent, MenuItem} from '../menu/menu.component';\nimport {filter} from 'rxjs/operators';\nimport {ERROR_BTN_CLASS} from '../../ux/button/button.component';\nimport {isFunction} from 'rxjs/internal/util/isFunction';\nimport {lastValueFrom, Observable} from 'rxjs';\nimport {AGWRequest, AgwRestService, ChecksessionResponse, GlobalConfigResponse, HFResponse} from '../../../../services/agw-rest.service';\nimport {HeaderSecondarioData} from '../header-secondario/header-secondario.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\ntype ResourceType = 'script' | 'link';\n\ninterface LoadedResource {\n\n  loaded: boolean,\n  resource: ExternalResource | ExternalScript\n}\n\ninterface LoadedResourceResponse {\n\n  resource: string\n  loaded: boolean,\n  status: string\n}\n\nexport enum SetFocusStrategy {\n\n  /**.\n   * Indica che il focus dovra' essere impostato sul feedback globale.\n   */\n  OnGlobalFeedback = 0,\n\n  /**\n   * Indica che il focus dovra' essere impostato sul primo elemento in pagina andato in errore.\n   */\n  OnFirstPageError = 1\n}\n\nexport class InailLayoutConfigurations {\n\n  /**\n   * Indica il nome dell'applicazione.\n   */\n  appName?: string;\n\n  /**\n   * Identificativo dell'applicazione corrente in accordo\n   * con l'AGW.\n   */\n  clientId?: string;\n\n  /**\n   * Se true imposta automaticamente il focus sul primo elemento\n   * di input andato in errore.\n   */\n  focusOnError?: boolean;\n\n  /**\n   * Se true effettua uno scrolling all'elemento\n   * andato in errore prima di impostare il focus.\n   */\n  scrollToError?: boolean;\n\n  /**\n   * Determina su quale elemento impostare il focus al verificarsi\n   * di un errore.\n   */\n  setFocusStrategy?: SetFocusStrategy = SetFocusStrategy.OnGlobalFeedback;\n\n  /**\n   * Se true alla fine di un evento di routing effettua uno scroll in cima alla pagina.\n   */\n  scrollTopAtNavigationEnd?: boolean;\n\n  /**\n   * Se true permette al layout di occupare l'intera larghezza dello schermo\n   */\n  containerWide?: boolean;\n\n  /**\n   * Se true abilita il caricamento automatico delle risorse esterne dalla cdn INAIL.\n   * Vengono creati e iniettati nel tag <head> i tag <link>\n   * inerenti le risorse esterne necessarie alla\n   * corretta visualizzazione dell'applicazione.\n   * Se non passate in input al componente tramite la proprieta' 'externalResources'\n   * vengono caricate le risorse di default.\n   * Le risorse di default vengono recuperate dal dominio\n   * specificato tramite la proprieta' 'cdnEndpoint'.\n   */\n  caricamentoDinamicoRisorseEsterne?: boolean;\n\n  /**\n   * Se true abilita il caricamento automatico degli script esterne dalla cdn INAIL.\n   * Vengono creati e iniettati nel tag <head> i tag <script>\n   * inerenti gli script necessari alla\n   * corretta visualizzazione dell'applicazione.\n   * Se non passati in input al componente tramite la proprieta' 'externalScripts'\n   * vengono caricate gli script di default.\n   * Gli script di default vengono recuperati dal dominio\n   * specificato tramite la proprieta' 'cdnEndpoint'.\n   */\n  // caricamentoDinamicoScriptEsterni?: boolean;\n\n  /**\n   * Endpoint della cdn.\n   * (e.g. https://cdncoll.inailcloud.it)\n   * Se non specificato e se il valore della proprieta' 'recuperoAutomaticoCdnEndpoint' e' true\n   * viene recuperato automaticamente contattando il servizio '/api/global-config' esposto da AGW,\n   * altrimenti viene utilizzato i domino corrente.\n   */\n  cdnEndpoint?: string;\n\n  /**\n   * Recupera automaticamente l'endpoint della cdn.\n   * L'endpoint viene recuperato contattando l'AGW all'indirizzo\n   * '/api/global-config'.\n   * Il recupero dell'endpoint non viene effettuato se e' stata\n   * impostata la proprieta' di configurazione 'cdnEndpoint'.\n   * L'api gateway viene contattato prendendo in considerazione\n   * quanto specificato tramite la proprieta' di configurazione\n   * apiGatewayUrl.\n   * */\n  recuperoAutomaticoCdnEndpoint?: boolean;\n\n  /**\n   * Tempo di attesa in millisecondi\n   * del caricamento tra gli script.\n   * Il valore di default e' 300.\n   */\n  // scriptLoadingDeelay?: number;\n\n  /**\n   * Se true vengono recuperati automaticamente i frammenti html di logo, navigazione principale, header secondario e footer.\n   * I frammenti html verranno recuperati agli indirizzi indicati tramite le proprieta' di configurazione logoHeaderUrl, navigazionePrincipaleUrl\n   * headerSecondarioUrl e footerUrl.\n   * Se gli indirizzi non vengono indicati i frammenti html verranno recuperati automaticamente dal componente contattando\n   * i servizi 'HeaderFooter-MSPublicVersion' e 'HeaderFooter-MSPrivateVersion' esposti su AGW.\n   * Se false i frammenti html dovranno essere passati in input al componente tramite le proprieta' di input logoHeaderHtml,\n   * navigazionePrincipaleHtml, headerSecondarioHtml e footerHtml o inseriti nel content del componente attraverso gli appositi selettori di contenuto.\n   */\n  recuperoAutomaticoHtml?: boolean;\n\n  /**\n   * Url da cui recuperare il frammento html della prima intestazione di pagina (quella contenente il logo).\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPublicVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento l'html verra' visualizzato quello di default.\n   */\n  logoHeaderUrl?: string;\n\n  /**\n   * Url da cui recuperare il frammento html della navigazione principale.\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando i servizi 'HeaderFooter-MSPublicVersion'\n   * e 'HeaderFooter-MSPrivateVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento html verra' visualizzato quello di default.\n   */\n  navigazionePrincipaleUrl?: string;\n\n  /**\n   * Url da cui recuperare il frammento html del header secondario\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPrivateVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento html verra' visualizzato quello di default.\n   */\n  headerSecondarioUrl?: string;\n\n  /**\n   * Url da cui recuperare il frammento html del footer.\n   * Se passato inibisce il meccanismo di recupero automatico da AGW.\n   * Se non specificato il frammento html verra' recuperato automaticamente dal componente contattando il servizio 'HeaderFooter-MSPublicVersion'.\n   * Nel caso in cui non sia possibile recuperare il frammento l'html verra' visualizzato quello di default.\n   */\n  footerUrl?: string;\n\n  /**\n   * Forza il componente a utilizzare i frammenti html di default per header e footer se recuperoAutomaticoHtml e' stata valorizzata a false.\n   * In questo caso, per visualizzare il frammento html di default inerente l'header secondario,\n   * sara' necessario valorizzare la proprieta' di input 'headerSecondarioData'.\n   * Valorizzare o meno la proprieta' 'headerSecondarioData' inoltre determinera' se visualizzare il frammento html di default\n   * della navigazione principale inerente l'utente autenticato o quello inerente l'utente non autenticato\n   * (In caso di utente non autenticato il layout previsto per le applicazioni INAIL non mostra l'header secondario).\n   */\n  useDefaultHtml?: boolean;\n\n  /**\n   * Url a cui contattare l'AGW per il recupero automatico dei frammenti html.\n   * Per il recupero verranno contattati i servizi 'HeaderFooter-MSPublicVersion' e 'HeaderFooter-MSPrivateVersion'.\n   * Se non specificato verra' utilizzato l'indirizzo relativo /api.\n   */\n  apiGatewayUrl?: string;\n}\n\n/**\n * Il componente renderizza l'intero layout dell'applicazione.\n *\n * Comprende gli elementi comuni a tutte le applicazioni INAIL:\n * Header, footer, spazio per breadcrumb e menu laterale.\n *\n * Il componente implementa autonomamente il meccanismo per rendere responsive l'applicazione,\n * secondo quanto richiesto nelle linee guida INAIL.\n *\n * E' possibile iniettare nel layout renderizzato il contenuto principale delle pagine,\n * il breadcrumb, il menu applicativo ed il sottomenu.\n *\n * Inoltre e' possibile permettere al componente di recuperare in automatico le informazioni inerenti\n * l'utente loggato e gli html visualizzati nell'header e nel footer\n * oppure passare esplicitamente queste informazioni dall'esterno.\n *\n * Infine e' possibile far iniettare al componente le risorse statiche necessarie,\n * passandole in input e facendole recuperare in automatico\n * senza doverle specificare nell'index.html\n */\n@Component({\n  selector: 'inail-layout',\n  templateUrl: './inail-layout.component.html',\n  styleUrls: ['./inail-layout.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class InailLayoutComponent extends BaseComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  headerConfig: HeaderConfigurations;\n\n  /**\n   * Se true visualizza il loader\n   */\n  @Input()\n  showLoader: boolean;\n\n  /**\n   * Oggetto di configurazione del componente.\n   */\n  @Input()\n  config: InailLayoutConfigurations;\n\n  /**\n   * Frammento html della prima intestazione di pagina (quella contenente il logo) da far visualizzare al componente.\n   * Verra' utilizzato solamente in caso di recupero non automatico.\n   */\n  @Input()\n  logoHeaderHtml: string;\n\n  /**\n   * Frammento html della navigazione principale da far visualizzare al componente.\n   * Verra' utilizzato solamente in caso di recupero non automatico.\n   */\n  @Input()\n  navigazionePrincipaleHtml: string;\n\n  /**\n   * Frammento html del header secondario da far visualizzare al componente.\n   * Verra' utilizzato solamente in caso di recupero non automatico.\n   */\n  @Input()\n  headerSecondarioHtml: string;\n\n  /**\n   * Dati da visualizzare all'interno del header secondario.\n   * Verranno utilizzati solamente in caso di recupero non automatico.\n   * Vengono ignorati se e' stata valorizzata la proprieta' di input 'headerSecondarioHtml'.\n   * Se impostata a 'true' la proprieta' 'useDefaultHtml' dell'oggetto di configurazione del componente,\n   * la valorizzazione della proprieta' 'headerSecondarioData' determinera' se visualizzare il frammento html di default\n   * della navigazione principale inerente l'utente autenticato o quello inerente l'utente non autenticato\n   * e se visualizzare o meno il frammento html di default inerente l'header secondario.\n   */\n  @Input()\n  headerSecondarioData: HeaderSecondarioData;\n\n  /**\n   * Frammento html del footer da far visualizzare al componente.\n   * Verra' utilizzato solamente in caso di recupero non automatico.\n   */\n  @Input()\n  footerHtml: string;\n\n  /**\n   * Lista delle risorse esterne da utilizzare per la corretta visualizzazione del layout.\n   * Vengono caricate automaticamente solo se il comportamento viene abilitato\n   * tramite la proprieta' di configurazione 'caricamentoDinamicoRisorseEsterne'.\n   * Se per le risorse non vengono specificati degli url assoluti\n   * vengono recuperate in base a quanto specificato nella proprieta' di configurazione\n   * 'cdnEndpoint'.\n   * Se non passate verranno caricate le risorse di default previste dal componente.\n   */\n  @Input()\n  externalResources: ExternalResource[];\n\n  /**\n   * Alla ricezione del valore effettua il ricaricamento dei frammenti html.\n   */\n  @Input()\n  reload: Observable<void>;\n\n  /**\n   * Lista degli scripts esterni da utilizzare per il corretto funzionamento del layout.\n   * Vengono caricati automaticamente solo se il comportamento viene abilitato\n   * tramite la proprieta di configrazione caricamentoDinamicoScriptEsterni.\n   * Se per gli script non vengono specificati degli url assoluti\n   * vegono recuperati in base a quanto specificato nelle proprita di configurazione\n   * cdnEndpoint ed assetsUrl.\n   */\n  @Input()\n  externalScripts: ExternalScript[];\n\n  @ViewChild('breadcrumbContainer')\n  breadcrumbContainer: ElementRef;\n\n  @ViewChild('pleaseWaitContainer')\n  pleaseWaitContainer: ElementRef;\n\n  @ContentChildren(MenuComponent)\n  menuList: QueryList<MenuComponent>;\n\n  paginaCorrente: AppPage;\n\n  breadcrumbEsterno: boolean = true;\n  pleaseWaitEsterno: boolean = true;\n\n  // Gestione risorse e script esterni\n  risorseEsterneCounter: number = 0;\n  risorseEsterneTot: number;\n  scriptEsterniCounter: number = 0;\n  scriptEsterniTot: number;\n\n  caricamentoRisorseEsterneTerminato: boolean = false;\n  caricamentoScriptEsterniTerminato: boolean = false;\n\n  inizializzazioneTerminata: boolean = false;\n\n  toggleNavSecondaria: EventEmitter<void> = new EventEmitter<void>();\n\n  itsReady = (): boolean => this.inizializzazioneTerminata === true\n    && this.caricamentoRisorseEsterneTerminato === true\n\n  constructor(private renderer: Renderer2,\n              private agw: AgwRestService,\n              private _elementRef: ElementRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig,\n              private cdr: ChangeDetectorRef,\n              private router: Router) {\n\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-layout]';\n    this.detach();\n  }\n\n  /**\n   * Gestione automatica per l'impostazione del focus\n   * sugli errori\n   *\n   * @param elem\n   */\n  @HostListener('click', ['$event.target'])\n  onClick(elem: HTMLElement) {\n\n    // Controllo che il click sia stato fatto\n    // su un pulsante che implica l'impostazione\n    // del focus sull'errore\n    if (this.config.focusOnError && isSetFocusOnErrorButton(elem)) {\n\n      this.emitDebug('Error button clicked');\n      setFocusOnError(this.config.setFocusStrategy, this.config.scrollToError);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n\n    this.emitDebug('changes');\n    this.emitDebug(changes);\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n    this.init();\n  }\n\n  private async init() {\n\n    this.emitDebug('init...');\n\n    this.removeNgVersion(this._elementRef.nativeElement);\n\n    if (this.config) {\n\n      this.emitDebug('Configurazioni InailLayoutComponent');\n      this.emitDebug(this.config);\n\n      if (!this.config.cdnEndpoint && this.config.recuperoAutomaticoCdnEndpoint === true) {\n\n        await this.recuperaCdnEndpoint();\n      }\n\n      this.headerConfig = {\n        clientId: this.config.clientId,\n        apiGatewayUrl: this.config.apiGatewayUrl,\n        logoHeaderUrl: this.config.logoHeaderUrl,\n        navigazionePrincipaleUrl: this.config.navigazionePrincipaleUrl,\n        headerSecondarioUrl: this.config.headerSecondarioUrl,\n        useDefaultHtml: this.config.useDefaultHtml,\n        recuperoAutomaticoHtml: this.config.recuperoAutomaticoHtml\n      };\n    }\n\n    if (this.config.recuperoAutomaticoHtml === true) {\n\n      // TODO aggiungere alla DOC\n      await this.recuperaHeadDaAGW();\n    }\n\n    // Inizializzazione risorse esterne\n    if (this.config?.caricamentoDinamicoRisorseEsterne === true) {\n\n      let defaultExternalResources: ExternalResource[];\n\n      // Se non vengono specificate dall'esterno le risorse da utilizzare\n      // carico quelle di default\n      if (this.externalResources == undefined) {\n\n        // defaultExternalResources = this.libConfig?.webkitVersion != undefined\n        //   ? getWebkitExternalResources(this.libConfig.webkitVersion)\n        //   : webkitExternalResources;\n\n        defaultExternalResources = getWebkitExternalResources(this.libConfig.webkitVersion);\n      }\n\n      let risorseEsterne: ExternalResource[] = defaultExternalResources ?? this.externalResources;\n\n      this.loadRisorseEsterne(risorseEsterne, 'link');\n\n    } else {\n      this.caricamentoRisorseEsterneTerminato = true;\n    }\n\n    // // Inizializzazione script esterni\n    // if (this.config?.caricamentoDinamicoScriptEsterni === true) {\n    //\n    //   let defaultExternalScripts: ExternalScript[];\n    //\n    //   if (this.externalScripts == undefined) {\n    //\n    //     defaultExternalScripts = getWebkitExternalScripts(this.libConfig.webkitVersion);\n    //   }\n    //\n    //   let scriptEsterni: ExternalScript[] = defaultExternalScripts ?? this.externalScripts;\n    //\n    //   await this.loadRisorseEsterne(scriptEsterni, 'script');\n    //\n    // } else {\n    //\n    //   this.caricamentoScriptEsterniTerminato = true;\n    // }\n\n    if (this.config?.scrollTopAtNavigationEnd) {\n\n      this.push(\n        this.router.events\n          .pipe(filter(event => event instanceof NavigationEnd))\n          .subscribe(() => scrollTop())\n      );\n    }\n\n    this.emitDebug('...inizializzazione terminata!');\n    this.inizializzazioneTerminata = true;\n    this.cdr.detectChanges();\n  }\n\n  private removeNgVersion(nativeElement: HTMLElement) {\n\n    if (nativeElement) {\n\n      if (nativeElement?.hasAttribute('ng-version')) {\n\n        this.renderer.removeAttribute(nativeElement, 'ng-version');\n\n      } else {\n        this.removeNgVersion(nativeElement.parentElement);\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    this.breadcrumbEsterno = this.breadcrumbContainer ? this.breadcrumbContainer.nativeElement.childElementCount > 0 : false;\n    this.pleaseWaitEsterno = this.pleaseWaitContainer ? isNotBlankOrNull(this.pleaseWaitContainer.nativeElement.innerHTML) : false;\n\n    if (this.menuList?.length > 0) {\n\n      this.menuList.forEach((menu: MenuComponent) => {\n\n        this.push(\n          menu.currentItem.subscribe((currentElement: MenuItem) => {\n\n            this.emitDebug('Voce menu corrente');\n            this.emitDebug(currentElement);\n\n            if (currentElement != undefined) {\n\n              this.paginaCorrente = this.toPaginaApplicativa(currentElement);\n              this.cdr.detectChanges();\n            }\n          })\n        );\n      });\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  private toPaginaApplicativa(element: MenuItem): AppPage {\n\n    return element != undefined\n      ? {\n        title: this.getElementLabel(element),\n        url: this.getElementLink(element),\n        parent: this.toPaginaApplicativa(element.parent)\n      }\n      : undefined;\n  }\n\n  getElementLink(element: MenuItem): string {\n\n    return isFunction(element.link) ? (element.link as GetStringFn)() : element.link;\n  }\n\n  getElementLabel(element: MenuItem): string {\n\n    return isFunction(element.label) ? (element.label as GetStringFn)() : element.label;\n  }\n\n  // --- Logica caricamento risorse esterne ------------------------------------------------------------------------------\n\n  /**\n   * Recupera da Api Gateway l'endpoint della cdn\n   * e lo imposta nella configurazione del componente.\n   */\n  private async recuperaCdnEndpoint() {\n\n    try {\n      this.emitDebug(`Recupero cdn endpoint da AGW global config`);\n\n      let response: GlobalConfigResponse = await lastValueFrom(this.agw.getGlobalConfig({\n        clientId: this.config?.clientId,\n        agwEndPoint: this.config?.apiGatewayUrl\n      }));\n\n      this.config.cdnEndpoint = response.cdn_endpoint;\n\n      this.emitDebug(`Endpoint cdn recuperato: ${this.config.cdnEndpoint}`);\n\n    } catch (e) {\n\n      this.emitError('Errore nel recupero del cdnEndpoint da api gateway');\n      this.emitError(e);\n    }\n  }\n\n  /**\n   *\n   * @param risorseEsterne\n   * @param type\n   */\n  private async loadRisorseEsterne(risorseEsterne: (ExternalResource | ExternalScript)[], type: ResourceType) {\n\n    this.emitDebug('Load risorse esterne');\n    this.emitDebug(risorseEsterne);\n\n    risorseEsterne.forEach((resource: ExternalResource | ExternalScript) => this.impostaPathRisorsa(resource, type));\n\n    let loadedResources: LoadedResource[] = [];\n    risorseEsterne\n      // Filtra escludendo le risorse gia incluse\n      .filter((risorsa: ExternalResource | ExternalScript) => !this.isResourceLinked(risorsa, type))\n      .forEach((risorsa: ExternalResource | ExternalScript) => loadedResources.push({loaded: false, resource: risorsa}));\n\n    switch (type) {\n\n      case 'link':\n        this.risorseEsterneCounter = 0;\n        this.risorseEsterneTot = loadedResources.length;\n        this.caricaRisorseEsterne(loadedResources);\n        break;\n      case \"script\":\n        this.scriptEsterniCounter = 0;\n        this.scriptEsterniTot = loadedResources.length;\n        await this.caricaScriptEsterni(loadedResources);\n        break;\n    }\n  }\n\n  /**\n   *\n   * @param risorsaEsterna\n   * @param type\n   */\n  private impostaPathRisorsa(risorsaEsterna: ExternalResource | ExternalScript, type: ResourceType) {\n\n    let urlProperty: string;\n\n    switch (type) {\n\n      case 'link':\n        urlProperty = 'href';\n        break;\n\n      case 'script':\n        urlProperty = 'src';\n        break;\n    }\n\n    risorsaEsterna.assetUrl = !isAbsolute(risorsaEsterna[urlProperty]) ? (risorsaEsterna.assetUrl ?? '') : '';\n\n    risorsaEsterna.cdnEndpoint = !isAbsolute(risorsaEsterna.assetUrl)\n      ? risorsaEsterna.cdnEndpoint ?? this.config.cdnEndpoint ?? ''\n      : '';\n  }\n\n  /**\n   *\n   * @param resources\n   * @param index\n   */\n  private async caricaRisorseEsterne(resources: LoadedResource[], index: number = 0) {\n\n    if (resources && resources.length > 0) {\n\n      resources.forEach(resource => {\n\n        this.emitDebug('Caricamento risorsa esterna:');\n        this.emitDebug(resource);\n\n        this.creaElementoRisorsaEsterna(resource, 'link')\n          .then((response: LoadedResourceResponse) => {\n\n            this.emitDebug('...caricamento risorsa esterna completato');\n            this.emitDebug(response);\n          }, e => {\n            this.emitError('Errore caricamento risorsa esterna!');\n            this.emitError(e);\n          });\n      });\n    }\n  }\n\n  /**\n   *\n   * @param scripts\n   * @param index\n   */\n  private async caricaScriptEsterni(scripts: LoadedResource[], index: number = 0) {\n\n    if (index < scripts.length) {\n\n      setTimeout(() => {\n        this.emitDebug('Caricamento script esterno:');\n        this.emitDebug(scripts[index]);\n\n        this.creaElementoRisorsaEsterna(scripts[index], 'script')\n          .then((response: LoadedResourceResponse) => {\n\n            this.emitDebug('...caricamento script esterno completato');\n            this.emitDebug(response);\n          })\n          .catch((e) => {\n            this.emitError('Errore caricamento script esterno!');\n            this.emitError(e);\n          })\n          .finally(() => this.caricaScriptEsterni(scripts, index + 1));\n\n      }, 0);\n    } else {\n\n      this.emitDebug('Inizio azioniFineCaricamentoScript');\n    }\n  }\n\n  /**\n   *\n   *\n   * @param resource\n   * @param type\n   */\n  private async creaElementoRisorsaEsterna(resource: LoadedResource, type: ResourceType): Promise<LoadedResourceResponse> {\n\n    return new Promise((resolve, reject) => {\n\n      let resourceUrl: string = resource.resource['src'] || resource.resource['href'];\n\n      // resolve if already loaded\n      if (resource.loaded) {\n\n        resolve({resource: resourceUrl, loaded: true, status: 'Already Loaded'});\n\n      } else {\n\n        let resourceElement: any;\n\n        switch (type) {\n\n          case 'script':\n            this.emitDebug(`Creazione elemento script per risorsa:`);\n            this.emitDebug(resource.resource);\n            resourceElement = createScriptElement((resource.resource as ExternalScript));\n            break;\n          case 'link':\n            this.emitDebug(`Creazione elemento link per risorsa:`);\n            this.emitDebug(resource.resource);\n            resourceElement = createLinkElement((resource.resource as ExternalResource));\n            break;\n        }\n\n        if (resourceElement.readyState) {  // IE\n\n          resourceElement.onreadystatechange = () => {\n\n            if (resourceElement.readyState === 'loaded' || resourceElement.readyState === 'complete') {\n\n              this.emitDebug(`[IE] Caricamento risorsa completato:`);\n              this.emitDebug(resource.resource);\n\n              resourceElement.onreadystatechange = null;\n              resource.loaded = true;\n              resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n              this.risorsaOnLoad(type);\n            }\n          };\n\n        } else {  // Others\n\n          resourceElement.onload = () => {\n\n            this.emitDebug(`Caricamento risorsa completato:`);\n            this.emitDebug(resource.resource);\n\n            resource.loaded = true;\n            resolve({resource: resourceUrl, loaded: true, status: 'Loaded'});\n            this.risorsaOnLoad(type);\n          };\n        }\n\n        resourceElement.onerror = (error: any) => {\n\n          this.emitError(\"Errore caricamento risorsa: \");\n          this.emitError(error);\n\n          reject({resource: resource.resource, loaded: false, status: 'Loaded'});\n          this.risorsaOnLoad(type);\n        };\n\n        document.head.appendChild(resourceElement);\n      }\n    });\n  }\n\n  /**\n   * Controlla se gia esiste una specifica risorsa nel tag head\n   *\n   * @param risorsa\n   * @param type\n   */\n  isResourceLinked(risorsa: ExternalResource | ExternalScript, type: ResourceType): boolean {\n\n    let trovato: boolean = false;\n\n    let head = document.head || document.getElementsByTagName('head')[0];\n\n    switch (type) {\n\n      // case 'script':\n      //\n      //   // Trova tutti gli elementi script nel tag head\n      //   let script = head.getElementsByTagName('script');\n      //\n      //   // Itera sugli elementi script e controlla se uno di essi punta allo script specificato\n      //   for (let i = 0; i < script.length; i++) {\n      //\n      //     let url: string = (risorsa as ExternalScript).src;\n      //\n      //     trovato = (script[i].src && script[i].src.indexOf(url) !== -1);\n      //\n      //     if (trovato) {\n      //       break;\n      //     }\n      //   }\n      //   break;\n\n      case 'link':\n\n        // Trova tutti gli elementi link nel tag head\n        let links = head.getElementsByTagName('link');\n\n        let url: string = (risorsa as ExternalResource).href;\n\n        // Itera sugli elementi link e controlla se uno di essi punta al CSS specificato\n        for (let i = 0; i < links.length; i++) {\n          trovato = (links[i].href && links[i].href.indexOf(url) !== -1);\n\n          if (trovato) {\n            break;\n          }\n        }\n        break;\n    }\n\n    return trovato;\n  }\n\n  risorsaOnLoad(type: ResourceType) {\n\n    switch (type) {\n\n      case 'script':\n        this.scriptEsterniCounter++;\n        this.caricamentoScriptEsterniTerminato = this.scriptEsterniCounter === this.scriptEsterniTot;\n        break;\n\n      case 'link':\n        this.risorseEsterneCounter++;\n        this.caricamentoRisorseEsterneTerminato = this.risorseEsterneCounter === this.risorseEsterneTot;\n        break;\n    }\n\n    if (this.caricamentoRisorseEsterneTerminato || this.caricamentoScriptEsterniTerminato) {\n\n      this.emitDebug(`Caricamento di tutte le risorse ${type} completato`);\n      this.cdr.detectChanges();\n    }\n  }\n\n  async recuperaHeadDaAGW() {\n\n    this.emitDebug(`Recupero risorse esterne head da AGW`);\n\n    let request: AGWRequest = {clientId: this.config.clientId, agwEndPoint: this.config.apiGatewayUrl};\n\n    try {\n\n      let response: ChecksessionResponse = await lastValueFrom(this.agw.checksession(request));\n\n      let responseHF$: Observable<HFResponse> = response?.result === true\n        ? this.agw.getPrivateHeadRW(request)\n        : this.agw.getPublicHeadRW(request);\n\n      let responseHF: HFResponse = await lastValueFrom(responseHF$);\n\n      if (responseHF?.html != undefined) {\n\n        document.head.innerHTML = `${document.head.innerHTML} ${responseHF.html}`;\n        this.cdr.detectChanges();\n      }\n\n    } catch (err) {\n\n      this.emitError('Errore recupero risorse esterne head da AGW');\n      this.emitError(err);\n    }\n  }\n}\n\n// --- Operatori per la gestione delle risorse esterne ------------------------------------------------------\n\nconst createLinkElement = (resource: ExternalResource) => {\n\n  let element = document.createElement('link');\n\n  let url = `${resource.cdnEndpoint}${(isNotBlankOrNull(resource.cdnEndpoint) && isNotBlankOrNull(resource.assetUrl) && !startWithSlash(resource.assetUrl)) ? '/' : ''}${resource.assetUrl}${resource.href}`;\n\n  addProperty(element, 'rel', resource.rel);\n  addProperty(element, 'type', resource.type);\n  addProperty(element, 'href', url);\n  addProperty(element, 'media', resource.media);\n  addProperty(element, 'hreflang', resource.hreflang);\n\n  return element;\n};\n\nconst createScriptElement = (script: ExternalScript) => {\n\n  let element = document.createElement('script');\n\n  let url = `${script.cdnEndpoint}${(isNotBlankOrNull(script.cdnEndpoint) && isNotBlankOrNull(script.assetUrl) && !startWithSlash(script.assetUrl)) ? '/' : ''}${script.assetUrl}${script.src}`;\n\n  addProperty(element, 'src', url);\n  addProperty(element, 'type', script.type);\n  addProperty(element, 'charset', script.charset);\n\n  if (script.async === true) {\n\n    element.async = true;\n  }\n\n  if (script.defer === true) {\n\n    element.defer = true;\n  }\n\n  return element;\n};\n\nconst addProperty = (elem: any, name: string, value: string) => {\n\n  if (elem != undefined && value != undefined) {\n\n    elem[name] = value;\n  }\n};\n\n// --- Operatori per la gestione del focus ------------------------------------------------------\n\nconst isSetFocusOnErrorButton = (elem: HTMLElement): boolean => elem && ((elem.nodeName == 'BUTTON' && hasClassValidationBtn(elem)) || isSetFocusOnErrorButton(elem.parentElement));\nconst hasClassValidationBtn = (elem: HTMLElement): boolean => elem && elem.classList && elem.classList.contains(ERROR_BTN_CLASS);\n\nconst focusable = ':not([disabled]):not([readonly]):not([tabindex=\\'-1\\'])';\nconst focusableElement = `input${focusable},select${focusable},textarea${focusable},.feedback-focusable`;\n\n/**\n * Trova e restituisce l'elemento focusable\n * all'interno dell'elemento dato\n *\n * @param outer\n */\nconst findInnerFocusableElement = (outer: HTMLElement): HTMLElement => outer ? outer.querySelectorAll<HTMLElement>(focusableElement)[0] : undefined;\n\n/**\n * Imposta il focus sull'errore\n */\nexport const setFocusOnError = (setFocusStrategy: SetFocusStrategy, scrollToError: boolean) => {\n\n  // @ts-ignore\n  // let modaleInPagina: boolean = $('.modal.fade.in').not(`.${MODAL_CONFIRM_CLASS}`).length > 0 TODO\n\n  let modaleInPagina: boolean = document.querySelectorAll('.modal.fade.in').length;\n\n  // Se esiste una modale in pagina che non e' una modale di conferma\n  if (modaleInPagina) {\n\n    setFocusOnFirstModalError();\n\n  } else {\n\n    switch (setFocusStrategy) {\n\n      default:\n      case SetFocusStrategy.OnGlobalFeedback:\n        setFocusOnGlobalErrorFeedback(scrollToError);\n        break;\n\n      case SetFocusStrategy.OnFirstPageError:\n        setFocusOnFirstPageError(scrollToError);\n        break;\n    }\n  }\n};\n\n/**\n * Imposta il focus sul primo elemento nella modale andato in errore se esiste.\n */\nexport const setFocusOnFirstModalError = () => {\n\n  setTimeout(() => {\n\n    let firstModalErrorElement: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .has-error')[0]);\n    let firstModalErrorFeedback: HTMLElement = findInnerFocusableElement(document.querySelectorAll<HTMLElement>('.modal-body .feedback-box-error')[0]);\n\n    if (firstModalErrorElement) {\n\n      firstModalErrorElement.focus();\n\n    } else if (firstModalErrorFeedback) {\n\n      firstModalErrorFeedback.focus();\n    }\n\n  }, 100);\n};\n\n/**\n * Imposta il focus sul primo elemento in pagina andato in errore se esiste.\n */\nexport const setFocusOnFirstPageError = (scrollToError?: boolean) => {\n\n  setTimeout(() => {\n\n    let outer = document.querySelectorAll<HTMLElement>('.has-error,.feedback-box-error:not(.global-feedback)')[0];\n\n    let firstErrorElement: HTMLElement = findInnerFocusableElement(outer);\n\n    if (firstErrorElement && !isHidden(firstErrorElement)) {\n\n      if (scrollToError === true) {\n\n        scrollToElement(firstErrorElement.id);\n      }\n\n      // Il delay serve ad aspettare che termini lo scroll\n      setTimeout(() => firstErrorElement.focus(), 500);\n    } else {\n      setFocusOnGlobalErrorFeedback(scrollToError);\n    }\n  }, 100);\n};\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback', scrollToFeedback);\n\n/**\n * Imposta il focus sul feedback globale\n */\nexport const setFocusOnGlobalErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.global-feedback.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback di errore\n */\nexport const setFocusOnFirstErrorFeedback = (scrollToFeedback?: boolean) => setFocusOnFirstFeedback('.feedback-box-error', scrollToFeedback);\n\n/**\n * Imposta il focus sul primo feedback in pagina\n *\n * @param selector\n * @param scrollToFeedback\n */\nexport const setFocusOnFirstFeedback = (selector?: string, scrollToFeedback?: boolean) => {\n\n  setTimeout(() => {\n\n    let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(selector || '.feedback-box')[0];\n\n    if (feedback) {\n\n      if (scrollToFeedback) {\n\n        scrollToElement(feedback.getAttribute('id'));\n      }\n\n      let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n      if (feedbackFocusable != undefined) {\n\n        // Il delay serva ad aspettare che termini lo scroll\n        setTimeout(() => feedbackFocusable.focus(), 500);\n      }\n    }\n  }, 100);\n};\n\n/**\n *\n * @param id\n * @param scrollToFeedback\n * @param ms\n */\nexport const setFocusOnFeedback = (id?: string, scrollToFeedback?: boolean, ms?: number) => {\n\n  setTimeout(() => {\n\n    let feedback: HTMLElement = document.querySelectorAll<HTMLElement>(`#${id}`)[0];\n\n    if (feedback) {\n\n      if (scrollToFeedback) {\n\n        scrollToElement(feedback.getAttribute('id'));\n      }\n\n      let feedbackFocusable: HTMLElement = feedback.querySelector('.feedback-focusable');\n\n      if (feedbackFocusable != undefined) {\n\n        // Il delay serva ad aspettare che termini lo scroll\n        setTimeout(() => feedbackFocusable.focus(), 500);\n      }\n    }\n  }, ms || 100);\n};\n","<inail-loader [show]=\"showLoader\"></inail-loader>\n<debug-pre *ngIf=\"showState\">[inail-layout]<br>\n  <state-propertie [label]=\"'config'\" [propertie]=\"config\"></state-propertie>\n  <state-propertie [label]=\"'inizializzazioneTerminata'\" [propertie]=\"inizializzazioneTerminata\"></state-propertie>\n  <state-propertie [label]=\"'caricamentoRisorseEsterneTerminato'\" [propertie]=\"caricamentoRisorseEsterneTerminato\"></state-propertie>\n  <state-propertie [label]=\"'caricamentoScriptEsterniTerminato'\" [propertie]=\"caricamentoScriptEsterniTerminato\"></state-propertie>\n  <state-propertie [label]=\"'itsReady'\" [propertie]=\"itsReady()\"></state-propertie>\n  <state-propertie [label]=\"'breadcrumbEsterno'\" [propertie]=\"breadcrumbEsterno\"></state-propertie>\n  <state-propertie [label]=\"'paginaCorrente'\" [propertie]=\"paginaCorrente\"></state-propertie>\n</debug-pre>\n<div class=\"inail-layout\">\n  <div *ngIf=\"!itsReady()\" #pleaseWaitContainer>\n    <ng-container *ngIf=\"pleaseWaitEsterno; else defaultPleaseWait\">\n      <ng-content select=\"[please-wait]\"></ng-content>\n    </ng-container>\n    <ng-template #defaultPleaseWait>\n      <div class=\"please-wait\">\n        <div *ngIf=\"config?.appName\" class=\"app-name\" [innerHTML]=\"config.appName\"></div>\n        <div>Caricamento...</div>\n        <div class=\"spinner-container\">\n          <div class=\"loader\"></div>\n        </div>\n      </div>\n    </ng-template>\n  </div>\n  <div class=\"container\"\n       [hidden]=\"!itsReady()\"\n       [ngClass]=\"{'wide' : config && config.containerWide}\">\n\n    <header id=\"inail-header\"\n            *ngIf=\"inizializzazioneTerminata\"\n            [config]=\"headerConfig\"\n            [logoHeaderHtml]=\"logoHeaderHtml\"\n            [navigazionePrincipaleHtml]=\"navigazionePrincipaleHtml\"\n            [headerSecondarioHtml]=\"headerSecondarioHtml\"\n            [headerSecondarioData]=\"headerSecondarioData\"\n            [reload]=\"reload\"\n            [showState]=\"false\"\n            [detectChange]=\"this.detectChange\"\n            [logOnConsole]=\"logOnConsole\"\n            (log)=\"emit($event)\">\n      <ng-container logo-header>\n        <ng-content select=\"[logo-header]\"></ng-content>\n      </ng-container>\n      <ng-container navigazione-principale>\n        <ng-content select=\"[navigazione-principale]\"></ng-content>\n      </ng-container>\n      <ng-container header-secondario>\n        <ng-content select=\"[header-secondario]\"></ng-content>\n      </ng-container>\n    </header>\n\n    <!-- Breadcrumb -->\n    <div class=\"row breadcrumbs internet-breadcrumb\"\n         aria-label=\"Breadcrumb\"\n         #breadcrumbContainer>\n      <ng-container *ngIf=\"breadcrumbEsterno\">\n        <ng-content select=\"[breadcrumb]\"></ng-content>\n      </ng-container>\n      <inail-breadcrumb *ngIf=\"!breadcrumbEsterno\"\n                        [logOnConsole]=\"this.logOnConsole\"\n                        [currentPage]=\"paginaCorrente\"\n                        (log)=\"emit($event)\">\n      </inail-breadcrumb>\n    </div>\n\n    <inail-trigger-slider-menu-button (click)=\"toggleNavSecondaria.emit()\"></inail-trigger-slider-menu-button>\n\n    <div class=\"row\">\n\n      <inail-navigazione-secondaria [toggle]=\"toggleNavSecondaria\"\n                                    [logOnConsole]=\"logOnConsole\"\n                                    (log)=\"emit($event)\">\n\n        <ng-container sidebar-superiore>\n          <ng-content select=\"[sidebar-superiore]\"></ng-content>\n        </ng-container>\n\n        <ng-container sidebar-inferiore>\n          <ng-content select=\"[sidebar-inferiore]\"></ng-content>\n        </ng-container>\n\n      </inail-navigazione-secondaria>\n\n      <main *ngIf=\"inizializzazioneTerminata\"\n            id=\"contenutoprincipale\"\n            class=\"col-xs-12 col-sm-8 col-lg-9\">\n\n        <div class=\"row\">\n          <div class=\"content\">\n            <ng-content select=\"[main-content]\"></ng-content>\n          </div>\n        </div>\n\n      </main>\n\n    </div>\n    <inail-footer *ngIf=\"inizializzazioneTerminata\"\n                  [clientId]=\"config?.clientId\"\n                  [apiGatewayUrl]=\"config?.apiGatewayUrl\"\n                  [useDefault]=\"config?.useDefaultHtml\"\n                  [recuperoAutomaticoHtml]=\"config?.recuperoAutomaticoHtml\"\n                  [html]=\"footerHtml\"\n                  [url]=\"config?.footerUrl\"\n                  [reload]=\"reload\"\n                  [detectChange]=\"this.detectChange\"\n                  [logOnConsole]=\"this.logOnConsole\"\n                  [showState]=\"false\"\n                  (log)=\"emit($event)\">\n      <ng-content select=\"[footer]\"></ng-content>\n    </inail-footer>\n  </div>\n</div>\n","import {ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport interface FormGreyComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-form-grey',\n  templateUrl: './form-grey.component.html',\n  styleUrls: ['./form-grey.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class FormGreyComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy {\n\n  @Input()\n  title: string;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super(cdr);\n    this.logPrefix = '[inail-form-grey]'\n    this.detach();\n  }\n\n  ngOnChanges(changes: FormGreyComponentChanges): void {\n\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div [id]='id'\n     [ngClass]=\"class\"\n     class=\"form-grey content row\">\n    <h3 *ngIf=\"title\" class=\"title-modulo\" [innerHTML]=\"title\"></h3>\n    <div class=\"col-xs-12\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface PageTitleComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-page-title',\n  templateUrl: './page-title.component.html',\n  styleUrls: ['./page-title.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PageTitleComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  title: string;\n\n  @Input()\n  titleClass: string;\n\n  @Input()\n  spanTitle: string;\n\n  @Input()\n  spanTitleClass: string;\n\n  @Input()\n  autoCatchFocus: boolean = getConfigValue(this.libConfig?.pageTitleComponent?.autoCatchFocus, true);\n\n  @Input()\n  focus: Observable<boolean | void>;\n\n  @ViewChild('divTitolo')\n  divTitolo: ElementRef<HTMLElement>;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-page-title]';\n    this.emitDebug('NgInailCommonConfig:');\n    this.emitDebug(libConfig?.pageTitleComponent);\n    super.overrideConfig(libConfig?.pageTitleComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: PageTitleComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.titolo?.currentValue != undefined\n      && !changes.titolo.isFirstChange()) {\n\n      this.setFocus();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n    this.logPrefix = `[inail-page-title][${this.title}]`\n    this.cdr.detectChanges();\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`)\n          setFocus(this.divTitolo.nativeElement, scroll);\n          this.emitDebug(\"Focus impostato su elemento titolo: \");\n          this.emitDebug(this.divTitolo.nativeElement);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    this.setFocus();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  setFocus() {\n\n    // todo rivedere\n    // Il secondo controllo serve ad evitare che al primo accesso\n    // all'applicazione il focus vada sul titolo invece che\n    // sul primo elemento del documento\n    if (this.autoCatchFocus\n      && (document.activeElement == undefined\n        || document.activeElement.id != 'logo-inail-header')) {\n\n      setTimeout(() => {\n\n        this.divTitolo.nativeElement.focus();\n        this.emitDebug(\"Focus impostato su elemento titolo: \");\n        this.emitDebug(this.divTitolo.nativeElement);\n      }, 500);\n\n      // let checkLoading = setInterval(() => {\n      //\n      //     // Aspetto che il loader\n      //     // sia stato rimosso dal DOM prima\n      //     // di impostare il focus\n      //     // @ts-ignore\n      //     if ($('.loader-overlay').length == 0) {\n      //\n      //         // console.warn('loader-overlay = 0') // todo togliere\n      //\n      //         this.divTitolo.nativeElement.focus();\n      //         this.emitDebug(\"Focus impostato su elemento titolo: \");\n      //         this.emitDebug(this.divTitolo.nativeElement);\n      //         clearInterval(checkLoading);\n      //     }\n      // }, 500);\n    }\n  }\n}\n","<div tabindex=\"0\"\n     class=\"inail-page-title\"\n     [ngClass]=\"class\"\n     [id]=\"id\"\n     #divTitolo>\n  <span *ngIf=\"spanTitle\"\n        class=\"span-title\"\n        [ngClass]=\"spanTitleClass\"\n        [innerHTML]=\"spanTitle\">\n  </span>\n  <h2 *ngIf=\"title\"\n      [ngClass]=\"titleClass\"\n      [innerHTML]=\"title\">\n  </h2>\n  <h2 *ngIf=\"!title\"\n      [ngClass]=\"titleClass\">\n    <ng-content></ng-content>\n  </h2>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport type FeedbackTypes = 'ERROR' | 'SUCCESS' | 'WARNING';\n\nexport interface FeedbackComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-feedback',\n  templateUrl: './feedback.component.html',\n  styleUrls: ['./feedback.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class FeedbackComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  // Queste inizializzazioni servono per essere usate nel template\n  errorType: FeedbackTypes = 'ERROR';\n  successType: FeedbackTypes = 'SUCCESS';\n  warningType: FeedbackTypes = 'WARNING';\n\n  @ViewChild('mainMessage')\n  mainMessage: ElementRef<HTMLElement>\n\n  @Input()\n  message: string;\n  @Input()\n  type: FeedbackTypes = 'SUCCESS';\n  @Input()\n  globalFeedback: boolean;\n  @Input()\n  showIcon: boolean = getConfigValue(this.libConfig?.feedbackComponent?.showIcon, true);\n  @Input()\n  contentTitle: string;\n  @Input()\n  contentClass: string;\n  @Input()\n  details: string[];\n  @Input()\n  detailsAsList: boolean = getConfigValue(this.libConfig?.feedbackComponent?.detailsAsList, undefined);\n  @Input()\n  detailsAsOrderedList: boolean = getConfigValue(this.libConfig?.feedbackComponent?.detailsAsOrderedList, undefined);\n  @Input()\n  focus: Observable<boolean | void>;\n  @Input()\n  autoCatchFocus: boolean = getConfigValue(this.libConfig?.feedbackComponent?.autoCatchFocus, false);\n  @Input()\n  scrollToFocus: boolean = getConfigValue(this.libConfig?.feedbackComponent?.scrollToFocus, true);\n  @Input()\n  labelFeedback: boolean = false;\n\n  @ViewChild('feedbackContent')\n  feedbackContent: ElementRef;\n\n  // hasContent = () => this.feedbackContent?.nativeElement?.childElementCount > 0;\n  hasContent = () => isNotBlankOrNull(this.feedbackContent?.nativeElement?.textContent);\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-feedback]';\n    super.overrideConfig(libConfig?.confirmComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: FeedbackComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.details?.currentValue) {\n\n      this.details = (changes.details.currentValue as string[]).filter(value => value != undefined);\n    }\n\n    if (changes?.message?.currentValue && this.autoCatchFocus && !changes?.message?.isFirstChange()) {\n\n      this.setFocus(this.scrollToFocus);\n    }\n\n    this.cdr.detectChanges();\n    // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    if (this.focus) {\n\n      this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll != undefined ? scroll : this.scrollToFocus)));\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    if (this.autoCatchFocus) {\n\n      this.setFocus(this.scrollToFocus);\n    }\n\n    this.cdr.detectChanges();\n    // Questo secondo DC serve per rendere effettiva la visualizzazione del content\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  private setFocus(scroll: boolean) {\n\n    this.emitDebug(`Catch focus!`);\n    setFocus(this.mainMessage.nativeElement, scroll);\n  }\n}\n\nexport class Feedback {\n\n  type: FeedbackTypes;\n  message: string;\n  contentTitle: string;\n  details?: string[];\n\n  constructor(type: FeedbackTypes, msg: string, details?: string[], contentTitle?: string) {\n\n    this.message = msg;\n    this.type = type;\n\n    if (details) {\n\n      this.details = [].concat(details);\n      this.contentTitle = contentTitle;\n    }\n  }\n}\n","<div *ngIf=\"!labelFeedback\"\n     [id]='id'\n     class=\"row feedback-box inail-feedback {{class}}\"\n     [ngClass]=\"{'feedback-box-error': type==errorType, 'feedback-box-warning': type==warningType, 'global-feedback': globalFeedback === true}\">\n  <div>\n    <div class=\"feedback-header\"\n         [ngClass]=\"{'feedback-header-error': type==errorType, 'feedback-header-warning': type==warningType}\">\n        <span>\n            <span class=\"fa white-check\"\n                  [ngClass]=\"{'fa-times': showIcon && type==errorType, 'fa-exclamation-triangle': showIcon && type==warningType,\n                    'fa-check':showIcon && (type==successType || !type)}\"></span>\n            <span tabindex=\"0\" [id]=\"id+'-message'\" class=\"feedback-focusable\" [innerHTML]=\"message\" #mainMessage></span>\n        </span>\n    </div>\n    <div [hidden]=\"!hasContent()\"\n         class=\"feedback-content\"\n         [ngClass]=\"contentClass\"\n         #feedbackContent>\n      <p *ngIf=\"contentTitle\">\n        <strong>{{contentTitle}}</strong>\n      </p>\n      <ng-container *ngIf=\"detailsAsList || detailsAsOrderedList\">\n        <ol *ngIf=\"detailsAsOrderedList\">\n          <li *ngFor=\"let dettaglio of details\" [innerHTML]=\"dettaglio\"></li>\n        </ol>\n        <ul *ngIf=\"detailsAsList && !detailsAsOrderedList\">\n          <li *ngFor=\"let dettaglio of details\" [innerHTML]=\"dettaglio\"></li>\n        </ul>\n      </ng-container>\n      <ng-container *ngIf=\"!(detailsAsList || detailsAsOrderedList)\">\n        <p *ngFor=\"let dettaglio of details\" [innerHTML]=\"dettaglio\"></p>\n      </ng-container>\n      <p [style.padding-bottom]=\"0\">\n        <ng-content></ng-content>\n      </p>\n    </div>\n  </div>\n</div>\n<span *ngIf=\"labelFeedback\"\n      [id]='id'\n      class=\"inail-feedback col-xs-12 form-group {{class}}\"\n      [ngClass]=\"{'feedback-box-error': type==errorType, 'feedback-box-warning': type==warningType, 'global-feedback': globalFeedback === true}\">\n  <span *ngIf=\"showIcon\"\n        class=\"green-check fa fa-check-circle\"\n        [ngClass]=\"{\n        'green-check fa-check-circle': type==successType || !type,\n        'red-check fa-times-circle': type==errorType,\n        'red-check fa-exclamation-circle': type==warningType\n        }\"></span>\n  <strong tabindex=\"0\"\n          [id]=\"id+'-message'\"\n          class=\"labelFeedback feedback-focusable\"\n          [innerHTML]=\"message\" #mainMessage>\n  </strong>\n</span>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface AccordionComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-accordion',\n  templateUrl: './accordion.component.html',\n  styleUrls: ['./accordion.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class AccordionComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  title: string;\n  @Input()\n  ariaLabel: string = getConfigValue(this.libConfig?.accordionComponent?.ariaLabel, undefined);\n  @Input()\n  ariaLabelOpened: string = getConfigValue(this.libConfig?.accordionComponent?.ariaLabelOpened, \"Riduce l'accordion\");\n  @Input()\n  ariaLabelClosed: string = getConfigValue(this.libConfig?.accordionComponent?.ariaLabelClosed, \"Espande l'accordion\");\n  @Input()\n  collapsed: boolean = getConfigValue(this.libConfig?.accordionComponent?.collapsed, undefined);\n  @Input()\n  hasError: boolean;\n  @Input()\n  required: boolean;\n  @Input()\n  requiredSimbol: string = getConfigValue(this.libConfig?.accordionComponent?.requiredSimbol, '*');\n  @Input()\n  requiredSimbolPosition: 'left' | 'right' = getConfigValue(this.libConfig?.accordionComponent?.requiredSimbolPosition, 'right');\n  @Input()\n  toggle: Observable<boolean | void>;\n  @Input()\n  focus: Observable<boolean | void>;\n  @Output()\n  ontoggle: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  open: boolean;\n\n  // @ViewChild('accordionTitle')\n  // accordionTitle: ElementRef<HTMLElement>\n\n  @ViewChild('accordionButton')\n  accordionButton: ElementRef<HTMLElement>\n\n  getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n  // @ViewChild('panelBody')\n  // panelBody: ElementRef<HTMLElement> // Servono per l'animazione di apertura/chiusura fluida\n  // panelBodyHeight$: BehaviorSubject<number> = new BehaviorSubject<number>(undefined);\n  emitMenuHeight = () => {\n\n    // todo non funziona bene\n    // let scrollHeight = this.panelBody?.nativeElement?.scrollHeight;\n    // let nextHeight = this.open ? scrollHeight : 0;\n    //\n    // if (nextHeight > 0) {\n    //\n    //   console.warn('A', scrollHeight, this.panelBody?.nativeElement)\n    //\n    //   this.panelBodyHeight$.next(nextHeight);\n    //\n    //   // Rimuovo height.\n    //   // Alla fine dell'animazione la proprieta non serve che rimanga impostata.\n    //   // setTimeout(() => {\n    //   //   this.panelBodyHeight$.next(undefined);\n    //   // }, 350);\n    //\n    // } else {\n    //\n    //   console.warn('C', scrollHeight, this.panelBody?.nativeElement)\n    //\n    //   // Imposto l'height effettivo\n    //   // per poi impostarlo subito dopo a 0\n    //   // in modo da far funzionare l'animazione.\n    //   // Se non viene impostato un valore iniziale\n    //   // l'animazione CSS non funziona.\n    //\n    //   this.panelBodyHeight$.next(scrollHeight);\n    //   setTimeout(() => this.panelBodyHeight$.next(0), 15);\n    // }\n  };\n\n  constructor(private cdr: ChangeDetectorRef,\n              private renderer: Renderer2,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-accordion]';\n    super.overrideConfig(libConfig?.accordionComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: AccordionComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // if(changes?.collapsed?.currentValue != undefined) {\n    //\n    //   this.open = !changes.collapsed.currentValue;\n    // }\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus! scroll: ${scroll}`)\n          setFocus(this.accordionButton.nativeElement, scroll);\n        })\n      );\n    }\n\n    if (this.toggle) {\n\n      this.push(this.toggle.subscribe((open: boolean) => this.onToggle(open)));\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    this.open = !this.collapsed;\n  }\n\n  onToggle(open?: boolean) {\n\n    this.emitDebug(`${this.id} toggle: ${open}`);\n    this.open = open != undefined ? open : !this.open;\n    this.emitMenuHeight();\n\n    this.cdr.detectChanges();\n    this.ontoggle.emit(this.open);\n  }\n\n  get ariaLabelText() {\n\n    return this.ariaLabel || (this.open == true ? this.ariaLabelOpened : this.ariaLabelClosed);\n  }\n\n  ngAfterViewInit(): void {\n\n    this.cdr.detectChanges();\n  }\n}\n","<form class=\"inail-accordion row panel panel-default filter-accordion widget\"\n      [id]=\"id\"\n      [ngClass]=\"class\"\n      [name]=\"id+'-filterForm'\">\n  <button #accordionButton\n          type=\"button\"\n          class=\"search-title row panel-heading\"\n          [ngClass]=\"{'has-error': hasError, 'collapsed': !open}\"\n          [attr.aria-controls]=\"id + '-panel'\"\n          [attr.aria-expanded]=\"open\"\n          [attr.aria-label]=\"ariaLabelText\"\n          (click)=\"onToggle()\"\n          (keyup.space)=\"onToggle()\"\n          (keydown.space)=\"false\">\n    <span [innerHTML]=\"getTitle() | uppercase\"></span>\n    <span class=\"fa {{open ? 'fa-chevron-up' : 'fa-chevron-down'}}\"></span>\n  </button>\n  <div #panelBody\n       [id]=\"id+'-panel'\"\n       class=\"row panel-body body-form-grey\"\n       [ngClass]=\"{'closed': !open}\"\n       role=\"region\"\n       [attr.aria-expanded]=\"open\">\n    <div class=\"row\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</form>\n<debug-pre *ngIf=\"showState\">[inail-accordion]<br>\n  <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n  <state-propertie [label]=\"'titolo'\" [propertie]=\"title\"></state-propertie>\n  <state-propertie [label]=\"'open'\" [propertie]=\"open\"></state-propertie>\n</debug-pre>\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface TabPaneComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-tab-pane',\n  templateUrl: './tab-pane.component.html',\n  styleUrls: ['./tab-pane.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class TabPaneComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit {\n\n  @Input()\n  title: string;\n\n  @Input()\n  active: boolean;\n\n  @Input()\n  required: boolean;\n\n  @Input()\n  requiredSimbol: string = getConfigValue(this.libConfig?.tabPaneComponent?.requiredSimbol, '*');\n\n  @Input()\n  requiredSimbolPosition: 'left' | 'right' = getConfigValue(this.libConfig?.tabPaneComponent?.requiredSimbolPosition, 'left');\n\n  @Output()\n  activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  // @Output()\n  // selected: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  onChange: EventEmitter<void> = new EventEmitter<void>();\n\n  public doDetechChange = () => this.cdr.detectChanges();\n\n  getTitle = () => `${(this.required && this.requiredSimbolPosition === 'left') ? `${this.requiredSimbol} ` : ''}${this.title}${(this.required && this.requiredSimbolPosition === 'right') ? ` ${this.requiredSimbol}` : ''}`\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig)\n    this.logPrefix = '[inail-tab-pane]';\n    super.overrideConfig(libConfig?.tabPaneComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: TabPaneComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.active) {\n\n      // this.selected.emit(changes.active.currentValue);\n      this.activeChange.emit(changes.active.currentValue)\n    }\n\n    this.cdr.detectChanges();\n    this.onChange.emit();\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n  }\n\n  ngAfterViewInit(): void {\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div [hidden]=\"!active\"\n     [id]='id'\n     [ngClass]=\"class\"\n     class=\"tab-pane inail-tab-pane\">\n    <div class=\"form-group form-grey row\">\n        <div class=\"col-md-12 col-lg-12\">\n            <ng-content></ng-content>\n        </div>\n    </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  QueryList,\n  ViewEncapsulation\n} from '@angular/core';\nimport {TabPaneComponent} from \"../tab-pane/tab-pane.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface TabGroupComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-tab-group',\n  templateUrl: './tab-group.component.html',\n  styleUrls: ['./tab-group.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class TabGroupComponent extends BasicUxElementComponent implements OnInit, AfterViewInit {\n\n  @ContentChildren(TabPaneComponent)\n  panes: QueryList<TabPaneComponent>;\n\n  @Input()\n  selectTab: Observable<string>;\n\n  @Output()\n  selected: EventEmitter<string> = new EventEmitter<string>();\n\n  isActive = (id: string): boolean => this.panes.some((pane: TabPaneComponent) => pane.id == id && pane.active);\n  // getPaneTitle = (pane: TabPaneComponent) => `${pane.title}${pane.required ? ' *' : ''}`;\n  getPaneTitle = (pane: TabPaneComponent) => pane.getTitle();\n  detectPanesChange = () => this.panes?.forEach((pane: TabPaneComponent) => pane?.doDetechChange());\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-tab-group]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: TabGroupComponentChanges): void {\n\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n\n    if (this.selectTab) {\n\n      this.push(this.selectTab.subscribe((id: string) => this.tabOnClick(id)));\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    if (this.panes) {\n\n      this.panes.forEach((pane: TabPaneComponent) => this.push(pane.onChange.subscribe(() => this.cdr.detectChanges())));\n\n      if (!this.panes.some((pane: TabPaneComponent) => pane.active)) {\n\n        setTimeout(() => {\n          let firstPane = this.panes.toArray()[0];\n          firstPane.active = true;\n          firstPane.doDetechChange();\n          this.cdr.detectChanges();\n        });\n      }\n\n      this.cdr.detectChanges();\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  tabOnClick(id: string) {\n\n    this.selected.emit(id);\n\n    this.panes.forEach((pane: TabPaneComponent) => {\n\n      let active: boolean = pane.id == id;\n\n      if (pane.active == undefined || active != pane.active) {\n\n        pane.active = active;\n        pane.doDetechChange();\n        pane.activeChange.emit(pane.active);\n      }\n    });\n\n    this.cdr.detectChanges();\n  }\n}\n","<div [id]='id'\n     [ngClass]=\"class\"\n     class=\"tab-portale inail-tab-group\">\n  <ng-container *ngIf=\"panes\" >\n    <ul class=\"nav nav-tabs default-tabs\"\n        role=\"tablist\">\n      <li *ngFor=\"let pane of panes.toArray()\"\n          [ngClass]=\"{'active' : isActive(pane.id)}\">\n        <a href=\"javascript:void(0)\"\n           role=\"tab\"\n           [attr.aria-expanded]=\"isActive(pane.id)\"\n           [attr.aria-controls]=\"pane.id\"\n           [attr.aria-label]=\"'Visualizza il tab: '+pane.title\"\n           (keyup.space)=\"tabOnClick(pane.id)\"\n           (click)=\"tabOnClick(pane.id)\">\n          <span class=\"labelTabTitle\" [innerHTML]=\"getPaneTitle(pane)\"></span>\n        </a>\n      </li>\n    </ul>\n  </ng-container>\n  <div class=\"tab-content\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Inject, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue, NumberChange, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\ninterface TextareaChanges extends FormElementComponentChanges {\n\n  value: StringChange;\n  placeholder: StringChange;\n  maxlength: NumberChange;\n}\n\n@Component({\n  selector: 'inail-textarea',\n  templateUrl: './textarea.component.html',\n  styleUrls: ['./textarea.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TextareaComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class TextareaComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLElement>;\n\n  inputValue: string;\n\n  @Input()\n  placeholder: string = getConfigValue(this.libConfig?.textareaComponent?.placeholder, undefined);\n  @Output()\n  valueChange = new EventEmitter();\n  @Input()\n  maxlength: number = getConfigValue(this.libConfig?.textareaComponent?.maxlength, 300);\n  @Input()\n  rows: number = getConfigValue(this.libConfig?.textareaComponent?.rows, 10);\n  @Input()\n  cols: number = getConfigValue(this.libConfig?.textareaComponent?.cols, undefined);\n  @Input()\n  preventPasting: boolean = getConfigValue(this.libConfig?.textareaComponent?.preventPasting, undefined);\n\n  getCaratteriDisponibili = (): number => this.maxlength - (this.inputValue ? this.inputValue.length : 0);\n  isTextTooLong = (): boolean => this.inputValue && this.inputValue.length > this.maxlength;\n  isThereTextareaError = (): boolean => this.isThereError() || this.isTextTooLong();\n  showTextareaError = (): boolean => this.isThereTextareaError() && isNotBlankOrNull(this.getDescError());\n  getDescError = (): string => (isBlankOrNull(this.error) && this.isTextTooLong())\n    ? \"Il testo non pu&ograve; essere lungo di \" + this.maxlength + \" caratteri\"\n    : this.error;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-textarea]`;\n    super.overrideConfig(libConfig?.textareaComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: TextareaChanges): void {\n\n    super.ngOnChanges(changes);\n    this.emitDebug(`ngOnChanges:`);\n    this.emitDebug(changes);\n\n    this.maxlength = this.getNotBlankValue(this.maxlength);\n    this.placeholder = this.getNotBlankValue(this.placeholder);\n    this.rows = this.getNotBlankValue(this.rows);\n    this.cols = this.getNotBlankValue(this.cols);\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n\n    // this.inputValue = value; // Con Form Control\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return this.inputValue;\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.inputValue != value) {\n\n      this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n      this.inputValue = value;\n      this.cdr.detectChanges();\n\n      this.emitDebug(`this.valueChange.emit(${value})`);\n      this.valueChange.emit(value);\n\n      if(this.cleanErrorOnChange) {\n\n        this.cleanError();\n      }\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n  }\n\n  onPaste($event: ClipboardEvent) {\n\n    if (this.preventPasting === true) {\n\n      $event.preventDefault();\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} inail-textarea noPaddingLeft {{class}}\">\n  <div class=\"col-xs-12 noPadding\"\n       [ngClass]=\"{'has-error': isThereTextareaError()}\">\n    <label *ngIf=\"label\"\n           [ngClass]=\"{'sr-only': hiddenLabel}\"\n           class=\"control-label {{labelClass}}\"\n           [attr.aria-labelledby]=\"getAriaLabelledBy()\"\n           [attr.title]=\"labelTitle\"\n           [for]=\"id\"\n           [innerHTML]=\"getLabel()\">\n    </label>\n    <span *ngIf=\"showPopover()\"\n          [style.padding-left.px]=\"5\">\n      <inail-popover [iconClass]=\"popoverButtonIcon\"\n                     [buttonTitle]=\"popoverButtonTitle\"\n                     [header]=\"popoverHeader\"\n                     [content]=\"popoverContent\">\n      </inail-popover>\n    </span>\n    <div *ngIf=\"!(disabled || readonly)\" class=\"remainingChar pull-right\"><strong>{{getCaratteriDisponibili()}}</strong> caratteri disponibili</div>\n    <textarea #formControl\n              [id]=\"id\"\n              class=\"form-control {{inputClass}}\"\n              [attr.name]=\"name\"\n              [attr.title]=\"title\"\n              [attr.maxlength]=\"maxlength\"\n              [attr.rows]=\"rows\"\n              [attr.cols]=\"cols\"\n              [disabled]=\"disabled\"\n              [readonly]=\"readonly\"\n              [attr.placeholder]=\"placeholder\"\n              [attr.aria-required]=\"required === true ? true : undefined\"\n              [attr.aria-invalid]=\"isThereTextareaError() === true ? true : undefined\"\n              [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n              (paste)=\"onPaste($event)\"\n              (blur)=\"onBlur()\"\n              (keyup.enter)=\"enterUp.emit()\"\n              [(ngModel)]=\"value\">\n    </textarea>\n    <span *ngIf=\"showTextareaError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\"\n          aria-hidden=\"false\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n    <div *ngIf=\"showDescription()\"\n         [id]=\"descriptionId\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <span [innerHTML]=\"description\"></span>\n    </div>\n  </div>\n  <debug-pre *ngIf=\"showState\">\n    <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n    <state-propertie [label]=\"'label'\" [propertie]=\"label\"></state-propertie>\n    <state-propertie [label]=\"'inputValue'\" [propertie]=\"inputValue\"></state-propertie>\n    <state-propertie [label]=\"'maxlength'\" [propertie]=\"maxlength\" [hideIfNull]=\"false\"></state-propertie>\n    <state-propertie [label]=\"'rows'\" [propertie]=\"rows\" [hideIfNull]=\"false\"></state-propertie>\n    <state-propertie [label]=\"'cols'\" [propertie]=\"cols\" [hideIfNull]=\"false\"></state-propertie>\n    <state-propertie [label]=\"'placeholder'\" [propertie]=\"placeholder\" [hideIfNull]=\"false\"></state-propertie>\n    <inail-form-element-state-properties [formElement]=\"this\"></inail-form-element-state-properties>\n  </debug-pre>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChange,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from '../form-element.component';\nimport {\n  dateToString,\n  isDate,\n  isFutureDate,\n  isInISO8601Format,\n  isInItalianFormat,\n  isPastDate,\n  isToday,\n  toISO8601Format,\n  toItalianFormat\n} from '../../../../utils/date.operators';\nimport {isBlankOrNull, isNotBlankOrNull, isString, setFocus} from '../../../../utils/common.operators';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from '../../base.component';\nimport {Observable} from 'rxjs';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\n\ninterface InputDateComponentChanges extends FormElementComponentChanges {\n\n  value: SimpleChange;\n  options: SimpleChange;\n  enabledDates: SimpleChange;\n  disabledDates: SimpleChange;\n}\n\nconst isValidInputModel = (s: string) => isInItalianFormat(s) || isInISO8601Format(s) || isLongTime(s);\nconst isLongTime = (o: any) => o && (typeof o === 'number');\n\nconst ACCEPTED_INPUTS: string[] = ['/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];\n\n@Component({\n  selector: 'inail-input-date',\n  templateUrl: './input-date.component.html',\n  styleUrls: ['./input-date.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputDateComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class InputDateComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLElement>;\n\n  visibleData: string;\n  iso8601Data: string;\n\n  @Output()\n  valueChange = new EventEmitter<string>();\n\n  // @Input()\n  // modelFormat: DateFormat;\n\n  // https://bootstrap-datepicker.readthedocs.io/en/latest/options.html\n  @Input()\n  options: { [key: string]: any } = getConfigValue(this.libConfig?.inputDateComponent?.options, undefined);\n\n  @Input()\n  selfValidation: boolean = getConfigValue(this.libConfig?.inputDateComponent?.selfValidation, true);\n\n  @Input()\n  selfValidationError: string = getConfigValue(this.libConfig?.inputDateComponent?.selfValidationError, 'La data inserita non &egrave; valida');\n\n  @Input()\n  enabledDates: string[];\n\n  @Input()\n  disabledDates: string[];\n\n  @Input()\n  disableFutureDates: boolean = false;\n\n  @Input()\n  disablePastDates: boolean = false;\n\n  @Input()\n  disableCurrentDate: boolean = false;\n\n  @Input()\n  reinit: Observable<void>;\n\n  previousDigit: string;\n\n  private areThereDisabledDates = () => (this.disabledDates?.length || this.enabledDates?.length || this.disablePastDates === true || this.disableFutureDates === true || this.disableCurrentDate === true);\n  private isPasteOrCurrentOrFutureDisabledDate = (data: string) => (this.disablePastDates === true && isPastDate(data)) || (this.disableFutureDates === true && isFutureDate(data)) || (this.disableCurrentDate === true && isToday(data));\n  private isDataAbilitata = (data: string) => !this.isPasteOrCurrentOrFutureDisabledDate(data) && (this.enabledDates == undefined || !this.enabledDates.length || this.enabledDates.some(regex => this.match(data, regex) != undefined));\n  private isDataDisabilitata = (data: string) => this.isPasteOrCurrentOrFutureDisabledDate(data) || (this.disabledDates != undefined && this.disabledDates.some(regex => this.match(data, regex) != undefined));\n  private match = (date: string, regex: string) => date != undefined && date.match(new RegExp('^'.concat(regex).concat('$'), 'i'));\n\n  isValidInputValue = (): boolean => isBlankOrNull(this.visibleData) || isInItalianFormat(this.visibleData);\n  isNotValidInputData = (): boolean => !this.isValidInputValue() || (isNotBlankOrNull(this.iso8601Data) && this.areThereDisabledDates() && !this.isEnabledDate(this.iso8601Data));\n  isThereDataError = (): boolean => this.isThereError() || (this.selfValidation && this.isNotValidInputData());\n  showDataError = (): boolean => this.isThereDataError() && isNotBlankOrNull(this.getDescError());\n  getDescError = (): string => (this.selfValidation && isBlankOrNull(this.error) && this.isNotValidInputData()) ? this.selfValidationError : this.error;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-date]`;\n    super.overrideConfig(libConfig?.inputDateComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputDateComponentChanges) {\n\n    super.ngOnChanges(changes);\n\n    // if (changes.value && !changes.value.firstChange && this.cleanErrorOnChange) {\n    //\n    //   this.cleanError();\n    // }\n\n    // Se cambiano le options o gli array delle date abilitate/disabilitate\n    // reinizializzo il componente\n    if ((changes.options && !changes.options.firstChange)\n      || (changes.enabledDates && !changes.enabledDates.firstChange)\n      || (changes.disabledDates && !changes.disabledDates.firstChange)) {\n\n      this.datepickerReinit();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (!this.options) {\n\n      this.options = {\n        autoclose: true,\n        format: 'dd/mm/yyyy',\n        weekStart: 1,\n        todayBtn: 'linked',\n        language: 'it',\n        todayHighlight: true,\n        orientation: 'auto top',\n        enableOnReadonly: false\n      };\n    }\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n\n    if (this.reinit) {\n\n      this.push(\n        this.reinit.subscribe(() => {\n\n          this.emitDebug(`Reinit!`);\n          this.datepickerReinit();\n        })\n      );\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  private isEnabledDate = (date: Date | string) => {\n\n    var dateString: string = isString(date) ? date as string : dateToString(date as Date, 'ISO8061');\n    // console.warn('isDataAbilitata', dateString, this.isDataAbilitata(dateString))\n    // console.warn('isDataDisabilitata', dateString, this.isDataDisabilitata(dateString))\n    return this.isDataAbilitata(dateString) && !this.isDataDisabilitata(dateString);\n  };\n\n  ngAfterViewInit(): void {\n\n    this.emitDebug('ngAfterViewInit');\n    this.emitDebug('nativeElement');\n    this.emitDebug(this.formControlElement?.nativeElement);\n\n    // Inizializzazione della libreria datepicker\n    this.datepickerInit();\n\n    if (this.visibleData && isDate(this.visibleData)) {\n\n      this.setDatepickerDate(this.visibleData);\n    }\n\n    setTimeout(() => {\n\n      window['$'](this.formControlElement.nativeElement).on('change', () => {\n\n        this.emitDebug('onChange');\n        this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n        let elem = window['$'](this.formControlElement.nativeElement)[0];\n\n        this.emitDebug(`nativeElement value: ${elem?.value}`);\n\n        if (elem != undefined && elem.value != this.visibleData) {\n\n          this.emitDebug(`update value: ${this.visibleData} -> ${elem.value}`);\n          this.value = elem.value;\n        }\n\n        this.cdr.detectChanges();\n      });\n    });\n\n    this.cdr.detectChanges();\n  }\n\n  datepickerInit(): void {\n\n    if (this.areThereDisabledDates()) {\n\n      this.options.beforeShowDay = this.isEnabledDate;\n    }\n\n    window['$'](this.formControlElement.nativeElement).datepicker(this.options);\n  }\n\n  datepickerDestroy(): void {\n\n    window['$'](this.formControlElement.nativeElement).datepicker('remove');\n  }\n\n  datepickerReinit(): void {\n\n    // console.warn(this.disablePastDates);\n\n    this.datepickerDestroy();\n    this.datepickerInit();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.visibleData} -> ${value}`);\n    this.setValue(value);\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n    this.emitDebug(`current visibleData: ${this.visibleData}`);\n\n    this.emitDebug(`update visibleData: ${this.visibleData} -> ${value}`);\n\n    let validFormat = isValidInputModel(value);\n\n    if (isNotBlankOrNull(value)) {\n\n      this.visibleData = validFormat ? toItalianFormat(value) : value;\n    } else {\n\n      this.visibleData = undefined;\n    }\n\n    this.cdr.detectChanges();\n\n    setTimeout(() => {\n\n      let emittedValue: string = validFormat ? toISO8601Format(this.visibleData) : this.visibleData;\n      this.iso8601Data = emittedValue;\n      this.emitDebug(`this.valueChange.emit(${value})`);\n      this.valueChange.emit(emittedValue);\n\n      if (validFormat) {\n        this.setDatepickerDate(this.visibleData);\n      }\n    });\n\n    if (this.cleanErrorOnChange) {\n\n      this.cleanError();\n    }\n\n    this.cdr.detectChanges();\n\n    if (this.onChange) {\n\n      this.onChange(value);\n    }\n    this.cdr.detectChanges();\n  }\n\n  onChangeHandler($event: any) {\n\n    this.value = $event.target.value;\n  }\n\n  private setDatepickerDate(date: string) {\n\n    window['$'](this.formControlElement.nativeElement).datepicker('setDate', date);\n  }\n\n  isFirstDigitSlash = (ev: KeyboardEvent) => ev.key == '/' && this.visibleData == undefined;\n  isDoubleSlash = (ev: KeyboardEvent) => ev.key == '/' && ev.key == this.previousDigit;\n  isWrongDigit = (ev: KeyboardEvent) => this.isFirstDigitSlash(ev) || this.isDoubleSlash(ev);\n\n  onKeyDown(ev: KeyboardEvent) {\n\n    // console.warn(ev)\n    // console.warn(this.visibleData, `${this.visibleData}`)\n\n    if ((!ACCEPTED_INPUTS.some(v => v === ev.key) || this.isWrongDigit(ev)) && ev.ctrlKey == false) {\n\n      ev.preventDefault();\n    } else {\n      this.previousDigit = ev.key;\n    }\n  }\n}\n","<div class=\"inail-input-date date datePicker {{getResponsiveClass()}} noPaddingLeft {{class}}\">\n  <div class=\"form-group\"\n       [ngClass]=\"{'has-error': isThereDataError()}\">\n    <div class=\"input-relative\">\n      <label *ngIf=\"label\"\n             [ngClass]=\"{'sr-only': hiddenLabel}\"\n             class=\"control-label {{labelClass}}\"\n             title=\"{{labelTitle}}\"\n             for=\"{{id}}\">\n        <span [innerHTML]=\"getLabel()\"></span>\n        <span *ngIf=\"showDataError()\"\n              [id]=\"errorId\"\n              class=\"msg msg-errore\">\n          <strong [innerHTML]=\"'ERRORE: '+getDescError()\"></strong>\n        </span>\n      </label>\n      <span *ngIf=\"showPopover()\"\n            [style.padding-left.px]=\"5\">\n        <inail-popover [iconClass]=\"popoverButtonIcon\"\n                       [buttonTitle]=\"popoverButtonTitle\"\n                       [header]=\"popoverHeader\"\n                       [content]=\"popoverContent\">\n        </inail-popover>\n      </span>\n      <input id=\"{{id}}\"\n             #formControl\n             class=\"form-control\"\n             [ngClass]=\"inputClass\"\n             title=\"Inserire la data in formato giorno/mese/anno\"\n             placeholder=\"GG/MM/AAAA\"\n             type=\"text\"\n             (change)=\"onChangeHandler($event)\"\n             (paste)=\"onChangeHandler($event)\"\n             (keyup)=\"onChangeHandler($event)\"\n             [disabled]=\"this.disabled\"\n             [readonly]=\"this.readonly\"\n             [attr.aria-required]=\"required === true ? true : undefined\"\n             [attr.aria-invalid]=\"isThereDataError() === true ? true : undefined\"\n             [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n             (keyup.enter)=\"enterUp.emit()\"\n             (keydown)=\"onKeyDown($event)\"\n             [(ngModel)]=\"this.visibleData\">\n      <em class=\"fa fa-calendar\"\n          title=\"Calendario\"\n          (click)=\"formControl.focus()\">\n      </em>\n    </div>\n    <div *ngIf=\"showDescription()\"\n         [id]=\"descriptionId\"\n         [ngClass]=\"{'desc-margin-top': showDataError()}\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <span [innerHTML]=\"description\"></span>\n    </div>\n\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component, ElementRef,\n  EventEmitter,\n  forwardRef, Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChange, ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, StringChange} from \"../../base.component\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isBlankOrNull, isListNotEmptyOrNull, setFocus, uuidv4} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst clone = <T>(obj: T): T => obj ? JSON.parse(JSON.stringify(obj)) : obj;\n\nexport interface RadioOption {\n\n  /**\n   *\n   */\n  id?: string;\n\n  /**\n   * Label dell'opzione nella select\n   */\n  label: string;\n\n  /**\n   * Valore dell'opzione nella select\n   */\n  value: string;\n\n  /**\n   *\n   */\n  title?: string;\n\n  /**\n   *\n   */\n  class?: string;\n\n  popover?: boolean;\n  popoverButtonIcon?: string;\n  popoverButtonTitle?: string;\n  popoverHeader?: string;\n  popoverContent?: string;\n}\n\ninterface RadioSelectOptionsChange extends SimpleChange {\n\n  currentValue: RadioOption[];\n  previousValue: RadioOption[];\n}\n\ninterface RadioSelectChanges extends FormElementComponentChanges {\n\n  value: StringChange;\n  sort: StringChange;\n  options: RadioSelectOptionsChange;\n  inline: BooleanChange;\n}\n\n@Component({\n  selector: 'inail-radio-select',\n  templateUrl: './radio-select.component.html',\n  styleUrls: ['./radio-select.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RadioSelectComponent),\n      multi: true\n    }\n  ]\n})\nexport class RadioSelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl')\n  formControlElement: ElementRef<HTMLElement>;\n\n  @ViewChildren('inputRadio')\n  inputRadio: QueryList<ElementRef<HTMLInputElement>>;\n\n  selectedValue: string = '';\n\n  @Input()\n  options: RadioOption[];\n  @Input()\n  name: string;\n  @Input()\n  sort: 'asc' | 'desc' = getConfigValue(this.libConfig?.radioSelectComponent?.sort, undefined);\n  @Input()\n  inline: boolean = getConfigValue(this.libConfig?.radioSelectComponent?.inline, false);\n  @Output()\n  select: EventEmitter<RadioOption> = new EventEmitter<RadioOption>();\n  @Output()\n  valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  // Serve per effettuare un controllo sulla prima chiamata al metodo set value\n  // per evitare che un eventuale errore impostato prima della creazione del componente\n  // venga cancellato durante le prime fasi del ciclo di vita del componente.\n  firstSetValue: boolean = true;\n\n  getName = () => this.name || `${this.id}-name`;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-radio-select]`;\n    super.overrideConfig(libConfig?.radioSelectComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: RadioSelectChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if(changes.value != undefined && !changes.value.firstChange) {\n\n      this.firstSetValue = false;\n    }\n\n    if (changes?.options?.currentValue) {\n\n      this.options = clone(changes?.options?.currentValue);\n\n      this.options.forEach(opt => {\n\n        if (isBlankOrNull(opt.id)) {\n\n          opt.id = uuidv4();\n        }\n      });\n    }\n\n    if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n      let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n      if (direction != 0 && this.options != undefined) {\n\n        this.options.sort((a: RadioOption, b: RadioOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n      }\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          let checked: ElementRef<HTMLInputElement> = this.inputRadio.find(item => item.nativeElement.checked);\n          setFocus(checked?.nativeElement || this.inputRadio.first.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.selectedValue} -> ${value}`)\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return this.selectedValue;\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.selectedValue != value) {\n\n      setTimeout(() => {\n\n        this.emitDebug(`update value: ${this.selectedValue} -> ${value}`);\n        this.selectedValue = value || '';\n        this.cdr.detectChanges();\n\n        this.emitDebug(`this.valueChange.emit(${this.selectedValue})`);\n        this.valueChange.emit(this.selectedValue);\n        this.select.emit(this.options.find(opt => opt?.value === this.selectedValue));\n\n        // La condizione su this.firstSetValue serve per evitare che il messaggio di errore\n        // si tolga alla prima chiamata del metodo set value\n        // che avviene prima della prima chiamata di ngOnChanges\n        if(this.cleanErrorOnChange && !this.firstSetValue) {\n\n          this.cleanError();\n        }\n\n        if (this.onChange) {\n\n          this.onChange(this.selectedValue);\n        }\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    super.ngAfterViewInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    this.emitDebug(`@ViewChildren('inputRadio')`);\n    this.emitDebug(this.inputRadio);\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n\n/**\n *\n * @param opzioniValide\n * @param opzioneScelta\n * @return true se il valore di opzioneScelta e' uguale ad uno dei valori delle opzioniValide, false altrimenti.\n */\nexport const isValidRadioValue = (opzioniValide: RadioOption[], opzioneScelta: string): boolean =>\n  (isListNotEmptyOrNull(opzioniValide) && opzioniValide.findIndex(element => element.value == opzioneScelta) >= 0);\n\n\n","<div *ngIf=\"viewInit\"\n     [id]='id'\n     class=\"{{getResponsiveClass()}} {{class}} noPadding inail-radio-select\" #formControl>\n  <fieldset class=\"form-group col-xs-12 noPaddingLeft\" [id]=\"getName()\"\n            role=\"radiogroup\"\n            [attr.aria-labelledby]=\"getAriaLabelledBy()\"\n            [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n            [attr.aria-required]=\"required === true ? true : undefined\">\n    <legend class=\"radio-legend {{labelClass}}\"\n            [ngClass]=\"{'sr-only': hiddenLabel}\"\n            [ngStyle]=\"{'display': hiddenLabel ? 'block': 'contents'}\"\n            [innerHTML]=\"getLabel()\">\n    </legend>\n    <span *ngIf=\"showPopover()\"\n          [style.padding-left.px]=\"5\">\n      <inail-popover [iconClass]=\"popoverButtonIcon\"\n                     [buttonTitle]=\"popoverButtonTitle\"\n                     [header]=\"popoverHeader\"\n                     [content]=\"popoverContent\">\n      </inail-popover>\n    </span>\n    <br *ngIf=\"!hiddenLabel\">\n    <div class=\"radio {{inline === true ? 'inline' : ''}}\" *ngFor=\"let option of options\">\n      <label [for]=\"option?.id\">\n        <input [attr.id]=\"option?.id\"\n               #inputRadio\n               type=\"radio\"\n               class=\"{{inputClass}} {{option?.class}}\"\n               [attr.name]=\"getName()\"\n               [attr.title]=\"option?.title || title\"\n               [disabled]=\"disabled\"\n               [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n               [value]=\"option?.value\"\n               (blur)=\"onBlur()\"\n               (keyup.enter)=\"enterUp.emit()\"\n               [(ngModel)]=\"value\">\n        <span [innerHTML]=\"option?.label\"\n              [ngClass]=\"{'sr-only': hiddenLabel}\">\n        </span>\n      </label>\n      <span *ngIf=\"option?.popover === true\"\n            [style.padding-left.px]=\"5\">\n        <inail-popover [iconClass]=\"option?.popoverButtonIcon\"\n                       [buttonTitle]=\"option?.popoverButtonTitle\"\n                       [header]=\"option?.popoverHeader\"\n                       [content]=\"option?.popoverContent\">\n        </inail-popover>\n      </span>\n    </div>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\"\n          aria-hidden=\"false\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n    <div *ngIf=\"showDescription()\"\n         [id]=\"descriptionId\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <span [innerHTML]=\"description\"></span>\n    </div>\n  </fieldset>\n</div>\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Inject, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\ninterface CheckboxChanges extends FormElementComponentChanges {\n\n  checked: BooleanChange;\n}\n\nexport interface CheckboxState {\n\n  /**\n   * Valore dell'attributo name impostato nel checkbox.\n   */\n  name: string;\n\n  /**\n   * Valore dell'attributo value impostato nel checkbox.\n   */\n  value: string;\n\n  /**\n   * true se il checkbox e' selezionato, false altrimenti.\n   */\n  checked: boolean;\n\n  /**\n   * true se si tratta dello stato all'inizializzazione del componente, false altrimenti.\n   */\n  firstChange: boolean;\n}\n\n@Component({\n  selector: 'inail-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class CheckboxComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLElement>;\n\n  checkedValue: boolean;\n\n  @Input()\n  value: string;\n\n  @Output()\n  checkedChange = new EventEmitter();\n\n  @Output()\n  checkboxClick = new EventEmitter<Event>();\n\n  @Output()\n  click = new EventEmitter<Event>();\n\n  @Output()\n  stateChange = new EventEmitter<CheckboxState>();\n\n  state: CheckboxState = {name: undefined, value: undefined, checked: undefined, firstChange: true};\n\n  // Serve per effettuare un controllo sulla prima chiamata al metodo set checked\n  // per evitare che un eventuale errore impostato prima della creazione del componente\n  // venga cancellato durante le prime fasi del ciclo di vita del componente.\n  firstCheckedSetValue: boolean = true;\n\n  emitState = () => {\n\n    this.state.name = this.name;\n    this.state.value = this.value;\n    this.state.checked = this.checked;\n    this.stateChange.emit(this.state);\n    this.state.firstChange = false;\n  };\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-checkbox]`;\n    super.overrideConfig(libConfig?.checkboxComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: CheckboxChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // this.firstCheckedSetValue = changes.checked != undefined;\n\n    if(changes.checked != undefined) {\n\n      this.firstCheckedSetValue = false;\n    }\n\n    if(this.checked == undefined) {\n\n      this.checked = false;\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n\n    // this.state = {name: this.name, value: this.value, checked: this.checked, firstChange: true};\n  }\n\n  ngAfterViewInit(): void {\n\n    this.cdr.detectChanges();\n  }\n\n  labelOnClick($event: Event) {\n\n    $event.stopPropagation();\n    this.click.emit($event);\n  }\n\n  cbOnEnter() {\n    this.checked = !this.checked;\n    this.enterUp.emit()\n  }\n\n  @Input()\n  get checked() {\n    return this.checkedValue;\n  }\n\n  writeValue(value: boolean): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.checked = value;\n  }\n\n  set checked(value: boolean) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.checkedValue != value) {\n\n      this.emitDebug(`update value: ${this.checkedValue} -> ${value}`);\n      this.checkedValue = value;\n      this.cdr.detectChanges();\n\n      this.emitDebug(`this.checkedChange.emit(${value})`);\n      this.checkedChange.emit(value);\n      this.emitState();\n\n      // La condizione su this.firstCheckedSetValue serve per evitare che il messaggio di errore\n      // si tolga alla prima chiamata del metodo set checked\n      // che avviene prima della prima chiamata di ngOnChanges\n      if (this.cleanErrorOnChange && !this.firstCheckedSetValue) {\n\n        this.cleanError();\n      }\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}}\"\n     (click)=\"$event.stopPropagation()\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <div class=\"checkbox\" (click)=\"$event.stopPropagation()\">\n    <label class=\"checkbox {{labelClass}}\"\n           [attr.title]=\"labelTitle\"\n           [attr.aria-labelledby]=\"getAriaLabelledBy()\"\n           (click)=\"labelOnClick($event)\"\n           [htmlFor]=\"id\">\n      <input id=\"{{id}}\"\n             #formControl\n             class=\"{{inputClass}}\"\n             type=\"checkbox\"\n             (click)=\"checkboxClick.emit($event)\"\n             [disabled]=\"disabled\"\n             (keyup.enter)=\"cbOnEnter()\"\n             [attr.aria-required]=\"required === true ? true : undefined\"\n             [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n             [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n             [(ngModel)]='checked'\n             [attr.value]=\"value\"\n             [attr.title]=\"title\">\n      <span *ngIf=\"label\"\n            (click)=\"$event.stopPropagation()\"\n            [ngClass]=\"{'sr-only': hiddenLabel}\"\n            [innerHTML]=\"getLabel()\">\n      </span>\n    </label>\n    <span *ngIf=\"showPopover()\"\n          [style.padding-left.px]=\"5\">\n      <inail-popover [iconClass]=\"popoverButtonIcon\"\n                     [buttonTitle]=\"popoverButtonTitle\"\n                     [header]=\"popoverHeader\"\n                     [content]=\"popoverContent\">\n      </inail-popover>\n    </span>\n  </div>\n  <span *ngIf=\"showError()\"\n        [id]=\"errorId\"\n        class=\"msg msg-errore\"\n        aria-hidden=\"false\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n  </span>\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {Observable} from \"rxjs\";\nimport {setPageScroll} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst KEYCODE_TAB = 9;\nconst FOCUSABLE_SELECTOR = 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\nconst PREVENT_PADDING_STYLE_CLASS = 'inail-modal-prevent-padding-style';\n\nexport interface ModalComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-modal',\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ModalComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  title: string = getConfigValue(this.libConfig?.modalComponent?.title, undefined);\n  @Input()\n  closeButtonTitle: string = getConfigValue(this.libConfig?.modalComponent?.closeButtonTitle, 'Chiudi modale');\n  @Output()\n  close: EventEmitter<any> = new EventEmitter();\n  @Input()\n  show: Observable<boolean>;\n  @Input()\n  width: 'S' | 'M' | 'L' = getConfigValue(this.libConfig?.modalComponent?.width, 'M');\n  @Input()\n  setFocusOnError: boolean = getConfigValue(this.libConfig?.modalComponent?.setFocusOnError, undefined);\n  @Input()\n  preventPageScroll: boolean = getConfigValue(this.libConfig?.modalComponent?.preventPageScroll, true);\n\n  pageActiveElement: any;\n  previusFocusableElements: any;\n\n  closeOnClick = () => this.showModal(false);\n  scrollContentTop = () => document.querySelector(`#${this.id} .modal-body`).scrollTop = 0;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-modal]'\n    super.overrideConfig(libConfig?.modalComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: ModalComponentChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes.show?.currentValue) {\n\n      this.push(\n        changes.show.currentValue.subscribe((show: boolean) => {\n\n          if (show == undefined) {\n\n            show = true;\n          }\n\n          if (show === true) {\n\n            this.pageActiveElement = document.activeElement;\n            let focusbleElements = window['$']('body').find(FOCUSABLE_SELECTOR);\n            this.previusFocusableElements = focusbleElements.filter((index) => index < focusbleElements.index(this.pageActiveElement));\n          }\n\n          this.showModal(show);\n        })\n      );\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit() {\n  }\n\n  showModal(show: boolean) {\n\n    if (show && !this.preventPageScroll) {\n\n      this.inserisciPreventBodyPaddingStyle();\n    }\n\n    window['$'](`#${this.id}`).modal(show ? 'show' : 'hide');\n\n    if (show) {\n\n      setTimeout(() => this.trapFocus(), 500);\n\n      if (this.preventPageScroll) {\n        setPageScroll(false);\n      }\n\n      setTimeout(() => this.scrollContentTop(), 300);\n\n    } else {\n      this.close.emit();\n      setTimeout(() => this.scrollContentTop());\n\n      if (this.preventPageScroll) {\n        this.ripristinaPageScroll();\n      } else {\n        this.rimuoviPreventBodyPaddingStyle();\n      }\n\n      setTimeout(() => this.setFocusOnLastPageActiveElement(), 500);\n    }\n  }\n\n  /**\n   * L'inserimento di questo style ha lo scopo di effettuare l'override\n   * della regola sul padding-right inserita da bootstrap in fase di apertura della modale\n   * la quale causa un restringimento del body se la scrollbar non viene rimossa.\n   */\n  inserisciPreventBodyPaddingStyle() {\n\n    if (!window['$'](`.${PREVENT_PADDING_STYLE_CLASS}`).length) {\n\n      window['$']('<style>', {class: `${PREVENT_PADDING_STYLE_CLASS}`}).text('body.modal-open { padding-right: 0!important; }').appendTo('head');\n      this.rimuoviBodyPaddingRight();\n    }\n  }\n\n  rimuoviPreventBodyPaddingStyle() {\n\n    setTimeout(() => window['$'](`.${PREVENT_PADDING_STYLE_CLASS}`)?.remove(), 500);\n  }\n\n  /**\n   * Rimuove la regola sul padding-right inserita da bootstrap in fase di apertura della modale\n   */\n  rimuoviBodyPaddingRight() {\n\n    let counter: number = 0;\n\n    let handle = setInterval(() => {\n\n      if (document.body.style.paddingRight != \"\" || counter == 100) {\n\n        window['$']('body').css('padding-right', '');\n        clearInterval(handle);\n      }\n\n      counter++;\n    }, 5);\n  }\n\n  ripristinaPageScroll() {\n\n    let counter: number = 0;\n\n    // Evita il glitch grafico che fa restringere ed allargare\n    // il body alla chiusura della modale\n    // causato dall'inserimento del paddingRight ad opera\n    // di bootstrap\n    let handle = setInterval(() => {\n\n      if (document.body.style.paddingRight == \"\" || counter == 100) {\n\n        clearInterval(handle);\n        setPageScroll(true);\n      }\n\n      counter++;\n    }, 5);\n  }\n\n  trapFocus() {\n\n    let thisModal = window['$'](`#${this.id}`);\n    let focusableEls = thisModal.find(\".modal-content\").find(FOCUSABLE_SELECTOR);\n    let firstFocusableEl = focusableEls[0];\n    let lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n    firstFocusableEl.focus();\n\n    thisModal[0].addEventListener('keydown', (e) => {\n      if (e.key === 'Tab' || e.keyCode === KEYCODE_TAB) {\n\n        if (e.shiftKey) /* shift + tab */ {\n          if (document.activeElement === firstFocusableEl) {\n            lastFocusableEl.focus();\n            e.preventDefault();\n          }\n        } else /* tab */ {\n          if (document.activeElement === lastFocusableEl) {\n            firstFocusableEl.focus();\n            e.preventDefault();\n          }\n        }\n      }\n    });\n  }\n\n  setFocusOnLastPageActiveElement = () => {\n\n    if (this.pageActiveElement != undefined) {\n\n      if (window['$'](this.pageActiveElement).length > 0) {\n\n        this.pageActiveElement.focus();\n      } else {\n\n        this.setFocusOnPreviusFocusableElement(this.previusFocusableElements.length - 1)\n      }\n    }\n  }\n\n  setFocusOnPreviusFocusableElement(index: number) {\n\n    if (index >= 0) {\n\n      if (window['$'](this.previusFocusableElements[index]).length > 0) {\n\n        this.previusFocusableElements[index].focus();\n\n      } else {\n\n        this.setFocusOnPreviusFocusableElement(index - 1);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"modal fade inail-modal {{class}}\"\n     [id]=\"id\"\n     tabindex=\"-1\"\n     role=\"dialog\"\n     (keyup.escape)=\"this.showModal(false)\"\n     [attr.aria-labelledby]=\"id+'-TITOLO'\">\n  <div class=\"vertical-alignment-helper\">\n    <div class=\"modal-dialog vertical-align-center\"\n         [ngClass]=\"{'medium' : width=='M', 'wide' : width=='L'}\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <div class=\"modal-title\"\n               id=\"{{id}}-TITOLO\"\n               [innerHTML]=\"title\">\n          </div>\n          <button id=\"{{id}}_close_button\"\n                  [title]=\"closeButtonTitle\"\n                  (click)=\"closeOnClick()\"\n                  (keyup.space)=\"closeOnClick()\"\n                  (keyup.enter)=\"closeOnClick()\"\n                  class=\"close\"\n                  aria-label=\"Chiudi la finestra di dialogo\">\n            <span aria-hidden=\"true\">×</span>\n          </button>\n        </div>\n        <div class=\"modal-body\">\n          <ng-content></ng-content>\n        </div>\n        <div class=\"modal-footer\" #footer [hidden]=\"!(footer.innerText || footer.innerHTML)\">\n          <ng-content select=\"[modal-footer]\"></ng-content>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface AlertComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class AlertComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  // I/O ModalComponent\n  @Input()\n  title: string;\n  @Input()\n  closeButtonTitle: string;\n  @Output()\n  close: EventEmitter<any> = new EventEmitter();\n  @Input()\n  show: EventEmitter<boolean>;\n  @Input()\n  width: 'S' | 'M' | 'L';\n  @Input()\n  setFocusOnError: boolean = getConfigValue(this.libConfig?.alertComponent?.setFocusOnError, undefined);\n  @Input()\n  preventPageScroll: boolean = getConfigValue(this.libConfig?.alertComponent?.preventPageScroll, true);\n\n  // I/O Alert\n  @Input()\n  message: string;\n\n  @ViewChild('modalComponent')\n  modalComponent: ModalComponent;\n\n  okOnClick = () => this.show?.emit(false);\n\n  constructor(private _cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(_cdr, libConfig);\n    this.logPrefix = '[inail-alert]'\n    this.title = getConfigValue(this.libConfig?.alertComponent?.title, 'Messaggio informativo');\n    this.width = getConfigValue(this.libConfig?.alertComponent?.width, 'S');\n    this.closeButtonTitle = getConfigValue(this.libConfig?.alertComponent?.closeButtonTitle, 'Chiudi messaggio informativo');\n    super.overrideConfig(libConfig?.alertComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: AlertComponentChanges) {\n    super.ngOnChanges(changes);\n    this._cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this._cdr.detectChanges();\n  }\n\n  ngAfterViewInit() {\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n}\n","<inail-modal #modalComponent\n             [id]=\"id\"\n             [show]=\"show\"\n             [preventPageScroll]=\"preventPageScroll\"\n             [class]=\"class\"\n             [title]=\"title\"\n             [closeButtonTitle]=\"closeButtonTitle\"\n             [logOnConsole]=\"logOnConsole\"\n             [width]=\"this.width\"\n             (close)=\"close.emit($event)\"\n             (log)=\"log.emit($event)\">\n  <div class=\"row\">\n    <p *ngIf=\"message\" [innerHTML]=\"message\"></p>\n    <p [style.margin-bottom.px]=\"0\">\n      <ng-content></ng-content>\n    </p>\n  </div>\n  <ng-container modal-footer>\n    <button type=\"button\"\n            (click)=\"okOnClick()\"\n            class=\"btn btn-primary pull-right noMarginRight\">Ok\n    </button>\n  </ng-container>\n  <!--<div class=\"row alert-footer\">\n    <button type=\"button\"\n            (click)=\"okOnClick()\"\n            class=\"btn btn-primary pull-right\">Ok\n    </button>\n  </div>-->\n</inail-modal>\n","import {AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {ModalComponent} from \"../modal/modal.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\ntype ACTION = 'y' | 'n' | 'x' ;\n\nexport interface ConfirmComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-confirm',\n  templateUrl: './confirm.component.html',\n  styleUrls: ['./confirm.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  // I/O ModalComponent\n  @Input()\n  title: string;\n  @Input()\n  closeButtonTitle: string;\n  @Output()\n  close: EventEmitter<ACTION> = new EventEmitter();\n  @Input()\n  show: EventEmitter<boolean>;\n  @Input()\n  width: 'S' | 'M' | 'L';\n  @Input()\n  setFocusOnError: boolean = getConfigValue(this.libConfig?.confirmComponent?.setFocusOnError, undefined);\n  @Input()\n  preventPageScroll: boolean = getConfigValue(this.libConfig?.confirmComponent?.preventPageScroll, true);\n\n  // I/O Alert\n  @Input()\n  message: string;\n  @Input()\n  confirmButtonLabel: string = getConfigValue(this.libConfig?.confirmComponent?.confirmButtonLabel, 'Si');\n  @Input()\n  rejectButtonLabel: string = getConfigValue(this.libConfig?.confirmComponent?.rejectButtonLabel, 'No');\n  @Output()\n  confirm: EventEmitter<void> = new EventEmitter();\n  @Output()\n  reject: EventEmitter<void> = new EventEmitter();\n\n  @ViewChild('modalComponent')\n  modalComponent: ModalComponent;\n  action: ACTION;\n\n  constructor(private _cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(_cdr, libConfig);\n    this.logPrefix = '[inail-confirm]'\n    this.title = getConfigValue(this.libConfig?.confirmComponent?.title, 'Conferma operazione');\n    this.message = getConfigValue(this.libConfig?.confirmComponent?.message, 'Confermare l\\'operazione richiesta?');\n    this.width = getConfigValue(this.libConfig?.confirmComponent?.width, 'S');\n    this.closeButtonTitle = getConfigValue(this.libConfig?.confirmComponent?.closeButtonTitle, 'Chiudi modale di conferma');\n    super.overrideConfig(libConfig?.confirmComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: ConfirmComponentChanges) {\n    super.ngOnChanges(changes);\n    this._cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    this._cdr.detectChanges();\n  }\n\n  ngAfterViewInit() {\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n  confirmOnClick() {\n\n    this.action = 'y';\n    this.show.emit(false);\n    this.confirm.emit();\n    this.action = undefined;\n  }\n\n  rejectOnClick() {\n\n    this.action = 'n';\n    this.show.emit(false);\n    this.reject.emit();\n    this.action = undefined;\n  }\n\n  onClose() {\n\n    this.close.emit(this.action || 'x');\n  }\n}\n","<inail-modal #modalComponent\n             [id]=\"id\"\n             [show]=\"show\"\n             [preventPageScroll]=\"preventPageScroll\"\n             [class]=\"class\"\n             [title]=\"title\"\n             [closeButtonTitle]=\"closeButtonTitle\"\n             [logOnConsole]=\"logOnConsole\"\n             [width]=\"width\"\n             (close)=\"onClose()\"\n             (log)=\"log.emit($event)\">\n  <div class=\"row\">\n    <p *ngIf=\"message\" [innerHTML]=\"message\"></p>\n    <p [style.margin-bottom.px]=\"0\">\n      <ng-content></ng-content>\n    </p>\n  </div>\n  <ng-container modal-footer>\n    <inail-button [label]=\"rejectButtonLabel\"\n                  (onclick)=\"rejectOnClick()\">\n    </inail-button>\n    <inail-button [class]=\"'pull-right noMarginRight'\"\n                  [setFocusOnError]=\"setFocusOnError\"\n                  [label]=\"confirmButtonLabel\"\n                  (onclick)=\"confirmOnClick()\">\n    </inail-button>\n  </ng-container>\n  <!--<div class=\"row confirm-footer\">\n    <inail-button [label]=\"rejectButtonLabel\"\n                  (onclick)=\"rejectOnClick()\">\n    </inail-button>\n    <inail-button [class]=\"'pull-right'\"\n                  [setFocusOnError]=\"setFocusOnError\"\n                  [label]=\"confirmButtonLabel\"\n                  (onclick)=\"confirmOnClick()\">\n    </inail-button>\n  </div>-->\n</inail-modal>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChange,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\ninterface InailTablePageSelectorComponentChanges extends BasicUxElementComponentChanges {\n\n  listSize?: ElementsChange,\n  pageSize?: PageSizeChange,\n  currentPage?: CurrentPageChange\n}\n\ninterface ElementsChange extends SimpleChange {\n\n  currentValue: number\n}\n\ninterface PageSizeChange extends SimpleChange {\n\n  currentValue: number\n}\n\ninterface CurrentPageChange extends SimpleChange {\n\n  currentValue: number\n}\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\n@Component({\n  selector: 'inail-table-page-selector',\n  templateUrl: './inail-table-page-selector.component.html',\n  styleUrls: ['./inail-table-page-selector.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class InailTablePageSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @Input()\n  tableId: string;\n\n  // Obbligatorio\n  @Input()\n  listSize: number = 0;\n\n  // Obbligatorio\n  @Input()\n  pageSize: number = DEFAULT_TABLE_LENGTH;\n\n  // Obbligatorio se paginazione esterna\n  @Input()\n  currentPage: number = 1;\n\n  @Output()\n  select: EventEmitter<number> = new EventEmitter<number>();\n\n  length: number;\n  externalPagination: boolean;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super(cdr);\n    this.logPrefix = '[inail-table-page-selector]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: InailTablePageSelectorComponentChanges) {\n\n    super.ngOnChanges(changes);\n\n    // Se si sta impostando il numero di pagina dall'esterno\n    // vuol dire che si sta effettuando la paginazione dall'esterno.\n    if (!this.externalPagination\n      && changes.currentPage\n      && changes.currentPage.firstChange\n      && changes.currentPage.currentValue != undefined) {\n\n      this.externalPagination = true;\n    }\n\n    if (changes?.pageSize && changes?.pageSize.currentValue == undefined) {\n\n      this.pageSize = DEFAULT_TABLE_LENGTH;\n    }\n\n    if (changes?.listSize && changes?.listSize.currentValue == undefined) {\n\n      this.listSize = 0;\n    }\n\n    if (changes?.currentPage && changes?.currentPage.currentValue == undefined) {\n\n      this.currentPage = 1;\n    }\n\n    if (changes && (changes.pageSize || changes.listSize)) {\n\n      this.calcolaNumeroPagine();\n\n      if (!this.externalPagination) {\n\n        this.currentPage = 1;\n      }\n    }\n\n    if (changes?.currentPage?.currentValue != undefined) {\n\n      if (changes.currentPage.currentValue > this.length) {\n\n        this.currentPage = this.length;\n        this.emitCurrentPage(this.currentPage);\n\n      } else if (changes.currentPage.currentValue < 1) {\n\n        this.currentPage = 1;\n        this.emitCurrentPage(this.currentPage);\n      }\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n  }\n\n  calcolaNumeroPagine() {\n\n    this.length = Math.floor(this.listSize / this.pageSize);\n\n    if ((this.listSize % this.pageSize) > 0) {\n\n      this.length++;\n    }\n\n    if (this.length == 0 || this.length == undefined) {\n\n      this.length = 1;\n    }\n  }\n\n  get pages(): any[] {\n\n    return new Array(this.length);\n  }\n\n  set(n: number) {\n\n    if (n > 0 && n <= this.length) {\n\n      if (!this.externalPagination) {\n\n        this.currentPage = n;\n      }\n\n      this.emitCurrentPage(n);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  prev() {\n\n    this.set(this.currentPage - 1);\n  }\n\n  next() {\n\n    this.set(this.currentPage + 1);\n  }\n\n  emitCurrentPage(page: number) {\n    this.select.emit(page);\n  }\n\n  ngAfterViewInit(): void {\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n}\n","<ng-container *ngIf=\"listSize > pageSize\">\n  <div class=\"bottom paginate-component inail-table-page-selector\">\n    <div class=\"dataTables_paginate paging_simple_numbers\">\n      <ul class=\"pagination\">\n\n        <li class=\"paginate_button previous\"\n            [ngClass]=\"{'disabled': currentPage == 1}\">\n          <a href=\"javascript:void(0)\" (click)=\"prev()\"\n             [attr.aria-label]=\"'Visualizza la pagina precedente della tabella'\"\n             [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\">\n            <span class=\"sr-only\">indietro</span>\n          </a>\n        </li>\n\n        <ng-container *ngIf=\"pages.length <=10\">\n          <ng-container *ngFor=\"let p of pages; index as i\">\n            <li class=\"paginate_button\"\n                [ngClass]=\"{'active': currentPage == i+1}\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina '+(i+1)+' della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(i+1)\">{{i + 1}}</a>\n            </li>\n          </ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"pages.length > 10\">\n\n          <ng-container *ngIf=\"currentPage <= 4 \">\n\n            <ng-container *ngFor=\"let p of [0, 1, 2, 3, 4]; index as i\">\n              <li class=\"paginate_button\"\n                  [ngClass]=\"{'active': currentPage == i+1}\">\n                <a href=\"javascript:void(0)\"\n                   [attr.aria-label]=\"'Visualizza la pagina '+(i+1)+' della tabella'\"\n                   [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                   (click)=\"set(i+1)\">{{i + 1}}</a>\n              </li>\n            </ng-container>\n\n          </ng-container>\n\n          <ng-container *ngIf=\"currentPage > 4\">\n            <li class=\"paginate_button\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina 1 della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(1)\">1</a>\n            </li>\n            <li class=\"paginate_button disabled\">\n              <a href=\"javascript:void(0)\">...</a>\n            </li>\n          </ng-container>\n\n          <ng-container *ngIf=\"currentPage > 4 && currentPage < (pages.length - 3)\">\n            <li class=\"paginate_button\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina '+(currentPage-1)+' della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(currentPage-1)\">{{currentPage - 1}}</a>\n            </li>\n            <li class=\"paginate_button active\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina '+currentPage+' della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(currentPage)\">{{currentPage}}</a>\n            </li>\n            <li class=\"paginate_button\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina '+(currentPage-1)+' della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(currentPage+1)\">{{currentPage + 1}}</a>\n            </li>\n          </ng-container>\n\n          <ng-container *ngIf=\"currentPage < (pages.length - 3)\">\n            <li class=\"paginate_button disabled\">\n              <a href=\"javascript:void(0)\">...</a>\n            </li>\n            <li class=\"paginate_button\">\n              <a href=\"javascript:void(0)\"\n                 [attr.aria-label]=\"'Visualizza la pagina '+(pages.length)+' della tabella'\"\n                 [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                 (click)=\"set(pages.length)\">{{pages.length}}</a>\n            </li>\n          </ng-container>\n\n          <ng-container *ngIf=\"currentPage >= (pages.length - 3)\">\n            <ng-container *ngFor=\"let p of [(pages.length - 4), (pages.length - 3), (pages.length - 2), (pages.length - 1), (pages.length)]\">\n              <li class=\"paginate_button\"\n                  [ngClass]=\"{'active': currentPage == p}\">\n                <a href=\"javascript:void(0)\"\n                   [attr.aria-label]=\"'Visualizza la pagina '+p+' della tabella'\"\n                   [attr.aria-controls]=\"tableId != undefined ? tableId : undefined\"\n                   (click)=\"set(p)\">{{p}}</a>\n              </li>\n            </ng-container>\n\n          </ng-container>\n        </ng-container>\n\n        <li class=\"paginate_button next\"\n            [ngClass]=\"{'disabled': currentPage == pages.length}\">\n          <a href=\"javascript:void(0)\"\n             [attr.aria-label]=\"'Visualizza la pagina successiva della tabella'\"\n             [attr.aria-controls]=\"tableId\"\n             (click)=\"next()\">\n            <span class=\"sr-only\">avanti</span>\n          </a>\n        </li>\n      </ul>\n    </div>\n  </div>\n</ng-container>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\n\nexport interface TablePageLengthSelectorComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-table-page-length-selector',\n  templateUrl: './table-page-length-selector.component.html',\n  styleUrls: ['./table-page-length-selector.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class TablePageLengthSelectorComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  selectedValue: number;\n\n  @Input()\n  tableId: string;\n\n  @Input()\n  label: string = 'Elementi per pagina';\n\n  @Input()\n  options: number[] = [10, 25, 50, 100];\n\n  @Output()\n  valueChange: EventEmitter<number> = new EventEmitter();\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super(cdr);\n    this.logPrefix = '[inail-table-page-length-selector]';\n    this.detach();\n  }\n\n  ngOnChanges(changes: TablePageLengthSelectorComponentChanges): void {\n\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  @Input()\n  get value(): number {\n    return this.selectedValue;\n  }\n\n  set value(val: number) {\n\n    // console.warn('set value', val, this.valueValue)\n\n    if (val != this.selectedValue) {\n\n      this.selectedValue = val;\n      this.valueChange.emit(this.selectedValue);\n    }\n  }\n}\n","<div class=\"dataTables_length inail-table-page-length-selector\">\n  <label>\n    <span [innerHTML]=\"label\"></span>&nbsp;\n    <select name=\"tabella_length\"\n            [(ngModel)]=\"this.value\"\n            [attr.aria-controls]=\"tableId\"\n            class=\"form-control input-sm\">\n      <option *ngFor=\"let n of options\"\n              value=\"{{n}}\">\n        {{n}}\n      </option>\n      <!--<option value=\"10\">10</option>\n      <option value=\"25\">25</option>\n      <option value=\"50\">50</option>\n      <option value=\"100\">100</option>-->\n    </select>\n  </label>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\n\nexport class SortingInfo {\n\n  property: string;\n  direction: number;\n}\n\nexport interface ThLabelComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-th-label',\n  templateUrl: './th-label.component.html',\n  styleUrls: ['./th-label.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ThLabelComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  public static readonly ASC: number = 1;\n  public static readonly DESC: number = -1;\n  public static readonly UNSORTED: number = 0;\n\n  ASC = ThLabelComponent.ASC;\n  DESC = ThLabelComponent.DESC;\n  UNSORTED = ThLabelComponent.UNSORTED;\n\n  direction: number;\n  elementRef: ElementRef;\n  thParent: HTMLElement;\n\n  // Obbligatorio\n  @Input()\n  label: string;\n\n  // Obbligatorio\n  @Input()\n  property: string;\n\n  @Input()\n  title: string;\n\n  @Input()\n  sortable: boolean;\n\n  @Output()\n  click: EventEmitter<SortingInfo> = new EventEmitter<SortingInfo>();\n\n  constructor(private cdr: ChangeDetectorRef, element: ElementRef) {\n\n    super(cdr);\n    this.logPrefix = '[inail-th-label]';\n\n    this.direction = ThLabelComponent.UNSORTED;\n    this.elementRef = element;\n\n    this.detach();\n  }\n\n  ngOnChanges(changes: ThLabelComponentChanges) {\n    super.ngOnChanges(changes);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n\n    this.cdr.detectChanges();\n    this.thParent = this.elementRef.nativeElement.parentNode;\n\n    if(this.thParent != undefined) {\n      this.thParent.onclick = (ev) => this.onClick(ev);\n      this.thParent.onkeyup = (ev) => {\n        if(ev.key === 'Enter' || ev.keyCode === 13) {\n          this.onClick(ev);\n        }\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  getAriaSortValue(direction: number): string {\n\n    let value: string\n\n    switch (direction) {\n\n      case ThLabelComponent.ASC:\n        value = 'ascending';\n        break\n      case ThLabelComponent.DESC:\n        value = 'descending';\n        break\n      case ThLabelComponent.UNSORTED:\n        value = 'none';\n        break\n    }\n\n    return value;\n  }\n\n  onClick(event) {\n\n    event.stopPropagation();\n    this.emettiEventoOrdinamento();\n    this.cdr.detectChanges();\n  }\n\n  private emettiEventoOrdinamento() {\n\n    if (this.sortable && this.property) {\n\n      this.direction = this.direction * -1;\n\n      if (this.direction == ThLabelComponent.UNSORTED) {\n\n        this.direction = ThLabelComponent.ASC;\n      }\n\n      let info: SortingInfo = {\n        direction: this.direction,\n        property: this.property\n      };\n\n      this.click.emit(info);\n    }\n  }\n\n  public setAsUnsorted() {\n\n    this.direction = ThLabelComponent.UNSORTED;\n  }\n}\n","<!--<a *ngIf=\"sortable\"\n   href=\"javascript:void(0)\"\n   role=\"button\"\n   class=\"inail-th-label\"\n   [attr.aria-label]=\"label + ': attiva per ordinare la colonna in ordine ' + (direction == ASC ? 'decrescente' : 'crescente')\"\n   (click)=\"onClick($event)\">\n  <span class=\"sortable thLabel\"\n        [innerHTML]=\"label\"\n        [attr.title]=\"title\">\n  </span>\n</a>\n<span *ngIf=\"!sortable\"\n      (click)=\"onClick($event)\"\n      [innerHTML]=\"label\"\n      [attr.title]=\"title\">\n</span>-->\n\n<span [innerHTML]=\"label\"\n      [attr.title]=\"title\">\n</span>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport {ReplaySubject} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface TrCheckboxComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-tr-checkbox',\n  templateUrl: './tr-checkbox.component.html',\n  styleUrls: ['./tr-checkbox.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class TrCheckboxComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  label: string;\n  @Input()\n  title: string;\n  @Input()\n  value: string;\n  // @Input()\n  // checkAll: boolean = false;\n  @Input()\n  hiddenLabel: boolean = getConfigValue(this.libConfig?.trCheckboxComponent?.hiddenLabel, true);\n  @Input()\n  disabled: boolean = false;\n  @Output()\n  initComplete: ReplaySubject<void> = new ReplaySubject<void>();\n  @Output()\n  onclick: EventEmitter<void> = new EventEmitter<void>();\n  @Output()\n  onDestroy: EventEmitter<void> = new EventEmitter<void>();\n\n  public checked: boolean = false;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-tr-checkbox]`;\n    super.overrideConfig(libConfig?.trCheckboxComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: TrCheckboxComponentChanges) {\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges()\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n\n    if (this.label == undefined) {\n\n      this.label = this.value\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    this.initComplete.next();\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n    this.onDestroy.emit();\n  }\n\n  clickHandler() {\n\n    if (!this.disabled) {\n\n      this.onclick.emit();\n    }\n  }\n\n  setChecked(b: boolean) {\n\n    this.checked = b;\n    this.cdr.detectChanges();\n  }\n}\n","<inail-checkbox [label]=\"label\"\n                [id]=\"this.id\"\n                [class]=\"'inail-tr-checkbox noPaddingRight'\"\n                [hiddenLabel]=\"hiddenLabel\"\n                [disabled]=\"disabled\"\n                [title]=\"title\"\n                [checked]=\"checked\"\n                (click)=\"clickHandler()\">\n</inail-checkbox>\n","import {\n  AfterViewChecked,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChange,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../../responsive-element.component\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {InailTablePageSelectorComponent} from \"../inail-table-page-selector/inail-table-page-selector.component\";\nimport {SortingInfo, ThLabelComponent} from \"../th-label/th-label.component\";\nimport {TrCheckboxComponent} from \"../tr-checkbox/tr-checkbox.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst DEFAULT_TABLE_LENGTH: number = 10;\n\ntype SortDirection = 'asc' | 'desc';\n\nconst ASC: SortDirection = 'asc';\nconst DESC: SortDirection = 'desc';\n\nexport interface SortState {\n\n  sortProperty?: string;\n  sortDirection?: 'asc' | 'desc';\n}\n\nexport interface PaginationState extends SortState {\n\n  fullListSize?: number;\n  pageNumber?: number;\n  pageIndex?: number;\n  pageSize?: number;\n}\n\ninterface TableComponentChanges extends ResponsiveElementComponentChanges {\n\n  dataSource?: SimpleChange,\n  paginationState?: SimpleChange,\n  initialSort?: SimpleChange,\n  doPagination?: SimpleChange,\n  noDataFound?: SimpleChange\n  elementsPerPage?: SimpleChange\n}\n\n@Component({\n  selector: 'inail-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class TableComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n\n  tableLength: number;\n  currentPage: number;\n  externalPaginationSorting: boolean = false;\n\n  // --- Paginazione INTERNA -----------------------------------------------\n\n  // Obbligatorio\n  @Input()\n  dataSource: any[];\n\n  // Obbligatorio\n  @Input()\n  displayedData: any[];\n\n  @Output()\n  displayedDataChange = new EventEmitter<any[]>();\n\n  @Input()\n  doPagination: Observable<PaginationState>;\n\n  @Input()\n  elementsPerPage: number = getConfigValue(this.libConfig?.tableComponent?.elementsPerPage, DEFAULT_TABLE_LENGTH);\n\n  @Input()\n  initialSort: SortState;\n\n  // --- Paginazione ESTERNA -----------------------------------------------\n\n  // Obbligatorio\n  @Input()\n  paginationState: PaginationState;\n\n  // -----------------------------------------------------------------------\n\n  @Input()\n  elementsPerPageOptions: number[] = getConfigValue(this.libConfig?.tableComponent?.elementsPerPageOptions, [10, 25, 50, 100]);\n\n  // @Input()\n  // waiting: boolean = false;\n\n  // @Input()\n  // waitingText: string = 'Recupero in corso...';\n\n  @Input()\n  noDataFound: boolean = undefined;\n\n  @Input()\n  noDataFoundText: string = getConfigValue(this.libConfig?.tableComponent?.noDataFoundText, 'Nessun elemento trovato');\n\n  @Input()\n  disablePagination: boolean = false;\n\n  @Output()\n  pagination = new EventEmitter<PaginationState>();\n\n  @Input()\n  tallRows: boolean = getConfigValue(this.libConfig?.tableComponent?.tallRows, false);\n\n  @Input()\n  caption: string;\n\n  @Input()\n  captionHidden: boolean = getConfigValue(this.libConfig?.tableComponent?.captionHidden, false);\n\n  @Input()\n  showFullListSize: boolean = getConfigValue(this.libConfig?.tableComponent?.showFullListSize, false);\n\n  @Input()\n  fullListSizeText: string = getConfigValue(this.libConfig?.tableComponent?.fullListSizeText, \"Elementi totali:\");\n\n  @Input()\n  bgWhite: boolean = getConfigValue(this.libConfig?.tableComponent?.bgWhite, true);\n\n  @Input()\n  description: string;\n\n  @Input()\n  tableClass: string;\n\n  @Input()\n  title: string;\n\n  @Input()\n  titleClass: string;\n\n  @Input()\n  detailsLink: string;\n\n  @Input()\n  selectableRowValues: string[];\n\n  @Output()\n  detailsClick: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input()\n  checkedRows: string[];\n\n  @Output()\n  checkedRowsChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n  @ContentChildren(ThLabelComponent, {descendants: true})\n  thLabelComponents: QueryList<ThLabelComponent>;\n\n  @ContentChildren(TrCheckboxComponent, {descendants: true})\n  trCheckboxComponents: QueryList<TrCheckboxComponent>;\n\n  @ViewChild(InailTablePageSelectorComponent)\n  tablePageSelectorComponent: InailTablePageSelectorComponent;\n\n  @ViewChild('baseFooter')\n  baseFooter: ElementRef;\n\n  visualizzaBaseFooter: boolean = true;\n\n  numeroColonne: number;\n\n  // Insiemi delle Subscription agli eventi dei TrCheckboxComponent\n  trcbInitSubscriptions: { [id: string]: Subscription } = {};\n  trcbClickSubscriptions: { [id: string]: Subscription } = {};\n  trcbDestroySubscriptions: { [id: string]: Subscription } = {};\n\n  righeSelezionate: string[] = [];\n  righeSelezionabili: string[] = [];\n\n  getPageSize = (): number => this.externalPaginationSorting ? this.paginationState.pageSize : this.tableLength;\n  getListSize = (): number => this.externalPaginationSorting ? this.paginationState.fullListSize : this.dataSource.length;\n  getCurrentPage = (): number => this.externalPaginationSorting && this.paginationState ? this.paginationState.pageNumber : this.currentPage;\n  getFullListSize = (): number => this.externalPaginationSorting ? this.paginationState?.fullListSize : this.dataSource?.length;\n\n  showNoDataFound = (): boolean => this.noDataFound != undefined ? this.noDataFound : (this.externalPaginationSorting ? this.paginationState?.fullListSize === 0 : this.dataSource?.length === 0);\n\n  // Operatori per gestione selezione righe\n  isChecked = (trcbValue: string): boolean => this.righeSelezionate.some(value => value == trcbValue);\n  isAllChecked = (): boolean => this.righeSelezionabili.length > 0 && this.righeSelezionabili.every(this.isChecked);\n  isThCheckbox = (trcb: TrCheckboxComponent): boolean => document.querySelectorAll(`th #${trcb.id}`).length > 0;\n  isSelezionabile = (value: string) => this.righeSelezionabili.some(valoreSelezionabile => valoreSelezionabile == value);\n\n  constructor(private cdr: ChangeDetectorRef,\n              private renderer: Renderer2,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-table]';\n    super.overrideConfig(libConfig?.tableComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: TableComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    // Controllo se la paginazione richiesta e' interna o esterna\n    if (!this.externalPaginationSorting\n      && changes.paginationState?.firstChange === true\n      && changes.paginationState?.currentValue != undefined) {\n\n      this.externalPaginationSorting = true;\n    }\n\n    // Normalizzazione pageNumber e pageIndex\n    if (changes.paginationState?.currentValue) {\n\n      this.checkAndFixPageNumberAndPageIndex(this.paginationState);\n\n      if (this.paginationState.pageNumber == undefined) {\n\n        this.paginationState.pageNumber = 1;\n      }\n\n      if (this.paginationState.pageIndex == undefined) {\n\n        this.paginationState.pageIndex = 0;\n      }\n    }\n\n    // Se per la paginazione esterna viene specificata una proprieta di sorting\n    // attivo il componente thLabel associato\n    if (changes.paginationState?.currentValue?.sortProperty) {\n\n      this.attivaThLabelOrdinamentoSpecificato();\n    }\n\n    // Se per la paginazione interna viene specificato un ordinamento iniziale\n    // attivo il componente thLabel associato\n    if (changes.initialSort?.currentValue?.sortProperty) {\n\n      this.attivaThLabelOrdinamentoSpecificato();\n    }\n\n    // Verifico se e' cambiata la lista degli elementi in input.\n    // Nel caso in cui si stia effettuando una paginazione interna\n    // emetto il sottoinsieme inerente la prima pagina\n    if (changes.dataSource != undefined\n      && !changes.dataSource.firstChange\n      && !this.externalPaginationSorting) {\n\n      if (this.tablePageSelectorComponent) {\n\n        this.tablePageSelectorComponent.currentPage = 1;\n      }\n\n      this.emitSubset(1);\n    }\n\n    // Richiesta di paginazione\n    if (!this.externalPaginationSorting\n      && changes.doPagination?.currentValue) {\n\n      this.push(\n        changes.doPagination.currentValue.subscribe((info: PaginationState) => {\n\n          this.checkAndFixPageNumberAndPageIndex(info);\n          this.lengthOnChange(info.pageSize);\n          setTimeout(() => this.doSorting(info.sortProperty, info.sortDirection), 100);\n          setTimeout(() => this.pageOnChange(info.pageNumber), 200);\n        })\n      );\n    }\n\n    // Elementi per pagina\n    if (changes.elementsPerPage != undefined\n      && !changes.elementsPerPage.firstChange\n      && !this.externalPaginationSorting) {\n\n      this.lengthOnChange(this.elementsPerPage);\n    }\n\n    // Calcolo il numero di colonne visibili\n    if (changes.noDataFound?.currentValue === true) {\n\n      // setTimeout(() => this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length);\n      this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;\n    }\n\n    if (changes.selectableRowValues?.currentValue) {\n\n      this.righeSelezionabili = [...changes.selectableRowValues?.currentValue];\n    }\n\n    // Righe selezionate in input\n    if (changes.checkedRows?.currentValue) {\n\n      this.righeSelezionate = [...changes.checkedRows?.currentValue];\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  // Verifica la congruenza tra pagaNumber e pageIndex\n  // e ne aggiusta i valori\n  // dando la priorita al pagaNumber\n  checkAndFixPageNumberAndPageIndex(state: PaginationState) {\n\n    if (state) {\n\n      if (state.pageNumber == undefined && state.pageIndex != undefined) {\n\n        if (state.pageIndex < 0) {\n\n          state.pageIndex = 0;\n        }\n\n        state.pageNumber = state.pageIndex + 1;\n\n      } else if (state.pageNumber != undefined) {\n\n        if (state.pageNumber < 1) {\n\n          state.pageNumber = 1;\n        }\n\n        // Il page number ha sempre la priorita sul page index\n        state.pageIndex = state.pageNumber - 1;\n      }\n    }\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.tableLength = this.externalPaginationSorting ? this.paginationState.pageSize : this.elementsPerPage;\n\n    if (!this.externalPaginationSorting) {\n\n      setTimeout(() => {\n        // console.info('ngOnInit---', this.currentPage)\n        this.emitSubset(this.currentPage || 1);\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n    this.inizializzaTabella(this.thLabelComponents);\n    this.lookAtThLabel(this.thLabelComponents);\n    this.attivaThLabelOrdinamentoSpecificato();\n\n    setTimeout(() => this.visualizzaBaseFooter = this.baseFooter?.nativeElement.childElementCount > 0);\n    this.cdr.detectChanges();\n    this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;\n\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewChecked(): void {\n\n    this.gestisciTrCheckbox();\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  /**\n   * Gestione dei checkbox per la selezione delle righe\n   */\n  public gestisciTrCheckbox() {\n\n    if (this.trCheckboxComponents?.length > 0) {\n\n      this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n        // Gestione evento initComplete\n        // Effettuo la subscribe se non ne e' gia presente\n        // una Subscription per quel trcb\n        if (this.trcbInitSubscriptions[trcb.id] == undefined) {\n\n          this.trcbInitSubscriptions[trcb.id] = trcb.initComplete.subscribe(() => {\n\n            // Se l'insieme di tutti i valori selezionabili\n            // non e' stato passato dall'esterno\n            if (this.selectableRowValues == undefined) {\n\n              // Ricalcolo i valori selezionabili\n              this.righeSelezionabili = this.trCheckboxComponents.filter(trcb => !this.isThCheckbox(trcb)).map(trcb => trcb.value);\n            }\n          });\n        }\n\n        // Gestione evento click\n        if (this.trcbClickSubscriptions[trcb.id] == undefined) {\n\n          this.trcbClickSubscriptions[trcb.id] = trcb.onclick.subscribe(() => {\n\n            if (this.isThCheckbox(trcb)) {\n\n              this.checkAllOnClick();\n            } else {\n              this.checkOnClick(trcb.value);\n            }\n\n            this.checkedRowsChange.emit(this.righeSelezionate);\n          });\n        }\n\n        // Gestione evento onDestroy\n        // Quando un tcrb emette l'evento onDestroy\n        // effettuo l'unsubscribe a tutti gli eventi ad esso collegato\n        if (this.trcbDestroySubscriptions[trcb.id] == undefined) {\n\n          this.trcbDestroySubscriptions[trcb.id] = trcb.onDestroy.subscribe(() => {\n\n            this.trcbInitSubscriptions[trcb.id]?.unsubscribe();\n            this.trcbClickSubscriptions[trcb.id]?.unsubscribe();\n            this.trcbDestroySubscriptions[trcb.id]?.unsubscribe();\n\n            // In questo modo evito che gli oggetti crescano in maniera incontrollata\n            delete this.trcbInitSubscriptions[trcb.id];\n            delete this.trcbClickSubscriptions[trcb.id];\n            delete this.trcbDestroySubscriptions[trcb.id];\n          });\n        }\n      });\n\n      // Indico ad un trcb se e' selezionato.\n      this.trCheckboxComponents.forEach((trcb: TrCheckboxComponent) => {\n\n        if (trcb) {\n\n          if (this.isThCheckbox(trcb)) {\n\n            trcb.setChecked(this.isAllChecked());\n          } else {\n            trcb.setChecked(this.isChecked(trcb.value));\n          }\n        }\n      });\n    }\n  }\n\n  /**\n   * Click di un trcb\n   *\n   * @param valueCb\n   * @private\n   */\n  private checkOnClick(valueCb: string) {\n\n    if (this.isChecked(valueCb)) {\n\n      this.righeSelezionate = this.righeSelezionate.filter(value => value != valueCb);\n    } else {\n\n      this.righeSelezionate.push(valueCb);\n    }\n  }\n\n  checkAllOnClick() {\n\n    if (this.isAllChecked()) {\n\n      this.righeSelezionate = this.righeSelezionate.filter(value => !this.isSelezionabile(value));\n\n    } else {\n\n      this.righeSelezionate = this.righeSelezionate.concat(this.righeSelezionabili.filter(value => !this.isChecked(value)));\n    }\n  }\n\n  /**\n   * Effettua varie operazioni di inizializzazione della tabella\n   */\n  public inizializzaTabella(thLabelComponents: QueryList<ThLabelComponent>) {\n\n    if (thLabelComponents) {\n\n      // Inizializzo tutti i th della tabella\n      thLabelComponents.forEach(\n        (thLabel: ThLabelComponent) => {\n\n          // this.modificaTh(thLabel);\n          this.inizializzaTh(thLabel);\n        })\n    }\n  }\n\n  /**\n   * Si mette in ascolto sugli eventi emessi dai thLabelComponents dati in input\n   * per poter eseguire le opportune azioni\n   *\n   * @param thLabelComponents\n   */\n  public lookAtThLabel(thLabelComponents: QueryList<ThLabelComponent>) {\n\n    if (thLabelComponents) {\n\n      this.thLabelComponents = thLabelComponents;\n\n      thLabelComponents.forEach(\n        (thLabel: ThLabelComponent) => {\n\n          if (thLabel) {\n\n            // Subscribe al click del th label\n            this.push(\n              thLabel.click.subscribe(\n                (info: SortingInfo) => {\n\n                  this.performSorting(info, thLabel);\n                }\n              )\n            );\n          }\n        }\n      )\n    }\n  }\n\n  /**\n   *\n   * @param sortProperty\n   * @param sortDirection\n   */\n  public doSorting(sortProperty: string, sortDirection: string) {\n\n    let info: SortingInfo = {\n      property: sortProperty,\n      direction: sortDirection == ASC ? ThLabelComponent.ASC : sortDirection == DESC ? ThLabelComponent.DESC : undefined\n    }\n\n    let thLabel: ThLabelComponent = this.thLabelComponents.find(item => item.property == sortProperty);\n\n    this.performSorting(info, thLabel)\n  }\n\n  /**\n   *\n   * @param info\n   * @param thLabel\n   */\n  performSorting(info: SortingInfo, thLabel: ThLabelComponent) {\n\n    if (thLabel != undefined && info != undefined && info.property != undefined) {\n\n      let eventoPaginazione: PaginationState = {};\n\n      eventoPaginazione.sortProperty = info.property;\n      eventoPaginazione.sortDirection = info.direction == ThLabelComponent.ASC ? ASC : info.direction == ThLabelComponent.DESC ? DESC : undefined;\n      eventoPaginazione.pageNumber = 1;\n\n      this.resetDirectionSorting(thLabel, this.thLabelComponents);\n      this.modificaTh(thLabel);\n\n      if (this.externalPaginationSorting) {\n\n        eventoPaginazione.fullListSize = this.paginationState.fullListSize;\n        eventoPaginazione.pageSize = this.paginationState.pageSize;\n      } else {\n\n        this.ordina(info);\n        this.emitSubset(1);\n      }\n\n      // this.pagination.emit(eventoPaginazione);\n      this.emitPagination(eventoPaginazione);\n    }\n  }\n\n  /**\n   * Reimposta ad unsorted tutti i th label ad eccezione\n   * di quelli dato in input\n   *\n   * @param thLabel\n   * @param thLabelComponents\n   */\n  private resetDirectionSorting(thLabel: ThLabelComponent, thLabelComponents: QueryList<ThLabelComponent>) {\n\n    if (thLabelComponents) {\n\n      thLabelComponents.forEach((item: ThLabelComponent) => {\n\n        if (item && item.property != thLabel.property) {\n\n          item.setAsUnsorted();\n          this.modificaTh(item);\n        }\n      })\n    }\n  }\n\n  /**\n   *\n   * @param thLabelComponent\n   * @private\n   */\n  private inizializzaTh(thLabelComponent: ThLabelComponent) {\n\n    if (thLabelComponent && thLabelComponent.sortable === true) {\n\n      let th: HTMLElement = thLabelComponent.thParent\n\n      if(th) {\n\n        this.renderer.setAttribute(th, 'tabindex', '0');\n        this.renderer.setAttribute(th, 'aria-controls', this.id);\n        this.renderer.addClass(th, 'sorting');\n        this.modificaTh(thLabelComponent);\n      }\n    }\n  }\n\n  /**\n   * Modifica l'elemento th che contiene il ThLabelComponent\n   */\n  private modificaTh(thLabelComponent: ThLabelComponent) {\n\n    if (thLabelComponent && thLabelComponent.sortable === true) {\n\n      let th: HTMLElement = thLabelComponent.thParent;\n\n      if (th) {\n\n        this.removeSortClass(th);\n        this.renderer.addClass(th, this.getThSortClass(thLabelComponent.direction));\n\n        if (thLabelComponent.direction == ThLabelComponent.UNSORTED) {\n\n          this.renderer.removeAttribute(th, 'aria-sort');\n          this.renderer.setAttribute(th, 'aria-label', `Colonna ${thLabelComponent.label} non ordinata, attiva per ordinare in ordine crescente`);\n        }\n        else {\n\n          this.renderer.setAttribute(th, 'aria-sort', this.getAriaSortValue(thLabelComponent.direction));\n          this.renderer.setAttribute(th, 'aria-label', `Colonna ${thLabelComponent.label} ordinata in ordine ${thLabelComponent.direction == ThLabelComponent.ASC ? 'crescente' : 'decrescente'}, attiva per ordinare in ordine ${thLabelComponent.direction == ThLabelComponent.ASC ? 'decrescente' : 'crescente'}`);\n        }\n      }\n\n      this.cdr.detectChanges();\n    }\n  }\n\n  /**\n   *\n   * @param element\n   */\n  private removeSortClass(element: HTMLElement) {\n\n    this.renderer.removeClass(element, 'sorting_asc');\n    this.renderer.removeClass(element, 'sorting_desc');\n    // this.renderer.removeClass(element, 'sorting');\n  }\n\n  /**\n   *\n   * @param direction\n   */\n  private getThSortClass(direction: number) {\n\n    let value: string\n\n    switch (direction) {\n\n      case ThLabelComponent.ASC:\n        value = 'sorting_asc';\n        break\n      case ThLabelComponent.DESC:\n        value = 'sorting_desc';\n        break\n      case ThLabelComponent.UNSORTED:\n        value = 'sorting';\n        break\n    }\n\n    return value;\n  }\n\n  /**\n   *\n   * @param direction\n   */\n  private getAriaSortValue(direction: number): string {\n\n    let value: string\n\n    switch (direction) {\n\n      case ThLabelComponent.ASC:\n        value = 'ascending';\n        break\n      case ThLabelComponent.DESC:\n        value = 'descending';\n        break\n      case ThLabelComponent.UNSORTED:\n        value = 'none';\n        break\n    }\n\n    return value;\n  }\n\n  private ordina(info: SortingInfo) {\n\n    if (info && this.dataSource && info.property) {\n\n      info.direction = info.direction * -1;\n\n      if (info.direction == ThLabelComponent.UNSORTED) {\n\n        info.direction = ThLabelComponent.ASC;\n      }\n\n      this.dataSource.sort(this.propertyComparator(info.property, info.direction));\n      this.dataSource = [].concat(this.dataSource);\n\n      this.cdr.detectChanges();\n    }\n  }\n\n  private propertyComparator(property: string, direction: number) {\n\n    let pList = property ? property.split('.') : undefined;\n\n    function estraiValore(e: any, pList: string[]): any {\n\n      if (e && pList) {\n\n        if (pList.length > 1) {\n\n          return estraiValore(e[pList[0]], pList.slice(1, pList.length));\n        } else {\n\n          return e[pList[0]];\n        }\n      }\n    }\n\n    return function (e1, e2) {\n\n      return (estraiValore(e1, pList) > estraiValore(e2, pList) ? ThLabelComponent.DESC : ThLabelComponent.ASC) * direction;\n    }\n  }\n\n  lengthOnChange(value: number) {\n\n    if (value != undefined && (!this.paginationState || value != this.paginationState.pageSize)) {\n\n      let eventoPaginazione: PaginationState = {};\n\n      if (this.externalPaginationSorting) {\n\n        eventoPaginazione = {...this.paginationState};\n\n      } else if (this.tableLength != value) {\n\n        this.tableLength = value;\n        eventoPaginazione = {};\n\n        this.emitSubset(1);\n      }\n\n      eventoPaginazione.pageSize = value;\n      eventoPaginazione.pageNumber = 1;\n\n      // this.pagination.emit(eventoPaginazione);\n      this.emitPagination(eventoPaginazione);\n    }\n  }\n\n  pageOnChange(page: number) {\n\n    // console.warn('page selected:', page)\n\n    if (page != undefined) {\n\n      let eventoPaginazione: PaginationState;\n\n      if (this.externalPaginationSorting) {\n\n        eventoPaginazione = {...this.paginationState};\n\n      } else {\n\n        eventoPaginazione = {};\n        this.emitSubset(page);\n      }\n\n      eventoPaginazione.pageNumber = page;\n      // this.pagination.emit(eventoPaginazione);\n      this.emitPagination(eventoPaginazione);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  emitSubset(page: number) {\n\n    if (page && !this.externalPaginationSorting && this.dataSource != undefined) {\n\n      let firstElementIndex = this.tableLength * (page - 1);\n\n      let lastIndex: number = Number(firstElementIndex) + Number(this.tableLength);\n\n      let a: any[] = this.dataSource.slice(firstElementIndex, lastIndex);\n\n      this.currentPage = page;\n      this.displayedDataChange.emit(a);\n    }\n  }\n\n  emitPagination(state: PaginationState) {\n\n    this.checkAndFixPageNumberAndPageIndex(state);\n    this.pagination.emit(state);\n  }\n\n  visualizzaPaginazione(): boolean {\n\n    return !this.disablePagination\n      && (this.dataSource != undefined || (this.externalPaginationSorting != undefined && this.paginationState != undefined));\n  }\n\n  /**\n   * Attiva il th label inerente l'ordinamento specificato\n   */\n  attivaThLabelOrdinamentoSpecificato() {\n\n    if (this.thLabelComponents) {\n\n      // Paginazione esterna\n      if (this.externalPaginationSorting && this.paginationState) {\n\n        let thLabel: ThLabelComponent = this.thLabelComponents.find(item => item.property == this.paginationState.sortProperty);\n        this.setSortDirection(thLabel, this.paginationState.sortDirection);\n      }\n      // Ordinamento iniziale paginazione interna\n      else if (this.initialSort) {\n\n        this.thLabelComponents.forEach(thLabel => {\n\n          thLabel.property == this.initialSort.sortProperty\n            ? this.setSortDirection(thLabel, this.initialSort.sortDirection)\n            : this.setSortDirection(thLabel, undefined);\n        });\n      }\n    }\n  }\n\n  setSortDirection(thLabel: ThLabelComponent, direction: SortDirection) {\n\n    if (thLabel) {\n\n      let dir: string = direction?.toString()?.trim()?.toLowerCase();\n\n      switch (dir) {\n\n        case \"asc\":\n          thLabel.direction = ThLabelComponent.ASC;\n          break;\n\n        case \"desc\":\n          thLabel.direction = ThLabelComponent.DESC;\n          break;\n\n        default:\n          thLabel.direction = ThLabelComponent.UNSORTED;\n          break\n      }\n\n      this.modificaTh(thLabel);\n    }\n  }\n}\n","<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n  <h3 *ngIf=\"title\"\n      class=\"col-xs-12 table-title pull-left noPaddingLeft {{titleClass}}\"\n      [innerHTML]=\"title\">\n  </h3>\n\n  <a *ngIf=\"detailsLink\"\n     href=\"javascript:void(0)\"\n     (click)=\"detailsClick.emit()\"\n     class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n     [innerHTML]=\"detailsLink\">\n  </a>\n\n  <div *ngIf=\"description\"\n       class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n       [innerHTML]=\"description\">\n  </div>\n\n  <div *ngIf=\"showFullListSize\"\n       class=\"total-elements\">\n    <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n  </div>\n\n  <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n                                    [value]=\"getPageSize()\"\n                                    [tableId]=\"id\"\n                                    [options]=\"elementsPerPageOptions\"\n                                    (valueChange)=\"lengthOnChange($event)\"\n                                    [logOnConsole]=\"logOnConsole\"\n                                    (log)=\"log.emit($event)\">\n  </inail-table-page-length-selector>\n\n  <ng-container *ngIf=\"true\">\n\n    <table id=\"{{id}}\"\n           class=\"table display dataTable {{tableClass}}\"\n           [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n      <caption *ngIf=\"caption\"\n               [ngClass]=\"{'sr-only': captionHidden}\"\n               [innerHTML]=\"caption\">\n      </caption>\n\n      <ng-content select=\"thead\"></ng-content>\n\n      <ng-container *ngIf=\"!showNoDataFound()\">\n        <ng-content select=\"tbody\"></ng-content>\n      </ng-container>\n\n      <tbody *ngIf=\"showNoDataFound()\">\n      <tr role=\"row\">\n        <td class=\"content-text\"\n            style=\"padding: 30px; text-align: center\"\n            [colSpan]=\"numeroColonne\"\n            [innerHTML]=\"noDataFoundText\">\n        </td>\n      </tr>\n      </tbody>\n    </table>\n\n    <div #baseFooter\n         class=\"col-xs-12 baseFooter noPaddingLeft\"\n         *ngIf=\"visualizzaBaseFooter\">\n      <ng-content select=\"[baseFooter]\"></ng-content>\n    </div>\n\n  </ng-container>\n\n  <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n                             [listSize]=\"getListSize()\"\n                             [pageSize]=\"getPageSize()\"\n                             [currentPage]=\"getCurrentPage()\"\n                             [tableId]=\"id\"\n                             (select)=\"pageOnChange($event)\"\n                             [logOnConsole]=\"logOnConsole\"\n                             (log)=\"log.emit($event)\">\n  </inail-table-page-selector>\n\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\nimport {getConfigValue} from \"../../base.component\";\n\nexport interface InputFileComponentChanges extends FormElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-input-file',\n  templateUrl: './input-file.component.html',\n  styleUrls: ['./input-file.component.css']\n})\nexport class InputFileComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  placeholder: string = getConfigValue(this.libConfig?.inputFileComponent?.placeholder, undefined);\n  @Input()\n  chooseButtonText: string = getConfigValue(this.libConfig?.inputFileComponent?.chooseButtonText, 'Scegli il file');\n  @Input()\n  addButtonText: string = getConfigValue(this.libConfig?.inputFileComponent?.addButtonText, 'Aggiungi');\n  @Input()\n  chooseButton: boolean = getConfigValue(this.libConfig?.inputFileComponent?.chooseButton, true);\n  @Input()\n  addButton: boolean = getConfigValue(this.libConfig?.inputFileComponent?.addButton, true);\n  /** Estensioni accettate separate da virgola (esempio: \".pdf, .txt, .doc\") */\n  @Input()\n  accept: string = getConfigValue(this.libConfig?.inputFileComponent?.accept, undefined);\n  @Output()\n  fileChange = new EventEmitter<File>();\n  fileModel: File;\n\n  @ViewChild('inputText', {static: true})\n  inputText: ElementRef<HTMLElement>;\n\n  inputTextId: string;\n\n  @ViewChild('inputTypeFile', {static: true})\n  inputTypeFile: ElementRef<HTMLInputElement>;\n\n  isFileSelezionato = (): boolean => this.fileModel != undefined;\n  isChooseFileButtonDisabled = (): boolean => this.fileModel != undefined || this.disabled;\n  isAddFileButtonDisabled = (): boolean => this.fileModel == undefined || this.disabled;\n  isRemoveFileButtonDisabled = (): boolean => this.fileModel == undefined || this.disabled;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-file]`;\n    super.overrideConfig(libConfig?.inputFileComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputFileComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if(changes.id?.currentValue != undefined) {\n\n      this.inputTextId = `${changes.id.currentValue}-input-text`\n    }\n\n    this.placeholder = this.getNotBlankValue(this.placeholder);\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.inputText);\n\n    if(this.id) {\n\n      this.inputTextId = `${this.id}-input-text`\n    }\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.inputText.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  promptUpload() {\n    document.getElementById(this.id).click();\n  }\n\n  changeModel($event: Event) {\n\n    // @ts-ignore\n    this.fileModel = $event.target.files && $event.target.files[0];\n\n    if (!this.addButton) {\n      this.fileChange.emit(this.fileModel);\n    }\n\n    if (this.cleanErrorOnChange) {\n\n      this.cleanError();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  public reset() {\n\n    this.fileModel = undefined;\n    this.inputTypeFile.nativeElement.value = ''\n    this.fileChange.emit(undefined);\n    this.cleanError();\n    this.cdr.detectChanges();\n  }\n\n  addOnClick() {\n\n    if(!this.isAddFileButtonDisabled()) {\n      this.fileChange.emit(this.fileModel);\n      this.fileModel = undefined;\n      this.detectChanges();\n    }\n  }\n}\n","<div class=\"row form-group {{getResponsiveClass()}} noPaddingLeft {{class}} uploadFileNew widget inail-input-file\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <div class=\"col-xs-12 noPaddingLeft\">\n    <span [innerHTML]=\"getLabel()\"\n          [ngClass]=\"{'sr-only': hiddenLabel}\">\n    </span>\n    <span class=\"sr-only\">Seleziona il file da allegare</span>\n    <span *ngIf=\"showPopover()\"\n          [style.padding-left.px]=\"5\">\n      <inail-popover [iconClass]=\"popoverButtonIcon\"\n                     [buttonTitle]=\"popoverButtonTitle\"\n                     [header]=\"popoverHeader\"\n                     [content]=\"popoverContent\">\n      </inail-popover>\n    </span>\n  </div>\n  <div class=\"col-xs-4 upload-file-button-container noPaddingLeft\">\n    <label [for]=\"inputTextId\"\n           class=\"sr-only\"\n           [attr.aria-hidden]=\"!isFileSelezionato()\"\n           [attr.aria-labelledby]=\"getAriaLabelledBy()\"\n           [innerHTML]=\"getLabel()\">\n    </label>\n    <input #inputText\n           [id]=\"inputTextId\"\n           class=\"col-xs-12 form-control {{inputClass}}\"\n           readonly\n           type=\"text\"\n           tabindex=\"-1\"\n           [ngClass]=\"{'disabled': disabled}\"\n           [disabled]=\"disabled\"\n           [attr.name]=\"name\"\n           [attr.title]=\"title\"\n           [attr.placeholder]=\"placeholder\"\n           [attr.aria-hidden]=\"!isFileSelezionato()\"\n           [attr.aria-required]=\"required === true ? true : undefined\"\n           [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n           [value]=\"fileModel?.name\"\n           (click)=\"promptUpload()\">\n    <button class=\"innerx\"\n            title=\"Rimuovi il file selezionato\"\n            type=\"button\"\n            [attr.aria-hidden]=\"!isFileSelezionato()\"\n            [tabindex]=\"!isRemoveFileButtonDisabled() ? 0 : -1\"\n            [disabled]=\"isRemoveFileButtonDisabled()\"\n            [style.opacity]=\"isRemoveFileButtonDisabled() ? 0.5 : 1\"\n            (click)=\"reset()\">\n      <span *ngIf=\"!disabled\" class=\"reset\"></span>\n      <span class=\"sr-only\">Rimuovi il file selezionato</span>\n    </button>\n    <span *ngIf=\"showDescription()\"\n          [attr.aria-hidden]=\"isFileSelezionato()\"\n          [innerHTML]=\"description\">\n    </span>\n    <div *ngIf=\"showError()\"\n         [id]=\"errorId\">\n      <div class=\"msg msg-errore\">\n        <strong [innerHTML]=\"'ERRORE: '+this.error\"></strong>\n      </div>\n    </div>\n  </div>\n  <div class=\"col-xs-8\">\n    <div class=\"fileUpload pull-left noMarginLeft\"\n         [hidden]=\"!chooseButton\">\n      <label class=\"btn btn-primary noMargin col-xs-12 upload-container\"\n             [ngClass]=\"{'disabled': isChooseFileButtonDisabled()}\"\n             [for]=\"id\">\n        <span aria-hidden=\"false\">Scegli il file</span>\n        <input [id]=\"id\"\n               #inputTypeFile\n               [attr.accept]=\"accept\"\n               [disabled]=\"isChooseFileButtonDisabled()\"\n               [readonly]=\"readonly\"\n               class=\"btn-primary upload\"\n               type=\"file\"\n               aria-label=\"Scegli il file\"\n               [attr.aria-hidden]=\"isFileSelezionato()\"\n               (change)=\"changeModel($event)\">\n      </label>\n    </div>\n\n    <div *ngIf=\"addButton\"\n         class=\"fileUpload pull-left padding\">\n      <div class=\"form-group\">\n        <button class=\"btn btn-primary add-file\"\n                [ngClass]=\"{'disabled': isAddFileButtonDisabled()}\"\n                [disabled]=\"isAddFileButtonDisabled()\"\n                [attr.aria-hidden]=\"!isFileSelezionato()\"\n                type=\"button\"\n                aria-label=\"Aggiungi il file selezionato\"\n                (click)=\"addOnClick()\">\n          <span [innerHTML]=\"addButtonText\"></span> <span class=\"sr-only\">il file selezionato</span>\n        </button>\n      </div>\n    </div>\n    <div class=\"fileSubmit col-xs-4 noMarginLeft\">\n      <button class=\"btn btn-primary noMargin btn-inline col-xs-12\">Carica il file</button>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {isNotBlankOrNull, setFocus} from '../../../../utils/common.operators';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst ACCEPTED_INPUTS: string[] = [',', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Backspace', 'Delete', \"Tab\", \"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"];\n\nexport interface InputNumberComponentChanges extends FormElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-input-number',\n  templateUrl: './input-number.component.html',\n  styleUrls: ['./input-number.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputNumberComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class InputNumberComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLInputElement>;\n\n  inputValue: number;\n  previousValue: number;\n  previousDigit: string;\n\n  @Input()\n  max: number = getConfigValue(this.libConfig?.inputNumberComponent?.max, undefined);\n  @Input()\n  min: number = getConfigValue(this.libConfig?.inputNumberComponent?.min, undefined);\n  @Input()\n  step: number = getConfigValue(this.libConfig?.inputNumberComponent?.step, undefined);\n  @Input()\n  numberOfDecimals: number = getConfigValue(this.libConfig?.inputNumberComponent?.numberOfDecimals, undefined);\n  @Input()\n  hideArrows: boolean = getConfigValue(this.libConfig?.inputNumberComponent?.hideArrows, false);\n\n  @Output()\n  valueChange = new EventEmitter<number>();\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-number]`;\n    super.overrideConfig(libConfig?.inputNumberComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputNumberComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes.value) {\n\n      // console.warn(changes.value)\n\n      this.previousValue = changes.value.previousValue;\n\n      // Se l'input type text non ha il focus.\n      // La normalizzazzione del valore al change del value avviene solamente quando\n      // viene impostato il valore in maniera programmatica.\n      // In caso di digitazione da parte dell'utente la normalizzazione\n      // avverra' alla perdita del focus.\n      if (!(this.formControlElement.nativeElement.id === document.activeElement?.id)) {\n\n        this.normalizzaValore();\n      }\n\n      // if (!changes.value.firstChange) {\n      //\n      //   this.cleanError()\n      // }\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit()\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`);\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return this.inputValue;\n  }\n\n  writeValue(value: number): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: number) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.inputValue != value) {\n\n      this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n      this.inputValue = value;\n      this.cdr.detectChanges();\n\n      this.emitDebug(`this.valueChange.emit(${value})`);\n      this.valueChange.emit(value);\n\n      if (this.cleanErrorOnChange) {\n\n        this.cleanError();\n      }\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n  }\n\n  onBlur() {\n\n    this.normalizzaValore();\n    super.onBlur()\n  }\n\n  // private normalizzaValore() {\n  //\n  //   setTimeout(() => {\n  //\n  //     if (!this.disabled) {\n  //\n  //       if (this.min != undefined && this.inputValue < this.min) {\n  //\n  //         this.value = this.previousValue != undefined ? this.previousValue : this.min;\n  //\n  //       } else if (this.max != undefined && this.inputValue > this.max) {\n  //\n  //         this.value = this.previousValue != undefined ? this.previousValue : this.max;\n  //       }\n  //     }\n  //\n  //     this.cdr.detectChanges();\n  //   });\n  // }\n\n  private normalizzaValore() {\n\n    setTimeout(() => {\n\n      if (!this.disabled && this.inputValue != undefined && isNotBlankOrNull(`${this.inputValue}`)) {\n\n        if (this.min != undefined && this.inputValue < this.min) {\n\n          this.value = this.min;\n\n        } else if (this.max != undefined && this.inputValue > this.max) {\n\n          this.value = this.max;\n        }\n      }\n\n      this.cdr.detectChanges();\n    });\n  }\n\n  onKeyUp() {\n\n    if (this.inputValue != undefined && !this.checkDecimal()) {\n\n      this.inputValue = this.previousValue;\n      this.valueChange.emit(this.inputValue);\n    }\n\n    // Serve per fare in modo che non rimanga visualizzato\n    // qualcosa di diverso da un numero.\n    // Nativamente l'elemento html restituisce undefined\n    // se si prova a scrivere qualcosa diverso da un numero\n    // ma mantiene il valore non numerico visualizzato nell'input\n    if (this.inputValue == undefined) {\n\n      // Commentata funzionalita perche' non permetteva l'inserimento\n      // di numeri negativi\n      // this.formControlElement.nativeElement.value = undefined;\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  checkDecimal() {\n\n    if (this.numberOfDecimals != undefined) {\n\n      let a = (String(this.inputValue)).split('.');\n\n      return (this.numberOfDecimals > 0 && (a.length == 1 || a[1].length <= this.numberOfDecimals)) || (this.numberOfDecimals == 0 && a.length == 1);\n    }\n\n    return true;\n  }\n\n  isFirstDigitComma = (ev: KeyboardEvent) => ev.key == ',' && this.inputValue == undefined;\n  isWrongMinus = (ev: KeyboardEvent) => ev.key == '-' && ev.key == this.previousDigit;\n  isWrongDigit = (ev: KeyboardEvent) => this.isFirstDigitComma(ev) || this.isWrongMinus(ev);\n\n  onKeyDown(ev: KeyboardEvent) {\n\n    // console.warn(ev)\n    // console.warn(`${this.inputValue}`)\n\n    if ((!ACCEPTED_INPUTS.some(v => v === ev.key) || this.isWrongDigit(ev)) && ev.ctrlKey == false) {\n\n      ev.preventDefault();\n    } else {\n      this.previousDigit = ev.key;\n    }\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-input-number\"\n     [ngClass]=\"{'has-error': isThereError(), 'no-arrows': hideArrows}\">\n  <label *ngIf=\"label\"\n         class=\"control-label {{labelClass}}\"\n         [ngClass]=\"{'sr-only': hiddenLabel}\"\n         [attr.title]=\"labelTitle\"\n         [for]=\"id\">\n    <span [innerHTML]=\"getLabel()\"></span>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\">\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <span *ngIf=\"showPopover()\"\n        [style.padding-left.px]=\"5\">\n    <inail-popover [iconClass]=\"popoverButtonIcon\"\n                   [buttonTitle]=\"popoverButtonTitle\"\n                   [header]=\"popoverHeader\"\n                   [content]=\"popoverContent\">\n    </inail-popover>\n  </span>\n  <input #formControl\n         type=\"number\"\n         [id]=\"id\"\n         class=\"form-control {{inputClass}}\"\n         [ngClass]=\"{'disabled': disabled}\"\n         [disabled]=\"disabled\"\n         [readonly]=\"readonly\"\n         [attr.name]=\"name\"\n         [attr.title]=\"title\"\n         [attr.max]=\"max\"\n         [attr.min]=\"min\"\n         [attr.step]=\"step\"\n         [attr.aria-required]=\"required === true ? true : undefined\"\n         [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n         [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n         (keyup)=\"onKeyUp()\"\n         (blur)=\"onBlur()\"\n         (keydown)=\"onKeyDown($event)\"\n         (keyup.enter)=\"enterUp.emit()\"\n         [value]=\"inputValue\"\n         [(ngModel)]='value'>\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\"\n       [ngClass]=\"{'desc-margin-top': showError()}\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n</div>\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../../responsive-element.component\";\n\nexport interface ContainerComponentChanges extends ResponsiveElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-container',\n  templateUrl: './container.component.html',\n  styleUrls: ['./container.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class ContainerComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @Input()\n  hidden: boolean = false;\n\n  @Input()\n  rendered: boolean = true;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super(cdr);\n    this.logPrefix = '[inail-container]';\n    this.xs = undefined;\n    this.detach();\n  }\n\n  ngOnChanges(changes: ContainerComponentChanges) {\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit()\n  }\n\n  ngAfterViewInit() {\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n}\n","<div [id]=\"id\"\n     class=\"inail-container {{getResponsiveClass()}} {{class}}\"\n     [hidden]=\"hidden\"\n     *ngIf=\"rendered\">\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isNotBlankOrNull, isNumber, isString} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nconst SLICK_CONFIG = {\n  dots: false,\n  infinite: false,\n  arrows: true,\n  speed: 300,\n  slidesToShow: 1,\n  centerMode: false,\n  variableWidth: true,\n  prevArrow: '<button type=\"button\" class=\"slick-prev fa fa-caret-left\" aria-hidden=\"true\" title=\"Mostra gli step precedenti\"></button>',\n  nextArrow: '<button type=\"button\" class=\"slick-next fa fa-caret-right\" aria-hidden=\"true\" title=\"Mostra gli step successivi\"></button>'\n}\n\nconst INIT_DELAY: number = 200;\n\nexport interface SelectorItem {\n\n  label: string;\n  code?: string;\n  index?: number;\n  title?: string;\n  required?: boolean;\n  error?: boolean;\n}\n\nexport interface SelectorComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-selector',\n  templateUrl: './selector.component.html',\n  styleUrls: ['./selector.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class SelectorComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  items: SelectorItem[];\n\n  @Input()\n  showNumber: boolean = getConfigValue(this.libConfig?.selectorComponent?.showNumber, false);\n\n  @Input()\n  separator: string = getConfigValue(this.libConfig?.selectorComponent?.separator, undefined);\n\n  @Input()\n  showSeparator: boolean = getConfigValue(this.libConfig?.selectorComponent?.showSeparator, false); // TODO inserire nella doc\n\n  @Input()\n  fullNavigation: boolean = getConfigValue(this.libConfig?.selectorComponent?.fullNavigation, true);\n\n  @Input()\n  contentsHidden: boolean = getConfigValue(this.libConfig?.selectorComponent?.contentsHidden, true);\n\n  @Input()\n  currentItem: number = 0;\n\n  @Output()\n  currentItemChange: EventEmitter<number> = new EventEmitter<number>();\n\n  @Output()\n  itemChange: EventEmitter<SelectorItem> = new EventEmitter<SelectorItem>();\n\n  @Input()\n  switchToFirstError: Observable<void>;\n\n  @Input()\n  switchTo: Observable<number | string | SelectorItem>;\n\n  @Input()\n  prevButtonTitle: string = getConfigValue(this.libConfig?.selectorComponent?.prevButtonTitle, 'scorri selettore a destra');\n\n  @Input()\n  nextButtonTitle: string = getConfigValue(this.libConfig?.selectorComponent?.nextButtonTitle, 'scorri selettore a sinistra');\n\n  @ViewChildren(\"item\")\n  itemList: QueryList<ElementRef<HTMLElement>>\n\n  @ContentChildren(ContainerComponent, {descendants: true})\n  contenuti: QueryList<ContainerComponent>;\n\n  inizializzazioneContenutiCompletata: boolean = false;\n\n  @ViewChild('courouselElement', {static: true})\n  courouselElement: ElementRef<HTMLElement>;\n\n  isPreviusStep = (stepIndex: number): boolean => stepIndex < this.currentItem;\n  isCurrentStep = (stepIndex: number): boolean => stepIndex === this.currentItem;\n  isNextStep = (stepIndex: number): boolean => stepIndex > this.currentItem;\n  isClickable = (stepIndex: number): boolean => this.isPreviusStep(stepIndex) || (this.fullNavigation && this.isNextStep(stepIndex));\n  showNonDefaultSeparator = (): boolean => this.showSeparator === true && isNotBlankOrNull(this.separator);\n  getItemLabel = (item: SelectorItem, isLast) => `${item.label}${item.required ? ' *' : ''}${this.showNonDefaultSeparator() ? ' ' : ''}${!isLast && this.showNonDefaultSeparator() ? this.separator : ''}`;\n\n  constructor(private cdr: ChangeDetectorRef,\n              private re2: Renderer2,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-selector]';\n    super.overrideConfig(libConfig?.selectorComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: SelectorComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.switchToFirstError?.currentValue) {\n\n      this.push(\n        changes.switchToFirstError.currentValue.subscribe(\n          () => {\n\n            let firstErrorItem: SelectorItem = this.items.find((step: SelectorItem) => step.error);\n\n            if (firstErrorItem) {\n              this.switchToItem(firstErrorItem);\n            }\n          }\n        )\n      );\n    }\n\n    if (changes?.switchTo?.currentValue) {\n\n      this.push(\n        changes.switchTo.currentValue.subscribe((ref: number | string | SelectorItem) => {\n          let item: SelectorItem = this.getItemRef(ref);\n          this.switchToItem(item);\n        })\n      );\n    }\n\n    if (changes.items) {\n\n      this.inizializzaItems();\n    }\n\n    // if (changes.currentItem && !changes.currentItem.firstChange) {\n    //\n    //   this.inizializzaContenuti(this.contenuti);\n    // }\n\n    if (changes.contentsHidden && this.contenuti?.length) {\n\n      this.inizializzaContenuti(this.contenuti);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    if (this.currentItem == undefined) {\n\n      this.setCurrentItem(0);\n    }\n\n    this.inizializzaItems();\n  }\n\n  ngAfterViewInit() {\n\n    this.emitDebug('Contenitori interni');\n    this.emitDebug(this.contenuti);\n    this.inizializzaContenuti(this.contenuti);\n\n    this.cdr.detectChanges();\n\n    setTimeout(() => {\n      this.$(this.courouselElement.nativeElement).slick(SLICK_CONFIG);\n\n      // if (this.itemList?.length > 0) {\n      //\n      //   this.itemList.forEach(item => item?.nativeElement?.setAttribute('aria-hidden', 'false'));\n      // }\n\n    }, INIT_DELAY);\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n  private setCurrentItem(index: number) {\n\n    this.currentItem = index;\n    this.currentItemChange.emit(this.currentItem);\n  }\n\n  private inizializzaItems() {\n\n    if (this.items) {\n\n      this.items.forEach((item: SelectorItem, index) => {\n\n        if (item) {\n\n          item.index = index\n        }\n      });\n    }\n  }\n\n  public inizializzaContenuti(contenuti: QueryList<ContainerComponent>) {\n\n    this.contenuti = contenuti;\n\n    if (this.contenuti?.length > 0) {\n\n      let item = this.items.find(step => step.index == this.currentItem);\n      this.showContent(item);\n      setTimeout(() => {\n        this.inizializzazioneContenutiCompletata = true;\n        this.cdr.detectChanges();\n      });\n    }\n  }\n\n  isContainerItem = (item: SelectorItem, container: ContainerComponent, index: number): boolean => item.code ? container.id == item.code : index == item.index;\n\n  showContent(item: SelectorItem) {\n\n    if (item) {\n\n      // Prima nascondo\n      this.contenuti.forEach((container: ContainerComponent) => this.modificaVisibilita(container, false));\n\n      // Poi visualizzo\n      let daVisualizzare: ContainerComponent = this.contenuti.find((container: ContainerComponent, index: number) => this.isContainerItem(item, container, index));\n      this.modificaVisibilita(daVisualizzare, true);\n    }\n  }\n\n  modificaVisibilita(container: ContainerComponent, show: boolean) {\n\n    if (container) {\n\n      if (this.contentsHidden) {\n\n        container.rendered = true;\n        container.hidden = !show;\n\n      } else {\n\n        container.rendered = show;\n        container.hidden = false;\n      }\n\n      container.detectChanges();\n    }\n  }\n\n  getItemRef(ref: number | string | SelectorItem): SelectorItem {\n\n    let item: SelectorItem;\n\n    if (isNumber(ref)) {\n\n      item = this.items.find((i: SelectorItem) => i.index == ref);\n    } else if (isString(ref)) {\n\n      item = this.items.find((i: SelectorItem) => i.code == ref);\n    } else {\n      item = ref as SelectorItem;\n    }\n\n    return item;\n  }\n\n  itemOnClick(ref: number | string | SelectorItem) {\n\n    let item: SelectorItem = this.getItemRef(ref);\n\n    if (item && this.isClickable(item.index)) {\n\n      this.switchToItem(item);\n    }\n  }\n\n  switchToItem(item: SelectorItem) {\n\n    if (item.index < this.currentItem || (item.index > this.currentItem)) {\n\n      this.setCurrentItem(item.index)\n      this.itemChange.emit(item);\n    }\n\n    if (this.contenuti?.length > 0) {\n\n      this.showContent(item);\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  getAriaLabelValue(item: SelectorItem) {\n\n    if (item.index == this.currentItem) {\n\n      return 'Step corrente';\n    } else if (item.index < this.currentItem) {\n\n      return 'Step precedente';\n    } else {\n      return 'Step successivo';\n    }\n  }\n}\n","<div #courouselElement\n     [id]=\"id\"\n     class=\"row wizard courousel-varible-width marginBottom inail-selector {{class}}\">\n\n  <ng-container *ngFor=\"let item of items; last as isLast\">\n\n    <div [attr.aria-label]=\"getAriaLabelValue(item)\"\n         class=\"item\"\n         [ngClass]=\"{'no-number': !showNumber, 'active': isCurrentStep(item.index), 'prevActive': isClickable(item.index), 'last': isLast, 'hiddenSeparator': !showSeparator || showNonDefaultSeparator()}\">\n      <a [ngClass]=\"{'errorLabel': item.error}\"\n         (click)=\"itemOnClick(item)\"\n         [attr.href]=\"!isClickable(item.index) ? undefined : 'javascript:void(0)'\"\n         [attr.title]=\"(item.title ? item.title : item.label) + (item.error ? ': Sono presenti errori in questo step' : '')\"\n         [innerHTML]=\"getItemLabel(item, isLast)\">\n      </a>\n    </div>\n  </ng-container>\n</div>\n<div [hidden]=\"!inizializzazioneContenutiCompletata\">\n  <ng-content></ng-content>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {Observable} from \"rxjs\";\nimport {SelectorComponent, SelectorItem} from \"../selector/selector.component\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue, LogEvent} from \"../../base.component\";\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from \"../../basic-ux-element.component\";\nimport {ContainerComponent} from \"../container/container.component\";\nimport {isString} from \"../../../../utils/common.operators\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface WizardStep extends SelectorItem {\n}\n\nexport interface WizardComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-wizard',\n  templateUrl: './wizard.component.html',\n  styleUrls: ['./wizard.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class WizardComponent extends BasicUxElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input()\n  steps: WizardStep[];\n\n  showNumber: boolean = true;\n\n  @Input()\n  contentsHidden: boolean = getConfigValue(this.libConfig?.wizardComponent?.contentsHidden, true);\n\n  @Input()\n  currentStep: number = 0;\n\n  @Output()\n  currentStepChange: EventEmitter<number> = new EventEmitter<number>();\n\n  @Output()\n  stepChange: EventEmitter<WizardStep> = new EventEmitter<WizardStep>();\n\n  @Input()\n  switchToFirstError: Observable<void>;\n\n  @Input()\n  switchTo: EventEmitter<number | string | WizardStep> = new EventEmitter<number | string | WizardStep>();\n\n  @Input()\n  prevButtonTitle: string = getConfigValue(this.libConfig?.wizardComponent?.prevButtonTitle, 'scorri wizard a destra');\n\n  @Input()\n  nextButtonTitle: string = getConfigValue(this.libConfig?.wizardComponent?.nextButtonTitle, 'scorri wizard a sinistra');\n\n  @Input()\n  next: Observable<void>;\n\n  @Input()\n  prev: Observable<void>;\n\n  @ContentChildren(ContainerComponent, {descendants: true})\n  contenuti: QueryList<ContainerComponent>;\n\n  @ViewChild(SelectorComponent)\n  selectorComponent: SelectorComponent\n\n  constructor(private cdr: ChangeDetectorRef,\n              private re2: Renderer2,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-wizard]';\n    super.overrideConfig(libConfig?.wizardComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: WizardComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.next?.currentValue) {\n\n      this.push(\n        changes?.next?.currentValue.subscribe(\n          () => {\n\n            if (this.currentStep < this.steps.length - 1) {\n\n              this.currentStep = this.currentStep + 1;\n              this.switchTo?.emit(this.currentStep);\n              // this.currentStepChange.emit(this.currentStep);\n            }\n          }\n        )\n      );\n    }\n\n    if (changes?.prev?.currentValue) {\n\n      this.push(\n        changes.prev.currentValue.subscribe(\n          () => {\n\n            if (this.currentStep > 0) {\n\n              this.currentStep = this.currentStep - 1;\n              this.switchTo?.emit(this.currentStep);\n              // this.currentStepChange.emit(this.currentStep);\n            }\n          }\n        )\n      );\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit() {\n\n    this.emitDebug('Contenitori interni');\n    this.emitDebug(this.contenuti);\n    this.selectorComponent.inizializzaContenuti(this.contenuti);\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n  emitWizardLog(log: LogEvent) {\n\n    if (isString(log.message)) {\n\n      log.message = (log.message as string).replace('[inail-selector]', this.logPrefix);\n    }\n\n    this.log.emit(log);\n  }\n\n  currentStepChangeHandler(index: number) {\n\n    this.currentStep = index;\n    this.currentStepChange.emit(index);\n  }\n\n  stepChangeHandler($event: SelectorItem) {\n\n    this.stepChange.emit($event);\n  }\n}\n","<inail-selector #selectorComponent\n                [items]=\"steps\"\n                [contentsHidden]=\"contentsHidden\"\n                [currentItem]=\"currentStep\"\n                (currentItemChange)=\"currentStepChangeHandler($event)\"\n                [fullNavigation]=\"false\"\n                [nextButtonTitle]=\"nextButtonTitle\"\n                [prevButtonTitle]=\"prevButtonTitle\"\n                [showNumber]=\"showNumber\"\n                [showSeparator]=\"true\"\n                [switchToFirstError]=\"switchToFirstError\"\n                [switchTo]=\"switchTo\"\n                (itemChange)=\"stepChangeHandler($event)\"\n                [id]=\"id\"\n                [class]=\"class\"\n                [detectChange]=\"detectChange\"\n                [logOnConsole]=\"logOnConsole\"\n                [showState]=\"showState\"\n                (log)=\"emitWizardLog($event)\">\n  <ng-content></ng-content>\n</inail-selector>\n","import {AfterViewInit, ChangeDetectorRef, Component, Inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY} from \"../../base.component\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../../responsive-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface ProgressBarComponentChanges extends ResponsiveElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-progress-bar',\n  templateUrl: './progress-bar.component.html',\n  styleUrls: ['./progress-bar.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class ProgressBarComponent extends ResponsiveElementComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n\n  @Input()\n  label: string;\n\n  @Input()\n  valuenow: number = 0;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-progress-bar]`;\n    this.detach();\n  }\n\n  ngOnChanges(changes: ProgressBarComponentChanges) {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.valuenow?.currentValue) {\n\n      if (this.valuenow < 0) {\n\n        this.valuenow = 0;\n      } else if (this.valuenow > 100) {\n\n        this.valuenow = 100;\n      }\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit()\n  }\n\n  ngAfterViewInit() {\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n}\n","<div [id]=\"id\"\n     class=\"inail-progress-bar {{getResponsiveClass()}} noPaddingLeft noPaddingRight {{class}}\">\n  <span *ngIf=\"label\" [innerHTML]=\"label\"></span>\n  <span class=\"sr-only\" [id]=\"id+'-stato'\">Stato avanzamento: {{valuenow}%</span>\n  <span class=\"progress\"\n        [attr.aria-describedby]=\"id+'-stato'\"\n        aria-hidden=\"true\">\n    <span role=\"progressbar\"\n          aria-valuemin=\"0\"\n          aria-valuemax=\"100\"\n          title=\"Stato avanzamento: {{valuenow}}%\"\n          class=\"progress-bar\"\n          [ngClass]=\"{'progress-bar-25': valuenow <= 25, 'progress-bar-50': valuenow > 25 && valuenow <= 50, 'progress-bar-75': valuenow > 50 && valuenow <= 75, 'progress-bar-100': valuenow == 100}\"\n          [attr.aria-valuenow]=\"valuenow\"\n          [style.width.%]=\"valuenow\">\n    </span>\n  </span>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from \"../form-element.component\";\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from \"../../base.component\";\nimport {setFocus} from \"../../../../utils/common.operators\";\nimport {SelectOption} from \"../select/select.component\";\nimport {CheckboxState} from \"../checkbox/checkbox.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\n\nexport interface MultiSelectOption extends SelectOption {\n\n  title?: string;\n  beforeDivider?: boolean;\n  afterDivider?: boolean;\n}\n\nexport interface MultiSelectComponentChanges extends FormElementComponentChanges {\n}\n\n@Component({\n  selector: 'inail-multi-select',\n  templateUrl: './multi-select.component.html',\n  styleUrls: ['./multi-select.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class MultiSelectComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @ViewChild('multiSelect', {static: true})\n  multiSelect: ElementRef<HTMLElement>;\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLElement>;\n\n  @ViewChild('dropdownMenu', {static: true})\n  dropdownMenu: ElementRef<HTMLElement>;\n\n  @Input()\n  options: MultiSelectOption[] = [];\n\n  @Input()\n  values: string[] = [];\n\n  @Output()\n  valuesChange: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n  @Input()\n  placeholder: string = getConfigValue(this.libConfig?.multiSelectComponent?.placeholder, '- seleziona opzioni -');\n\n  @Input()\n  sort: 'asc' | 'desc' = getConfigValue(this.libConfig?.multiSelectComponent?.sort, undefined);\n\n  inputTextValue: string;\n\n  toggle = () => window['$'](this.formControlElement.nativeElement).dropdown('toggle');\n  isExpanded = (): boolean => this.formControlElement.nativeElement.getAttribute('aria-expanded') === 'true';\n  hasFormControlFocus = (): boolean => this.formControlElement.nativeElement.matches(':focus');\n  hasDropdownMenuFocus = (): boolean => this.dropdownMenu.nativeElement.matches(':focus-within');\n  isChecked = (value: string): boolean => this.values.some(v => v === value);\n  getInputTextValue = (): string => this.options.filter(opt => this.isChecked(opt.value)).map(opt => opt.label).join(', ');\n  pushValue = (value: string) => this.values = this.options.filter(opt => opt.value === value || this.isChecked(opt.value)).map(opt => opt.value);\n  isFocusOut = () => window['$'](this.multiSelect.nativeElement).find(document.activeElement).length == 0;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-multi-select]`;\n    super.overrideConfig(libConfig?.multiSelectComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: MultiSelectComponentChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if ((changes?.options?.currentValue || changes?.sort?.currentValue) && this.sort) {\n\n      let direction: number = \"ASC\" == this.sort.toUpperCase() ? 1 : \"DESC\" == this.sort.toUpperCase() ? -1 : 0;\n\n      if (direction != 0 && this.options != undefined) {\n\n        this.options.sort((a: MultiSelectOption, b: MultiSelectOption) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);\n      }\n    }\n\n    if (changes?.options?.currentValue) {\n\n      this.inputTextValue = this.getInputTextValue();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n\n  onKeypress($event: KeyboardEvent) {\n\n    $event.preventDefault();\n  }\n\n  onFocusIn() {\n\n    setTimeout(() => {\n\n      this.showDropdownMenu();\n\n    }, 250)\n  }\n\n  onFocusOut() {\n\n    setTimeout(() => {\n\n      if (this.isFocusOut()) {\n\n        this.closeDropdownMenu();\n      }\n    }, 150);\n  }\n\n  showDropdownMenu() {\n\n    setTimeout(() => {\n\n      if (!this.isExpanded()) {\n\n        this.toggle();\n      }\n    });\n  }\n\n  closeDropdownMenu() {\n\n    setTimeout(() => {\n\n      if (this.isExpanded()) {\n\n        this.toggle();\n      }\n    });\n  }\n\n  onCheck(cb: CheckboxState) {\n\n    if (!cb.firstChange) {\n\n      if (cb.checked && !this.isChecked(cb.value)) {\n\n        this.pushValue(cb.value);\n\n        if (this.cleanErrorOnChange) {\n\n          this.cleanError();\n        }\n\n      } else if (!cb.checked && this.isChecked(cb.value)) {\n\n        this.values = this.values.filter(value => value != cb.value);\n\n        if (this.cleanErrorOnChange) {\n\n          this.cleanError();\n        }\n      }\n\n      this.valuesChange.emit(this.values);\n      this.inputTextValue = this.getInputTextValue();\n      this.cdr.detectChanges();\n    }\n  }\n}\n","<div #multiSelect\n     class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-multi-select\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <label *ngIf=\"label\"\n         class=\"control-label {{labelClass}}\"\n         [ngClass]=\"{'sr-only': hiddenLabel}\"\n         [attr.title]=\"labelTitle\"\n         [for]=\"id\">\n    <span [innerHTML]=\"getLabel()\"></span>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\">\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <span *ngIf=\"showPopover()\"\n        [style.padding-left.px]=\"5\">\n    <inail-popover [iconClass]=\"popoverButtonIcon\"\n                   [buttonTitle]=\"popoverButtonTitle\"\n                   [header]=\"popoverHeader\"\n                   [content]=\"popoverContent\">\n    </inail-popover>\n  </span>\n  <div class=\"form-control-wrapper\"\n       [ngClass]=\"{'no-label' : hiddenLabel || !label}\">\n    <input #formControl\n           type=\"text\"\n           [id]=\"id\"\n           class=\"form-control dropdown-toggle {{inputClass}}\"\n           data-toggle=\"dropdown\"\n           aria-haspopup=\"true\"\n           aria-expanded=\"false\"\n           [ngClass]=\"{'disabled': disabled}\"\n           [attr.name]=\"name\"\n           [attr.title]=\"title\"\n           [disabled]=\"disabled\"\n           [readonly]=\"true\"\n           [attr.placeholder]=\"placeholder\"\n           [attr.aria-required]=\"required === true ? true : undefined\"\n           [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n           [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n           (blur)=\"onBlur()\"\n           (focusin)=\"onFocusIn()\"\n           (focusout)=\"onFocusOut()\"\n           (keypress)=\"onKeypress($event)\"\n           (keyup.enter)=\"enterUp.emit()\"\n           [ngModel]=\"inputTextValue\">\n    <div #dropdownMenu\n         class=\"dropdown-menu\"\n         (focusout)=\"onFocusOut()\"\n         [attr.aria-labelledby]=\"id\">\n      <ng-container *ngFor=\"let opt of options\">\n        <div *ngIf=\"opt.beforeDivider\" class=\"divider\"></div>\n        <div class=\"row\" [attr.tabIndex]=\"opt.disabled ? 0 : undefined\">\n          <inail-checkbox [label]=\"opt.label\"\n                          [value]=\"opt.value\"\n                          [title]=\"opt.title\"\n                          [checked]=\"isChecked(opt.value)\"\n                          [disabled]=\"opt.disabled\"\n                          (stateChange)=\"onCheck($event)\">\n          </inail-checkbox>\n        </div>\n        <div *ngIf=\"opt.afterDivider\" class=\"divider\"></div>\n      </ng-container>\n    </div>\n    <div *ngIf=\"showDescription()\"\n         [id]=\"descriptionId\"\n         [ngClass]=\"{'desc-margin-top': showError()}\">\n      <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n      <span [innerHTML]=\"description\"></span>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {FormElementComponent, FormElementComponentChanges} from '../form-element.component';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, StringChange} from '../../base.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from '../../../../utils/common.operators';\n\ninterface InputTimeChanges extends FormElementComponentChanges {\n\n  value: StringChange;\n  placeholder: StringChange;\n  withSeconds: BooleanChange;\n}\n\nconst HM_PLACEHOLDER = 'HH:MM';\nconst HMS_PLACEHOLDER = 'HH:MM:SS';\nconst ACCEPTED_INPUTS: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Backspace', 'Delete', \"Tab\", \"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"];\n\n@Component({\n  selector: 'inail-input-time',\n  templateUrl: './input-time.component.html',\n  styleUrls: ['./input-time.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputTimeComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class InputTimeComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  timeHMRegex: RegExp = new RegExp(/^((([01]\\d)|([2][0-3]))[:]([0-5]\\d)$)/);\n  timeHMSRegex: RegExp = new RegExp(/^((([01]\\d)|([2][0-3]))[:]([0-5]\\d)[:]([0-5]\\d)$)/);\n  validInputRegx: RegExp = new RegExp(/^([0-9]+[0-9:]*)$/);\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLInputElement>;\n\n  inputValue: string;\n\n  @Input()\n  nativeInputTypeTime: boolean = getConfigValue(this.libConfig?.inputTimeComponent?.nativeInputTypeTime, false);\n\n  @Input()\n  withSeconds: boolean = getConfigValue(this.libConfig?.inputTimeComponent?.withSeconds, false);\n\n  @Input()\n  selfValidation: boolean = getConfigValue(this.libConfig?.inputTimeComponent?.selfValidation, true);\n\n  @Input()\n  selfValidationError: string = getConfigValue(this.libConfig?.inputTimeComponent?.selfValidationError, 'Orario non valido');\n\n  @Input()\n  step: number = getConfigValue(this.libConfig?.inputTimeComponent?.step, undefined);\n\n  @Input()\n  placeholder: string;\n\n  @Output()\n  valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  @Input()\n  preventPasting: boolean = getConfigValue(this.libConfig?.inputTimeComponent?.preventPasting, false);\n\n  defaultPlaceholder: string;\n\n  placeholderVisualizzato: string;\n\n  getType = (): string => this.nativeInputTypeTime ? 'time' : 'text';\n  getStep = (): number => this.nativeInputTypeTime ? this.step : undefined;\n  getMaxLength = (): number => this.nativeInputTypeTime ? undefined : (this.withSeconds ? 8 : 5);\n  isBefore2Points = (value: string): boolean => value?.length == 2 || (this.withSeconds == true && value?.length == 5);\n  isValidValue = (value: string): boolean => this.withSeconds ? this.timeHMSRegex.test(value) : this.timeHMRegex.test(value);\n  isValidInput = (value: string): boolean => this.validInputRegx.test(value);\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-time]`;\n    this.emitDebug('NgInailCommonConfig:');\n    this.emitDebug(this.libConfig?.inputTimeComponent);\n    super.overrideConfig(this.libConfig?.inputTimeComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputTimeChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (changes?.withSeconds?.currentValue != undefined) {\n\n      this.defaultPlaceholder = getConfigValue(this.libConfig?.inputTimeComponent?.placeholder, this.withSeconds ? HMS_PLACEHOLDER : HM_PLACEHOLDER);\n    }\n\n    this.placeholderVisualizzato = this.getNotBlankValue(this.placeholder) || this.defaultPlaceholder;\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    this.defaultPlaceholder = getConfigValue(this.libConfig?.inputTimeComponent?.placeholder, this.withSeconds ? HMS_PLACEHOLDER : HM_PLACEHOLDER);\n    this.placeholderVisualizzato = this.getNotBlankValue(this.placeholder) || this.defaultPlaceholder;\n\n    if (this.focus) {\n\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n  }\n\n  @Input()\n  set value(value) {\n\n    this.emitDebug(`@Input set value: ${this.inputValue} -> ${value}`)\n    this.setValue(value);\n  }\n\n  get value() {\n\n    return this.inputValue;\n  }\n\n  writeValue(value: string): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.setValue(value);\n  }\n\n  setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n\n    if (this.inputValue != value) {\n\n      this.emitDebug(`update value: ${this.inputValue} -> ${value}`);\n\n      if (!this.nativeInputTypeTime) {\n\n        value = this.bonificaValore(value);\n\n        this.inputValue = this.isBefore2Points(value) ? `${value}:` : value;\n\n        if (isNotBlankOrNull(this.inputValue) && this.selfValidation && !this.isValidValue(this.inputValue)) {\n\n          // console.warn(this.inputValue, this.selfValidation, !this.isValidValue(this.inputValue))\n          this.setDescError(this.selfValidationError);\n\n        } else {\n\n          if (this.cleanErrorOnChange) {\n\n            this.cleanError();\n          }\n        }\n      } else {\n        this.inputValue = value;\n\n        if (this.cleanErrorOnChange) {\n\n          this.cleanError();\n        }\n      }\n\n      this.cdr.detectChanges();\n\n      this.emitDebug(`this.valueChange.emit(${this.inputValue})`);\n      this.valueChange.emit(this.inputValue);\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n  }\n\n  bonificaValore(value: string) {\n\n    let valoreBonificato: string = undefined;\n\n    if (value != undefined) {\n\n      let parti: string[] = value.replace(/([:]{2,})/g, ':').split(':');\n\n      if (parti[0] != undefined && parti[0] == '24') {\n\n        parti[0] = '00'\n      }\n\n      if (parti[1] != undefined && parti[1] == '60') {\n\n        parti[1] = '00'\n      }\n\n      if (parti[2] != undefined && parti[2] == '60') {\n\n        parti[2] = '00'\n      }\n\n      valoreBonificato = parti.join(':');\n    }\n\n    return valoreBonificato;\n  }\n\n  onPaste($event: ClipboardEvent) {\n\n    if (this.preventPasting === true) {\n\n      $event.preventDefault();\n    }\n  }\n\n  onKeyDown(ev: KeyboardEvent) {\n\n    if (!ACCEPTED_INPUTS.some(v => v === ev.key) && ev.ctrlKey == false) {\n\n      ev.preventDefault();\n    }\n  }\n\n  onFocusOut() {\n\n    this.completaValoreInInput();\n  }\n\n  completaParteOrario(value: string): string {\n\n    if (isBlankOrNull(value)) {\n\n      value = '00';\n\n    } else if (value.length == 1) {\n\n      value = `0${value}`;\n    }\n\n    return value\n  }\n\n  completaValoreInInput() {\n\n    if (isNotBlankOrNull(this.inputValue) && (this.inputValue.length < 5 || (this.withSeconds && this.inputValue.length < 8))) {\n\n      let partiOrario: string[] = this.inputValue.split(':');\n      let numeroParti: number = this.withSeconds ? 3 : 2;\n\n      for (let i = 0; i < numeroParti; i++) {\n\n        partiOrario[i] = this.completaParteOrario(partiOrario[i]);\n      }\n\n      let value: string = `${partiOrario[0]}:${partiOrario[1]}`;\n\n      if(partiOrario[2]) {\n\n        value = `${value}:${partiOrario[2]}`;\n      }\n\n      if (value && this.isValidValue(value)) {\n\n        this.setValue(value);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-input-time\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <label *ngIf=\"label\"\n         class=\"control-label {{labelClass}}\"\n         [ngClass]=\"{'sr-only': hiddenLabel}\"\n         [attr.title]=\"labelTitle\"\n         [for]=\"id\">\n    <span [innerHTML]=\"getLabel()\"></span>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\">\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <span *ngIf=\"showPopover()\"\n        [style.padding-left.px]=\"5\">\n    <inail-popover [iconClass]=\"popoverButtonIcon\"\n                   [buttonTitle]=\"popoverButtonTitle\"\n                   [header]=\"popoverHeader\"\n                   [content]=\"popoverContent\">\n    </inail-popover>\n  </span>\n  <div class=\"form-control-wrapper\"\n       [ngClass]=\"{'no-label' : hiddenLabel || !label}\">\n    <input #formControl\n           [id]=\"id\"\n           [attr.type]=\"getType()\"\n           [attr.step]=\"getStep()\"\n           class=\"form-control {{inputClass}}\"\n           [ngClass]=\"{'disabled': disabled}\"\n           [attr.name]=\"name\"\n           [attr.title]=\"title\"\n           [attr.maxlength]=\"getMaxLength()\"\n           [disabled]=\"disabled\"\n           [readonly]=\"readonly\"\n           [attr.placeholder]=\"placeholderVisualizzato\"\n           [attr.aria-required]=\"required === true ? true : undefined\"\n           [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n           [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n           (blur)=\"onBlur()\"\n           (focusout)=\"onFocusOut()\"\n           (keydown)=\"onKeyDown($event)\"\n           (paste)=\"onPaste($event)\"\n           (keyup.enter)=\"enterUp.emit()\"\n           [(ngModel)]=\"value\">\n  </div>\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\"\n       [ngClass]=\"{'desc-margin-top': showError()}\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n  <debug-pre *ngIf=\"showState\">\n    <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n    <state-propertie [label]=\"'label'\" [propertie]=\"label\"></state-propertie>\n    <state-propertie [label]=\"'inputValue'\" [propertie]=\"inputValue\"></state-propertie>\n    <state-propertie [label]=\"'placeholder'\" [propertie]=\"placeholder\"></state-propertie>\n    <state-propertie [label]=\"'defaultPlaceholder'\" [propertie]=\"defaultPlaceholder\"></state-propertie>\n    <inail-form-element-state-properties [formElement]=\"this\"></inail-form-element-state-properties>\n  </debug-pre>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output, ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BasicUxElementComponent, BasicUxElementComponentChanges} from '../../../core/basic-ux-element.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\nimport {CHANGE_DETECTION_STRATEGY, getConfigValue} from '../../../core/base.component';\n\nexport interface TrAccordionComponentChanges extends BasicUxElementComponentChanges {\n}\n\n@Component({\n  selector: '[inail-tr-accordion]',\n  templateUrl: './tr-accordion.component.html',\n  styleUrls: ['./tr-accordion.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class TrAccordionComponent extends BasicUxElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @Input()\n  expanded: boolean = getConfigValue(this.libConfig?.trAccordionComponent?.expanded, false);\n\n  @Output()\n  expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  colspan: number;\n\n  trParent: HTMLElement;\n\n  isExpanded = () => this.expanded === true;\n\n  @ViewChild('footer')\n  footer: ElementRef<HTMLElement>;\n\n  visualizzaFooter: boolean = true;\n\n  constructor(private elRef: ElementRef,\n              private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = '[inail-tr-accordion]';\n    super.overrideConfig(libConfig?.trAccordionComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: TrAccordionComponentChanges) {\n    super.ngOnChanges(changes);\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  toggle(expanded?: boolean) {\n\n    if (this.trParent) {\n\n      this.expanded = (expanded != undefined) ? expanded : this.trParent.hidden;\n      this.trParent.hidden = !this.expanded;\n      this.expandedChange.emit(this.expanded);\n      this.cdr.detectChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n  }\n\n  ngAfterViewInit(): void {\n\n    this.trParent = this.elRef.nativeElement;\n    this.colspan = this.trParent?.closest('table')?.querySelector('thead')?.querySelectorAll('tr th')?.length;\n\n    this.toggle(this.expanded);\n\n    this.visualizzaFooter = this.footer?.nativeElement?.childElementCount > 0;\n\n    this.cdr.detectChanges();\n  }\n}\n","<td [colSpan]=\"colspan\" class=\"accordionTab\">\n  <form class=\"row form-grey pop\">\n    <ng-content select=\"[content]\"></ng-content>\n  </form>\n  <div #footer\n       class=\"row baseFooter\"\n       *ngIf=\"visualizzaFooter\">\n    <ng-content select=\"[footer]\"></ng-content>\n  </div>\n</td>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {BooleanChange, CHANGE_DETECTION_STRATEGY, getConfigValue, NumberChange, StringChange} from '../../base.component';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {FormElementComponent, FormElementComponentChanges} from '../form-element.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from '../../../../ng-inail-common.config';\nimport {isBlankOrNull, isNotBlankOrNull, setFocus} from '../../../../utils/common.operators';\n\ninterface InputMoneyChanges extends FormElementComponentChanges {\n\n  max: NumberChange;\n  min: NumberChange;\n  numberOfDecimals: NumberChange;\n  value: StringChange;\n  placeholder: StringChange;\n  decimalsSeparator: StringChange;\n  preventPasting: BooleanChange;\n  currency: StringChange;\n  selfValidationError: StringChange;\n  selfValidation: BooleanChange;\n  showThousandsSeparator: BooleanChange;\n}\n\nexport type Currency = 'EURO' | 'DOLLARS';\n\nconst CURRENCY_SYMBOL = {\n  'EURO': '€',\n  'DOLLARS': '$'\n};\n\nconst NUMBERS_INPUTS: string[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\nconst ACCEPTED_INPUTS: string[] = [...NUMBERS_INPUTS, ',', '-', 'Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight'];\n\nconst CLEAN_VALUE_REGEX: RegExp = new RegExp(/[ $€]+/g);\nconst COMMA_REGEX: RegExp = new RegExp(/[,]/g);\nconst DOT_REGEX: RegExp = new RegExp(/[.]/g);\nconst THOUSANDS_REGEX: RegExp = new RegExp(/(\\d+)(\\d{3})/);\n\n@Component({\n  selector: 'inail-input-money',\n  templateUrl: './input-money.component.html',\n  styleUrls: ['./input-money.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { // Questo metadato indica che questo componente fara' parte dei form di angular\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputMoneyComponent), // indica che la classe fara' parte del sistema dei validatori dei form\n      multi: true\n    }\n  ]\n})\nexport class InputMoneyComponent extends FormElementComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  @ViewChild('formControl', {static: true})\n  formControlElement: ElementRef<HTMLInputElement>;\n\n  @Input()\n  max: number = getConfigValue(this.libConfig?.inputMoneyComponent?.max, undefined);\n  @Input()\n  min: number = getConfigValue(this.libConfig?.inputMoneyComponent?.min, undefined);\n  @Input()\n  numberOfDecimals: number = getConfigValue(this.libConfig?.inputMoneyComponent?.numberOfDecimals, 2);\n  @Input()\n  placeholder: string = getConfigValue(this.libConfig?.inputMoneyComponent?.placeholder, undefined);\n  @Input()\n  preventPasting: boolean = getConfigValue(this.libConfig?.inputMoneyComponent?.preventPasting, false);\n  @Input()\n  currency: Currency = getConfigValue(this.libConfig?.inputMoneyComponent?.currency, 'EURO');\n  @Input()\n  selfValidation: boolean = getConfigValue(this.libConfig?.inputMoneyComponent?.selfValidation, true);\n  @Input()\n  selfValidationError: string = getConfigValue(this.libConfig?.inputMoneyComponent?.selfValidationError, 'Importo non valido');\n  @Input()\n  showThousandsSeparator: boolean = getConfigValue(this.libConfig?.inputMoneyComponent?.showThousandsSeparator, true);\n  // @Input()\n  // decimalSeparatorSymbol: ',' | '.' = getConfigValue(this.libConfig?.inputMoneyComponent?.decimalSeparatorSymbol, ',');\n  // @Input()\n  // thousandsSeparatorSymbol: ',' | '.' = getConfigValue(this.libConfig?.inputMoneyComponent?.thousandsSeparatorSymbol, '.');\n\n  @Output()\n  valueChange: EventEmitter<number> = new EventEmitter<number>();\n\n  /**\n   * Valore digitato all'interno del campo di input\n   */\n  inputValue: string;\n\n  /**\n   * Valore numerico associato al valore immesso nel campo di input\n   */\n  numberValue: number;\n\n  selfValidationErrorMsg: string;\n\n  getCurrencySymbol = (): string => CURRENCY_SYMBOL[this.currency];\n  getCleanedValue = (s: string): string => s?.replace(CLEAN_VALUE_REGEX, '');\n\n  getNumberValue = (s: string): number => {\n    let v: string = this.getCleanedValue(s)?.replace(COMMA_REGEX, '.');\n    return parseFloat(v);\n  };\n\n  isNotBlankOrUndefined = (value: string): boolean => isNotBlankOrNull(value) && value != 'undefined' && value != 'null';\n  isBlankOrUndefined = (value: string): boolean => !this.isNotBlankOrUndefined(value);\n  showInputMoneyError = (): boolean => this.showError() || isNotBlankOrNull(this.selfValidationErrorMsg);\n  getInputMoneyError = (): string => this.error ?? this.selfValidationErrorMsg;\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-input-money]`;\n    this.emitDebug('NgInailCommonConfig:');\n    this.emitDebug(this.libConfig?.inputMoneyComponent);\n    super.overrideConfig(this.libConfig?.inputMoneyComponent);\n    this.detach();\n  }\n\n  ngOnChanges(changes: InputMoneyChanges): void {\n\n    super.ngOnChanges(changes);\n\n    if (isBlankOrNull(this.currency)) {\n\n      this.currency = 'EURO';\n    }\n\n    if (changes.currency || changes.showThousandsSeparator) {\n\n      this.impostaValoreVisibile();\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n\n    super.ngOnInit();\n\n    this.emitDebug(`@ViewChild('formControl')`);\n    this.emitDebug(this.formControlElement);\n\n    if (this.focus) {\n      this.push(\n        this.focus.subscribe((scroll: boolean) => {\n          this.emitDebug(`Catch focus!`);\n          setFocus(this.formControlElement.nativeElement, scroll);\n        })\n      );\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n  }\n\n  @Input()\n  set value(value: number) {\n\n    this.emitDebug(`@Input set value: ${this.numberValue} -> ${value}`);\n    this.inputValue = value != undefined ? `${value}` : '';\n    this.setValue(this.inputValue);\n  }\n\n  writeValue(value: number): void {\n\n    this.emitDebug(`writeValue: ${value}`);\n    this.inputValue = value != undefined ? `${value}` : '';\n    this.setValue(this.inputValue);\n  }\n\n  set inputTextValue(value: string) {\n\n    this.emitDebug(`set inputTextValue: ${this.inputValue} -> ${value}`);\n    this.inputValue = value;\n    this.setValue(this.inputValue);\n  }\n\n  get inputTextValue(): string {\n\n    return this.inputValue;\n  }\n\n  private setValue(value: string) {\n\n    this.emitDebug(`setValue: ${value}`);\n    // console.warn(`setValue: ${value}`)\n    let nextNumberValue: number;\n\n    if (this.isNotBlankOrUndefined(value)) {\n\n      nextNumberValue = this.getNumberValue(value);\n\n      // console.warn(`nextNumberValue: ${value}`)\n\n      // Se value e' un numero\n      if (!isNaN(nextNumberValue)) {\n\n        if (this.min != undefined && nextNumberValue < this.min) {\n\n          nextNumberValue = this.min;\n\n        } else if (this.max != undefined && nextNumberValue > this.max) {\n\n          nextNumberValue = this.max;\n        }\n      }\n      // Il valore inserito nell'input text non e' un numero\n      else {\n\n        nextNumberValue = undefined;\n\n        if (this.selfValidation) {\n\n          this.selfValidationErrorMsg = `${this.selfValidationError}`;\n        }\n      }\n\n    } else {\n      nextNumberValue = undefined;\n      this.selfValidationErrorMsg = undefined;\n    }\n\n    if (this.cleanErrorOnChange) {\n\n      this.cleanError();\n    }\n\n    if (nextNumberValue != this.numberValue) {\n\n      this.numberValue = nextNumberValue;\n      this.valueChange.emit(this.numberValue);\n\n      if (this.onChange) {\n\n        this.onChange(value);\n      }\n    }\n\n    this.impostaValoreVisibile();\n\n    this.detectChanges();\n  }\n\n  impostaValoreVisibile(focusIn?: boolean) {\n\n    if (this.numberValue != undefined) {\n\n      let nextInputValue: string;\n\n      // Eseguito quando il focus e' sull'elemento\n      if(this.hasFocus()) {\n\n        // focusIn serve per distinguere se si sta eseguendo il metodo durante la digitazione\n        // oppure quando l'elemento prende il focus\n        // (trick introdotto per visualizzare correttamente il valore in maschera)\n        nextInputValue = `${focusIn ? this.numberValue : this.inputValue}`.replace(DOT_REGEX, ',');\n\n      } else {\n\n        nextInputValue = `${this.numberValue}`.replace(DOT_REGEX, ',');\n\n        let a: string[] = nextInputValue.split(',');\n\n        if (this.showThousandsSeparator) {\n          while (THOUSANDS_REGEX.test(a[0])) {\n            a[0] = a[0].replace(THOUSANDS_REGEX, `$1.$2`);\n          }\n        }\n\n        if (this.numberOfDecimals > 0) {\n          let decimals = `${a[1] ?? ''}000000000000000000000`;\n          a[1] = decimals.substring(0, this.numberOfDecimals);\n          nextInputValue = a.join(',');\n        } else {\n          nextInputValue = a[0];\n        }\n      }\n\n      this.inputValue = `${nextInputValue} ${!this.hasFocus() ? this.getCurrencySymbol() : ''}`.trim();\n    }\n\n    this.detectChanges();\n  }\n\n  onFocusIn() {\n\n    this.impostaValoreVisibile(true);\n    setTimeout(() => this.formControlElement.nativeElement.select());\n  }\n\n  onFocusOut() {\n\n    this.impostaValoreVisibile();\n  }\n\n  isTypingAtTheBeginning = (): boolean => this.formControlElement.nativeElement.selectionStart === 0;\n  isValueFullSelected = (): boolean => this.inputValue?.length > 0\n    && (this.formControlElement.nativeElement.selectionEnd - this.formControlElement.nativeElement.selectionStart) === this.inputValue.length\n\n  // isWrongMinus = (ev: KeyboardEvent): boolean => ev.key == '-' && (isBlankOrNull(this.inputValue) || this.inputValue?.indexOf('-') > 0);\n  isWrongMinus = (ev: KeyboardEvent): boolean => ev.key == '-' && !this.isTypingAtTheBeginning();\n  isWrongComma = (ev: KeyboardEvent): boolean => ev.key == ',' && (isBlankOrNull(this.inputValue) || this.inputValue?.indexOf(',') > 0);\n  isCommaWithNoDecimals = (ev: KeyboardEvent): boolean => ev.key == ',' && this.numberOfDecimals <= 0;\n  isCtrlACV = (ev: KeyboardEvent): boolean => (ev.key == 'a' || ev.key == 'c' || ev.key == 'v') && ev.composed === true && ev.ctrlKey === true;\n  isDecimalDigit = (): boolean => {\n    let index: number = this.inputValue.indexOf(',');\n    return index >= 0 && this.formControlElement.nativeElement.selectionStart > index;\n  }\n\n  isMaximumNumberOfDecimalsReached(ev): boolean {\n    let v: string = this.getCleanedValue(this.inputValue);\n    return NUMBERS_INPUTS.some(v => v === ev.key) && v?.indexOf(',') > 0 && v.split(',')[1].length >= this.numberOfDecimals;\n  }\n\n  isWrongDigit = (ev: KeyboardEvent) => !ACCEPTED_INPUTS.some(v => v === ev.key)\n    || this.isWrongMinus(ev)\n    || this.isWrongComma(ev)\n    || this.isCommaWithNoDecimals(ev)\n    || (this.isDecimalDigit() && this.isMaximumNumberOfDecimalsReached(ev));\n\n  onKeyDown(ev: KeyboardEvent) {\n\n    // console.warn(ev)\n    // console.warn(this.inputValue)\n\n    if (this.isWrongDigit(ev) && !this.isCtrlACV(ev)) {\n\n      // console.warn('prevent')\n      ev.preventDefault();\n    }\n  }\n\n  onPaste($event: ClipboardEvent) {\n\n    if (this.preventPasting === true) {\n\n      $event.preventDefault();\n    }\n  }\n\n  ngOnDestroy(): void {\n\n    super.ngOnDestroy();\n  }\n}\n","<div class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-input-money\"\n     [ngClass]=\"{'has-error': isThereError()}\">\n  <label *ngIf=\"label\"\n         class=\"control-label {{labelClass}}\"\n         [ngClass]=\"{'sr-only': hiddenLabel}\"\n         [attr.title]=\"labelTitle\"\n         [for]=\"id\">\n    <span [innerHTML]=\"getLabel()\"></span>\n    <span *ngIf=\"showError()\"\n          [id]=\"errorId\"\n          class=\"msg msg-errore\">\n      <strong [innerHTML]=\"'ERRORE: '+error\"></strong>\n    </span>\n  </label>\n  <span *ngIf=\"showPopover()\"\n        [style.padding-left.px]=\"5\">\n    <inail-popover [iconClass]=\"popoverButtonIcon\"\n                   [buttonTitle]=\"popoverButtonTitle\"\n                   [header]=\"popoverHeader\"\n                   [content]=\"popoverContent\">\n    </inail-popover>\n  </span>\n  <div class=\"form-control-wrapper\"\n       [ngClass]=\"{'no-label' : hiddenLabel || !label}\">\n    <input #formControl\n           [id]=\"id\"\n           class=\"form-control {{inputClass}}\"\n           type=\"text\"\n           [ngClass]=\"{'disabled': disabled}\"\n           [attr.name]=\"name\"\n           [attr.title]=\"title\"\n           [disabled]=\"disabled\"\n           [readonly]=\"readonly\"\n           [attr.placeholder]=\"placeholder\"\n           [attr.aria-required]=\"required === true ? true : undefined\"\n           [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n           [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n           (blur)=\"onBlur()\"\n           (focusin)=\"onFocusIn()\"\n           (focusout)=\"onFocusOut()\"\n           (keydown)=\"onKeyDown($event)\"\n           (paste)=\"onPaste($event)\"\n           (keyup.enter)=\"enterUp.emit()\"\n           [(ngModel)]=\"inputTextValue\">\n  </div>\n  <div *ngIf=\"showDescription()\"\n       [id]=\"descriptionId\"\n       [ngClass]=\"{'desc-margin-top': showError()}\">\n    <span class=\"sr-only\" [innerHTML]=\"getLabel()\"></span>\n    <span [innerHTML]=\"description\"></span>\n  </div>\n  <debug-pre *ngIf=\"showState\">\n    <state-propertie [label]=\"'id'\" [propertie]=\"id\"></state-propertie>\n    <state-propertie [label]=\"'label'\" [propertie]=\"label\"></state-propertie>\n    <state-propertie [label]=\"'inputValue'\" [propertie]=\"inputValue\"></state-propertie>\n    <state-propertie [label]=\"'placeholder'\" [propertie]=\"placeholder\"></state-propertie>\n    <inail-form-element-state-properties [formElement]=\"this\"></inail-form-element-state-properties>\n  </debug-pre>\n</div>\n\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {CHANGE_DETECTION_STRATEGY, StringChange} from \"../../base.component\";\nimport {ResponsiveElementComponent, ResponsiveElementComponentChanges} from \"../../responsive-element.component\";\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"../../../../ng-inail-common.config\";\nimport {Observable} from \"rxjs\";\nimport {setFocus} from \"../../../../utils/common.operators\";\n\nexport type IconButtonImage = 'trash' | 'pencil' | 'question-circle' | 'exclamation-circle' | 'eye' | 'chevron-down' | 'chevron-up' | 'plus'\n  | 'plus-circle' | 'download' | 'exclamation-triangle' | 'euro' | 'file' | 'file-pdf' | 'file-word' | 'file-excel' | 'file-powerpoint'\n  | 'star' | 'paperclip' | 'angle-up' | 'angle-down';\n\nconst ICON_CLASS_MAP: { [param: string]: string } = {\n  'trash': 'fa-trash-alt',\n  'pencil': 'fa-pencil-alt',\n  'eye': 'fa-eye',\n  'plus': 'fa-plus',\n  'download': 'fa-download',\n  'euro': 'fa-euro-sign',\n  'file': 'fa-file-alt',\n  'star': 'fa-star',\n  'paperclip': 'fa-paperclip',\n  'plus-circle': 'fa-plus-circle',\n  'chevron-down': 'fa-chevron-down',\n  'chevron-up': 'fa-chevron-up',\n  'angle-down': 'fa-angle-down',\n  'angle-up': 'fa-angle-up',\n  'question-circle': 'fa-question-circle',\n  'exclamation-circle': 'fa-exclamation-circle',\n  'exclamation-triangle': 'fa-exclamation-triangle',\n  'file-pdf': 'fa-file-pdf',\n  'file-word': 'fa-file-word',\n  'file-excel': 'fa-file-excel',\n  'file-powerpoint': 'fa-file-powerpoint',\n}\n\nexport interface IconButtonComponentChanges extends ResponsiveElementComponentChanges {\n\n  icon: StringChange\n}\n\n@Component({\n  selector: 'inail-icon-button',\n  templateUrl: './icon-button.component.html',\n  styleUrls: ['./icon-button.component.css'],\n  changeDetection: CHANGE_DETECTION_STRATEGY,\n  encapsulation: ViewEncapsulation.None\n})\nexport class IconButtonComponent extends ResponsiveElementComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  @Input()\n  disabled: boolean = false;\n  @Input()\n  title: string;\n  @Input()\n  icon: IconButtonImage;\n  @Input()\n  iconClass: string;\n  @Input()\n  ariaExpanded: boolean;\n  @Input()\n  focus: Observable<boolean | void>;\n  @Output()\n  onclick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>()\n\n  @ViewChild('buttonElement', {static: true})\n  buttonElement: ElementRef<HTMLElement>;\n\n  faIconClass: string = '';\n\n  constructor(private cdr: ChangeDetectorRef,\n              @Inject(NG_INAIL_COMMON_CONFIG)\n              private libConfig: NgInailCommonConfig) {\n    super(cdr, libConfig);\n    this.logPrefix = `[inail-icon-button]`;\n  }\n\n  ngOnChanges(changes: IconButtonComponentChanges) {\n\n    super.ngOnChanges(changes);\n\n    if(changes.icon?.currentValue != undefined) {\n\n      this.faIconClass = ICON_CLASS_MAP[changes.icon.currentValue] ?? '';\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit() {\n    super.ngOnInit()\n    this.logPrefix = `${this.logPrefix}`\n\n    if (this.focus) {\n\n      this.push(this.focus.subscribe((scroll: boolean) => this.setFocus(scroll)));\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n    this.$(this.buttonElement.nativeElement).tooltip();\n  }\n\n  onClick($event: MouseEvent) {\n\n    if (!this.disabled) {\n\n      this.onclick.emit($event);\n    }\n  }\n\n  private setFocus(scroll: boolean) {\n\n    this.emitDebug(`Catch focus!`);\n    setFocus(this.buttonElement.nativeElement, scroll);\n  }\n}\n","<button #buttonElement\n        [id]=\"id\"\n        type=\"button\"\n        class=\"inail-icon-button {{getResponsiveClass()}} {{class}}\"\n        data-toggle=\"tooltip\"\n        [attr.data-original-title]=\"title\"\n        [attr.aria-expanded]=\"ariaExpanded\"\n        [disabled]=\"disabled\"\n        (click)=\"onClick($event)\">\n  <span class=\"fa {{iconClass}}\"\n        [ngClass]=\"faIconClass\">\n  </span>\n</button>\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {NgInailCommonComponent} from './ng-inail-common.component';\nimport {NG_INAIL_COMMON_CONFIG, NgInailCommonConfig} from \"./ng-inail-common.config\";\nimport {CommonModule, DatePipe} from \"@angular/common\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {provideHttpClient, withInterceptorsFromDi} from \"@angular/common/http\";\nimport {RouterModule} from \"@angular/router\";\nimport {BaseComponent} from './components/core/base.component';\nimport {BasicUxElementComponent} from './components/core/basic-ux-element.component';\nimport {ResponsiveElementComponent} from './components/core/responsive-element.component';\nimport {FormElementComponent} from './components/core/form/form-element.component';\nimport {InputTextComponent} from './components/core/form/input-text/input-text.component';\nimport {PreComponent} from \"./components/utilities/pre/pre.component\";\nimport {StatePropertieComponent} from \"./components/utilities/state-propertie/state-propertie.component\";\nimport {FormElementStatePropertieComponent} from \"./components/utilities/form-element-state-propertie/form-element-state-propertie.component\";\nimport {FooterComponent} from \"./components/core/layout/footer/footer.component\";\nimport {SelectComponent} from \"./components/core/form/select/select.component\";\nimport {NavigazionePrincipaleComponent} from \"./components/core/layout/navigazione-principale/navigazione-principale.component\";\nimport {MenuIntranetComponent} from \"./components/core/layout/menu-intranet/menu-intranet.component\";\nimport {HeaderComponent} from './components/core/layout/header/header.component';\nimport {LoaderComponent} from \"./components/core/layout/loader/loader.component\";\nimport {TriggerSliderMenuButtonComponent} from \"./components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component\";\nimport {NavigazioneSecondariaComponent} from \"./components/core/layout/navigazione-secondaria/navigazione-secondaria.component\";\nimport {InailLayoutComponent} from \"./components/core/layout/inail-layout/inail-layout.component\";\nimport {BreadcrumbComponent} from './components/core/layout/breadcrumb/breadcrumb.component';\nimport {FormGreyComponent} from \"./components/core/ux/form-grey/form-grey.component\";\nimport {PageTitleComponent} from \"./components/core/ux/page-title/page-title.component\";\nimport {FeedbackComponent} from \"./components/core/ux/feedback/feedback.component\";\nimport {MenuComponent} from \"./components/core/layout/menu/menu.component\";\nimport {AccordionComponent} from \"./components/core/ux/accordion/accordion.component\";\nimport {TabGroupComponent} from \"./components/core/ux/tab-group/tab-group.component\";\nimport {TabPaneComponent} from './components/core/ux/tab-pane/tab-pane.component';\nimport {ButtonComponent} from \"./components/core/ux/button/button.component\";\nimport {PopoverComponent} from './components/core/ux/popover/popover.component';\nimport {TextareaComponent} from \"./components/core/form/textarea/textarea.component\";\nimport {InputDateComponent} from \"./components/core/form/input-date/input-date.component\";\nimport {RadioSelectComponent} from \"./components/core/form/radio-select/radio-select.component\";\nimport {CheckboxComponent} from \"./components/core/form/checkbox/checkbox.component\";\nimport {ModalComponent} from './components/core/ux/modal/modal.component';\nimport {AlertComponent} from \"./components/core/ux/alert/alert.component\";\nimport {ConfirmComponent} from \"./components/core/ux/confirm/confirm.component\";\nimport {InailTablePageSelectorComponent} from \"./components/core/table/inail-table-page-selector/inail-table-page-selector.component\";\nimport {TablePageLengthSelectorComponent} from \"./components/core/table/table-page-length-selector/table-page-length-selector.component\";\nimport {TableComponent} from \"./components/core/table/table/table.component\";\nimport {ThLabelComponent} from \"./components/core/table/th-label/th-label.component\";\nimport {InputFileComponent} from \"./components/core/form/input-file/input-file.component\";\nimport {InputNumberComponent} from \"./components/core/form/input-number/input-number.component\";\nimport {SelectorComponent} from \"./components/core/ux/selector/selector.component\";\nimport {WizardComponent} from \"./components/core/ux/wizard/wizard.component\";\nimport {ContainerComponent} from \"./components/core/ux/container/container.component\";\nimport {TrCheckboxComponent} from \"./components/core/table/tr-checkbox/tr-checkbox.component\";\nimport {ProgressBarComponent} from \"./components/core/ux/progress-bar/progress-bar.component\";\nimport {MultiSelectComponent} from \"./components/core/form/multi-select/multi-select.component\";\nimport {InputTimeComponent} from \"./components/core/form/input-time/input-time.component\";\nimport {TrAccordionComponent} from \"./components/core/table/tr-accordion/tr-accordion.component\";\nimport {InputMoneyComponent} from \"./components/core/form/input-money/input-money.component\";\nimport {LogoHeaderComponent} from \"./components/core/layout/logo-header/logo-header.component\";\nimport {HeaderSecondarioComponent} from \"./components/core/layout/header-secondario/header-secondario.component\";\nimport {DynamicLayoutElementComponent} from './components/core/layout/dynamic-layout-element.component';\nimport {IconButtonComponent} from './components/core/ux/icon-button/icon-button.component';\n\n@NgModule({\n  declarations: [\n    NgInailCommonComponent,\n    BaseComponent,\n    BasicUxElementComponent,\n    ResponsiveElementComponent,\n    FormElementComponent,\n    InputTextComponent,\n    PreComponent,\n    StatePropertieComponent,\n    FormElementStatePropertieComponent,\n    FooterComponent,\n    SelectComponent,\n    NavigazionePrincipaleComponent,\n    MenuIntranetComponent,\n    HeaderComponent,\n    LoaderComponent,\n    TriggerSliderMenuButtonComponent,\n    NavigazioneSecondariaComponent,\n    InailLayoutComponent,\n    BreadcrumbComponent,\n    FormGreyComponent,\n    PageTitleComponent,\n    FeedbackComponent,\n    MenuComponent,\n    AccordionComponent,\n    TabGroupComponent,\n    TabPaneComponent,\n    ButtonComponent,\n    PopoverComponent,\n    TextareaComponent,\n    InputDateComponent,\n    RadioSelectComponent,\n    CheckboxComponent,\n    ModalComponent,\n    AlertComponent,\n    ConfirmComponent,\n    InailTablePageSelectorComponent,\n    TablePageLengthSelectorComponent,\n    TableComponent,\n    ThLabelComponent,\n    InputFileComponent,\n    InputNumberComponent,\n    SelectorComponent,\n    WizardComponent,\n    ContainerComponent,\n    TrCheckboxComponent,\n    ProgressBarComponent,\n    MultiSelectComponent,\n    InputTimeComponent,\n    TrAccordionComponent,\n    InputMoneyComponent,\n    LogoHeaderComponent,\n    HeaderSecondarioComponent,\n    DynamicLayoutElementComponent,\n    IconButtonComponent\n  ],\n  exports: [\n    NgInailCommonComponent,\n    InputTextComponent,\n    FooterComponent,\n    SelectComponent,\n    NavigazionePrincipaleComponent,\n    MenuIntranetComponent,\n    HeaderComponent,\n    LoaderComponent,\n    TriggerSliderMenuButtonComponent,\n    NavigazioneSecondariaComponent,\n    InailLayoutComponent,\n    BreadcrumbComponent,\n    FormGreyComponent,\n    PageTitleComponent,\n    FeedbackComponent,\n    MenuComponent,\n    AccordionComponent,\n    TabGroupComponent,\n    TabPaneComponent,\n    ButtonComponent,\n    PopoverComponent,\n    TextareaComponent,\n    InputDateComponent,\n    RadioSelectComponent,\n    CheckboxComponent,\n    ModalComponent,\n    AlertComponent,\n    ConfirmComponent,\n    InailTablePageSelectorComponent,\n    TablePageLengthSelectorComponent,\n    TableComponent,\n    ThLabelComponent,\n    InputFileComponent,\n    InputNumberComponent,\n    SelectorComponent,\n    WizardComponent,\n    ContainerComponent,\n    TrCheckboxComponent,\n    ProgressBarComponent,\n    MultiSelectComponent,\n    InputTimeComponent,\n    TrAccordionComponent,\n    InputMoneyComponent,\n    LogoHeaderComponent,\n    HeaderSecondarioComponent,\n    IconButtonComponent\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule\n  ],\n  providers: [\n    DatePipe,\n    provideHttpClient(withInterceptorsFromDi())\n  ]\n})\nexport class NgInailCommonModule {\n\n  static forRoot(config?: NgInailCommonConfig): ModuleWithProviders<NgInailCommonModule> {\n\n    return {\n      ngModule: NgInailCommonModule,\n      providers: [\n        {\n          provide: NG_INAIL_COMMON_CONFIG,\n          useValue: config\n        }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ng-inail-common\n */\n\nexport * from './lib/ng-inail-common.service';\nexport * from './lib/ng-inail-common.component';\nexport * from './lib/ng-inail-common.module';\n\n// ----- Componenti ----------------------------------------------------------------------------------\nexport * from './lib/ng-inail-common.config';\nexport * from './lib/components/core/base.component';\nexport * from './lib/components/core/responsive-element.component';\n\n// Form controls\nexport * from './lib/components/core/form/input-text/input-text.component';\nexport * from './lib/components/core/form/select/select.component';\nexport * from './lib/components/core/form/textarea/textarea.component';\nexport * from './lib/components/core/form/input-date/input-date.component';\nexport * from './lib/components/core/form/radio-select/radio-select.component';\nexport * from './lib/components/core/form/checkbox/checkbox.component';\nexport * from './lib/components/core/form/input-file/input-file.component';\nexport * from './lib/components/core/form/input-number/input-number.component';\nexport * from './lib/components/core/form/multi-select/multi-select.component';\nexport * from './lib/components/core/form/input-time/input-time.component';\nexport * from './lib/components/core/form/input-money/input-money.component';\n\n// Layout\nexport * from './lib/components/core/layout/trigger-slider-menu-button/trigger-slider-menu-button.component';\nexport * from './lib/components/core/layout/footer/footer.component';\nexport * from './lib/components/core/layout/navigazione-principale/navigazione-principale.component';\nexport * from './lib/components/core/layout/menu-intranet/menu-intranet.component';\nexport * from './lib/components/core/layout/header/header.component';\nexport * from './lib/components/core/layout/header-secondario/header-secondario.component';\nexport * from './lib/components/core/layout/logo-header/logo-header.component';\nexport * from './lib/components/core/layout/loader/loader.component';\nexport * from './lib/components/core/layout/navigazione-secondaria/navigazione-secondaria.component';\nexport * from './lib/components/core/layout/breadcrumb/breadcrumb.component';\nexport * from './lib/components/core/layout/menu/menu.component';\nexport * from './lib/components/core/layout/inail-layout/inail-layout.component';\nexport * from './lib/components/core/layout/inail-layout/static-resources';\n\n// Ux\nexport * from './lib/components/core/ux/form-grey/form-grey.component';\nexport * from './lib/components/core/ux/page-title/page-title.component';\nexport * from './lib/components/core/ux/feedback/feedback.component';\nexport * from './lib/components/core/ux/accordion/accordion.component';\nexport * from './lib/components/core/ux/tab-group/tab-group.component';\nexport * from './lib/components/core/ux/tab-pane/tab-pane.component';\nexport * from './lib/components/core/ux/button/button.component';\nexport * from './lib/components/core/ux/popover/popover.component';\nexport * from './lib/components/core/ux/modal/modal.component';\nexport * from './lib/components/core/ux/alert/alert.component';\nexport * from './lib/components/core/ux/confirm/confirm.component';\nexport * from './lib/components/core/ux/wizard/wizard.component';\nexport * from './lib/components/core/ux/selector/selector.component';\nexport * from './lib/components/core/ux/container/container.component';\nexport * from './lib/components/core/ux/progress-bar/progress-bar.component';\nexport * from './lib/components/core/ux/icon-button/icon-button.component';\n\n// Table\nexport * from './lib/components/core/table/inail-table-page-selector/inail-table-page-selector.component';\nexport * from './lib/components/core/table/table-page-length-selector/table-page-length-selector.component';\nexport * from './lib/components/core/table/table/table.component';\nexport * from './lib/components/core/table/th-label/th-label.component';\nexport * from './lib/components/core/table/tr-checkbox/tr-checkbox.component';\nexport * from './lib/components/core/table/tr-accordion/tr-accordion.component';\n\n// ----- Operatori e Types-----------------------------------------------------------------------------------\nexport * from './lib/utils/common.operators';\nexport * from './lib/utils/date.operators';\nexport * from './lib/utils/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["clone","i2.StatePropertieComponent","i3.PreComponent","i4.StatePropertieComponent","i5.FormElementStatePropertieComponent","i6.PopoverComponent","i1","i2","i3.AgwRestService","i4","i5.PreComponent","i6.StatePropertieComponent","i5","i6.PreComponent","i7.StatePropertieComponent","i3","i4.PreComponent","i5.StatePropertieComponent","i2.PreComponent","i3.StatePropertieComponent","i4.NavigazionePrincipaleComponent","i5.LogoHeaderComponent","i6.HeaderSecondarioComponent","i6.FooterComponent","i7.HeaderComponent","i8.LoaderComponent","i9.TriggerSliderMenuButtonComponent","i10.NavigazioneSecondariaComponent","i11.BreadcrumbComponent","ACCEPTED_INPUTS","i3.PopoverComponent","i2.ModalComponent","i2.ButtonComponent","i3.ModalComponent","DEFAULT_TABLE_LENGTH","i1.CheckboxComponent","i2.InailTablePageSelectorComponent","i3.TablePageLengthSelectorComponent","i2.PopoverComponent","i1.SelectorComponent","i4.CheckboxComponent"],"mappings":"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"}