{"version":3,"file":"design-angular-kit.mjs","sources":["../../../projects/design-angular-kit/src/lib/abstracts/abstract.component.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player-i18n.service.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player.config.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player.cookie.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player.component.ts","../../../projects/design-angular-kit/src/lib/utils/coercion.ts","../../../projects/design-angular-kit/src/lib/components/core/collapse/collapse.component.ts","../../../projects/design-angular-kit/src/lib/components/core/collapse/collapse.component.html","../../../projects/design-angular-kit/src/lib/components/core/accordion/accordion.component.ts","../../../projects/design-angular-kit/src/lib/components/core/accordion/accordion.component.html","../../../projects/design-angular-kit/src/lib/interfaces/design-angular-kit-config.ts","../../../projects/design-angular-kit/src/lib/components/utils/icon/icon.component.ts","../../../projects/design-angular-kit/src/lib/components/utils/icon/icon.component.html","../../../projects/design-angular-kit/src/lib/components/core/alert/alert.component.ts","../../../projects/design-angular-kit/src/lib/components/core/alert/alert.component.html","../../../projects/design-angular-kit/src/lib/components/core/link/link.component.ts","../../../projects/design-angular-kit/src/lib/components/core/link/link.component.html","../../../projects/design-angular-kit/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/dropdown/dropdown-item/dropdown-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/dropdown/dropdown/dropdown.component.ts","../../../projects/design-angular-kit/src/lib/components/core/dropdown/dropdown/dropdown.component.html","../../../projects/design-angular-kit/src/lib/components/core/dropdown/dropdown.module.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.html","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-extra-text.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-group/avatar-group.component.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-presence.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-status.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar-wrapper.directive.ts","../../../projects/design-angular-kit/src/lib/enums/colors.enums.ts","../../../projects/design-angular-kit/src/lib/enums/sizes.enum.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/avatar/avatar.module.ts","../../../projects/design-angular-kit/src/lib/components/core/badge/badge.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/progress-bar/progress-bar.component.ts","../../../projects/design-angular-kit/src/lib/components/core/progress-bar/progress-bar.component.html","../../../projects/design-angular-kit/src/lib/components/core/progress-button/progress-button.component.ts","../../../projects/design-angular-kit/src/lib/components/core/progress-button/progress-button.component.html","../../../projects/design-angular-kit/src/lib/components/core/button/button.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/callout/callout.component.ts","../../../projects/design-angular-kit/src/lib/components/core/callout/callout.component.html","../../../projects/design-angular-kit/src/lib/components/core/card/card.component.ts","../../../projects/design-angular-kit/src/lib/components/core/card/card.component.html","../../../projects/design-angular-kit/src/lib/components/core/carousel/carousel-item/carousel-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/carousel/carousel-item/carousel-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/carousel/carousel/carousel.component.ts","../../../projects/design-angular-kit/src/lib/components/core/carousel/carousel/carousel.component.html","../../../projects/design-angular-kit/src/lib/components/core/carousel/carousel.module.ts","../../../projects/design-angular-kit/src/lib/components/core/chip/chip.component.ts","../../../projects/design-angular-kit/src/lib/components/core/chip/chip.component.html","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer.component.ts","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer.component.html","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.ts","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.html","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.ts","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.html","../../../projects/design-angular-kit/src/lib/components/core/dimmer/dimmer.module.ts","../../../projects/design-angular-kit/src/lib/components/core/forward/forward.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/list/list/list.component.ts","../../../projects/design-angular-kit/src/lib/components/core/list/list/list.component.html","../../../projects/design-angular-kit/src/lib/components/core/list/list-item/list-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/list/list-item/list-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/list/list.module.ts","../../../projects/design-angular-kit/src/lib/components/core/modal/modal.component.ts","../../../projects/design-angular-kit/src/lib/components/core/modal/modal.component.html","../../../projects/design-angular-kit/src/lib/interfaces/core.ts","../../../projects/design-angular-kit/src/lib/services/notification/notification.service.ts","../../../projects/design-angular-kit/src/lib/components/core/notifications/notifications.component.ts","../../../projects/design-angular-kit/src/lib/components/core/notifications/notifications.component.html","../../../projects/design-angular-kit/src/lib/abstracts/abstract-form.component.ts","../../../projects/design-angular-kit/src/lib/utils/regex.ts","../../../projects/design-angular-kit/src/lib/validators/it-validators.ts","../../../projects/design-angular-kit/src/lib/components/form/input/input.component.ts","../../../projects/design-angular-kit/src/lib/components/form/input/input.component.html","../../../projects/design-angular-kit/src/lib/components/core/pagination/pagination.component.ts","../../../projects/design-angular-kit/src/lib/components/core/pagination/pagination.component.html","../../../projects/design-angular-kit/src/lib/components/core/popover/popover.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/spinner/spinner.component.ts","../../../projects/design-angular-kit/src/lib/components/core/spinner/spinner.component.html","../../../projects/design-angular-kit/src/lib/components/core/steppers/steppers-item/steppers-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/steppers/steppers-item/steppers-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/steppers/steppers-container/steppers-container.component.ts","../../../projects/design-angular-kit/src/lib/components/core/steppers/steppers-container/steppers-container.component.html","../../../projects/design-angular-kit/src/lib/components/core/steppers/steppers.module.ts","../../../projects/design-angular-kit/src/lib/components/core/tab/tab-item/tab-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/tab/tab-item/tab-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/tab/tab-container/tab-container.component.ts","../../../projects/design-angular-kit/src/lib/components/core/tab/tab-container/tab-container.component.html","../../../projects/design-angular-kit/src/lib/components/core/tab/tab.module.ts","../../../projects/design-angular-kit/src/lib/components/core/table/table.component.ts","../../../projects/design-angular-kit/src/lib/components/core/table/table.component.html","../../../projects/design-angular-kit/src/lib/interfaces/sortable-table.ts","../../../projects/design-angular-kit/src/lib/components/core/table/sort/sort.directive.ts","../../../projects/design-angular-kit/src/lib/components/core/table/sort/sort-header/sort-header.component.ts","../../../projects/design-angular-kit/src/lib/components/core/table/sort/sort-header/sort-header.component.html","../../../projects/design-angular-kit/src/lib/components/core/table/table.module.ts","../../../projects/design-angular-kit/src/lib/components/core/timeline/timeline-item/timeline-item.component.ts","../../../projects/design-angular-kit/src/lib/components/core/timeline/timeline-item/timeline-item.component.html","../../../projects/design-angular-kit/src/lib/components/core/timeline/timeline.component.ts","../../../projects/design-angular-kit/src/lib/components/core/timeline/timeline.component.html","../../../projects/design-angular-kit/src/lib/components/core/timeline/timeline.module.ts","../../../projects/design-angular-kit/src/lib/components/core/tooltip/tooltip.directive.ts","../../../projects/design-angular-kit/src/lib/components/form/checkbox/checkbox.component.ts","../../../projects/design-angular-kit/src/lib/components/form/checkbox/checkbox.component.html","../../../projects/design-angular-kit/src/lib/components/form/password-input/password-input.component.ts","../../../projects/design-angular-kit/src/lib/components/form/password-input/password-input.component.html","../../../projects/design-angular-kit/src/lib/components/form/radio-button/radio-button.component.ts","../../../projects/design-angular-kit/src/lib/components/form/radio-button/radio-button.component.html","../../../projects/design-angular-kit/src/lib/components/form/range/range.component.ts","../../../projects/design-angular-kit/src/lib/components/form/range/range.component.html","../../../projects/design-angular-kit/src/lib/components/form/rating/rating.component.ts","../../../projects/design-angular-kit/src/lib/components/form/rating/rating.component.html","../../../projects/design-angular-kit/src/lib/components/form/select/select.component.ts","../../../projects/design-angular-kit/src/lib/components/form/select/select.component.html","../../../projects/design-angular-kit/src/lib/components/form/textarea/textarea.component.ts","../../../projects/design-angular-kit/src/lib/components/form/textarea/textarea.component.html","../../../projects/design-angular-kit/src/lib/utils/file-utils.ts","../../../projects/design-angular-kit/src/lib/components/form/upload-drag-drop/upload-drag-drop.component.ts","../../../projects/design-angular-kit/src/lib/components/form/upload-drag-drop/upload-drag-drop.component.html","../../../projects/design-angular-kit/src/lib/components/form/upload-file-list/upload-file-list.component.ts","../../../projects/design-angular-kit/src/lib/components/form/upload-file-list/upload-file-list.component.html","../../../projects/design-angular-kit/src/lib/pipes/mark-matching-text.pipe.ts","../../../projects/design-angular-kit/src/lib/components/form/search/search.component.ts","../../../projects/design-angular-kit/src/lib/components/form/search/search.component.html","../../../projects/design-angular-kit/src/lib/components/form/transfer/store/transfer.reducers.ts","../../../projects/design-angular-kit/src/lib/components/form/transfer/store/transfer.store.ts","../../../projects/design-angular-kit/src/lib/components/form/transfer/transfer-list/transfer-list.component.ts","../../../projects/design-angular-kit/src/lib/components/form/transfer/transfer-list/transfer-list.component.html","../../../projects/design-angular-kit/src/lib/components/form/transfer/transfer.component.ts","../../../projects/design-angular-kit/src/lib/components/form/transfer/transfer.component.html","../../../projects/design-angular-kit/src/lib/components/form/autocomplete/autocomplete.component.ts","../../../projects/design-angular-kit/src/lib/components/form/autocomplete/autocomplete.component.html","../../../projects/design-angular-kit/src/lib/components/form/form.module.ts","../../../projects/design-angular-kit/src/lib/components/navigation/back-button/back-button.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/back-button/back-button.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/back-to-top/back-to-top.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/back-to-top/back-to-top.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/breadcrumbs/breadcrumbs.module.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navbar/navbar/navbar.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navbar/navbar/navbar.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/navbar/navbar-item/navbar-item.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navbar/navbar-item/navbar-item.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/navbar/navbar.module.ts","../../../projects/design-angular-kit/src/lib/components/navigation/header/header.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/header/header.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/footer/footer.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/footer/footer.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/megamenu/megamenu.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/megamenu/megamenu.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll.utils.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll.store.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll-list-item.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll-list-items.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/navscroll/navscroll.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/sidebar/sidebar.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/sidebar/sidebar.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/skiplink/skiplink/skiplink.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/skiplink/skiplink/skiplink.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.ts","../../../projects/design-angular-kit/src/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.html","../../../projects/design-angular-kit/src/lib/components/navigation/skiplink/skiplink.module.ts","../../../projects/design-angular-kit/src/lib/components/utils/error-page/error-page.component.ts","../../../projects/design-angular-kit/src/lib/components/utils/error-page/error-page.component.html","../../../projects/design-angular-kit/src/lib/components/utils/language-switcher/language-switcher.component.ts","../../../projects/design-angular-kit/src/lib/components/utils/language-switcher/language-switcher.component.html","../../../projects/design-angular-kit/src/lib/pipes/date-ago.pipe.ts","../../../projects/design-angular-kit/src/lib/pipes/duration.pipe.ts","../../../projects/design-angular-kit/src/lib/provide-design-angular-kit.ts","../../../projects/design-angular-kit/src/lib/design-angular-kit.module.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player.model.ts","../../../projects/design-angular-kit/src/lib/components/core/video-player/video-player.module.ts","../../../projects/design-angular-kit/src/lib/components/form/transfer/transfer.model.ts","../../../projects/design-angular-kit/src/lib/interfaces/icon.ts","../../../projects/design-angular-kit/src/lib/utils/date-utils.ts","../../../projects/design-angular-kit/src/public_api.ts","../../../projects/design-angular-kit/src/design-angular-kit.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\n\n@Component({\n  template: '',\n  standalone: false,\n})\nexport abstract class ItAbstractComponent implements AfterViewInit, OnChanges {\n  /**\n   * The element ID\n   */\n  @Input() id: string = this.getDefaultId();\n\n  /**\n   * Fired when component input attributes was changed\n   */\n  @Output() public valueChanges: EventEmitter<void>;\n\n  /**\n   * Counter of active instances\n   * @private\n   */\n  private static instances = 0;\n\n  protected readonly _renderer: Renderer2; // Injected\n  protected readonly _elementRef: ElementRef; // Injected\n  protected readonly _changeDetectorRef: ChangeDetectorRef; // Injected\n\n  constructor() {\n    this._renderer = inject(Renderer2);\n    this._elementRef = inject(ElementRef);\n    this._changeDetectorRef = inject(ChangeDetectorRef);\n\n    this.valueChanges = new EventEmitter<void>();\n  }\n\n  ngAfterViewInit(): void {\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'id');\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  ngOnChanges(changes: SimpleChanges): void {\n    this.valueChanges.next(); // The inputs were changed\n  }\n\n  /**\n   * Generate unique id for components\n   * @private\n   */\n  private getDefaultId(): string {\n    const name = this.constructor.name.replace('Component', '');\n    const kebabName = name.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\n    return `${kebabName}-${ItAbstractComponent.instances++}`;\n  }\n}\n","import { DestroyRef, inject, Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\nimport { tap } from 'rxjs';\nimport videojs from 'video.js';\nimport Player from 'video.js/dist/types/player';\nimport { VideoJsTranslation, VideoPlayerTranslations } from './video-player-i18n.model';\n\n@Injectable({ providedIn: 'root' })\nexport class VideoPlayerI18nService {\n  readonly #translate = inject(TranslateService);\n\n  init(player: Player, destroyRef: DestroyRef) {\n    this.#translate.onLangChange\n      .pipe(\n        takeUntilDestroyed(destroyRef),\n        tap({\n          next: e => {\n            const language = e.lang;\n            videojs.addLanguage(language, this.getTranslations());\n            player.language(language);\n          },\n        })\n      )\n      .subscribe(x => {\n        console.log('onLangChange', x);\n      });\n  }\n\n  getLanguage() {\n    const language = this.#translate.currentLang ?? 'it';\n\n    return {\n      languages: { [language]: mapToVideoJsTranslation(this.#translate.instant('it.video-player')) },\n      language,\n    };\n  }\n\n  private getTranslations() {\n    return mapToVideoJsTranslation(this.#translate.instant('it.video-player'));\n  }\n}\n\nfunction mapToVideoJsTranslation(translations: VideoPlayerTranslations): VideoJsTranslation {\n  return {\n    'Audio Player': translations['audio-player'],\n    'Video Player': translations['video-player'],\n    Play: translations.play,\n    Pause: translations.pause,\n    Replay: translations.replay,\n    'Current Time': translations['current-time'],\n    Duration: translations.duration,\n    'Remaining Time': translations['remaining-time'],\n    'Stream Type': translations['stream-type'],\n    LIVE: translations.live,\n    Loaded: translations.loaded,\n    Progress: translations.progress,\n    'Progress Bar': translations['progress-bar'],\n    'progress bar timing: currentTime={1} duration={2}': translations['progress-bar-timing:-currenttime={1}-duration={2}'],\n    Fullscreen: translations.fullscreen,\n    'Exit Fullscreen': translations['exit-fullscreen'],\n    Mute: translations.mute,\n    Unmute: translations.unmute,\n    'Playback Rate': translations['playback-rate'],\n    Subtitles: translations.subtitles,\n    'subtitles off': translations['subtitles-off'],\n    Captions: translations.captions,\n    'captions off': translations['captions-off'],\n    Chapters: translations.chapters,\n    Descriptions: translations.descriptions,\n    'descriptions off': translations['descriptions-off'],\n    'Audio Track': translations['audio-track'],\n    'Volume Level': translations['volume-level'],\n    'You aborted the media playback': translations['you-aborted-the-media-playback'],\n    'A network error caused the media download to fail part-way.':\n      translations['a-network-error-caused-the-media-download-to-fail-part-way.'],\n    'The media could not be loaded, either because the server or network failed or because the format is not supported.':\n      translations['the-media-could-not-be-loaded,-either-because-the-server-or-network-failed-or-because-the-format-is-not-supported.'],\n    'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.':\n      translations[\n        'the-media-playback-was-aborted-due-to-a-corruption-problem-or-because-the-media-used-features-your-browser-did-not-support.'\n      ],\n    'No compatible source was found for this media.': translations['no-compatible-source-was-found-for-this-media.'],\n    'The media is encrypted and we do not have the keys to decrypt it.':\n      translations['the-media-is-encrypted-and-we-do-not-have-the-keys-to-decrypt-it.'],\n    'Play Video': translations['play-video'],\n    Close: translations.close,\n    'Close Modal Dialog': translations['close-modal-dialog'],\n    'Modal Window': translations['modal-window'],\n    'This is a modal window': translations['this-is-a-modal-window'],\n    'This modal can be closed by pressing the Escape key or activating the close button.':\n      translations['this-modal-can-be-closed-by-pressing-the-escape-key-or-activating-the-close-button.'],\n    ', opens captions settings dialog': translations[',-opens-captions-settings-dialog'],\n    ', opens subtitles settings dialog': translations[',-opens-subtitles-settings-dialog'],\n    ', opens descriptions settings dialog': translations[',-opens-descriptions-settings-dialog'],\n    ', selected': translations[',-selected'],\n    'captions settings': translations['captions-settings'],\n    'subtitles settings': translations['subtitles-settings'],\n    'descriptions settings': translations['descriptions-settings'],\n    Text: translations.text,\n    White: translations.white,\n    Black: translations.black,\n    Red: translations.red,\n    Green: translations.green,\n    Blue: translations.blue,\n    Yellow: translations.yellow,\n    Magenta: translations.magenta,\n    Cyan: translations.cyan,\n    Background: translations.background,\n    Window: translations.window,\n    Transparent: translations.transparent,\n    'Semi-Transparent': translations['semi-transparent'],\n    Opaque: translations.opaque,\n    'Font Size': translations['font-size'],\n    'Text Edge Style': translations['text-edge-style'],\n    None: translations.none,\n    Uniform: translations.uniform,\n    'Drop shadow': translations['drop-shadow'],\n    'Font Family': translations['font-family'],\n    'Proportional Sans-Serif': translations['proportional-sans-serif'],\n    'Monospace Sans-Serif': translations['monospace-sans-serif'],\n    'Proportional Serif': translations['proportional-serif'],\n    'Monospace Serif': translations['monospace-serif'],\n    'Small Caps': translations['small-caps'],\n    Reset: translations.reset,\n    'restore all settings to the default values': translations['restore-all-settings-to-the-default-values'],\n    Done: translations.done,\n    'Caption Settings Dialog': translations['caption-settings-dialog'],\n    'Beginning of dialog window. Escape will cancel and close the window.':\n      translations['beginning-of-dialog-window.-escape-will-cancel-and-close-the-window.'],\n    'End of dialog window.': translations['end-of-dialog-window.'],\n    '{1} is loading.': translations['{1}-is-loading.'],\n    'Exit Picture-in-Picture': translations['exit-picture-in-picture'],\n    'Picture-in-Picture': translations['picture-in-picture'],\n    Color: translations.color,\n    Opacity: translations.opacity,\n    'Text Background': translations['text-background'],\n    'Caption Area Background': translations['caption-area-background'],\n    'Skip forward {1} seconds': translations['skip-forward-{1}-seconds'],\n    'Skip backward {1} seconds': translations['skip-backward-{1}-seconds'],\n  };\n}\n","import { inject, Injectable } from '@angular/core';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { initYoutubePlugin } from 'bootstrap-italia/dist/plugins/util/youtube-video.js';\nimport videojs from 'video.js';\nimport { VideoPlayerI18nService } from './video-player-i18n.service';\nimport { ItEmbedVideoPlayerOptions, ItNativeVideoPlayerOptions, ItVideoPlayerOptions } from './video-player.model';\n\nconst hasYoutubeVideo = (options: ItVideoPlayerOptions) => (options as ItEmbedVideoPlayerOptions).source?.type === 'video/youtube';\n\nexport type Tech = 'html5' | 'youtube';\n\n@Injectable({ providedIn: 'root' })\nexport class VideoPlayerConfigService {\n  readonly #languageService = inject(VideoPlayerI18nService);\n\n  async configureTech({ tech }: { tech: Tech }) {\n    if (tech === 'youtube') {\n      initYoutubePlugin(videojs);\n    }\n  }\n\n  mergeConfig(o: ItVideoPlayerOptions) {\n    const options = o as ItNativeVideoPlayerOptions;\n    const captions = options.captions ? options.captions.map(c => ({ ...c, kind: 'captions' })) : [];\n    const chapters = options.chapters ? options.chapters.map(c => ({ ...c, kind: 'chapters' })) : [];\n    const isYoutubeVideo = hasYoutubeVideo(options);\n    const DEFAULT_CONFIG = this.#languageService.getLanguage();\n    const tech = isYoutubeVideo ? 'youtube' : 'html5';\n    const techOrder = [tech];\n    //https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#preload\n    const preload = options.preload ?? 'metadata';\n    const config = { ...DEFAULT_CONFIG, ...options, preload, techOrder, tracks: [...captions, ...chapters], tech: 'html5' };\n    return isYoutubeVideo\n      ? {\n          ...config,\n          sources: [(o as ItEmbedVideoPlayerOptions).source],\n          tech: 'youtube',\n          youtube: { ytControls: 2, rel: 0, fs: 0, modestbranding: 1 },\n        }\n      : config;\n  }\n}\n","const preferencesMap: {\n  ck3: {\n    [key: string]: boolean;\n  };\n} = { ck3: {} };\nconst STORAGE_KEY = 'bs-ck3';\n/*\n  Possible choices:\n  false => Accept once\n  true => Accept always\n*/\nconst rememberChoice = (service: string, remember: boolean) => {\n  preferencesMap.ck3[service] = remember;\n  localStorage.setItem(STORAGE_KEY, JSON.stringify(preferencesMap.ck3));\n};\n\nconst isChoiceRemembered = (service: string) => {\n  preferencesMap.ck3 = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');\n  return Boolean(preferencesMap.ck3[service]) || false;\n};\n\nconst clearAllRememberedChoices = () => {\n  localStorage.removeItem(STORAGE_KEY);\n};\n\nconst cookies = {\n  rememberChoice,\n  isChoiceRemembered,\n  clearAllRememberedChoices,\n};\n\nexport { cookies };\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  inject,\n  Injector,\n  Input,\n  NgZone,\n  OnInit,\n  signal,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { delay } from 'rxjs';\nimport videojs from 'video.js';\nimport type Player from 'video.js/dist/types/player';\n\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { VideoPlayerI18nService } from './video-player-i18n.service';\nimport { Tech, VideoPlayerConfigService } from './video-player.config';\nimport { cookies } from './video-player.cookie';\nimport { ItVideoPlayerConfig, ItVideoPlayerOptions } from './video-player.model';\n\nenum ViewType {\n  Default = 'DEFAULT',\n  Overlay = 'OVERLAY',\n}\n\n/**\n * Video Player\n * @description Component that allows playing a video.\n */\n@Component({\n  standalone: true,\n  selector: 'it-video-player',\n  template: `@switch (viewType()) {\n      @case (viewTypes.Default) {\n        <div class=\"row\">\n          <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n          <ng-container *ngTemplateOutlet=\"transcriptionTemplate\"></ng-container>\n        </div>\n      }\n      @case (viewTypes.Overlay) {\n        <div #acceptOverlayable class=\"acceptoverlayable show\">\n          <div #acceptOveraly class=\"acceptoverlay acceptoverlay-primary fade show\">\n            <div class=\"acceptoverlay-inner\">\n              <div class=\"acceptoverlay-icon\">\n                <svg class=\"icon icon-xl\"><use href=\"/bootstrap-italia/dist/svg/sprites.svg#it-video\"></use></svg>\n              </div>\n              <p>\n                Accetta i cookie di YouTube per vedere il video. Puoi gestire le preferenze nella\n                <a href=\"#\" class=\"text-white\">cookie policy</a>.\n              </p>\n              <div class=\"acceptoverlay-buttons bg-dark\">\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"acceptCookieHandler()\">Accetta</button>\n                <div class=\"form-check\">\n                  <input id=\"chk-remember{{ id }}\" type=\"checkbox\" #chkRemember />\n                  <label for=\"chk-remember{{ id }}\">Ricorda per tutti i video</label>\n                </div>\n              </div>\n            </div>\n          </div>\n          @if (cookieAccepted()) {\n            <div>\n              <ng-container *ngTemplateOutlet=\"videoTemplate\"></ng-container>\n              <ng-container *ngTemplateOutlet=\"transcriptionTemplate\"></ng-container>\n            </div>\n          }\n        </div>\n      }\n      @default {\n        <h1>No video provider</h1>\n      }\n    }\n    <ng-template #videoTemplate>\n      <div>\n        <video #videoPlayer class=\"video-js vjs-theme-bootstrap-italia vjs-fluid vjs-big-play-centered\"></video>\n      </div>\n    </ng-template>\n\n    <ng-template #transcriptionTemplate>\n      <div class=\"vjs-transcription accordion\">\n        <div class=\"accordion-item\">\n          <h2 class=\"accordion-header \" id=\"transcription-{{ id }}-head\">\n            <button\n              class=\"accordion-button collapsed\"\n              type=\"button\"\n              data-bs-toggle=\"collapse\"\n              [attr.data-bs-target]=\"'#transcription-' + id\"\n              [attr.aria-controls]=\"'transcription-' + id\"\n              aria-expanded=\"true\">\n              <ng-content select=\"[transcriptionTitle]\">Trascrizione</ng-content>\n            </button>\n          </h2>\n          <div\n            id=\"transcription-{{ id }}\"\n            class=\"accordion-collapse collapse\"\n            role=\"region\"\n            [attr.aria-labelledby]=\"'transcription-' + id + '-head'\">\n            <div class=\"accordion-body\">\n              <ng-content select=\"[transcriptionText]\">-</ng-content>\n            </div>\n          </div>\n        </div>\n      </div>\n    </ng-template> `,\n  imports: [NgTemplateOutlet],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItVideoPlayerComponent extends ItAbstractComponent implements OnInit {\n  private config = inject(VideoPlayerConfigService);\n\n  /**\n   * Options for video player configuration\n   */\n  @Input() options!: ItVideoPlayerOptions;\n\n  @ViewChild('videoPlayer', { static: false }) videoPlayerRef?: ElementRef<HTMLVideoElement>;\n\n  @ViewChild('acceptOveraly', { static: false }) acceptOveralyRef?: ElementRef<HTMLDivElement>;\n\n  @ViewChild('acceptOverlayable', { static: false }) acceptOverlayableRef?: ElementRef<HTMLDivElement>;\n\n  @ViewChild('chkRemember', { static: false }) chrRememberRef?: ElementRef<HTMLInputElement>;\n\n  player: Player | null = null;\n\n  readonly viewTypes = ViewType;\n\n  readonly viewType = signal<ViewType | undefined>(undefined);\n\n  readonly cookieAccepted = signal(false);\n\n  protected readonly i18nService = inject(VideoPlayerI18nService);\n\n  readonly #destroyRef = inject(DestroyRef);\n\n  private ngZone = inject(NgZone);\n  private injector = inject(Injector);\n\n  constructor() {\n    super();\n\n    afterNextRender(() => {\n      if (this.viewType() === ViewType.Overlay && cookies.isChoiceRemembered('youtube.com')) {\n        this.hideOverlay();\n      }\n    });\n\n    this.#destroyRef.onDestroy(() => this.player?.dispose());\n  }\n\n  async ngOnInit() {\n    const config = this.config.mergeConfig(this.options);\n    this.setViewType(config);\n    // Avoid running change detections while the script is being loaded.\n    await this.ngZone.runOutsideAngular(() => this.config.configureTech(config as { tech: Tech }));\n\n    if (!this.videoPlayerRef) {\n      // Note: No need to pipe with `takeUntilDestroyed`; `toObservable` is\n      // completed by Angular when the `DestroyRef` from the injector is destroyed.\n      toObservable(this.cookieAccepted, { injector: this.injector })\n        .pipe(delay(0))\n        .subscribe(value => {\n          if (value && !this.player) {\n            this.initVideoPlayer();\n          }\n        });\n\n      return;\n    }\n\n    this.initVideoPlayer();\n  }\n\n  acceptCookieHandler() {\n    this.rememberHandler();\n    this.hideOverlay();\n    this.cookieAccepted.set(true);\n  }\n\n  private initVideoPlayer() {\n    const config = this.config.mergeConfig(this.options);\n    this.setVideoAttributes(config);\n    this.setVideoPlayer();\n  }\n\n  private setVideoPlayer() {\n    const config = this.config.mergeConfig(this.options);\n    const onPlayerReadyCb = () => {\n      if (!this.player) {\n        return;\n      }\n      this.i18nService.init(this.player, this.#destroyRef);\n    };\n\n    const element = this.videoPlayerRef?.nativeElement;\n    if (!element) {\n      throw Error('videoPlayerRef is undefined');\n    }\n\n    this.player = this.ngZone.runOutsideAngular(() => videojs(element, config, onPlayerReadyCb));\n  }\n\n  private setViewType(config: ItVideoPlayerConfig) {\n    this.viewType.set(config.tech === 'youtube' ? ViewType.Overlay : ViewType.Default);\n\n    this.cookieAccepted.set(this.viewType() === ViewType.Overlay && cookies.isChoiceRemembered('youtube.com'));\n  }\n\n  private hideOverlay() {\n    if (!this.acceptOverlayableRef) {\n      return;\n    }\n    const classes = ['show'];\n    this.acceptOverlayableRef.nativeElement.classList.remove(...classes);\n    if (!this.acceptOveralyRef) {\n      return;\n    }\n    this.acceptOveralyRef.nativeElement.classList.remove(...classes);\n    this.acceptOveralyRef.nativeElement.setAttribute('aria-hidden', 'true');\n  }\n\n  private rememberHandler() {\n    if (!this.chrRememberRef) {\n      return;\n    }\n    const remember = this.chrRememberRef.nativeElement.checked;\n    cookies.rememberChoice('youtube.com', remember);\n  }\n\n  private setVideoAttributes(options: ItVideoPlayerOptions) {\n    if (!this.videoPlayerRef) {\n      return;\n    }\n    const v = this.videoPlayerRef.nativeElement;\n\n    const { autoplay, controls, loop, muted, poster, fluid } = options;\n\n    if (autoplay) {\n      v.setAttribute('autoplay', autoplay.toString());\n    }\n\n    if (controls) {\n      v.setAttribute('controls', '');\n    }\n\n    if (loop) {\n      v.setAttribute('loop', '');\n    }\n\n    if (muted) {\n      v.setAttribute('muted', '');\n    }\n\n    if (poster) {\n      v.setAttribute('poster', poster);\n    }\n\n    if (fluid) {\n      v.setAttribute('fluid', '');\n    }\n\n    v.setAttribute('preload', 'none');\n    v.setAttribute('playsinline', '');\n  }\n}\n","import { booleanAttribute } from '@angular/core';\n\nexport type BooleanInput = 'false' | 'true' | boolean | undefined;\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n *  @usageNotes\n *  ```typescript\n *  @Input({ transform: booleanAttribute }) status?: boolean;\n *  ```\n * @param {BooleanInput} value Value to be transformed.\n *\n * @publicApi\n */\nexport function inputToBoolean(value: BooleanInput): boolean {\n  // Wrap `@angular/core` function to force value type, for ide hits\n  return booleanAttribute(value);\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { Collapse } from 'bootstrap-italia';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-collapse',\n  templateUrl: './collapse.component.html',\n  exportAs: 'itCollapse',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItCollapseComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * Enable multiple collapse\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) multi?: boolean;\n\n  /**\n   * Toggles the collapsible element on invocation\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) opened?: boolean;\n\n  /**\n   * Custom class\n   */\n  @Input() class: string = '';\n\n  /**\n   * This event fires immediately when the show method is called.\n   */\n  @Output() showEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() shownEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires immediately when the hide method is called.\n   */\n  @Output() hideEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() hiddenEvent: EventEmitter<Event> = new EventEmitter();\n\n  private collapse?: Collapse;\n\n  private open: boolean = false;\n\n  @ViewChild('collapse') protected collapseDiv?: ElementRef<HTMLDivElement>;\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');\n\n    if (this.collapseDiv) {\n      const element = this.collapseDiv.nativeElement;\n      this.collapse = Collapse.getOrCreateInstance(element, {\n        toggle: this.opened,\n      });\n\n      element.addEventListener('show.bs.collapse', event => {\n        this.open = true;\n        this.showEvent.emit(event);\n      });\n      element.addEventListener('shown.bs.collapse', event => {\n        this.open = true;\n        this.shownEvent.emit(event);\n      });\n      element.addEventListener('hide.bs.collapse', event => {\n        this.open = false;\n        this.hideEvent.emit(event);\n      });\n      element.addEventListener('hidden.bs.collapse', event => {\n        this.open = false;\n        this.hiddenEvent.emit(event);\n      });\n    }\n  }\n\n  /**\n   * Shows if collapse is open or not\n   */\n  public isOpen(): boolean {\n    return this.open;\n  }\n\n  /**\n   * Shows a resealable item\n   * NOTE: Returns to the caller before the collapsable element has actually been shown (onShown event).\n   */\n  public show(): void {\n    this.collapse?.show();\n  }\n\n  /**\n   * Hides a resealable item\n   * NOTE: Returns to the caller before the collapsable element has actually been hidden (onHidden Event)\n   */\n  public hide(): void {\n    this.collapse?.hide();\n  }\n\n  /**\n   * Toggle a collapsible item to show or hide it.\n   * NOTE: Returns to the caller before the collapsable element has actually been shown or hidden (onShown and onHidden events)\n   */\n  public toggle(): void {\n    this.collapse?.toggle();\n  }\n\n  /**\n   * Eliminates the possibility of an item being resealable\n   */\n  public dispose(): void {\n    this.collapse?.dispose();\n  }\n}\n","<div [id]=\"id\" class=\"collapse {{ class }}\" [class.multi-collapse]=\"multi\" #collapse>\n  <ng-content></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { ItCollapseComponent } from '../collapse/collapse.component';\n\n/**\n * Accordion\n * @description Build vertically collapsible accordions based on Collapse.\n */\n@Component({\n  selector: 'it-accordion',\n  templateUrl: './accordion.component.html',\n  exportAs: 'itAccordion',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItAccordionComponent extends ItCollapseComponent implements AfterViewInit {\n  /**\n   * Accordion Title\n   */\n  @Input({ required: true }) title!: string;\n\n  @ViewChild('collapse') protected override collapseDiv?: ElementRef<HTMLDivElement>;\n\n  protected isCollapsed: boolean = true;\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'title');\n\n    this.isCollapsed = !this.opened;\n    this.hideEvent.subscribe(() => {\n      this.isCollapsed = true;\n      this._changeDetectorRef.detectChanges();\n    });\n    this.showEvent.subscribe(() => {\n      this.isCollapsed = false;\n      this._changeDetectorRef.detectChanges();\n    });\n  }\n}\n","<div class=\"accordion\">\n  <div class=\"accordion-item\">\n    <h2 class=\"accordion-header\" id=\"collapse-{{ id }}-heading\">\n      <button\n        class=\"accordion-button\"\n        type=\"button\"\n        data-bs-toggle=\"collapse\"\n        [class.collapsed]=\"isCollapsed\"\n        [attr.data-bs-target]=\"'#collapse-' + id\"\n        [attr.aria-controls]=\"'collapse-' + id\"\n        [attr.aria-expanded]=\"opened ? 'true' : 'false'\">\n        {{ title }}\n      </button>\n    </h2>\n\n    <div\n      #collapse\n      id=\"collapse-{{ id }}\"\n      role=\"region\"\n      class=\"accordion-collapse collapse {{ class }}\"\n      [attr.aria-labelledby]=\"'collapse-' + id + '-heading'\">\n      <div class=\"accordion-body\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n  </div>\n</div>\n","import { InjectionToken, Provider } from '@angular/core';\n\n/**\n * The bootstrap-italia asset folder path\n * @default ./bootstrap-italia\n */\nexport const IT_ASSET_BASE_PATH = new InjectionToken<string>('it-asset-base-path');\n\nexport interface DesignAngularKitConfig {\n  /**\n   * The bootstrap-italia asset folder path\n   * @default ./bootstrap-italia\n   */\n  assetBasePath?: string;\n\n  /**\n   * Load the <a href=\"https://italia.github.io/bootstrap-italia/docs/come-iniziare/introduzione/#fonts\">bootstrap-italia fonts</a>\n   * @default true\n   */\n  loadFont?: boolean;\n\n  /**\n   * The TranslateModule loader\n   * @param itPrefix the design-angular-kit i18n path\n   * @param itSuffix the design-angular-kit i18n suffix\n   * @default\n   * {\n   *   provide: TranslateLoader,\n   *   useFactory: (http: HttpClient) => new TranslateHttpLoader(http, `${assetBasePath}/i18n/`, `.json?v${version}`),\n   *   deps: [HttpClient],\n   * }\n   */\n  translateLoader?: (itPrefix: string, itSuffix: string) => Provider;\n}\n","import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { IconColor, IconName, IconSize } from '../../../interfaces/icon';\nimport { inputToBoolean } from '../../../utils/coercion';\nimport { IT_ASSET_BASE_PATH } from '../../../interfaces/design-angular-kit-config';\n\n@Component({\n  selector: 'it-icon',\n  templateUrl: './icon.component.html',\n  styles: ':host {display: contents;} .icon-current-color { fill: currentColor; }',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItIconComponent {\n  /**\n   * The icon name\n   */\n  @Input({ required: true }) name!: IconName;\n\n  /**\n   * The icon size\n   */\n  @Input() size: IconSize | undefined;\n\n  /**\n   * The icon color\n   */\n  @Input() color: IconColor | undefined;\n\n  /**\n   * Create a padding proportional to the size of the surrounding icon.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) padded?: boolean;\n\n  /**\n   * Custom class of svg\n   */\n  @Input() svgClass: string | undefined;\n\n  /**\n   * Title of the icon\n   */\n  @Input() title: string | undefined;\n\n  /**\n   * Custom Waria label\n   */\n  @Input() labelWaria: string | undefined;\n\n  /**\n   * Return the icon href\n   */\n  protected get iconHref(): string {\n    return `${this.assetBasePath}/dist/svg/sprites.svg#it-${this.name}`;\n  }\n\n  /**\n   * Return the icon class\n   */\n  protected get iconClass(): string {\n    let iconClass = 'icon';\n    if (this.size) {\n      iconClass += ` icon-${this.size}`;\n    }\n    if (this.color) {\n      iconClass += ` icon-${this.color}`;\n    } else {\n      iconClass += ' icon-current-color';\n    }\n    if (this.padded) {\n      iconClass += ` icon-padded`;\n    }\n    if (this.svgClass) {\n      iconClass += ` ${this.svgClass}`;\n    }\n    return iconClass;\n  }\n\n  /**\n   * The bootstrap-italia asset folder path\n   * @default ./bootstrap-italia\n   */\n  protected assetBasePath: string;\n\n  get isAriaHidden(): boolean {\n    return this.labelWaria == undefined && this.title == undefined;\n  }\n\n  get role(): string | null {\n    return this.labelWaria == undefined && this.title == undefined ? null : 'img';\n  }\n\n  constructor() {\n    this.assetBasePath = inject(IT_ASSET_BASE_PATH);\n  }\n}\n","<svg [attr.role]=\"role\" [attr.aria-hidden]=\"isAriaHidden\" [attr.aria-label]=\"title || labelWaria\" [class]=\"iconClass\">\n  @if (title || labelWaria) {\n    <title>{{ title || labelWaria }}</title>\n  }\n  <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n</svg>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { AlertColor } from '../../../interfaces/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { Alert } from 'bootstrap-italia';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n/**\n * Alert\n * @description You can provide feedback to the user via alert messages.\n */\n@Component({\n  selector: 'it-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  exportAs: 'itAlert',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, ItIconComponent],\n})\nexport class ItAlertComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * The alert color\n   * @default info\n   */\n  @Input() color: AlertColor = 'info';\n\n  /**\n   * Inserts the close button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dismissible?: boolean;\n\n  /**\n   * This event fires immediately when the instance's close method is called.\n   */\n  @Output() public closeEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires when the alert has been closed (it will wait for CSS transitions to complete).\n   */\n  @Output() public closedEvent: EventEmitter<Event> = new EventEmitter();\n\n  private alert?: Alert;\n\n  @ViewChild('alertElement') private alertElement?: ElementRef<HTMLDivElement>;\n  @ViewChild('headingEl') private headingEl?: ElementRef<HTMLHeadingElement>;\n\n  override ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    // Hide empty heading to prevent accessibility issues (#547)\n    if (this.headingEl?.nativeElement) {\n      const el = this.headingEl.nativeElement;\n      if (el.textContent?.trim() === '') {\n        el.hidden = true;\n      }\n    }\n\n    if (this.alertElement) {\n      const element = this.alertElement.nativeElement;\n      this.alert = Alert.getOrCreateInstance(element);\n\n      element.addEventListener('close.bs.alert', event => this.closeEvent.emit(event));\n      element.addEventListener('closed.bs.alert', event => this.closedEvent.emit(event));\n    }\n  }\n\n  /**\n   * Close an alert by removing it from the DOM.\n   * If the `.fade` and `.show` classes are present in the element, the alert will be closed with a disappearing effect.\n   */\n  public close(): void {\n    this.alert?.close();\n  }\n\n  /**\n   * The alert is removed\n   */\n  public dispose(): void {\n    this.alert?.dispose();\n  }\n}\n","<div\n  #alertElement\n  class=\"alert alert-{{ color }}\"\n  [class.alert-dismissible]=\"dismissible\"\n  [class.fade]=\"dismissible\"\n  [class.show]=\"dismissible\"\n  role=\"alert\">\n  <h4 #headingEl class=\"alert-heading\">\n    <ng-content select=\"[heading]\"></ng-content>\n  </h4>\n\n  <ng-content></ng-content>\n\n  @if (dismissible) {\n    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" [attr.aria-label]=\"'it.core.close-alert' | translate\">\n      <it-icon name=\"close\"></it-icon>\n    </button>\n  }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-link',\n  templateUrl: './link.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [RouterLink, RouterLinkActive, NgTemplateOutlet],\n})\nexport class ItLinkComponent extends ItAbstractComponent implements AfterViewInit, OnChanges {\n  /**\n   * The router link action\n   *\n   * Commands to pass to Router#createUrlTree.\n   * - array: commands to pass to Router#createUrlTree.\n   * - string: shorthand for array of commands with just the string, i.e. ['/route']\n   * - null|undefined: Disables the link by removing the href\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @Input() href: any[] | string | null | undefined;\n\n  /**\n   * Is an external link (false to not use Angular router link)\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) externalLink?: boolean;\n\n  /**\n   * Is disabled link\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disabled?: boolean;\n\n  /**\n   * Custom class\n   */\n  @Input() class: string = '';\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    super.ngOnChanges(changes);\n    if (changes['class']) {\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n}\n","@if (!externalLink) {\n  <a [id]=\"id\" [class]=\"class\" [routerLinkActive]=\"'active'\" [routerLink]=\"(disabled ? null : href)!\" style=\"cursor: pointer\">\n    <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n  </a>\n} @else {\n  <a [id]=\"id\" [class]=\"class\" [attr.href]=\"disabled ? null : href\" style=\"cursor: pointer\">\n    <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n  </a>\n}\n\n<ng-template #linkContent>\n  <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, OnInit } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconName } from '../../../../interfaces/icon';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { ItLinkComponent } from '../../link/link.component';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-dropdown-item, li[itDropdownItem]',\n  templateUrl: './dropdown-item.component.html',\n  styleUrls: ['./dropdown-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, TranslateModule, ItLinkComponent, NgTemplateOutlet],\n})\nexport class ItDropdownItemComponent extends ItLinkComponent implements OnInit {\n  /**\n   * Show divider\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) divider?: boolean;\n\n  /**\n   * Active item\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) active?: boolean;\n\n  /**\n   * To increase the size of links\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) large?: boolean;\n\n  /**\n   * The name of icon to show\n   */\n  @Input() iconName: IconName | undefined;\n\n  /**\n   * The icon position\n   * @default right\n   */\n  @Input() iconPosition: 'left' | 'right' = 'right';\n\n  /**\n   * Dropdown mode\n   */\n  @Input() mode?: 'button' | 'link' | 'nav' = 'button';\n\n  /**\n   * Change icon color if menu is dark\n   * @default false\n   */\n  isDark: boolean = false;\n\n  private elRef = inject(ElementRef);\n  protected isHostElement = false;\n\n  get linkClass(): string {\n    let linkClass = `list-item ${this.active ? 'active' : 'dropdown-item'}`;\n    if (this.mode === 'nav') {\n      linkClass += ' nav-link';\n    }\n    if (this.disabled) {\n      linkClass += ' disabled';\n    }\n    if (this.large) {\n      linkClass += ' large';\n    }\n    if (this.iconName) {\n      linkClass += ` ${this.iconPosition === 'right' ? 'right-icon' : 'left-icon'}`;\n    }\n\n    return linkClass;\n  }\n\n  ngOnInit(): void {\n    this.isHostElement = this.elRef.nativeElement.tagName.toLowerCase() === 'li';\n\n    if (!this.isHostElement) {\n      console.warn(\n        `L'utilizzo del componente attraverso il selettore it-dropdown-item verrà deprecato in quanto non accessibile. Usa il selettore itDropdownItem invece. Consulta la documentazione del component Dropdown.`\n      );\n    }\n  }\n\n  setDark(dark: boolean): void {\n    if (this.isDark !== dark) {\n      this.isDark = dark;\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n}\n","@if (isHostElement) {\n  <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n  <li>\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </li>\n}\n\n<ng-template #content>\n  @if (divider) {\n    <span class=\"divider\"></span>\n  } @else {\n    <it-link [class]=\"linkClass\" [id]=\"id\" [href]=\"href\" [externalLink]=\"externalLink\" [disabled]=\"disabled\">\n      @if (iconName && iconPosition === 'left') {\n        <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n      }\n      <span><ng-content></ng-content></span>\n      @if (iconName && iconPosition === 'right') {\n        <it-icon size=\"sm\" [name]=\"iconName\" [color]=\"isDark ? 'light' : 'primary'\" [svgClass]=\"iconPosition\"></it-icon>\n      }\n      @if (active) {\n        <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n      }\n    </it-link>\n  }\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\nimport { ButtonColor, DropdownDirection } from '../../../../interfaces/core';\nimport { ItDropdownItemComponent } from '../dropdown-item/dropdown-item.component';\nimport { Dropdown } from 'bootstrap-italia';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-dropdown',\n  templateUrl: './dropdown.component.html',\n  styleUrls: ['./dropdown.component.scss'],\n  exportAs: 'itDropdown',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, NgTemplateOutlet],\n})\nexport class ItDropdownComponent extends ItAbstractComponent implements AfterViewInit, OnChanges {\n  /**\n   * Dropdown mode\n   */\n  @Input() mode: 'button' | 'link' | 'nav' = 'button';\n\n  /**\n   * Button color\n   */\n  @Input() color?: ButtonColor;\n\n  /**\n   * To open menu items to:\n   * - <strong>dropup</strong>: up\n   * - <strong>dropend</strong>: right\n   * - <strong>dropstart</strong>: left\n   */\n  @Input() direction: DropdownDirection | undefined;\n\n  /**\n   * To get a dropdown menu as wide as the element containing the dropdown button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) fullWidth?: boolean;\n\n  /**\n   * Contains a Megamenu element\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) megamenu?: boolean;\n\n  /**\n   * Dark menu style\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dark?: boolean;\n\n  /**\n   * The dropdown items\n   */\n  @ContentChildren(ItDropdownItemComponent) items?: QueryList<ItDropdownItemComponent>;\n\n  /**\n   * Fires immediately when the show instance method is called.\n   */\n  @Output() showEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * Fired when the dropdown has been made visible to the user and CSS transitions have completed.\n   */\n  @Output() shownEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * Fires immediately when the hide instance method has been called.\n   */\n  @Output() hideEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * Fired when the dropdown has finished being hidden from the user and CSS transitions have completed.\n   */\n  @Output() hiddenEvent: EventEmitter<Event> = new EventEmitter();\n\n  private dropdown?: Dropdown;\n\n  @ViewChild('dropdownButton') private dropdownButton?: ElementRef<HTMLButtonElement>;\n\n  get buttonClass(): string {\n    let btnClass = 'btn dropdown-toggle';\n    if (this.color) {\n      btnClass += ` btn-${this.color}`;\n    } else {\n      btnClass += ` btn-dropdown`;\n    }\n\n    return btnClass;\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    if (changes['dark'] && !changes['dark'].firstChange) {\n      this.setDarkItems();\n    }\n    if (changes['mode'] && !changes['mode'].firstChange) {\n      this.updateListeners();\n    }\n    super.ngOnChanges(changes);\n  }\n\n  override ngAfterViewInit() {\n    super.ngAfterViewInit();\n    this.setDarkItems();\n    this.updateListeners();\n    this.items?.forEach(item => {\n      item.mode = this.mode;\n    });\n  }\n\n  /**\n   * Set child items dark mode\n   * @private\n   */\n  private setDarkItems(): void {\n    if (this.dark !== undefined) {\n      this.items?.forEach(item => {\n        item.setDark(!!this.dark);\n      });\n    }\n  }\n\n  private updateListeners(): void {\n    if (this.dropdownButton) {\n      const element = this.dropdownButton.nativeElement;\n      this.dropdown = Dropdown.getOrCreateInstance(element);\n\n      element.addEventListener('show.bs.dropdown', event => this.showEvent.emit(event));\n      element.addEventListener('shown.bs.dropdown', event => this.shownEvent.emit(event));\n      element.addEventListener('hide.bs.dropdown', event => this.hideEvent.emit(event));\n      element.addEventListener('hidden.bs.dropdown', event => this.hiddenEvent.emit(event));\n    }\n  }\n\n  /**\n   * Toggles the dropdown menu of a given navbar or tabbed navigation.\n   */\n  public toggle(): void {\n    this.dropdown?.toggle();\n  }\n\n  /**\n   * Shows the dropdown menu of a given navbar or tabbed navigation.\n   */\n  public show(): void {\n    this.dropdown?.show();\n  }\n\n  /**\n   * Hides the dropdown menu of a given navbar or tabbed navigation.\n   */\n  public hide(): void {\n    this.dropdown?.hide();\n  }\n\n  /**\n   * Updates the position of an element's dropdown.\n   */\n  public update(): void {\n    this.dropdown?.update();\n  }\n\n  /**\n   * Destroys an element's dropdown. (Removes stored data on the DOM element)\n   */\n  public dispose(): void {\n    this.dropdown?.dispose();\n  }\n}\n","<div class=\"dropdown {{ direction }}\" [class.nav-item]=\"mode === 'nav'\" [class.megamenu]=\"megamenu\">\n  @if (mode === 'button') {\n    <button\n      #dropdownButton\n      [id]=\"id\"\n      [class]=\"buttonClass\"\n      type=\"button\"\n      data-bs-toggle=\"dropdown\"\n      aria-haspopup=\"true\"\n      aria-expanded=\"false\">\n      <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n      <it-icon svgClass=\"icon-expand\" name=\"expand\" size=\"sm\" [color]=\"this.color ? 'light' : 'primary'\"></it-icon>\n    </button>\n  } @else {\n    <a\n      #dropdownButton\n      [id]=\"id\"\n      [class.btn]=\"mode === 'link'\"\n      [class.btn-dropdown]=\"mode === 'link'\"\n      [class.nav-link]=\"mode === 'nav'\"\n      href=\"#\"\n      class=\"dropdown-toggle\"\n      role=\"button\"\n      data-bs-toggle=\"dropdown\"\n      aria-haspopup=\"true\"\n      aria-expanded=\"false\">\n      <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n      <it-icon svgClass=\"icon-expand\" name=\"expand\" size=\"sm\"></it-icon>\n    </a>\n  }\n\n  <div class=\"dropdown-menu\" [class.full-width]=\"fullWidth\" [class.dark]=\"dark\" [attr.aria-labelledby]=\"id\">\n    <div class=\"link-list-wrapper\">\n      <div class=\"link-list-heading\">\n        <ng-content select=\"[listHeading]\"></ng-content>\n      </div>\n      <ul class=\"link-list\">\n        <ng-content select=\"[list]\"></ng-content>\n      </ul>\n    </div>\n  </div>\n</div>\n\n<ng-template #buttonContent>\n  <ng-content select=\"[button]\"></ng-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ItDropdownComponent } from './dropdown/dropdown.component';\nimport { ItDropdownItemComponent } from './dropdown-item/dropdown-item.component';\n\nconst dropdownComponents = [ItDropdownComponent, ItDropdownItemComponent];\n\n@NgModule({\n  imports: dropdownComponents,\n  exports: dropdownComponents,\n})\nexport class ItDropdownModule {}\n","import { Component, ContentChildren, HostBinding, Input, QueryList, TemplateRef, ViewChild } from '@angular/core';\nimport { ItDropdownModule } from '../../dropdown/dropdown.module';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n  selector: 'it-avatar-dropdown-item',\n  template: '<ng-template><ng-content></ng-content></ng-template>',\n  styleUrls: ['./avatar-dropdown.component.scss'],\n  imports: [NgTemplateOutlet],\n})\nexport class ItAvatarDropdownItemComponent {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @ViewChild(TemplateRef, { static: true }) _implicitContent!: TemplateRef<any>;\n\n  /**\n   * Indica il link che possiamo passare all'elemento\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @Input() link: string | any[] | null | undefined;\n\n  /**\n   * Permette di utilizzare l'attributo html title\n   */\n  @Input() title?: string;\n\n  /**\n   * Permette di utilizzare l'attributo html accesskey\n   */\n  @Input() accesskey?: string;\n\n  /**\n   * Permette di utilizzare l'attributo html tabindex\n   */\n  @Input() tabindex?: number;\n}\n\n@Component({\n  selector: 'it-avatar-dropdown',\n  templateUrl: './avatar-dropdown.component.html',\n  styleUrls: ['./avatar-dropdown.component.scss'],\n  imports: [ItDropdownModule, NgTemplateOutlet, RouterLink],\n})\nexport class ItAvatarDropdownComponent {\n  @HostBinding('class') componentClass = 'avatar avatar-dropdown';\n\n  @ContentChildren(ItAvatarDropdownItemComponent) items!: QueryList<ItAvatarDropdownItemComponent>;\n}\n","<it-dropdown id=\"dropdown\" class=\"dropdown\">\n  <ng-content button select=\"[it-avatar-dropdown-toggle]\"></ng-content>\n  <ng-container list class=\"dropdown-menu\">\n    @for (item of items; track item) {\n      <li>\n        @if (item.link) {\n          <a\n            [routerLink]=\"item.link\"\n            class=\"dropdown-item list-item\"\n            title=\"item.title\"\n            accesskey=\"item.accesskey\"\n            tabindex=\"item.tabindex\">\n            <ng-template *ngTemplateOutlet=\"item._implicitContent\"></ng-template>\n          </a>\n        } @else {\n          <div class=\"dropdown-item list-item\">\n            <ng-template *ngTemplateOutlet=\"item._implicitContent\"></ng-template>\n          </div>\n        }\n      </li>\n    }\n  </ng-container>\n</it-dropdown>\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatarExtraText]',\n  exportAs: 'itAvatarExtraText',\n})\nexport class ItAvatarExtraTextDirective {\n  @HostBinding('class')\n  get hostClasses(): string {\n    const cssClass = 'extra-text';\n    return cssClass;\n  }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChildren, Directive, HostBinding, Input, QueryList, TemplateRef, ViewChild } from '@angular/core';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatarListItem]',\n  exportAs: 'itAvatarListItem',\n})\nexport class ItAvatarListItemDirective {\n  @HostBinding('class')\n  get hostClasses(): string {\n    const cssClass = `list-item`;\n    return cssClass;\n  }\n}\n\n@Component({\n  standalone: true,\n  selector: 'it-avatar-item',\n  template: `<ng-template let-linkListItem=\"linkList\">\n    <ng-content></ng-content>\n  </ng-template>`,\n})\nexport class ItAvatarGroupItemComponent {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @ViewChild(TemplateRef, { static: true }) _implicitContent!: TemplateRef<any>;\n}\n\n@Component({\n  selector: 'it-avatar-group',\n  imports: [NgTemplateOutlet],\n  template: `\n    <ul [class]=\"linkList ? 'link-list avatar-group' : 'avatar-group-stacked'\">\n      @for (avatar of avatars; track avatar) {\n        <li>\n          <ng-container *ngTemplateOutlet=\"avatar._implicitContent; context: { linkList: linkList }\"></ng-container>\n        </li>\n      }\n    </ul>\n  `,\n})\nexport class ItAvatarGroupComponent {\n  @Input({ transform: inputToBoolean }) @HostBinding('class.link-list-wrapper') linkList = false;\n\n  @ContentChildren(ItAvatarGroupItemComponent) avatars!: QueryList<ItAvatarGroupItemComponent>;\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatarPresence]',\n  exportAs: 'itAvatarPresence',\n})\nexport class ItAvatarPresenceDirective {\n  /**\n   * Indica lo stato della presenza. Può assumere i valori:\n   * <ul>\n   * <li> active\n   * <li> busy\n   * <li> hidden\n   * </ul>\n   */\n  @Input()\n  get presence(): string | undefined {\n    return this._presence;\n  }\n  set presence(value: string | undefined) {\n    this._presence = value;\n  }\n  private _presence?: string;\n\n  @HostBinding('class')\n  get hostClasses(): string {\n    const cssClass = `avatar-presence ${this._presence}`;\n    return cssClass;\n  }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatarStatus]',\n  exportAs: 'itAvatarStatus',\n})\nexport class ItAvatarStatusDirective {\n  /**\n   * Indica lo stato della presenza. Può assumere i valori:\n   * <ul>\n   * <li> approved\n   * <li> declined\n   * <li> notify\n   * </ul>\n   */\n  @Input()\n  get status(): string | undefined {\n    return this._status;\n  }\n  set status(value: string | undefined) {\n    this._status = value;\n  }\n  private _status?: string;\n\n  @HostBinding('class')\n  get hostClasses(): string {\n    const cssClass = `avatar-status ${this._status}`;\n    return cssClass;\n  }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatarWrapper]',\n  exportAs: 'itAvatarWrapper',\n})\nexport class ItAvatarWrapperDirective {\n  @Input({ transform: inputToBoolean }) extraText: boolean = false;\n\n  @HostBinding('class')\n  get hostClasses(): string {\n    let cssClass = 'avatar-wrapper';\n\n    if (this.extraText) {\n      cssClass += ' avatar-extra-text';\n    }\n\n    return cssClass;\n  }\n}\n","export enum ColorsEnum {\n  primary = 'primary',\n  secondary = 'secondary',\n  success = 'success',\n  danger = 'danger',\n  warning = 'warning',\n  green = 'green',\n  orange = 'orange',\n  red = 'red',\n}\n","export enum SizesEnum {\n  xs = 'size-xs',\n  sm = 'size-sm',\n  lg = 'size-lg',\n  xl = 'size-xl',\n  xxl = 'size-xxl',\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { ColorsEnum } from '../../../enums/colors.enums';\nimport { SizesEnum } from '../../../enums/sizes.enum';\n\n@Directive({\n  standalone: true,\n  selector: '[itAvatar]',\n  exportAs: 'itAvatar',\n})\nexport class ItAvatarDirective {\n  /**\n   * Indica il colore dell'avatar. Può assumere i valori:\n   * <ul>\n   * <li> primary\n   * <li> secondary\n   * <li> green\n   * <li> orange\n   * <li> red\n   * </ul>\n   */\n  @Input()\n  get color(): string | undefined {\n    return this._color;\n  }\n  set color(value: string | undefined) {\n    const colorsKey = value as keyof typeof ColorsEnum;\n    if (ColorsEnum[colorsKey]) {\n      this._color = ColorsEnum[colorsKey];\n    } else {\n      this._color = undefined;\n    }\n  }\n  private _color?: ColorsEnum;\n  /**\n   * Indica la grandezza dell'avatar. Può assumere i valori:\n   * <ul>\n   * <li> xs\n   * <li> sm\n   * <li> lg\n   * <li> xl\n   * <li> xxl\n   * </ul>\n   */\n  @Input()\n  get size(): SizesEnum | undefined {\n    return this._size;\n  }\n  set size(value: string | undefined) {\n    const sizesKey = value as keyof typeof SizesEnum;\n    if (SizesEnum[sizesKey]) {\n      this._size = SizesEnum[sizesKey];\n    } else {\n      this._size = undefined;\n    }\n  }\n\n  private _size?: SizesEnum;\n\n  @HostBinding('class')\n  get hostClasses(): string {\n    let cssClass = 'avatar';\n\n    if (this.size) {\n      cssClass += ` ${this.size}`;\n    }\n\n    if (this.color) {\n      cssClass += ` avatar-${this.color}`;\n    }\n\n    return cssClass;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ItAvatarDropdownComponent, ItAvatarDropdownItemComponent } from './avatar-dropdown/avatar-dropdown.component';\nimport { ItAvatarExtraTextDirective } from './avatar-extra-text.directive';\nimport { ItAvatarGroupComponent, ItAvatarGroupItemComponent, ItAvatarListItemDirective } from './avatar-group/avatar-group.component';\nimport { ItAvatarPresenceDirective } from './avatar-presence.directive';\nimport { ItAvatarStatusDirective } from './avatar-status.directive';\nimport { ItAvatarWrapperDirective } from './avatar-wrapper.directive';\nimport { ItAvatarDirective } from './avatar.directive';\n\nconst avatarComponents = [\n  ItAvatarGroupItemComponent,\n  ItAvatarGroupComponent,\n  ItAvatarDropdownComponent,\n  ItAvatarDropdownItemComponent,\n  ItAvatarDirective,\n  ItAvatarExtraTextDirective,\n  ItAvatarWrapperDirective,\n  ItAvatarStatusDirective,\n  ItAvatarPresenceDirective,\n  ItAvatarListItemDirective,\n];\n\n@NgModule({\n  imports: avatarComponents,\n  exports: avatarComponents,\n})\nexport class ItAvatarModule {}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { BadgeColor } from '../../../interfaces/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n/**\n * Badge\n * @description Useful for small counters and labels\n */\n@Directive({\n  standalone: true,\n  selector: '[itBadge]',\n  exportAs: 'itBadge',\n})\nexport class ItBadgeDirective {\n  /**\n   * Define the badge color\n   * @default undefined\n   */\n  @Input('itBadge') color: BadgeColor | undefined;\n\n  /**\n   * Show rounded badge\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) rounded?: boolean;\n\n  @HostBinding('class')\n  protected get badgeClass(): string {\n    let badgeClass = 'badge';\n    if (this.rounded) {\n      badgeClass += ` rounded-pill`;\n    }\n    if (this.color) {\n      badgeClass += ` bg-${this.color}`;\n    }\n\n    return badgeClass;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ProgressBarColor } from '../../../interfaces/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-progress-bar',\n  templateUrl: './progress-bar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule],\n})\nexport class ItProgressBarComponent {\n  /**\n   * The progress bar value [0, 100]\n   */\n  @Input({ required: true }) value!: number;\n\n  /**\n   * Show the progress label\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) showLabel?: boolean;\n\n  /**\n   * Show the progress as indeterminate\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) indeterminate?: boolean;\n\n  /**\n   * The progress bar color\n   */\n  @Input() color: ProgressBarColor | undefined;\n\n  /**\n   * Return the background color\n   */\n  get bgColor(): string {\n    if (!this.color) {\n      return '';\n    }\n\n    return ` bg-${this.color}`;\n  }\n}\n","<div class=\"progress-bar-wrapper\">\n  @if (showLabel) {\n    <div class=\"progress-bar-label\">\n      <span class=\"visually-hidden\">{{ 'it.core.progress' | translate }} </span>{{ value }}%\n    </div>\n  }\n  <div class=\"progress\" [class.progress-color]=\"!!color\" [class.progress-indeterminate]=\"indeterminate\">\n    @if (indeterminate) {\n      <div class=\"progress-bar{{ bgColor }}\" role=\"progressbar\"></div>\n    } @else {\n      <div\n        class=\"progress-bar{{ bgColor }}\"\n        role=\"progressbar\"\n        [style.width.%]=\"value\"\n        [attr.aria-valuenow]=\"value\"\n        aria-valuemin=\"0\"\n        aria-valuemax=\"100\"></div>\n    }\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ProgressBarColor } from '../../../interfaces/core';\nimport { ItProgressBarComponent } from '../progress-bar/progress-bar.component';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: 'button[itButton][progress]',\n  templateUrl: './progress-button.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItProgressBarComponent],\n})\nexport class ItProgressButtonComponent {\n  /**\n   * Behavior of the progress bar\n   * - <b>true</b>: Show indeterminate progress bar\n   * - <b>false</b> or <b>undefined</b>: Hide progress bar\n   * - <b>number</b> [0, 100]: Assign a specific value to the progress bar\n   * @default undefined\n   */\n  @Input() progress: number | boolean | undefined;\n\n  /**\n   * The progress bar color\n   */\n  @Input() progressColor: ProgressBarColor | undefined;\n\n  get isProgress(): boolean {\n    return typeof this.progress === 'number' || !!this.progress;\n  }\n\n  get progressValue(): number {\n    return typeof this.progress === 'number' ? this.progress : 0;\n  }\n\n  get isIndeterminate(): boolean {\n    return typeof this.progress !== 'number' && !!this.progress;\n  }\n}\n","<ng-content></ng-content>\n\n@if (isProgress) {\n  <it-progress-bar [value]=\"progressValue\" [indeterminate]=\"isIndeterminate\" [color]=\"progressColor\"></it-progress-bar>\n}\n","import { ContentChildren, Directive, HostBinding, Input, QueryList, inject } from '@angular/core';\nimport { ButtonColor, ButtonSize } from '../../../interfaces/core';\nimport { inputToBoolean } from '../../../utils/coercion';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { ItProgressButtonComponent } from '../progress-button/progress-button.component';\n\n/**\n * Button\n * @description Bootstrap italia custom button styles\n */\n@Directive({\n  standalone: true,\n  selector: '[itButton]',\n  exportAs: 'itButton',\n})\nexport class ItButtonDirective {\n  private progressButtonComponent = inject(ItProgressButtonComponent, { optional: true, host: true })!;\n\n  /**\n   * Button color\n   * @default undefined\n   */\n  @Input('itButton') color: ButtonColor | undefined;\n\n  /**\n   * Button size\n   * @default undefined\n   */\n  @Input() size: ButtonSize | undefined;\n\n  /**\n   * Indicates whether the button occupies all the width available to it.\n   * @default undefined\n   */\n  @Input() block: ButtonSize | undefined;\n\n  /**\n   * If button is disabled\n   * @default false\n   */\n  @Input({ transform: inputToBoolean })\n  @HostBinding('attr.aria-disabled')\n  disabled?: boolean;\n\n  /**\n   * The type attribute\n   * @default button\n   */\n  @Input()\n  @HostBinding('attr.type')\n  type: 'button' | 'reset' | 'submit' = 'button';\n\n  /**\n   * The icon children\n   * @default undefined\n   */\n  @ContentChildren(ItIconComponent) protected icons?: QueryList<ItIconComponent>;\n\n  @HostBinding('class')\n  protected get hostClasses(): string {\n    let cssClass = 'btn';\n\n    if (this.color) {\n      cssClass += ` btn-${this.color}`;\n    }\n\n    if (this.size) {\n      cssClass += ` btn-${this.size}`;\n    }\n\n    if (this.block) {\n      cssClass += ' btn-block';\n    }\n\n    if (this.disabled) {\n      cssClass += ' disabled';\n    }\n\n    if (this.icons?.length && !this.progressButtonComponent) {\n      cssClass += ' btn-icon';\n    }\n\n    if (this.progressButtonComponent) {\n      cssClass += ' btn-progress';\n    }\n\n    return cssClass;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CalloutAppearance, CalloutColor } from '../../../interfaces/core';\nimport { IconName } from '../../../interfaces/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\n\n/**\n * Callout\n * @description Callouts can be used to highlight certain parts of the text that require particular attention. They may contain error messages, warnings, hints, etc.\n */\n@Component({\n  selector: 'it-callout',\n  templateUrl: './callout.component.html',\n  styles: [\n    `\n      .callout-big-text:empty {\n        display: none;\n      }\n    `,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, ItIconComponent],\n})\nexport class ItCalloutComponent {\n  /**\n   * Callout label\n   * @default undefined\n   */\n  @Input() label: string | undefined;\n\n  /**\n   * Callout hiddenLabel\n   * @default undefined\n   */\n  @Input() hiddenLabel: string | undefined;\n\n  /**\n   * Callout color\n   * - <b>success</b>\n   * - <b>danger</b>\n   * - <b>warning</b>\n   * - <b>important</b>\n   * - <b>note</b>\n   * @default undefined\n   */\n  @Input() color: CalloutColor | undefined;\n\n  /**\n   * Callout appearance\n   * - <b>default</b>\n   * - <b>highlight</b>: Callout version with border only on the left side\n   * - <b>more</b>: It looks radically different from the other styles available and is suitable for more extensive texts\n   * @default default\n   */\n  @Input() appearance: CalloutAppearance = 'default';\n\n  /**\n   * Custom icon\n   * @default undefined\n   */\n  @Input() icon: IconName | undefined;\n\n  /**\n   * The input label even get labelWaria icon\n   * @default undefined\n   */\n  @Input() labelWaria: string | undefined = undefined;\n\n  protected get iconName(): IconName {\n    if (this.icon) {\n      return this.icon;\n    }\n\n    if (this.appearance === 'more') {\n      return 'zoom-in';\n    }\n\n    switch (this.color) {\n      case 'success':\n        return 'check-circle';\n      case 'warning':\n        return 'help-circle';\n      case 'danger':\n        return 'close-circle';\n      case 'important':\n      case 'note':\n      default:\n        return 'info-circle';\n    }\n  }\n}\n","<div class=\"callout {{ color }}\" [class.callout-highlight]=\"appearance === 'highlight'\" [class.callout-more]=\"appearance === 'more'\">\n  @if (appearance === 'default') {\n    <div class=\"callout-inner\">\n      <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n    </div>\n  } @else {\n    <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n  }\n</div>\n\n<ng-template #inner>\n  @if (label) {\n    <div class=\"callout-title\">\n      <it-icon [labelWaria]=\"labelWaria\" [name]=\"iconName\"></it-icon>\n      @if (hiddenLabel) {\n        <span class=\"visually-hidden\">{{ hiddenLabel }}</span>\n      }\n      <span class=\"text\">{{ label }}</span>\n    </div>\n  }\n  <p class=\"callout-big-text\">\n    <ng-content select=\"[bigText]\"></ng-content>\n  </p>\n  <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n/**\n * Card\n * @description A container of texts and images with many options and variations.\n */\n@Component({\n  selector: 'it-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet],\n})\nexport class ItCardComponent extends ItAbstractComponent {\n  /**\n   * To create inline cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) inline?: boolean;\n\n  /**\n   * To create inline mini cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) mini?: boolean;\n\n  /**\n   * To add border\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) border: boolean = true;\n\n  /**\n   * To create banner cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) banner?: boolean;\n\n  /**\n   * To create profile cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) profile?: boolean;\n\n  /**\n   * To create rounded cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) rounded?: boolean;\n\n  /**\n   * To create inline reverse cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) reverse?: boolean;\n\n  /**\n   * To create full height cards\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) fullHeight?: boolean;\n\n  /**\n   * Card with image\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) hasImage?: boolean;\n\n  /**\n   * To add top border\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) borderTop?: boolean;\n\n  /**\n   * Custom card class\n   * @default ''\n   */\n  @Input() cardClass: string = '';\n\n  /**\n   * Custom card body class\n   * @default ''\n   */\n  @Input() bodyClass: string = '';\n\n  /**\n   * Remove the default padding applied by Bootstrap Italia to the card.\n   * Useful for cards with minimal content (e.g. title + image only) where the\n   * default padding-bottom makes the content appear off-center.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) noPadding?: boolean;\n\n  /**\n   * Shadow type\n   * @default 'sm'\n   */\n  @Input() shadow: 'sm' | 'lg' | 'normal' | 'none' = 'sm';\n}\n","<ng-template #cardContent>\n  <ng-content select=\"[beforeBody]\"></ng-content>\n  <ng-content></ng-content>\n</ng-template>\n\n<article\n  class=\"it-card rounded {{ cardClass }}\"\n  [class.border]=\"border\"\n  [class.rounded]=\"rounded\"\n  [class.shadow-sm]=\"shadow === 'sm'\"\n  [class.shadow-lg]=\"shadow === 'lg'\"\n  [class.shadow]=\"shadow === 'normal'\"\n  [class.it-card-image]=\"hasImage\"\n  [class.it-card-height-full]=\"fullHeight\"\n  [class.it-card-inline]=\"inline\"\n  [class.it-card-inline-reverse]=\"reverse\"\n  [class.it-card-inline-mini]=\"mini\"\n  [class.it-card-banner]=\"banner\"\n  [class.it-card-profile]=\"profile\"\n  [class.it-card-border-top]=\"borderTop\"\n  [class.it-card-border-top-secondary]=\"borderTop\"\n  [class.p-0]=\"noPadding\">\n  <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n</article>\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\n\n/**\n * Carousel Item\n * @description element, image or text slide of carousel\n */\n@Component({\n  selector: 'it-carousel-item',\n  templateUrl: './carousel-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItCarouselItemComponent extends ItAbstractComponent {\n  /**\n   * The content of item\n   */\n  @ViewChild(TemplateRef) public htmlContent!: TemplateRef<any>;\n}\n","<ng-template>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  OnDestroy,\n  QueryList,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport { CarouselType } from '../../../../interfaces/core';\nimport { ItCarouselItemComponent } from '../carousel-item/carousel-item.component';\nimport { Carousel } from 'bootstrap-italia';\nimport { startWith, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n/**\n * Carousel\n * @description A presentation component for scrolling through elements, images or text slides.\n */\n@Component({\n  selector: 'it-carousel',\n  templateUrl: './carousel.component.html',\n  exportAs: 'itCarousel',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet],\n})\nexport class ItCarouselComponent implements AfterViewInit, OnDestroy {\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /**\n   * The callout title\n   * @default undefined\n   */\n  @Input() title: string | undefined;\n\n  /**\n   * The carousel type\n   * @default default\n   */\n  @Input() type: CarouselType = 'default';\n\n  /**\n   * Custom class in splide__track element\n   * @default ''\n   */\n  @Input() trackClass: string = '';\n\n  /**\n   * True for full screen (landscape) viewing\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) fullCarousel?: boolean;\n\n  /**\n   * To indicate that the contained image is of a large type\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) bigImg?: boolean;\n\n  /**\n   * To indicate that the contained image is of a standard type\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) standardImage?: boolean;\n\n  /**\n   * Card line style\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) lined?: boolean;\n\n  @ContentChildren(ItCarouselItemComponent) protected items?: QueryList<ItCarouselItemComponent>;\n\n  private carousel?: Carousel;\n\n  @ViewChild('carousel') private carouselDiv!: ElementRef<HTMLDivElement>;\n\n  private itemSubscriptions?: Array<Subscription>;\n\n  protected get typeClass(): string {\n    const typeClass = 'it-carousel-landscape-abstract';\n    return this.type === 'default' ? typeClass : typeClass + `-${this.type}`;\n  }\n\n  ngAfterViewInit(): void {\n    this.items?.changes\n      .pipe(\n        // When carousel items changes (dynamic add/remove)\n        startWith(undefined)\n      )\n      .subscribe(() => {\n        this.itemSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions\n        this.itemSubscriptions = this.items?.map(item =>\n          item.valueChanges.subscribe(() => {\n            this._changeDetectorRef.detectChanges(); // DetectChanges when carousel item attributes changes\n          })\n        );\n        this._changeDetectorRef.detectChanges(); // Force update html render\n      });\n    setTimeout(() => {\n      this.carousel = Carousel.getOrCreateInstance(this.carouselDiv.nativeElement);\n    }, 100);\n  }\n\n  ngOnDestroy(): void {\n    this.itemSubscriptions?.forEach(item => item.unsubscribe());\n  }\n\n  /**\n   * Removes Carousel features\n   */\n  public dispose(): void {\n    this.carousel?.dispose();\n  }\n}\n","<div\n  #carousel\n  class=\"it-carousel-wrapper splide {{ typeClass }}\"\n  [class.it-full-carousel]=\"fullCarousel\"\n  [class.it-big-img]=\"bigImg\"\n  [class.it-standard-image]=\"standardImage\">\n  @if (title) {\n    <div class=\"it-header-block\">\n      <div class=\"it-header-block-title\">\n        <h2>{{ title }}</h2>\n      </div>\n    </div>\n  }\n\n  <div class=\"splide__track {{ trackClass }}\">\n    @if (items) {\n      <ul class=\"splide__list\">\n        @for (item of items; track item) {\n          <li class=\"splide__slide\" [class.lined_slide]=\"lined\">\n            <div class=\"it-single-slide-wrapper\">\n              <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n            </div>\n          </li>\n        }\n      </ul>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItCarouselComponent } from './carousel/carousel.component';\nimport { ItCarouselItemComponent } from './carousel-item/carousel-item.component';\n\nconst carouselComponents = [ItCarouselComponent, ItCarouselItemComponent];\n\n@NgModule({\n  imports: carouselComponents,\n  exports: carouselComponents,\n})\nexport class ItCarouselModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { IconName } from '../../../interfaces/icon';\nimport { ChipColor } from '../../../interfaces/core';\nimport { NgClass } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IT_ASSET_BASE_PATH } from '../../../interfaces/design-angular-kit-config';\n\n@Component({\n  selector: 'it-chip',\n  templateUrl: './chip.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgClass, TranslateModule],\n  host: { style: 'display: inline-block; vertical-align: middle' },\n})\nexport class ItChipComponent {\n  /**\n   * Indica la label\n   */\n  @Input() set label(value: string) {\n    this._label = value;\n  }\n\n  get label(): string {\n    return this._label;\n  }\n\n  private _label = '';\n\n  /**\n   * Indica se mostrate il pulante di chisura\n   */\n  @Input() set showCloseButton(value: boolean) {\n    this._showCloseButton = value;\n  }\n\n  get showCloseButton(): boolean {\n    return this._showCloseButton;\n  }\n\n  private _showCloseButton = false;\n\n  /**\n   * Indica il size\n   */\n  @Input() set size(value: '' | 'lg') {\n    this._size = value;\n  }\n\n  get size(): '' | 'lg' {\n    return this._size;\n  }\n\n  private _size: '' | 'lg' = '';\n\n  /**\n   * Indica il colore della chip\n   */\n  @Input() set color(value: ChipColor | undefined) {\n    this._color = value;\n  }\n\n  get color(): ChipColor | undefined {\n    return this._color;\n  }\n\n  private _color: ChipColor | undefined = undefined;\n\n  /**\n   * Indica se la chip è disabilitata\n   */\n  @Input() set disabled(value: boolean) {\n    this._disabled = value;\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  private _disabled: boolean = false;\n\n  /**\n   * Indica il nome dell'icona, se valorizzata viene mostrata\n   */\n  @Input() set icon(value: IconName | undefined) {\n    this._icon = value;\n  }\n\n  get icon(): IconName | undefined {\n    return this._icon;\n  }\n\n  private _icon: IconName | undefined = undefined;\n\n  /**\n   * Indica l'url dell'avatar, se valorizzata viene mostrata\n   */\n  @Input() set avatar(value: string | undefined) {\n    this._avatar = value;\n  }\n\n  get avatar(): string | undefined {\n    return this._avatar;\n  }\n\n  private _avatar: string | undefined = undefined;\n\n  /**\n   * Indica il valore da aggiungere al parametro alt, di default ''\n   */\n  @Input() set altAvatar(value: string) {\n    this._altAvatar = value;\n  }\n\n  get altAvatar(): string {\n    return this._altAvatar;\n  }\n\n  private _altAvatar: string = '';\n\n  /**\n   * Evento emesso al click sul bottone di chiusura\n   */\n  @Output() closeEvent = new EventEmitter();\n\n  /**\n   * Return the icon href\n   */\n  protected get iconHref(): string {\n    return `${this.assetBasePath}/dist/svg/sprites.svg#it-${this._icon}`;\n  }\n\n  private iconClose: IconName = 'close';\n\n  /**\n   * Return the close icon href\n   */\n  protected get iconCloseHref(): string {\n    return `${this.assetBasePath}/dist/svg/sprites.svg#it-${this.iconClose}`;\n  }\n\n  /**\n   * The bootstrap-italia asset folder path\n   * @default ./bootstrap-italia\n   */\n  protected assetBasePath: string;\n\n  constructor() {\n    this.assetBasePath = inject(IT_ASSET_BASE_PATH);\n  }\n\n  clickToClose(): void {\n    this.closeEvent.emit();\n  }\n}\n","<div\n  class=\"chip\"\n  [ngClass]=\"[\n    !showCloseButton ? 'chip-simple' : 'alert',\n    size === 'lg' ? 'chip-lg' : '',\n    color ? 'chip-' + color : '',\n    disabled ? 'chip-disabled' : '',\n  ]\">\n  @if (icon) {\n    <svg class=\"icon icon-xs\">\n      <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n    </svg>\n  }\n  @if (avatar) {\n    <div class=\"avatar size-xs\"><img [src]=\"avatar\" [alt]=\"altAvatar\" /></div>\n  }\n  <span class=\"chip-label\">{{ label }}</span>\n  @if (showCloseButton) {\n    <button (click)=\"clickToClose()\" [disabled]=\"disabled\">\n      <svg class=\"icon\">\n        <use [attr.href]=\"iconCloseHref\" [attr.xlink:href]=\"iconCloseHref\"></use>\n      </svg>\n      <span class=\"visually-hidden\">{{ 'it.core.remove' | translate }} {{ label }}</span>\n    </button>\n  }\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nexport type DimmerColor = '' | 'dimmer-primary';\n\n@Component({\n  selector: 'it-dimmer',\n  templateUrl: './dimmer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('fade', [\n      transition(':enter', [style({ opacity: 0 }), animate('150ms', style({ opacity: 0.9 }))]),\n      transition(':leave', [animate('150ms', style({ opacity: 0 }))]),\n    ]),\n  ],\n  imports: [NgClass],\n})\nexport class ItDimmerComponent implements OnInit {\n  private elementRef = inject(ElementRef);\n\n  /**\n   * Dimmer status\n   * @default false\n   */\n  @Input() set active(value: boolean) {\n    this._active = value;\n  }\n  get active() {\n    return this._active;\n  }\n  private _active = false;\n\n  /**\n   * Colore del dimmer\n   * @default ''\n   */\n  @Input() set color(value: DimmerColor) {\n    this._color = value;\n  }\n  get color() {\n    return this._color;\n  }\n  private _color: DimmerColor = '';\n\n  ngOnInit(): void {\n    this.elementRef?.nativeElement?.parentElement?.classList?.add('dimmable');\n  }\n}\n","@if (active) {\n  <div class=\"dimmer\" @fade [ngClass]=\"[color, 'show']\">\n    <div class=\"dimmer-inner\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'it-dimmer-icon',\n  templateUrl: './dimmer-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItDimmerIconComponent {}\n","<div class=\"dimmer-icon\">\n  <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\n@Component({\n  selector: 'it-dimmer-buttons',\n  templateUrl: './dimmer-buttons.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgClass],\n})\nexport class ItDimmerButtonsComponent {\n  /**\n   * Indica se abbiamo 1 solo bottone\n   * @default false\n   */\n  @Input() set hasOneButton(value: boolean) {\n    this._hasOneButton = value;\n  }\n  get hasOneButton() {\n    return this._hasOneButton;\n  }\n  private _hasOneButton = false;\n}\n","<div class=\"dimmer-buttons bg-dark\" [ngClass]=\"{ 'single-button': hasOneButton }\">\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItDimmerComponent } from './dimmer.component';\nimport { ItDimmerIconComponent } from './dimmer-icon/dimmer-icon.component';\nimport { ItDimmerButtonsComponent } from './dimmer-buttons/dimmer-buttons.component';\n\nconst dimmerComponents = [ItDimmerComponent, ItDimmerIconComponent, ItDimmerButtonsComponent];\n\n@NgModule({\n  imports: dimmerComponents,\n  exports: dimmerComponents,\n})\nexport class ItDimmerModule {}\n","import { Directive, HostListener, Input, DOCUMENT, inject } from '@angular/core';\n\n@Directive({\n  standalone: true,\n  selector: '[itForward]',\n  host: { class: 'forward' },\n})\nexport class ItForwardDirective {\n  private document = inject<Document>(DOCUMENT);\n\n  /**\n   * Indica, se HTMLElement, l'elemento a cui navigare, o se stringa, il selettore che selezionerà l'elemento a cui navigare.\n   */\n  @Input() set itForward(value: HTMLElement | string | undefined) {\n    this._itForward = value;\n  }\n  get itForward(): HTMLElement | string | undefined {\n    return this._itForward;\n  }\n  private _itForward: HTMLElement | string | undefined = undefined;\n\n  @HostListener('click', ['$event'])\n  onClick(event: any) {\n    event.preventDefault();\n    if (this.itForward) {\n      if (typeof this.itForward === 'string') {\n        this.document?.querySelector(this.itForward)?.scrollIntoView({\n          behavior: 'smooth',\n          block: 'start',\n          inline: 'nearest',\n        });\n      } else if (this.itForward instanceof HTMLElement) {\n        this.itForward.scrollIntoView({\n          behavior: 'smooth',\n          block: 'start',\n          inline: 'nearest',\n        });\n      }\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-list',\n  templateUrl: './list.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet],\n})\nexport class ItListComponent {\n  /**\n   * Add 'link-list' class for navigation menu\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) linkList?: boolean;\n\n  /**\n   * Add 'link-sublist' class for navigation menu\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) linkSubList?: boolean;\n\n  /**\n   * Add 'multiline' class for wrapper\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) multiline?: boolean;\n}\n","@if (!linkSubList) {\n  <div [class.multiline]=\"multiline\" [class]=\"linkList ? 'link-list-wrapper' : 'it-list-wrapper'\">\n    <ul [class]=\"linkList ? 'link-list' : 'it-list'\">\n      <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n    </ul>\n  </div>\n}\n@if (linkSubList) {\n  <ul class=\"link-sublist\">\n    <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n  </ul>\n}\n<ng-template #contentTpl><ng-content></ng-content></ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, inject } from '@angular/core';\nimport { inputToBoolean } from '../../../../utils/coercion';\nimport { ItLinkComponent } from '../../link/link.component';\n\n@Component({\n  selector: 'it-list-item, li[itListItem]',\n  templateUrl: './list-item.component.html',\n  styleUrls: ['./list-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, ItLinkComponent],\n})\nexport class ItListItemComponent extends ItLinkComponent implements OnInit {\n  private elRef = inject(ElementRef);\n  protected isHostElement = false;\n  /**\n   * Add active class\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) active?: boolean;\n\n  /**\n   * Add large class\n   */\n  @Input() size?: 'large' | 'medium';\n\n  /**\n   * Add icon-left class\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) iconLeft?: boolean;\n\n  /**\n   * Add icon-right class\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) iconRight?: boolean;\n\n  private _avatar: URL | undefined;\n  /**\n   * The avatar url\n   * @deprecated L'input 'avatar' è deprecato. Usa la documentazione del component Avatar per questo caso d'uso, facendo riferimento all'esempio Avatar con lista. Sarà rimosso nelle prossime versioni.\n   */\n  @Input()\n  get avatar(): URL | undefined {\n    console.warn(\n      `L'input 'avatar' è deprecato. Usa la documentazione del component Avatar per questo caso d'uso, facendo riferimento all'esempio Avatar con lista. Sarà rimosso nelle prossime versioni.`\n    );\n    return this._avatar;\n  }\n  set avatar(value: URL | undefined) {\n    this._avatar = value;\n  }\n\n  /**\n   * The thumb image url\n   */\n  @Input() image: URL | undefined;\n\n  get itemClass(): string {\n    const inSidebar: boolean = this.elRef.nativeElement.closest('.sidebar-linklist-wrapper') ? true : false;\n    let itemClass = 'list-item';\n    if (this.disabled) {\n      itemClass += ` disabled`;\n    }\n    if (this.active) {\n      itemClass += ` active`;\n    }\n    if (this.size) {\n      itemClass += ` ${this.size}`;\n    }\n    if (this.iconLeft) {\n      itemClass += inSidebar ? ` left-icon` : ` icon-left`;\n    }\n    if (this.iconRight) {\n      itemClass += inSidebar ? ` right-icon` : ` icon-right`;\n    }\n    if (this.class) {\n      itemClass += ` ${this.class}`;\n    }\n    return itemClass;\n  }\n\n  ngOnInit(): void {\n    this.isHostElement = this.elRef.nativeElement.tagName.toLowerCase() === 'li';\n\n    if (!this.isHostElement) {\n      console.warn(\n        `L'utilizzo del componente attraverso il selettore it-list-item verrà deprecato in quanto non accessibile. Usa il selettore itListItem invece. Consulta la documentazione del component Lista.`\n      );\n    }\n  }\n}\n","@if (isHostElement) {\n  <ng-container *ngTemplateOutlet=\"structure\"></ng-container>\n} @else {\n  <li>\n    <ng-container *ngTemplateOutlet=\"structure\"></ng-container>\n  </li>\n}\n\n<ng-template #structure>\n  @if (!href) {\n    <div [class]=\"itemClass\">\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n    </div>\n  } @else {\n    <it-link [class]=\"itemClass\" [href]=\"href\" [externalLink]=\"!!externalLink\" [disabled]=\"!!disabled\">\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n    </it-link>\n  }\n</ng-template>\n\n<ng-template #content>\n  <div class=\"it-rounded-icon\">\n    <ng-content select=\"[icon]\"></ng-content>\n  </div>\n\n  @if (avatar) {\n    <div class=\"avatar size-lg\">\n      <img [attr.src]=\"avatar\" alt=\"avatar\" />\n    </div>\n  }\n\n  @if (image) {\n    <div class=\"it-thumb\">\n      <img [attr.src]=\"image\" alt=\"thumb\" />\n    </div>\n  }\n\n  <div class=\"it-right-zone\">\n    <ng-content></ng-content>\n    <ng-content select=\"[action]\"></ng-content>\n\n    <span class=\"it-multiple\">\n      <span class=\"metadata\">\n        <ng-content select=\"[metadata]\"></ng-content>\n      </span>\n\n      <ng-content select=\"[multiple]\"></ng-content>\n    </span>\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ItListComponent } from './list/list.component';\nimport { ItListItemComponent } from './list-item/list-item.component';\n\nconst listComponents = [ItListComponent, ItListItemComponent];\n\n@NgModule({\n  imports: listComponents,\n  exports: listComponents,\n})\nexport class ItListModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { Modal } from 'bootstrap-italia';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Modal as BSModal } from 'bootstrap';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n/**\n * Modal windows\n * @description To show featured content, notifications to users, or personalized content.\n */\n@Component({\n  selector: 'it-modal',\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.scss'],\n  exportAs: 'itModal',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule],\n})\nexport class ItModalComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * Show/Hide close button on header\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) closeButton: boolean = true;\n\n  /**\n   * To correctly format the contents of the modal with icon\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) alertModal?: boolean;\n\n  /**\n   * To correctly format the contents of the modal with Link List\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dialogLinkList?: boolean;\n\n  /**\n   * Modal type Popconfirm can be used for short confirmation messages.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) popconfirm?: boolean;\n\n  /**\n   * You can choose to use a scroll inside the modal, keeping the header and footer of the modal always visible\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) scrollable?: boolean;\n\n  /**\n   * To have modals that appear with fades\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) fade?: boolean = true;\n\n  /**\n   * Modal alignment\n   * - <b>centered</b>: to vertically center the modal\n   * - <b>left</b>: to left-align the modal\n   * - <b>right</b>: to right-align the modal\n   * @default undefined\n   */\n  @Input() alignment: 'centered' | 'left' | 'right' | undefined;\n\n  /**\n   * The modal size\n   * @default undefined\n   */\n  @Input() size: 'sm' | 'lg' | 'xl' | undefined;\n\n  /**\n   * Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn’t close the modal when clicked.\n   * @default true\n   */\n  @Input() backdrop: 'static' | boolean = true;\n\n  /**\n   * Puts the focus on the modal when initialized.\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) focus: boolean = true;\n\n  /**\n   * Closes the modal when escape key is pressed.\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) keyboard: boolean = true;\n\n  /**\n   * To better distinguish the footer element with a shadow\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) footerShadow?: boolean;\n\n  /**\n   * Modal options\n   */\n  @Input() options?: Partial<BSModal.Options>;\n\n  /**\n   * This event fires immediately when the instance method show is called.\n   */\n  @Output() public showEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires when the modal has been made visible to the user (it will wait for CSS transitions to complete).\n   */\n  @Output() public shownEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is raised immediately when the instance method hide has been called.\n   */\n  @Output() public hideEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires when the modal has finished hiding from the user (it will wait for CSS transitions to complete).\n   */\n  @Output() public hiddenEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is fired when the modal is displayed, its background is static and a click outside the modal or a press\n   * of the esc key occurs and data-bs-keyboard is set to false.\n   */\n  @Output() public hidePreventedEvent: EventEmitter<Event> = new EventEmitter();\n\n  private modal?: Modal;\n\n  @ViewChild('modalElement', { static: false }) private modalElement?: ElementRef<HTMLDivElement>;\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'title');\n\n    if (this.modalElement) {\n      const element = this.modalElement.nativeElement;\n      this.modal = Modal.getOrCreateInstance(element, {\n        ...this.options,\n        backdrop: this.backdrop === 'static' ? 'static' : this.backdrop,\n        focus: this.focus,\n        keyboard: this.keyboard,\n      });\n\n      element.addEventListener('show.bs.modal', event => this.showEvent.emit(event));\n      element.addEventListener('shown.bs.modal', event => this.shownEvent.emit(event));\n      element.addEventListener('hide.bs.modal', event => this.hideEvent.emit(event));\n      element.addEventListener('hidden.bs.modal', event => this.hiddenEvent.emit(event));\n      element.addEventListener('hidePrevented.bs.modal', event => this.hidePreventedEvent.emit(event));\n    }\n  }\n\n  protected get modalClass(): string {\n    let modalClass = 'modal';\n    if (this.fade) {\n      modalClass += ` fade`;\n    }\n    if (this.alertModal) {\n      modalClass += ` alert-modal`;\n    }\n    if (this.dialogLinkList) {\n      modalClass += ` it-dialog-link-list`;\n    }\n    if (this.popconfirm) {\n      modalClass += ` popconfirm-modal`;\n    }\n    if (this.scrollable) {\n      modalClass += ` it-dialog-scrollable`;\n    }\n    return modalClass;\n  }\n\n  protected get dialogClass(): string {\n    let dialogClass = 'modal-dialog';\n    if (this.alignment) {\n      dialogClass += ` modal-dialog-${this.alignment}`;\n    }\n    if (this.size) {\n      dialogClass += ` modal-${this.size}`;\n    }\n    return dialogClass;\n  }\n\n  /**\n   * Manually activate/deactivate a modal. Returns to the caller before the modal has actually been shown or hidden\n   */\n  public toggle(): void {\n    this.modal?.toggle();\n  }\n\n  /**\n   * Manually open a modal. Returns to the caller before the modal has actually been displayed\n   */\n  public show(): void {\n    this.modal?.show();\n  }\n\n  /**\n   * Manually hide a modal. Returns to the caller before the modal has actually been hidden\n   */\n  public hide(): void {\n    this.modal?.hide();\n  }\n\n  /**\n   * Manually reposition the modal if the height of the modal changes when it is opened (in case a scroll bar appears).\n   */\n  public handleUpdate(): void {\n    this.modal?.handleUpdate();\n  }\n\n  /**\n   * Destroys the modal of an element.\n   */\n  public dispose(): void {\n    this.modal?.dispose();\n  }\n}\n","<div\n  #modalElement\n  [id]=\"id\"\n  [class]=\"modalClass\"\n  tabindex=\"-1\"\n  role=\"dialog\"\n  aria-hidden=\"true\"\n  [attr.aria-labelledby]=\"id + '-title'\"\n  [attr.aria-describedby]=\"id + '-description'\">\n  <div [class]=\"dialogClass\">\n    <div class=\"modal-content\" role=\"document\">\n      <div class=\"modal-header\">\n        <ng-content select=\"[beforeTitle]\"></ng-content>\n\n        <h2 class=\"modal-title h5\" id=\"{{ id }}-title\">\n          <ng-content select=\"[modalTitle]\"></ng-content>\n        </h2>\n\n        @if (closeButton) {\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" [attr.aria-label]=\"'it.core.close-modal' | translate\"></button>\n        }\n      </div>\n\n      <div class=\"modal-body\">\n        <div id=\"{{ id }}-description\">\n          <ng-content select=\"[description]\"></ng-content>\n        </div>\n        <ng-content></ng-content>\n      </div>\n\n      <div class=\"modal-footer\" [class.modal-footer-shadow]=\"footerShadow\">\n        <ng-content select=\"[footer]\"></ng-content>\n      </div>\n    </div>\n  </div>\n</div>\n","import { IconName } from './icon';\n\nexport type AlertColor = 'primary' | 'info' | 'success' | 'warning' | 'danger';\n\nexport type ButtonColor =\n  | 'primary'\n  | 'outline-primary'\n  | 'secondary'\n  | 'outline-secondary'\n  | 'success'\n  | 'outline-success'\n  | 'danger'\n  | 'outline-danger'\n  | 'warning'\n  | 'outline-warning'\n  | 'info'\n  | 'outline-info'\n  | 'light'\n  | 'outline-light'\n  | 'dark'\n  | 'outline-dark'\n  | 'link';\n\nexport type ButtonSize = 'lg' | 'sm' | 'xs';\nexport type ButtonType = 'submit' | 'button';\n\nexport type CalloutColor = 'success' | 'warning' | 'danger' | 'important' | 'note';\nexport type CalloutAppearance = 'default' | 'highlight' | 'more';\n\nexport type ChipColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning';\n\nexport type ElementPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport type ProgressBarColor = 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n\nexport type TableColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';\n\nexport type TableHeadColor = 'light' | 'dark';\n\nexport type TableResponsive = 'responsive' | 'responsive-sm' | 'responsive-md' | 'responsive-lg' | 'responsive-xl' | 'responsive-xxl';\n\nexport type VerticalAlignment = 'align-baseline' | 'align-top' | 'align-middle' | 'align-bottom' | 'align-text-bottom' | 'align-text-top';\n\nexport type DropdownDirection = 'dropup' | 'dropend' | 'dropstart';\n\nexport type CarouselType = 'default' | 'three-cols' | 'three-cols-arrow-visible';\n\nexport type TimelinePINType = 'default' | 'evidence' | 'now';\n\nexport interface TimelineElement {\n  pin: {\n    type?: TimelinePINType;\n    icon?: IconName;\n    text: string;\n  };\n  category?: {\n    title: string;\n    link: string;\n  };\n  title: string;\n  text: string;\n  signature?: string;\n  eventDate?: Date;\n  link?: string;\n}\n\nexport interface Notification {\n  /**\n   * Notification type\n   */\n  type: NotificationType;\n\n  /**\n   * Notification title\n   */\n  title: string;\n\n  /**\n   * Notification message / text\n   */\n  message?: string;\n\n  /**\n   * Custom duration of notification\n   */\n  duration?: number;\n\n  /**\n   * The close notification button appears\n   */\n  dismissible?: boolean;\n\n  /**\n   * Custom position of notification\n   */\n  position?: NotificationPosition;\n\n  /**\n   * Custom icon of notification\n   */\n  icon?: IconName;\n}\n\nexport enum NotificationType {\n  Standard = 'standard',\n  Success = 'success',\n  Error = 'error',\n  Info = 'info',\n  Warning = 'warning',\n}\n\nexport enum NotificationPosition {\n  Top = 'top-fix mt-3',\n  Bottom = 'bottom-fix mb-3',\n  Left = 'left-fix ms-3',\n  Right = 'right-fix me-3',\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject } from 'rxjs';\nimport { Notification, NotificationPosition, NotificationType } from '../../interfaces/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ItNotificationService {\n  private subject = new Subject<Notification>();\n\n  /**\n   * Listen on notification arrived\n   * @param filterType filter type of notification\n   */\n  public onNotification(filterType?: NotificationType): Observable<Notification> {\n    return this.subject.asObservable().pipe(filter(n => n && (!filterType || n.type === filterType)));\n  }\n\n  /**\n   * Show new notification\n   * @param notification notification\n   */\n  public addNotification(notification: Notification): void {\n    this.subject.next(notification);\n  }\n\n  /**\n   * Create new Standard notification\n   * @param title notification title\n   * @param message notification message\n   * @param dismissible notification dismissible\n   * @param duration notification duration (milliseconds)\n   * @param position notification position\n   */\n  public standard(title: string, message?: string, dismissible?: boolean, duration?: number, position?: NotificationPosition): void {\n    this.addNotification({\n      type: NotificationType.Standard,\n      message,\n      title,\n      duration,\n      dismissible,\n      position,\n    });\n  }\n\n  /**\n   * Create new Success notification\n   * @param title notification title\n   * @param message notification message\n   * @param dismissible notification dismissible\n   * @param duration notification duration (milliseconds)\n   * @param position notification position\n   */\n  public success(title: string, message?: string, dismissible?: boolean, duration?: number, position?: NotificationPosition): void {\n    this.addNotification({\n      type: NotificationType.Success,\n      message,\n      title,\n      duration,\n      dismissible,\n      position,\n    });\n  }\n\n  /**\n   * Create new Error notification\n   * @param title notification title\n   * @param message notification message\n   * @param dismissible notification dismissible\n   * @param duration notification duration (milliseconds)\n   * @param position notification position\n   */\n  public error(title: string, message?: string, dismissible?: boolean, duration?: number, position?: NotificationPosition): void {\n    this.addNotification({\n      type: NotificationType.Error,\n      message,\n      title,\n      duration,\n      dismissible,\n      position,\n    });\n  }\n\n  /**\n   * Create new Warning notification\n   * @param title notification title\n   * @param message notification message\n   * @param dismissible notification dismissible\n   * @param duration notification duration (milliseconds)\n   * @param position notification position\n   */\n  public warning(title: string, message?: string, dismissible?: boolean, duration?: number, position?: NotificationPosition): void {\n    this.addNotification({\n      type: NotificationType.Warning,\n      message,\n      title,\n      duration,\n      dismissible,\n      position,\n    });\n  }\n\n  /**\n   * Create new Info notification\n   * @param title notification title\n   * @param message notification message\n   * @param dismissible notification dismissible\n   * @param duration notification duration (milliseconds)\n   * @param position notification position\n   */\n  public info(title: string, message?: string, dismissible?: boolean, duration?: number, position?: NotificationPosition): void {\n    this.addNotification({\n      type: NotificationType.Info,\n      message,\n      title,\n      duration,\n      dismissible,\n      position,\n    });\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ItNotificationService } from '../../../services/notification/notification.service';\nimport { Notification, NotificationPosition, NotificationType } from '../../../interfaces/core';\nimport { Notification as BSNotification } from 'bootstrap-italia';\nimport { IconName } from '../../../interfaces/icon';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-notifications',\n  templateUrl: './notifications.component.html',\n  styleUrls: ['./notifications.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, TranslateModule],\n})\nexport class ItNotificationsComponent implements OnDestroy {\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n  private readonly _notificationService = inject(ItNotificationService);\n\n  /**\n   * Default notifications duration (milliseconds)\n   * @default 8000\n   */\n  @Input() duration: number = 8000;\n\n  /**\n   * Default notifications position\n   */\n  @Input() position: NotificationPosition | undefined;\n\n  /**\n   * Default notifications is dismissible\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) dismissible: boolean = true;\n\n  private subscription: Subscription;\n  private notificationCount: number = 0;\n  protected notifications: Array<Notification & { id: string }> = [];\n\n  constructor() {\n    this.subscription = this._notificationService.onNotification().subscribe(notification => {\n      if (!notification.duration) {\n        notification.duration = this.duration; // Add duration if not is set\n      }\n      if (!notification.position && this.position) {\n        notification.position = this.position; // Add position if not is set\n      }\n      if (notification.dismissible === undefined && this.dismissible) {\n        notification.dismissible = true; // Add dismissible if not is set\n      }\n      if (!notification.icon) {\n        notification.icon = this.getNotificationIcon(notification);\n      }\n\n      const newNotification = {\n        ...notification,\n        id: `${notification.type}-${this.notificationCount++}-notification`,\n      };\n      this.notifications.push(newNotification);\n      this._changeDetectorRef.detectChanges();\n\n      setTimeout(() => {\n        // Show the notification\n        new BSNotification(document.getElementById(newNotification.id)!, {\n          timeout: notification.duration,\n        }).show();\n\n        // Clear notification after the duration\n        setTimeout(() => {\n          const index = this.notifications.findIndex(n => n.id === newNotification.id);\n          if (index > -1) {\n            this.notifications.splice(index, 1);\n            if (!this.notifications.length) {\n              this.notificationCount = 0;\n            }\n            this._changeDetectorRef.detectChanges();\n          }\n        }, notification.duration);\n      }, 200);\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  protected get NotificationType(): typeof NotificationType {\n    return NotificationType;\n  }\n\n  /**\n   * Hide the notification\n   * @param id\n   */\n  protected hideNotification(id: string): void {\n    BSNotification.getInstance(document.getElementById(id)!)?.hide();\n  }\n\n  /**\n   * Retrieve the icon name by notification type\n   * @param notification the notification\n   * @protected\n   */\n  private getNotificationIcon(notification: Notification): IconName | undefined {\n    switch (notification.type) {\n      case NotificationType.Success:\n        return 'check-circle';\n      case NotificationType.Error:\n        return 'close-circle';\n      case NotificationType.Warning:\n        return 'error';\n      case NotificationType.Info:\n        return 'info-circle';\n      case NotificationType.Standard:\n      default:\n        return undefined;\n    }\n  }\n}\n","@for (notification of notifications; track notification.id) {\n  <div\n    [id]=\"notification.id\"\n    class=\"notification {{ notification.position }} {{ notification.type }}\"\n    [class.with-icon]=\"!!notification.icon\"\n    [class.dismissable]=\"notification.dismissible\"\n    role=\"alert\"\n    [attr.aria-labelledby]=\"notification.id + '-title'\">\n    <h2 [id]=\"notification.id + '-title'\" class=\"h5\">\n      @if (notification.icon) {\n        <it-icon [name]=\"notification.icon\"></it-icon>\n      }\n      <ng-container>{{ notification.title }}</ng-container>\n    </h2>\n    @if (notification.message) {\n      <p>{{ notification.message }}</p>\n    }\n    @if (notification.dismissible) {\n      <button type=\"button\" class=\"btn notification-close\" (click)=\"hideNotification(notification.id)\">\n        <it-icon name=\"close\"></it-icon>\n        <span class=\"visually-hidden\">{{ 'it.core.close-notification' | translate: { title: notification.title } }}</span>\n      </button>\n    }\n  </div>\n}\n","import { Component, DoCheck, Input, OnInit, inject } from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormControl, FormGroup, NgControl, ValidatorFn } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { inputToBoolean } from '../utils/coercion';\nimport { ItAbstractComponent } from './abstract.component';\n\n@Component({\n  template: '',\n  standalone: false,\n})\nexport abstract class ItAbstractFormComponent<T = any> extends ItAbstractComponent implements OnInit, ControlValueAccessor, DoCheck {\n  protected readonly _translateService = inject(TranslateService);\n  protected readonly _ngControl = inject(NgControl, { self: true, optional: true });\n  protected fgd? = inject(ControlContainer, { optional: true });\n\n  /**\n   * The label of form control\n   */\n  @Input() label?: string;\n\n  /**\n   * Validation color display mode (validation triggered if field is touched or not pristine)\n   * - <b>true</b>: Always show the validation color\n   * - <b>false</b>: Never show validation color\n   * - <b>only-valid</b>: Show only valid validation color\n   * - <b>only-invalid</b>: Show only invalid validation color\n   * @default <b>false</b>: Do not show the validation color by default\n   */\n  @Input() validationMode: boolean | 'only-valid' | 'only-invalid' = false;\n\n  /**\n   * Set the disabled state\n   */\n  @Input({ transform: inputToBoolean }) set disabled(isDisabled: boolean) {\n    this.setDisabledState(isDisabled);\n  }\n\n  /**\n   * Internal form control\n   */\n  protected control: FormControl<T>;\n\n  constructor() {\n    super();\n    this.control = new FormControl();\n    // eslint-disable-next-line\n    this._ngControl && (this._ngControl.valueAccessor = this);\n  }\n\n  /**\n   * Check if field is invalid (Validation failed)\n   */\n  get isInvalid(): boolean | undefined {\n    if (this.validationMode === 'only-valid' || (this.validationMode !== 'only-invalid' && !this.validationMode)) {\n      return undefined;\n    }\n\n    if (this._ngControl) {\n      return this._ngControl.invalid === true && this._ngControl.touched === true;\n    }\n    return this.control.invalid && this.control.touched;\n  }\n\n  /**\n   * Check if field is valid (Validation successful)\n   */\n  get isValid(): boolean | undefined {\n    if (this.validationMode === 'only-invalid' || (this.validationMode !== 'only-valid' && !this.validationMode)) {\n      return undefined;\n    }\n\n    if (this._ngControl) {\n      return this._ngControl.valid === true && this._ngControl.touched === true;\n    }\n    return this.control.valid && this.control.touched;\n  }\n\n  /**\n   * Return the invalid message string from TranslateService\n   */\n  get invalidMessage(): Observable<string> {\n    if (this.hasError('required')) {\n      return this._translateService.get('it.errors.required-field');\n    }\n\n    return this._translateService.get('it.errors.invalid-field');\n  }\n\n  ngOnInit(): void {\n    if (this._ngControl?.control) {\n      this.control.setValidators((this._ngControl.control as FormControl).validator);\n      this.setValidationModeWhenInAForm();\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onChange = (_: T) => {};\n\n  onTouched = () => {};\n\n  registerOnChange(fn: any): void {\n    this.control.valueChanges.subscribe(fn);\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    if (isDisabled) {\n      return this.control.disable();\n    }\n    this.control.enable();\n  }\n\n  writeValue(value: T): void {\n    this.control.setValue(value, { emitEvent: false });\n    this._changeDetectorRef.detectChanges();\n  }\n\n  /**\n   * Mark the control as touched\n   */\n  markAsTouched(): void {\n    if (!this.control.touched) {\n      this.onTouched();\n    }\n  }\n\n  /**\n   * Fired to check if form control is touched\n   */\n  ngDoCheck() {\n    if (this._ngControl?.control) {\n      const ngControl = this._ngControl.control;\n      if (this.control.touched !== ngControl.touched) {\n        if (ngControl.touched) {\n          this.control.markAsTouched();\n        } else {\n          this.control.markAsUntouched();\n        }\n      }\n      if (this.control.pristine !== ngControl.pristine) {\n        if (ngControl.pristine) {\n          this.control.markAsPristine();\n        } else {\n          this.control.markAsDirty();\n        }\n      }\n    }\n    this._changeDetectorRef.detectChanges();\n  }\n\n  /**\n   * Add the validators in control and parent control\n   * @param validators the validators\n   * @protected\n   */\n  protected addValidators(validators: ValidatorFn | ValidatorFn[]): void {\n    if (!Array.isArray(validators)) {\n      validators = [validators];\n    }\n\n    validators.forEach(validator => {\n      if (!this.control.hasValidator(validator)) {\n        this.control.addValidators(validator);\n      }\n\n      if (this._ngControl?.control && !this._ngControl.control.hasValidator(validator)) {\n        this._ngControl.control.addValidators(validator);\n      }\n    });\n  }\n\n  /**\n   * Reports whether the control with the given path has the error specified. <br/>\n   * If the control is not present, false is returned.\n   * @param errorCode The code of the error to check\n   * @param path A list of control names that designates how to move from the current control\n   * to the control that should be queried for errors.\n   * @returns whether the given error is present in the control at the given path.\n   */\n  public hasError(errorCode: string, path?: Array<string | number> | string): boolean {\n    if (this._ngControl) {\n      return this._ngControl.hasError(errorCode, path);\n    }\n    return this.control.hasError(errorCode, path);\n  }\n\n  /**\n   * Reports error data for the control with the given path.\n   * @param errorCode The code of the error to check\n   * @param path A list of control names that designates how to move from the current control\n   * to the control that should be queried for errors.\n   * @returns error data for that particular error. If the control or error is not present,\n   * null is returned.\n   */\n  public getError(errorCode: string, path?: Array<string | number> | string): any {\n    if (this._ngControl) {\n      return this._ngControl.getError(errorCode, path);\n    }\n    return this.control.getError(errorCode, path);\n  }\n\n  // This function assurest that validation mode remains complaiant with the Design kit\n  // When the validation mode is `false` and input elements are wrapped in a `FormGroup`\n  // validation mode is automatically set to `true`.\n  private setValidationModeWhenInAForm() {\n    const isInAForm: boolean = this.fgd?.control instanceof FormGroup;\n    if (isInAForm && this.validationMode == false) {\n      this.validationMode = true;\n    }\n  }\n}\n","/**\n * General Email Regex (RFC 5322 Official Standard)\n * http://emailregex.com/\n */\nexport const EMAIL_REGEX =\n  /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\n\n/**\n * Phone number Regex\n */\nexport const PHONE_NUMBER_REGEX = /^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{3})(?: *x(\\d+))?\\s*$/;\n\n/**\n * URL Regex\n */\nexport const URL_REGEX =\n  /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/;\n\n/**\n * The italian tax code Regex (Codice Fiscale)\n */\nexport const ITALIAN_TAX_CODE_REGEX = /^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$/i;\n\n/**\n * The VAT number Regex (Partita iva)\n */\nexport const VAT_NUMBER_REGEX = /^[0-9]{11}$/;\n\n/**\n * Italian CAP Regex\n */\nexport const CAP_REGEX = /^[0-9]{5}$/;\n\n/**\n * Italian Plate Regex\n */\nexport const PLATE_REGEX = /^[A-Za-z]{2}\\d{3}[A-Za-z]{2}$/i;\n\n/**\n * IBAN Regex\n * https://blog.marketto.it/en/2018/06/validate-any-country-iban/\n */\nexport const IBAN_REGEX =\n  /^(?:(?:IT|SM)\\d{2}[A-Z]\\d{22}|CY\\d{2}[A-Z]\\d{23}|NL\\d{2}[A-Z]{4}\\d{10}|LV\\d{2}[A-Z]{4}\\d{13}|(?:BG|BH|GB|IE)\\d{2}[A-Z]{4}\\d{14}|GI\\d{2}[A-Z]{4}\\d{15}|RO\\d{2}[A-Z]{4}\\d{16}|KW\\d{2}[A-Z]{4}\\d{22}|MT\\d{2}[A-Z]{4}\\d{23}|NO\\d{13}|(?:DK|FI|GL|FO)\\d{16}|MK\\d{17}|(?:AT|EE|KZ|LU|XK)\\d{18}|(?:BA|HR|LI|CH|CR)\\d{19}|(?:GE|DE|LT|ME|RS)\\d{20}|IL\\d{21}|(?:AD|CZ|ES|MD|SA)\\d{22}|PT\\d{23}|(?:BE|IS)\\d{24}|(?:FR|MR|MC)\\d{25}|(?:AL|DO|LB|PL)\\d{26}|(?:AZ|HU)\\d{27}|(?:GR|MU)\\d{28})$/i;\n","import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport {\n  CAP_REGEX,\n  EMAIL_REGEX,\n  IBAN_REGEX,\n  ITALIAN_TAX_CODE_REGEX,\n  PHONE_NUMBER_REGEX,\n  PLATE_REGEX,\n  URL_REGEX,\n  VAT_NUMBER_REGEX,\n} from '../utils/regex';\n\nexport class ItValidators {\n  public static SpecialCharacterPattern = '!@#$%&*_+=;:|,.';\n\n  /**\n   * Static pattern validator with custom error\n   * @param regex\n   * @param error\n   */\n  public static customPattern(regex: RegExp, error: ValidationErrors): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      if (!control.value) {\n        // if control is empty return no error\n        return null;\n      }\n\n      // test the value of the control against the regexp supplied\n      const valid = regex.test(control.value);\n\n      // if true, return no error (no error), else return error passed in the second parameter\n      return valid ? null : error;\n    };\n  }\n\n  /**\n   * Set Validator if the condition is satisfied\n   * @param validator the validator to apply if the condition is true\n   * @param condition the condition\n   */\n  public static conditional(validator: ValidatorFn, condition: (control: AbstractControl) => boolean): ValidatorFn {\n    return formControl => {\n      if (!formControl.parent) {\n        return null;\n      }\n      if (condition(formControl)) {\n        return validator(formControl);\n      }\n      return null;\n    };\n  }\n\n  /**\n   * Check whether our password and confirm password are a match\n   * @param control\n   * @param passwordControlName the password formControlName\n   * @param confirmControlName the confirmPassword formControlName\n   */\n  public static passwordMatch(\n    control: AbstractControl,\n    passwordControlName = 'password',\n    confirmControlName = 'confirmPassword'\n  ): AbstractControl | null {\n    const confirmControl = control.get(confirmControlName); // confirmPassword form control\n    if (!confirmControl) {\n      return null;\n    }\n\n    const passwordControl = control.get(passwordControlName); // password form control\n    const password = passwordControl?.value; // get password from our password form control\n\n    // compare is the password match\n    if ((password && !confirmControl.value) || (confirmControl.value && password !== confirmControl.value)) {\n      // if they don't match, set an error in our confirmPassword form control\n      confirmControl?.setErrors({ noPasswordMatch: true });\n      confirmControl?.markAsTouched();\n      return control;\n    }\n\n    if (password && passwordControl?.touched) {\n      confirmControl?.markAsTouched();\n    }\n    return null;\n  }\n\n  /**\n   * Password validator\n   * @param minLength minimum password length - default 10\n   * @param hasNumber check whether the entered password has a number - default true\n   * @param hasCapitalCase check whether the entered password has upper case letter - default true\n   * @param hasSmallCase check whether the entered password has a lower-case letter - default true\n   * @param hasSpecialCharacters check whether the entered password has a special character - default true\n   * @param required the field is required - default true\n   */\n  public static password(\n    minLength = 10,\n    hasNumber = true,\n    hasCapitalCase = true,\n    hasSmallCase = true,\n    hasSpecialCharacters = true,\n    required = true\n  ): ValidatorFn {\n    const validators: Array<ValidatorFn> = [Validators.minLength(minLength)];\n    if (hasNumber) {\n      validators.push(ItValidators.customPattern(/\\d/, { hasNumber }));\n    }\n    if (hasCapitalCase) {\n      validators.push(ItValidators.customPattern(/[A-Z]/, { hasCapitalCase }));\n    }\n    if (hasSmallCase) {\n      validators.push(ItValidators.customPattern(/[a-z]/, { hasSmallCase }));\n    }\n    if (hasSpecialCharacters) {\n      validators.push(ItValidators.customPattern(new RegExp(`[${ItValidators.SpecialCharacterPattern}]`), { hasSpecialCharacters }));\n    }\n    if (required) {\n      validators.push(Validators.required);\n    }\n    return <ValidatorFn>Validators.compose(validators);\n  }\n\n  /**\n   * Email validator\n   */\n  public static get email(): ValidatorFn {\n    return <ValidatorFn>Validators.compose([Validators.email, ItValidators.customPattern(EMAIL_REGEX, { invalidEmail: true })]);\n  }\n\n  /**\n   * Phone number validator\n   */\n  public static get tel(): ValidatorFn {\n    return ItValidators.customPattern(PHONE_NUMBER_REGEX, { invalidTel: true });\n  }\n\n  public static includes(possibleValues: string[]): ValidatorFn {\n    return formControl => {\n      return possibleValues?.includes(formControl.value) ? null : { invalidSelection: true };\n    };\n  }\n\n  /**\n   * URL validator\n   */\n  public static get url(): ValidatorFn {\n    return ItValidators.customPattern(URL_REGEX, { invalidUrl: true });\n  }\n\n  /**\n   * Italian Tax Code validator\n   */\n  public static get taxCode(): ValidatorFn {\n    return ItValidators.customPattern(ITALIAN_TAX_CODE_REGEX, { invalidTaxCode: true });\n  }\n\n  /**\n   * VAT Number validator\n   */\n  public static get vatNumber(): ValidatorFn {\n    return ItValidators.customPattern(VAT_NUMBER_REGEX, { invalidVatNumber: true });\n  }\n\n  /**\n   * Italian Postal Code validator (CAP)\n   */\n  public static get cap(): ValidatorFn {\n    return ItValidators.customPattern(CAP_REGEX, { invalidCap: true });\n  }\n\n  /**\n   * IBAN validator\n   */\n  public static get iban(): ValidatorFn {\n    return ItValidators.customPattern(IBAN_REGEX, { invalidIban: true });\n  }\n\n  /**\n   * Italian plate validator\n   */\n  public static get plate(): ValidatorFn {\n    return ItValidators.customPattern(PLATE_REGEX, { invalidPlate: true });\n  }\n\n  /**\n   * Check if value is a valid RegExp\n   */\n  public static get regExp(): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n      try {\n        if (control?.value) {\n          new RegExp(control.value);\n        }\n      } catch {\n        return { invalidRegex: true };\n      }\n      return null;\n    };\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { InputControlType } from '../../../interfaces/form';\nimport { AbstractControl, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { ItValidators } from '../../../validators/it-validators';\nimport { Observable } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ReactiveFormsModule, TranslateModule, AsyncPipe],\n})\nexport class ItInputComponent extends ItAbstractFormComponent<string | number | null | undefined> implements OnInit {\n  /**\n   * The input type\n   * @default text\n   */\n  @Input() type: InputControlType = 'text';\n\n  /**\n   * The input placeholder\n   */\n  @Input() placeholder = '';\n\n  /**\n   * The input description\n   */\n  @Input() description: string | undefined;\n\n  /**\n   * To prevent modification of the contained value.\n   * - <b>plaintext</b>: Readonly field in the form stylized as plain text\n   * @default undefined\n   */\n  @Input() readonly: boolean | 'plaintext' | undefined;\n\n  /**\n   * The max date value [Used only in type = 'date']\n   * @default '9999-12-31'\n   * @example 'yyyy-mm-dd'\n   */\n  @Input() maxDate?: string = '9999-12-31';\n\n  /**\n   * The min date value [Used only in type = 'date']\n   * @example 'yyyy-mm-dd'\n   */\n  @Input() minDate: string | undefined;\n\n  /**\n   * The max value [Used only in type = 'number']\n   */\n  @Input() max: number | undefined;\n\n  /**\n   * The min value [Used only in type = 'number']\n   */\n  @Input() min: number | undefined;\n\n  /**\n   * The step value [Used only in type = 'number']\n   */\n  @Input() step: number | 'any' | undefined;\n\n  /**\n   * If is a currency number [Used only in type = 'number']\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) currency?: boolean;\n\n  /**\n   * If is a percentage number [Used only in type = 'number']\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) percentage?: boolean;\n\n  /**\n   * The currency or percentage symbol [Used only if percentage or currency]\n   * @example '$'\n   */\n  @Input() symbol: string | undefined;\n\n  /**\n   * To make the numeric field automatically resize according to the value contained in it. [Used only in type = 'number']\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) adaptive?: boolean;\n\n  /**\n   * Input autocomplete attribute (Browser autocomplete)\n   * @default undefined\n   */\n  @Input() autocomplete: string | undefined;\n\n  get isActiveLabel(): boolean {\n    const value = this.control.value;\n    if ((!!value && value !== 0) || value === 0 || !!this.placeholder) {\n      return true;\n    }\n\n    // if (this.type === 'number' && (!!this.currency || !!this.percentage)) {\n    //   return true;\n    // }\n\n    return this.type === 'date' || this.type === 'time' || this.type === 'color';\n  }\n\n  /**\n   * Check is readonly field\n   */\n  protected get isReadonly(): boolean {\n    return this.readonly === 'plaintext' || !!this.readonly;\n  }\n\n  /**\n   * Return the invalid message string from TranslateService\n   */\n  override get invalidMessage(): Observable<string> {\n    if (this.hasError('min') && this.min) {\n      return this._translateService.get('it.errors.min-invalid', {\n        min: this.min,\n      });\n    }\n    if (this.hasError('max') && this.max) {\n      return this._translateService.get('it.errors.max-invalid', {\n        max: this.max,\n      });\n    }\n    if (this.hasError('minlength')) {\n      const error = this.getError('minlength');\n      return this._translateService.get('it.errors.min-length-invalid', {\n        min: error.requiredLength,\n      });\n    }\n    if (this.hasError('maxlength')) {\n      const error = this.getError('maxlength');\n      return this._translateService.get('it.errors.max-length-invalid', {\n        max: error.requiredLength,\n      });\n    }\n    if (this.hasError('email') || this.hasError('invalidEmail')) {\n      return this._translateService.get('it.errors.email-invalid');\n    }\n    if (this.hasError('invalidTel')) {\n      return this._translateService.get('it.errors.tel-invalid');\n    }\n    if (this.hasError('invalidUrl')) {\n      return this._translateService.get('it.errors.url-invalid');\n    }\n    if (this.hasError('invalidTaxCode')) {\n      return this._translateService.get('it.errors.tax-code-invalid');\n    }\n    if (this.hasError('invalidVatNumber')) {\n      return this._translateService.get('it.errors.vat-number-invalid');\n    }\n    if (this.hasError('invalidCap')) {\n      return this._translateService.get('it.errors.cap-invalid');\n    }\n    if (this.hasError('invalidIban')) {\n      return this._translateService.get('it.errors.iban-invalid');\n    }\n    if (this.hasError('invalidPlate')) {\n      return this._translateService.get('it.errors.plate-invalid');\n    }\n    if (this.hasError('invalidRegex')) {\n      return this._translateService.get('it.errors.regex-invalid');\n    }\n    if (this.hasError('pattern')) {\n      const error = this.getError('pattern');\n      return this._translateService.get('it.errors.pattern-invalid', {\n        pattern: error.requiredPattern,\n      });\n    }\n\n    return super.invalidMessage;\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    const validators: Array<ValidatorFn> = [];\n    switch (this.type) {\n      case 'number':\n        if (this.percentage) {\n          this.min = this.min || 0;\n          this.max = this.max || 100;\n        }\n\n        // Dynamic min/max validators\n        validators.push((control: AbstractControl) => (this.min ? Validators.min(this.min)(control) : null));\n        validators.push((control: AbstractControl) => (this.max ? Validators.max(this.max)(control) : null));\n        break;\n      case 'email':\n        validators.push(ItValidators.email);\n        break;\n      case 'tel':\n        validators.push(ItValidators.tel);\n        break;\n      case 'url':\n        validators.push(ItValidators.url);\n        break;\n    }\n\n    this.addValidators(validators);\n  }\n\n  /**\n   * Increment or decrease the input number value of step\n   * @param decrease true to decrease value\n   */\n  protected incrementNumber(decrease = false): void {\n    if (this.type !== 'number') {\n      return;\n    }\n    const step = this.step === 'any' ? 1 : (this.step ?? 1);\n    let value = Number(this.control.value);\n    value = (isNaN(value) ? 0 : value) + (decrease ? -step : step);\n    value = Math.round(value * 1e12) / 1e12; // prevent js decimal error\n\n    if (this.min !== undefined && value < this.min) {\n      value = this.min;\n    } else if (this.max !== undefined && value > this.max) {\n      value = this.max;\n    }\n\n    this.control.setValue(value);\n  }\n}\n","<div class=\"form-group\">\n  <div\n    class=\"input-group\"\n    [class.disabled]=\"!control.enabled\"\n    [class.input-number]=\"type === 'number'\"\n    [class.input-number-currency]=\"currency\"\n    [class.input-number-percentage]=\"percentage\"\n    [class.input-number-adaptive]=\"adaptive\">\n    <span class=\"input-group-text\" #prependText>\n      <ng-content select=\"[prependText]\"></ng-content>\n    </span>\n    @if (label) {\n      <label\n        [for]=\"id\"\n        [class.active]=\"isActiveLabel\"\n        [class.input-symbol-label]=\"percentage || currency\"\n        [class.input-number-label]=\"type === 'number'\"\n        [class.empty-prepend-label]=\"!(percentage || currency) && !prependText.clientWidth\">\n        {{ label }}\n      </label>\n    }\n\n    @if (type === 'number') {\n      @if (currency || percentage) {\n        <span class=\"input-group-text fw-semibold\">{{ symbol }}</span>\n      }\n      <input\n        type=\"number\"\n        [id]=\"id\"\n        [step]=\"step ?? null\"\n        [min]=\"min ?? ''\"\n        [max]=\"max ?? ''\"\n        [class.form-control]=\"readonly !== 'plaintext'\"\n        [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n        [class.is-invalid]=\"isInvalid\"\n        [class.just-validate-success-field]=\"isValid\"\n        [formControl]=\"control\"\n        [placeholder]=\"placeholder\"\n        [readonly]=\"isReadonly\"\n        [autocomplete]=\"autocomplete\"\n        [attr.aria-describedby]=\"description ? id + '-description' : null\"\n        (blur)=\"markAsTouched()\" />\n      <span class=\"input-group-text align-buttons flex-column\">\n        <button type=\"button\" class=\"input-number-add\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber()\">\n          <span class=\"visually-hidden\">{{ 'it.form.increase-value' | translate }}</span>\n        </button>\n        <button type=\"button\" class=\"input-number-sub\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber(true)\">\n          <span class=\"visually-hidden\">{{ 'it.form.decrease-value' | translate }}</span>\n        </button>\n      </span>\n    } @else {\n      <input\n        [id]=\"id\"\n        [type]=\"type\"\n        [max]=\"type === 'date' ? maxDate : undefined\"\n        [min]=\"type === 'date' ? minDate : undefined\"\n        [class.form-control]=\"readonly !== 'plaintext'\"\n        [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n        [class.is-invalid]=\"isInvalid\"\n        [class.just-validate-success-field]=\"isValid\"\n        [formControl]=\"control\"\n        [placeholder]=\"placeholder\"\n        [readonly]=\"isReadonly\"\n        [autocomplete]=\"autocomplete\"\n        [attr.aria-describedby]=\"description ? id + '-description' : null\"\n        (blur)=\"markAsTouched()\" />\n    }\n\n    <div class=\"input-group-append\">\n      <ng-content select=\"[append]\"></ng-content>\n\n      <div class=\"input-group-text\">\n        <ng-content select=\"[appendText]\"></ng-content>\n      </div>\n    </div>\n  </div>\n\n  @if (description) {\n    <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n  }\n\n  @if (isInvalid) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError>\n        <ng-content select=\"[error]\"></ng-content>\n      </div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { LowerCasePipe } from '@angular/common';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItDropdownModule } from '../dropdown/dropdown.module';\nimport { ItInputComponent } from '../../form/input/input.component';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-pagination',\n  templateUrl: './pagination.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, TranslateModule, LowerCasePipe, ItDropdownModule, ItInputComponent, ReactiveFormsModule],\n})\nexport class ItPaginationComponent implements OnChanges {\n  /**\n   * Index of page (start 0)\n   */\n  @Input({ required: true }) currentPage!: number;\n\n  /**\n   * Max number of page (counter)\n   */\n  @Input({ required: true }) pageNumbers!: number;\n\n  /**\n   * Number of pages closest to the current one to display\n   * @default 5\n   */\n  @Input() visiblePages: number = 5;\n\n  /**\n   * Pagination alignment (justify-content)\n   */\n  @Input() alignment: 'center' | 'end' | undefined;\n\n  /**\n   * Enable/Disable simple mode\n   * Pagination in the \"Simple mode\" version is optimized for mobile devices.\n   * @default false - disabled\n   */\n  @Input({ transform: inputToBoolean }) simpleMode?: boolean;\n\n  /**\n   * Enable/Disable text links\n   * Chevron icons used as navigation links are replaced by text links such as “previous” and “next”.\n   * @default false - disabled\n   */\n  @Input({ transform: inputToBoolean }) textLinks?: boolean;\n\n  /**\n   * Current value of Changer\n   * If is set show the Changer\n   * @default undefined - hide the Changer\n   */\n  @Input() currentChanger: number | undefined;\n\n  /**\n   * Available Changer values\n   * @default [10, 25, 50, 100]\n   */\n  @Input() changerValues: Array<number> = [10, 25, 50, 100];\n\n  /**\n   * Hide/Show \"Jump to page\" input\n   * @default false - hidden\n   */\n  @Input({ transform: inputToBoolean }) showJumpToPage?: boolean;\n\n  /**\n   * Fired when page is changed. Emit the new index of page\n   */\n  @Output() pageEvent = new EventEmitter<number>();\n\n  /**\n   * Fired when changer is changed. Emit the new changer value\n   */\n  @Output() changerEvent = new EventEmitter<number>();\n\n  /**\n   * The pages\n   * @protected\n   */\n  protected pages: Array<number> = [];\n\n  /**\n   * Jump to page input\n   * @protected\n   */\n  protected jumpToPage: FormControl<number | null> = new FormControl<number | null>(null);\n\n  constructor() {\n    this.jumpToPage.valueChanges\n      .pipe(\n        debounceTime(300), // Delay filter data after time span has passed without another source emission\n        distinctUntilChanged(),\n        filter(value => !!value && this.jumpToPage.valid)\n      )\n      .subscribe(value => {\n        this.pageEvent.emit(value! - 1);\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.pages = this.calculatePages();\n    if (changes['currentPage']) {\n      this.jumpToPage.setValue(null, { emitEvent: false });\n    }\n  }\n\n  /**\n   * Create array to generate pagination of `visiblePages` element\n   */\n  private calculatePages(): Array<number> {\n    if (this.simpleMode) {\n      return [this.currentPage];\n    }\n\n    const length = this.pageNumbers > this.visiblePages ? this.visiblePages : this.pageNumbers;\n\n    const halfVisiblePages = Math.floor(this.visiblePages / 2);\n    let start = this.currentPage > halfVisiblePages && this.pageNumbers > this.visiblePages ? this.currentPage - halfVisiblePages + 1 : 1;\n\n    if (this.pageNumbers > this.visiblePages) {\n      if (this.currentPage + 1 >= this.pageNumbers) {\n        start -= halfVisiblePages;\n      } else if (this.currentPage >= this.pageNumbers - halfVisiblePages) {\n        start -= this.pageNumbers - (this.currentPage + 1);\n      }\n    }\n\n    return Array.from({ length }, (_, i) => i + start);\n  }\n\n  /**\n   * On click page change\n   * @param event click event\n   * @param newPage the new page of table\n   */\n  protected pageChange(event: Event, newPage: number): void {\n    event.preventDefault();\n    this.pageEvent.emit(newPage - 1); // emit new page index\n  }\n\n  /**\n   * On click changer\n   * @param event click event\n   * @param value the new changer value\n   */\n  protected changerChange(event: Event, value: number): void {\n    event.preventDefault();\n    this.changerEvent.emit(value); // emit new changer value\n  }\n}\n","<nav\n  class=\"pagination-wrapper\"\n  [class.justify-content-center]=\"alignment === 'center'\"\n  [class.justify-content-end]=\"alignment === 'end'\"\n  [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n  @if (pages.length) {\n    <ul class=\"pagination\">\n      <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n        <a class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"!(currentPage < 1) && pageChange($event, currentPage)\">\n          @if (!textLinks) {\n            <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n          }\n          <span class=\"visually-hidden\">\n            {{ (textLinks ? 'it.core.page' : 'it.core.previous-page') | translate }}\n          </span>\n          @if (textLinks) {\n            {{ 'it.core.previous' | translate }}\n          }\n        </a>\n      </li>\n      @if (simpleMode) {\n        <li class=\"page-item\">\n          <span class=\"page-link\" aria-current=\"page\">{{ currentPage + 1 }}</span>\n        </li>\n        <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n        <li class=\"page-item\">\n          <span class=\"page-link\">{{ pageNumbers }}</span>\n        </li>\n        <li class=\"page-item visually-hidden\">\n          <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n            {{ 'it.core.page-of-total' | translate: { page: currentPage + 1, total: pageNumbers } }}\n          </a>\n        </li>\n      } @else {\n        @if (pageNumbers > visiblePages && pages[0] >= 2) {\n          <li class=\"page-item\">\n            <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n          </li>\n          @if (pages[0] >= 3) {\n            <li class=\"page-item\">\n              <span class=\"page-link\">...</span>\n            </li>\n          }\n        }\n        @for (page of pages; track page) {\n          <li class=\"page-item\">\n            @if (page === currentPage + 1) {\n              <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n                <span class=\"d-inline-block d-sm-none\">{{ 'it.core.page' | translate }}</span> {{ page }}\n              </a>\n            } @else {\n              <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{ page }}</a>\n            }\n          </li>\n        }\n        @if (pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers) {\n          @if (pages[pages.length - 1] < pageNumbers - 1) {\n            <li class=\"page-item\">\n              <span class=\"page-link\">...</span>\n            </li>\n          }\n          <li class=\"page-item\">\n            <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{ pageNumbers }}</a>\n          </li>\n        }\n      }\n      <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n        <a\n          class=\"page-link\"\n          [class.text]=\"textLinks\"\n          href=\"#\"\n          (click)=\"!(currentPage >= pageNumbers - 1) && pageChange($event, currentPage + 2)\">\n          <span class=\"visually-hidden\">\n            {{ (textLinks ? 'it.core.page' : 'it.core.next-page') | translate }}\n          </span>\n          @if (textLinks) {\n            {{ 'it.core.next' | translate }}\n          } @else {\n            <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n          }\n        </a>\n      </li>\n    </ul>\n  }\n\n  @if (currentChanger !== undefined) {\n    <it-dropdown>\n      <span button>{{ currentChanger }} / {{ 'it.core.page' | translate | lowercase }}</span>\n      <ng-container list>\n        @for (value of changerValues; track value) {\n          <li\n            itDropdownItem\n            href=\"#\"\n            externalLink=\"true\"\n            tabindex=\"-1\"\n            (click)=\"changerChange($event, value)\"\n            (keyup.enter)=\"changerChange($event, value)\">\n            {{ value }} / {{ 'it.core.page' | translate | lowercase }}\n          </li>\n        }\n      </ng-container>\n    </it-dropdown>\n  }\n\n  @if (showJumpToPage) {\n    <it-input\n      type=\"number\"\n      [min]=\"1\"\n      [max]=\"pageNumbers\"\n      [label]=\"('it.core.go-to' | translate) + '...'\"\n      [formControl]=\"jumpToPage\"></it-input>\n  }\n\n  <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n    <ng-content></ng-content>\n  </p>\n</nav>\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnDestroy, Output, inject } from '@angular/core';\nimport { ElementPlacement } from '../../../interfaces/core';\nimport { Popover } from 'bootstrap-italia';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Directive({\n  standalone: true,\n  selector: '[itPopover]',\n  exportAs: 'itPopover',\n})\nexport class ItPopoverDirective implements AfterViewInit, OnDestroy {\n  private readonly _elementRef = inject(ElementRef);\n\n  /**\n   * Define the popover content\n   * @param content the popover content\n   */\n  @Input('itPopover') set content(content: string) {\n    this.element.setAttribute('data-bs-content', content);\n  }\n\n  /**\n   * Define the popover title\n   * @param title the popover title\n   */\n  @Input() set popoverTitle(title: string | undefined) {\n    if (title) {\n      this.element.setAttribute('title', title);\n      this.element.setAttribute('data-bs-original-title', title);\n    }\n  }\n\n  /**\n   * Define the popover placement\n   * @param placement\n   */\n  @Input() set popoverPlacement(placement: ElementPlacement) {\n    this.element.setAttribute('data-bs-placement', placement);\n  }\n\n  /**\n   * Appends the popover to a specific element.\n   * @param container\n   */\n  @Input() set popoverContainer(container: 'body' | string | undefined) {\n    if (container) {\n      this.element.setAttribute('data-bs-container', container);\n    }\n  }\n\n  /**\n   * Indicates whether the title contains html\n   * @param html true if contain html\n   */\n  @Input({ transform: inputToBoolean }) set popoverHtml(html: boolean) {\n    this.element.setAttribute('data-bs-html', html ? 'true' : 'false');\n  }\n\n  /**\n   * How popover is triggered\n   * - 'hover': To open the Popover on hover of the mouse over the element\n   * - 'focus': To ignore popovers on the user's next click of an element other than the toggle element.\n   * @param trigger\n   */\n  @Input() set popoverTrigger(trigger: 'click' | 'hover' | 'focus' | 'manual' | undefined) {\n    if (trigger) {\n      this.element.setAttribute('data-bs-trigger', trigger);\n    }\n  }\n\n  /**\n   * This event fires immediately when the show method is called.\n   */\n  @Output() showEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() shownEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires immediately when the hide method is called.\n   */\n  @Output() hideEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() hiddenEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires after the show event when the tooltip template has been added to the DOM.\n   */\n  @Output() insertedEvent: EventEmitter<Event> = new EventEmitter();\n\n  private readonly element: HTMLElement;\n  private popover?: Popover;\n\n  constructor() {\n    this.element = this._elementRef.nativeElement;\n  }\n\n  ngAfterViewInit(): void {\n    this.element.setAttribute('data-bs-toggle', 'popover');\n    this.popover = Popover.getOrCreateInstance(this.element);\n\n    this.element.addEventListener('show.bs.popover', event => this.showEvent.emit(event));\n    this.element.addEventListener('shown.bs.popover', event => this.shownEvent.emit(event));\n    this.element.addEventListener('hide.bs.popover', event => this.hideEvent.emit(event));\n    this.element.addEventListener('hidden.bs.popover', event => this.hiddenEvent.emit(event));\n    this.element.addEventListener('inserted.bs.popover', event => this.insertedEvent.emit(event));\n  }\n\n  ngOnDestroy(): void {\n    this.dispose();\n  }\n\n  /**\n   * Shows the popover of an item.\n   */\n  public show(): void {\n    this.popover?.show();\n  }\n\n  /**\n   * Hide the popover of an element.\n   */\n  public hide(): void {\n    this.popover?.hide();\n  }\n\n  /**\n   * Activate / Deactivate the popover of an element\n   */\n  public toggle(): void {\n    this.popover?.toggle();\n  }\n\n  /**\n   * Hides and destroys the popover of an element.\n   */\n  public dispose(): void {\n    this.popover?.dispose();\n  }\n\n  /**\n   * Gives the popover of an element a chance to be shown.\n   */\n  public enable(): void {\n    this.popover?.enable();\n  }\n\n  /**\n   * Removes the ability to show the popover of an element.\n   */\n  public disable(): void {\n    this.popover?.disable();\n  }\n\n  /**\n   * Toggles the possibility that the popover of an element is shown or hidden.\n   */\n  public toggleEnabled(): void {\n    this.popover?.disable();\n  }\n\n  /**\n   * Updates the position of an element's popover.\n   */\n  public update(): void {\n    this.popover?.disable();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-spinner',\n  templateUrl: './spinner.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule],\n})\nexport class ItSpinnerComponent {\n  /**\n   * The spinner is active\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) active: boolean = true;\n\n  /**\n   * Show a small spinner\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) small?: boolean;\n\n  /**\n   * Show the double animation\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) double?: boolean;\n}\n","<div class=\"progress-spinner\" [class.progress-spinner-double]=\"double\" [class.progress-spinner-active]=\"active\" [class.size-sm]=\"small\">\n  @if (double) {\n    <div class=\"progress-spinner-inner\"></div>\n    <div class=\"progress-spinner-inner\"></div>\n  }\n  <span class=\"visually-hidden\">{{ 'it.core.loading' | translate }}...</span>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { IconName } from '../../../../interfaces/icon';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\n\n@Component({\n  selector: 'it-steppers-item',\n  templateUrl: './steppers-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItSteppersItemComponent extends ItAbstractComponent {\n  /**\n   * The labels present in the header steps\n   */\n  @Input({ required: true }) label!: string;\n\n  /**\n   * The labels present in the header steps can be preceded by an icon.\n   */\n  @Input() icon: IconName | undefined;\n\n  /**\n   * The title for the icon.\n   */\n  @Input() iconTitle: string | undefined;\n\n  /**\n   * The content of step\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @ViewChild(TemplateRef) public htmlContent!: TemplateRef<any>;\n}\n","<ng-template>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  inject,\n} from '@angular/core';\nimport { ItSteppersItemComponent } from '../steppers-item/steppers-item.component';\nimport { ProgressBarColor } from '../../../../interfaces/core';\nimport { startWith, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItButtonDirective } from '../../button/button.directive';\nimport { ItProgressBarComponent } from '../../progress-bar/progress-bar.component';\nimport { ItProgressButtonComponent } from '../../progress-button/progress-button.component';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-steppers-container',\n  templateUrl: './steppers-container.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, NgTemplateOutlet, TranslateModule, ItButtonDirective, ItProgressBarComponent, ItProgressButtonComponent],\n})\nexport class ItSteppersContainerComponent implements AfterViewInit, OnDestroy {\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /**\n   * The confirmed label if different from default\n   * @default null\n   */\n  @Input() confirmedLabel: string | null = null;\n\n  /**\n   * The active step index\n   * @param index the step index\n   */\n  @Input({ required: true }) activeStep!: number;\n\n  /**\n   * Show the stepper header\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) showHeader: boolean = true;\n\n  /**\n   * Dark style\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dark?: boolean;\n\n  /**\n   * The labels present in the header steps can be anticipated by the relative ordinal number.\n   * @efualt false\n   */\n  @Input({ transform: inputToBoolean }) steppersNumber?: boolean;\n\n  /**\n   * The progress style\n   * -<b>progress</b>: Show progress bar - You can change the color with the `progressColor` attribute\n   * -<b>dots</b>: Show progress dots\n   * @default undefined - don't show progress\n   */\n  @Input() progressStyle: 'progress' | 'dots' | undefined;\n\n  /**\n   * Customize progress color\n   */\n  @Input() progressColor: ProgressBarColor | undefined;\n\n  /**\n   * Show the back button\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) showBackButton: boolean = true;\n\n  /**\n   * Disable the back button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disableBackButton?: boolean;\n\n  /**\n   * Show the forward button\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) showForwardButton: boolean = true;\n\n  /**\n   * Disable the forward button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disableForwardButton?: boolean;\n\n  /**\n   * Show the confirm button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) showConfirmButton?: boolean;\n\n  /**\n   * Disable the confirm button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disableConfirmButton?: boolean;\n\n  /**\n   * Show the confirm button as indeterminate progress button\n   */\n  @Input({ transform: inputToBoolean }) confirmLoading?: boolean;\n\n  /**\n   * Show the save button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) showSaveButton?: boolean;\n\n  /**\n   * Disable the save button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disableSaveButton?: boolean;\n\n  /**\n   * Show the save button as indeterminate progress button\n   */\n  @Input({ transform: inputToBoolean }) saveLoading?: boolean;\n\n  /**\n   * The stepper items\n   */\n  @ContentChildren(ItSteppersItemComponent) steps?: QueryList<ItSteppersItemComponent>;\n\n  /**\n   * On back button click\n   * @event activeStep the current step index\n   */\n  @Output() backClick: EventEmitter<number>;\n\n  /**\n   * On forward button click\n   * @event activeStep the current step index\n   */\n  @Output() forwardClick: EventEmitter<number>;\n\n  /**\n   * On confirm button click\n   * @event activeStep the current step index\n   */\n  @Output() confirmClick: EventEmitter<number>;\n\n  /**\n   * On save button click\n   * @event activeStep the current step index\n   */\n  @Output() saveClick: EventEmitter<number>;\n\n  private stepsSubscriptions?: Array<Subscription>;\n\n  constructor() {\n    this.backClick = new EventEmitter<number>();\n    this.forwardClick = new EventEmitter<number>();\n    this.confirmClick = new EventEmitter<number>();\n    this.saveClick = new EventEmitter<number>();\n  }\n\n  ngAfterViewInit(): void {\n    this.steps?.changes\n      .pipe(\n        // When steps changes (dynamic add/remove)\n        startWith(undefined)\n      )\n      .subscribe(() => {\n        this.stepsSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions\n        this.stepsSubscriptions = this.steps?.map(step =>\n          step.valueChanges.subscribe(() => {\n            this._changeDetectorRef.detectChanges(); // DetectChanges when step attributes changes\n          })\n        );\n        this._changeDetectorRef.detectChanges(); // Force update html render\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.stepsSubscriptions?.forEach(step => step.unsubscribe());\n  }\n}\n","<div class=\"steppers\" [class.bg-dark]=\"dark\">\n  @if (showHeader) {\n    <div class=\"steppers-header\">\n      @if (steps) {\n        <ul>\n          @for (step of steps; track step.id; let i = $index) {\n            <li [class.confirmed]=\"i < activeStep\" [class.active]=\"i === activeStep\" [class.no-line]=\"i === activeStep && steppersNumber\">\n              @if (step.icon && !steppersNumber) {\n                <it-icon [title]=\"step.iconTitle\" [name]=\"step.icon\"></it-icon>\n              }\n              @if (steppersNumber) {\n                <span class=\"steppers-number\">\n                  @if (i < activeStep) {\n                    <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n                  } @else {\n                    <span class=\"visually-hidden\">{{ 'it.core.step' | translate }} </span>{{ i + 1 }}\n                  }\n                </span>\n              }\n              {{ step.label }}\n              @if (i < activeStep && !steppersNumber) {\n                <ng-container *ngTemplateOutlet=\"checkIcon\"></ng-container>\n              }\n              @if (i === activeStep) {\n                <span class=\"visually-hidden\">{{ 'it.core.active' | translate }}</span>\n              }\n            </li>\n          }\n        </ul>\n      }\n      @if (steps) {\n        <span class=\"steppers-index\" aria-hidden=\"true\">\n          @if (!steppersNumber) {\n            {{ activeStep + 1 + '/' + steps.length }}\n          } @else {\n            @for (step of steps; track step.id; let i = $index) {\n              <span [class.active]=\"i === activeStep\">{{ i + 1 }}</span>\n            }\n          }\n        </span>\n      }\n    </div>\n  }\n\n  @if (steps?.get(activeStep); as step) {\n    <div class=\"steppers-content\" aria-live=\"polite\">\n      <ng-container *ngTemplateOutlet=\"step.htmlContent\"></ng-container>\n    </div>\n  }\n\n  @if (showBackButton || showSaveButton || showForwardButton || showConfirmButton || !!progressStyle) {\n    <nav class=\"steppers-nav\">\n      @if (showBackButton) {\n        <button\n          type=\"button\"\n          itButton=\"outline-primary\"\n          size=\"sm\"\n          class=\"steppers-btn-prev\"\n          [disabled]=\"disableBackButton\"\n          (click)=\"backClick.emit(activeStep)\">\n          <it-icon [labelWaria]=\"'it.core.back' | translate\" name=\"chevron-left\" color=\"primary\"></it-icon>\n          {{ 'it.core.back' | translate }}\n        </button>\n      }\n      @if (!!progressStyle && steps) {\n        @if (progressStyle === 'dots') {\n          <ul class=\"steppers-dots\">\n            @for (step of steps; track step; let i = $index) {\n              <li [class.done]=\"i < activeStep\">\n                <span class=\"visually-hidden\">\n                  {{ 'it.core.step-of' | translate: { current: activeStep + 1, available: steps?.length } }}\n                  {{ i < activeStep ? '- ' + (confirmedLabel ? confirmedLabel : ('it.core.confirmed' | translate)) : '' }}\n                </span>\n              </li>\n            }\n          </ul>\n        } @else {\n          <div class=\"steppers-progress\">\n            <it-progress-bar [color]=\"progressColor\" [value]=\"(activeStep / (steps?.length || 1)) * 100\"></it-progress-bar>\n          </div>\n        }\n      }\n      @if (showSaveButton) {\n        <button\n          type=\"button\"\n          itButton=\"primary\"\n          size=\"sm\"\n          class=\"steppers-btn-save\"\n          [progress]=\"saveLoading\"\n          [disabled]=\"saveLoading || disableSaveButton\"\n          (click)=\"saveClick.emit(activeStep)\">\n          {{ 'it.general.save' | translate }}\n        </button>\n      }\n      @if (showForwardButton) {\n        <button\n          type=\"button\"\n          itButton=\"outline-primary\"\n          size=\"sm\"\n          class=\"steppers-btn-next\"\n          [disabled]=\"disableForwardButton\"\n          (click)=\"forwardClick.emit(activeStep)\">\n          {{ 'it.core.forward' | translate }}\n          <it-icon [labelWaria]=\"'it.core.forward' | translate\" name=\"chevron-right\" color=\"primary\"></it-icon>\n        </button>\n      }\n      @if (showConfirmButton) {\n        <button\n          type=\"button\"\n          itButton=\"primary\"\n          size=\"sm\"\n          class=\"steppers-btn-confirm d-lg-block\"\n          [progress]=\"confirmLoading\"\n          [disabled]=\"confirmLoading || disableConfirmButton\"\n          (click)=\"confirmClick.emit(activeStep)\">\n          {{ confirmedLabel ? confirmedLabel : ('it.core.confirmed' | translate) }}\n        </button>\n      }\n    </nav>\n  }\n</div>\n\n<ng-template #checkIcon>\n  <it-icon\n    [labelWaria]=\"confirmedLabel ? confirmedLabel : ('it.core.confirmed' | translate)\"\n    name=\"check\"\n    class=\"steppers-success\"></it-icon>\n  <span class=\"visually-hidden\">{{ confirmedLabel ? confirmedLabel : ('it.core.confirmed' | translate) }}</span>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ItSteppersContainerComponent } from './steppers-container/steppers-container.component';\nimport { ItSteppersItemComponent } from './steppers-item/steppers-item.component';\n\nconst steppersComponents = [ItSteppersContainerComponent, ItSteppersItemComponent];\n\n@NgModule({\n  imports: steppersComponents,\n  exports: steppersComponents,\n})\nexport class ItSteppersModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\nimport { IconName } from '../../../../interfaces/icon';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-tab-item',\n  templateUrl: './tab-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItTabItemComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * The tab label\n   */\n  @Input() label: string | undefined;\n\n  /**\n   * The icon name\n   */\n  @Input() icon: IconName | undefined;\n\n  /**\n   * Default active tab\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) active?: boolean;\n\n  /**\n   * Default disabled tab\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) disabled?: boolean;\n\n  /**\n   * Custom class\n   */\n  @Input() class: string = '';\n\n  /**\n   * The content of tab\n   */\n  @ViewChild(TemplateRef) public htmlContent!: TemplateRef<any>;\n\n  override ngAfterViewInit() {\n    super.ngAfterViewInit();\n    this._renderer.removeAttribute(this._elementRef.nativeElement, 'class');\n  }\n}\n","<ng-template>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChildren,\n} from '@angular/core';\nimport { ItTabItemComponent } from '../tab-item/tab-item.component';\nimport { of, startWith, Subscription, switchMap, tap } from 'rxjs';\nimport { Tab } from 'bootstrap-italia';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-tab-container',\n  templateUrl: './tab-container.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, NgTemplateOutlet],\n})\nexport class ItTabContainerComponent extends ItAbstractComponent implements OnDestroy, AfterViewInit {\n  /**\n   * Tabs automatically occupy the entire available width\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) auto?: boolean;\n\n  /**\n   * To obtain the correct margin between text and icon in the horizontally developed tab\n   */\n  @Input({ transform: inputToBoolean }) iconText?: boolean;\n\n  /**\n   * Dark style\n   */\n  @Input({ transform: inputToBoolean }) dark?: boolean;\n\n  /**\n   * Show items as cards\n   */\n  @Input({ transform: inputToBoolean }) cards?: boolean;\n\n  /**\n   * Show vertical navigation\n   */\n  @Input({ transform: inputToBoolean }) vertical?: boolean;\n\n  /**\n   * The tab position\n   */\n  @Input({ transform: inputToBoolean }) inverted?: boolean;\n\n  /**\n   * If tabs are editable\n   */\n  @Input({ transform: inputToBoolean }) editable?: boolean;\n\n  /**\n   * The tab items\n   */\n  @ContentChildren(ItTabItemComponent) tabs?: QueryList<ItTabItemComponent>;\n\n  @ViewChildren('tabNavLinks') private tabNavLinks?: QueryList<ElementRef<HTMLAnchorElement>>;\n\n  @Output() tabSelected = new EventEmitter<ItTabItemComponent>();\n\n  @Output() tabClosed = new EventEmitter();\n\n  @Output() tabAdded = new EventEmitter();\n\n  private tabSubscriptions?: Array<Subscription>;\n\n  constructor() {\n    super();\n  }\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n\n    this.tabs?.changes\n      .pipe(\n        // When tabs changes (dynamic add/remove)\n        startWith(undefined),\n        tap(() => {\n          this.tabSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions\n          this.tabSubscriptions = this.tabs?.map(tab =>\n            tab.valueChanges.subscribe(() => {\n              this._changeDetectorRef.detectChanges(); // DetectChanges when tab-item attributes changes\n            })\n          );\n          this._changeDetectorRef.detectChanges(); // Force update html render\n        }),\n        switchMap(() => this.tabNavLinks?.changes.pipe(startWith(undefined)) || of(undefined))\n      )\n      .subscribe(() => {\n        // Init tabs from bootstrap-italia\n        this.tabNavLinks?.forEach(tabNavLink => {\n          const triggerEl = tabNavLink.nativeElement,\n            tabTrigger = Tab.getOrCreateInstance(triggerEl);\n\n          if (triggerEl.getAttribute('tab-listener') !== 'true') {\n            triggerEl.addEventListener('click', event => {\n              event.preventDefault();\n              tabTrigger.show();\n              this._changeDetectorRef.detectChanges();\n            });\n            triggerEl.setAttribute('tab-listener', 'true'); // Prevents multiple insertion of the listener\n          }\n        });\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.tabSubscriptions?.forEach(sub => sub.unsubscribe());\n  }\n\n  onTab(tab: ItTabItemComponent) {\n    this.tabSelected.emit(tab);\n  }\n\n  clickToClose(index: number) {\n    this.tabClosed.emit(index);\n  }\n\n  clickToAdd($event: Event) {\n    $event.preventDefault();\n    this.tabAdded.emit();\n  }\n}\n","<div\n  [class.row]=\"vertical\"\n  [class.flex-row-reverse]=\"inverted && vertical\"\n  [class.d-flex]=\"inverted && !vertical\"\n  [class.flex-column-reverse]=\"inverted && !vertical\">\n  <div\n    [class.col-5]=\"inverted && vertical\"\n    [class.col-md-4]=\"inverted && vertical\"\n    [class.col-lg-3]=\"inverted && vertical\"\n    [class.col-4]=\"!inverted && vertical\"\n    [class.col-md-3]=\"!inverted && vertical\">\n    @if (tabs) {\n      <ul\n        class=\"nav nav-tabs\"\n        [class.nav-tabs-editable]=\"editable\"\n        [class.nav-tabs-cards]=\"cards\"\n        [class.nav-tabs-vertical]=\"vertical\"\n        [class.auto]=\"auto\"\n        [class.nav-tabs-icon-text]=\"iconText\"\n        [class.nav-dark]=\"dark\"\n        role=\"tablist\">\n        @for (tab of tabs; track tab.id; let i = $index) {\n          <li class=\"nav-item\">\n            <a\n              #tabNavLinks\n              [id]=\"tab.id + '-tab-link'\"\n              role=\"tab\"\n              class=\"nav-link\"\n              [class.active]=\"tab.active\"\n              [class.disabled]=\"tab.disabled\"\n              [attr.href]=\"'#' + tab.id + '-tab'\"\n              [attr.aria-controls]=\"tab.id + '-tab'\"\n              (click)=\"onTab(tab)\">\n              @if (tab.icon) {\n                <it-icon [name]=\"tab.icon\" class=\"me-2\"></it-icon>\n              }\n              {{ tab.label }}\n            </a>\n            @if (editable) {\n              <a class=\"nav-link-close\" (click)=\"clickToClose(i)\" (keypress)=\"clickToClose(i)\" [attr.disabled]=\"tab.disabled\">\n                <it-icon name=\"close\"></it-icon>\n              </a>\n            }\n          </li>\n        }\n        @if (editable) {\n          <li class=\"nav-item\">\n            <a href=\"#\" class=\"nav-tab-add\" (click)=\"clickToAdd($event)\" (keypress)=\"clickToAdd($event)\"\n              ><span class=\"visually-hidden\"> Aggiungi un tab</span></a\n            >\n          </li>\n        }\n      </ul>\n    }\n  </div>\n  <div\n    [class.col-7]=\"inverted && vertical\"\n    [class.col-md-8]=\"inverted && vertical\"\n    [class.col-lg-9]=\"inverted && vertical\"\n    [class.col-8]=\"!inverted && vertical\"\n    [class.col-md-9]=\"!inverted && vertical\">\n    @if (tabs) {\n      <div class=\"tab-content\">\n        @for (tab of tabs; track tab.id) {\n          <div\n            [id]=\"tab.id + '-tab'\"\n            class=\"tab-pane p-4 fade {{ tab.class ?? '' }}\"\n            [class.active]=\"tab.active\"\n            [class.show]=\"tab.active\"\n            role=\"tabpanel\"\n            [attr.aria-labelledby]=\"tab.id + '-tab-link'\">\n            <ng-container *ngTemplateOutlet=\"tab.htmlContent\"></ng-container>\n          </div>\n        }\n      </div>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItTabContainerComponent } from './tab-container/tab-container.component';\nimport { ItTabItemComponent } from './tab-item/tab-item.component';\n\nconst tabComponents = [ItTabContainerComponent, ItTabItemComponent];\n\n@NgModule({\n  imports: tabComponents,\n  exports: tabComponents,\n})\nexport class ItTabModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TableColor, TableHeadColor, TableResponsive, VerticalAlignment } from '../../../interfaces/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItTableComponent {\n  /**\n   * Table color\n   */\n  @Input() color: TableColor | undefined;\n\n  /**\n   * Head table color\n   */\n  @Input() headColor: TableHeadColor | undefined;\n\n  /**\n   * Use vertical alignment classes to realign where needed.\n   */\n  @Input() alignment: VerticalAlignment | undefined;\n\n  /**\n   * Use .table-striped to add zebra stripes to each table row contained in <tbody>.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) striped?: boolean;\n\n  /**\n   * Add .table-hover to enable hover state on table rows contained in <tbody>.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) hover?: boolean;\n\n  /**\n   * Add .table-bordered to have borders on all sides of the table and on all cells.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) bordered?: boolean;\n\n  /**\n   * Add the .table-borderless class for a borderless table.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) borderless?: boolean;\n\n  /**\n   * Add .table-sm to make tables more compact by halving the cell padding.\n   * @efault false\n   */\n  @Input({ transform: inputToBoolean }) compact?: boolean;\n\n  /**\n   * To render the <caption> on top of the table\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) captionTop?: boolean;\n\n  /**\n   * Responsive tables allow you to scroll tables horizontally with ease.\n   * @default responsive\n   */\n  @Input() responsive: TableResponsive = 'responsive';\n}\n","<div [class]=\"responsive ? 'table-' + responsive : undefined\">\n  <table\n    class=\"table{{ color ? ' table-' + color : '' }}{{ alignment ? ' ' + alignment : '' }}\"\n    [class.table-striped]=\"striped\"\n    [class.table-hover]=\"hover\"\n    [class.table-bordered]=\"bordered\"\n    [class.table-borderless]=\"borderless\"\n    [class.table-sm]=\"compact\"\n    [class.caption-top]=\"captionTop\">\n    <caption>\n      <ng-content select=\"[caption]\"></ng-content>\n    </caption>\n    <thead [class]=\"headColor ? 'table-' + headColor : undefined\">\n      <ng-content select=\"[thead]\"></ng-content>\n    </thead>\n    <tbody>\n      <ng-content select=\"[tbody]\"></ng-content>\n    </tbody>\n    <tfoot>\n      <ng-content select=\"[tfoot]\"></ng-content>\n    </tfoot>\n  </table>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport type SortDirection = 'asc' | 'desc' | undefined;\n\n/** Position of the arrow that displays when sorted. */\nexport type SortHeaderArrowPosition = 'before' | 'after';\n\n/** Interface for a directive that holds sorting state consumed by `ItSortHeader`. */\nexport interface ItSortable {\n  /** The id of the column being sorted. */\n  id: string;\n\n  /** Starting sort direction. */\n  start?: SortDirection;\n\n  /** Whether to disable clearing the sorting state. */\n  disableSortClear?: boolean;\n}\n\n/** The current sort state. */\nexport interface ItSortEvent {\n  /** The id of the column being sorted. */\n  active: string;\n\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\n/**\n * Default options for `it-sort`.\n */\nexport interface ItSortDefaultOptions {\n  /** Whether to disable clearing the sorting state. */\n  disableClear?: boolean;\n  /** Position of the arrow that displays when sorted. */\n  arrowPosition?: SortHeaderArrowPosition;\n}\n\n/**\n * Injection token to be used to override the default options for `it-sort`.\n */\nexport const IT_SORT_DEFAULT_OPTIONS = new InjectionToken<ItSortDefaultOptions>('IT_SORT_DEFAULT_OPTIONS');\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, booleanAttribute, HostBinding, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport {\n  IT_SORT_DEFAULT_OPTIONS,\n  ItSortable,\n  ItSortDefaultOptions,\n  ItSortEvent,\n  SortDirection,\n} from '../../../../interfaces/sortable-table';\n\n@Directive({\n  standalone: true,\n  selector: '[itSort]',\n  exportAs: 'itSort',\n})\nexport class ItSortDirective implements OnChanges, OnDestroy {\n  private _defaultOptions = inject<ItSortDefaultOptions>(IT_SORT_DEFAULT_OPTIONS, { optional: true });\n\n  /** The id of the most recently sorted ItSortable. */\n  @Input('itSortActive') active?: string;\n\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overridden by the MatSortable's sort start.\n   */\n  @Input('itSortStart') start: SortDirection = 'asc';\n\n  /** The sort direction of the currently active ItSortable. */\n  @Input('itSortDirection')\n  get direction(): SortDirection {\n    return this._direction;\n  }\n  set direction(direction: SortDirection) {\n    this._direction = direction;\n  }\n  private _direction: SortDirection;\n\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overridden by the ItSortable's disable clear input.\n   */\n  @Input({ transform: booleanAttribute })\n  disableSortClear?: boolean;\n\n  /** Whether the sortable is disabled. */\n  @Input({ transform: booleanAttribute })\n  sortDisabled: boolean = false;\n\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output() readonly sortChange: EventEmitter<ItSortEvent> = new EventEmitter<ItSortEvent>();\n\n  @HostBinding('class')\n  public readonly sortDirectiveClass = 'it-sort';\n\n  /** Collection of all registered sortables that this directive manages. */\n  protected sortables = new Map<string, ItSortable>();\n\n  /** Used to notify any child components listening to state changes. */\n  readonly _stateChanges = new Subject<void>();\n\n  /**\n   * Register function to be used by the contained ItSortables. Adds the ItSortable to the\n   * collection of ItSortables.\n   */\n  register(sortable: ItSortable): void {\n    this.sortables.set(sortable.id, sortable);\n  }\n\n  /**\n   * Unregister function to be used by the contained ItSortables. Removes the ItSortable from the\n   * collection of contained ItSortables.\n   */\n  deregister(sortable: ItSortable): void {\n    this.sortables.delete(sortable.id);\n  }\n\n  /** Sets the active sort id and determines the new sort direction. */\n  sort(sortable: ItSortable): void {\n    if (this.active != sortable.id) {\n      this.active = sortable.id;\n      this.direction = sortable.start ? sortable.start : this.start;\n    } else {\n      this.direction = this.getNextSortDirection(sortable);\n    }\n\n    this.sortChange.emit({ active: this.active, direction: this.direction });\n  }\n\n  /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n  getNextSortDirection(sortable: ItSortable): SortDirection {\n    if (!sortable) {\n      return undefined;\n    }\n\n    // Get the sort direction cycle with the potential sortable overrides.\n    const disableClear = sortable?.disableSortClear ?? this.disableSortClear ?? !!this._defaultOptions?.disableClear;\n    const sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n    // Get and return the next direction in the cycle\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) {\n      nextDirectionIndex = 0;\n    }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n\n  ngOnChanges() {\n    this._stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.complete();\n  }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): Array<SortDirection | undefined> {\n  const sortOrder: Array<SortDirection> = ['asc', 'desc'];\n  if (start == 'desc') {\n    sortOrder.reverse();\n  }\n  if (!disableClear) {\n    sortOrder.push(undefined);\n  }\n\n  return sortOrder;\n}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { ItSortDirective } from '../sort.directive';\nimport { merge, Subscription } from 'rxjs';\nimport { ItIconComponent } from '../../../../utils/icon/icon.component';\nimport { IconName } from '../../../../../interfaces/icon';\nimport {\n  IT_SORT_DEFAULT_OPTIONS,\n  ItSortable,\n  ItSortDefaultOptions,\n  SortDirection,\n  SortHeaderArrowPosition,\n} from '../../../../../interfaces/sortable-table';\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent ItSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[it-sort-header]',\n  exportAs: 'itSortHeader',\n  imports: [ItIconComponent],\n  templateUrl: './sort-header.component.html',\n  styleUrls: ['./sort-header.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItSortHeaderComponent implements ItSortable, OnDestroy, OnInit {\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n  readonly _sort = inject(ItSortDirective, { optional: true })!;\n\n  /**\n   * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n   * the column's name.\n   */\n  @Input('it-sort-header') id!: string;\n\n  /** Sets the position of the arrow that displays when sorted. */\n  @Input() arrowPosition: SortHeaderArrowPosition = 'after';\n\n  /** Overrides the sort start value of the containing MatSort for this SortHeaderComponent. */\n  @Input() start?: SortDirection;\n\n  /** whether the sort header is disabled. */\n  @Input({ transform: booleanAttribute })\n  sortDisabled: boolean = false;\n\n  /** Overrides the disable clear value of the containing SortDirective for this MatSortable. */\n  @Input({ transform: booleanAttribute })\n  disableSortClear?: boolean;\n\n  @HostBinding('class')\n  public readonly sortHeaderClass = 'it-sort-header';\n\n  private _rerenderSubscription?: Subscription;\n\n  /** The direction the arrow should be facing according to the current state. */\n  private _arrowDirection?: SortDirection;\n\n  constructor() {\n    const defaultOptions = inject<ItSortDefaultOptions>(IT_SORT_DEFAULT_OPTIONS, { optional: true });\n\n    if (defaultOptions?.arrowPosition) {\n      this.arrowPosition = defaultOptions?.arrowPosition;\n    }\n\n    this._handleStateChanges();\n  }\n\n  ngOnInit() {\n    // Initialize the direction of the arrow and set the view state to be immediately that state.\n    this.updateArrowDirection();\n    this._sort.register(this);\n  }\n\n  ngOnDestroy() {\n    this._sort.deregister(this);\n    this._rerenderSubscription?.unsubscribe();\n  }\n\n  @HostListener('click')\n  _handleClick() {\n    if (!this.isDisabled) {\n      this._sort.sort(this);\n    }\n  }\n\n  /**\n   * Whether this MatSortHeader is currently sorted in either ascending or descending order.\n   */\n  protected get isSorted() {\n    return this._sort.active == this.id && (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n  }\n\n  /**\n   * Returns the icon class by the arrow direction\n   */\n  protected get arrowIconClass(): IconName {\n    return `${this._arrowDirection == 'asc' ? 'arrow-up' : 'arrow-down'}`;\n  }\n\n  /**\n   * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n   * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n   * active sorted direction. The reason this is updated through a function is because the direction\n   * should only be changed at specific times - when deactivated but the hint is displayed and when\n   * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n   * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n   * preserving its direction, even though the next sort direction is actually different and should\n   * only be changed once the arrow displays again (hint or activation).\n   */\n  private updateArrowDirection() {\n    this._arrowDirection = this.isSorted ? this._sort.direction : this.start || this._sort.start;\n  }\n\n  @HostBinding('class.it-sort-header-disabled')\n  public get isDisabled() {\n    return this._sort.sortDisabled || this.sortDisabled;\n  }\n\n  /**\n   * Gets the aria-sort attribute that should be applied to this sort header. If this header\n   * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n   * says that the aria-sort property should only be present on one header at a time, so removing\n   * ensures this is true.\n   */\n  @HostBinding('attr.aria-sort')\n  public get ariaSortAttribute() {\n    if (!this.isSorted) {\n      return 'none';\n    }\n\n    return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n  }\n\n  /** Handles changes in the sorting state. */\n  private _handleStateChanges() {\n    this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges).subscribe(() => {\n      if (this.isSorted) {\n        this.updateArrowDirection();\n      }\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n}\n","<!--\n  We set the `tabindex` on an element inside the table header, rather than the header itself,\n  because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n  table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n  be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n  over having a button with an `aria-label` inside the header, because the button's `aria-label`\n  will be read out as the user is navigating the table's cell (see #13012).\n\n  The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div\n  class=\"it-sort-header-container it-focus-indicator\"\n  [class.it-sort-header-sorted]=\"isSorted\"\n  [class.it-sort-header-position-before]=\"arrowPosition === 'before'\"\n  [attr.tabindex]=\"isDisabled ? null : 0\"\n  [attr.role]=\"isDisabled ? null : 'button'\">\n  <!--\n    We have to keep it due to a large number of screenshot diff failures. It should be removed eventually.\n    Note that the difference isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n    causes it to be center-aligned, whereas removing it will keep the text to the left.\n  -->\n  <div class=\"it-sort-header-content\">\n    <ng-content></ng-content>\n  </div>\n\n  <it-icon class=\"it-sort-arrow\" size=\"sm\" [name]=\"arrowIconClass\" />\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItTableComponent } from './table.component';\nimport { ItSortDirective } from './sort/sort.directive';\nimport { ItSortHeaderComponent } from './sort/sort-header/sort-header.component';\n\nconst tableComponents = [ItTableComponent, ItSortDirective, ItSortHeaderComponent];\n\n@NgModule({\n  imports: tableComponents,\n  exports: tableComponents,\n})\nexport class ItTableModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { DatePipe, NgClass } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TimelinePINType } from '../../../../interfaces/core';\nimport { IconName } from '../../../../interfaces/icon';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n/**\n * Timeline Item\n * @description Represents a single event for Timeline component.\n */\n@Component({\n  selector: 'it-timeline-item',\n  templateUrl: './timeline-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, DatePipe, TranslateModule, NgClass],\n})\nexport class ItTimelineItemComponent extends ItAbstractComponent {\n  /**\n   * Timeline element title\n   */\n  @Input({ required: true }) title!: string;\n\n  /**\n   * Timeline element text\n   */\n  @Input({ required: true }) text!: string;\n\n  /**\n   * Timeline element signature\n   */\n  @Input() signature: string | undefined;\n\n  /**\n   * Timeline element reference date\n   */\n  @Input() eventDate: Date | undefined;\n\n  /**\n   * Timeline element reference date format\n   * @default dd/MM/yyyy\n   */\n  @Input() dateFormat: string = 'dd/MM/yyyy';\n\n  /**\n   * Timeline element PIN text\n   */\n  @Input({ required: true }) pinText: string | undefined;\n\n  /**\n   * Timeline element PIN type\n   * @default none\n   */\n  @Input() pinType: TimelinePINType | undefined = 'default';\n\n  /**\n   * Timeline element PIN icon\n   * @default code-circle\n   */\n  @Input() pinIcon: IconName | undefined = 'code-circle';\n\n  /**\n   * Timeline element PIN icon\n   * @default code-circle\n   */\n  @Input() pinIconTitle: string | undefined;\n\n  /**\n   * Timeline element category label\n   */\n  @Input() categoryLabel: string | undefined = 'Categoria evento: ';\n\n  /**\n   * Timeline element date label\n   */\n  @Input() dateLabel: string | undefined = 'Data evento: ';\n\n  /**\n   * Timeline element category title\n   */\n  @Input() categoryTitle: string | undefined;\n\n  /**\n   * Timeline element category link\n   */\n  @Input() categoryLink: string | undefined;\n\n  /**\n   * Timeline element show detail link\n   * @default false\n   */\n  @Input({ transform: inputToBoolean })\n  showReadMore: boolean = false;\n\n  /** Timeline element detail link\n   * @default #\n   */\n  @Input() readMoreLink: string | undefined = '#';\n}\n","<div class=\"timeline-element\">\n  @if (pinType === 'now') {\n    <span class=\"it-now-label d-none d-lg-flex\">{{ 'it.timeline.today' | translate }}</span>\n  }\n  <h3 class=\"it-pin-wrapper\" [ngClass]=\"{ 'it-evidence': pinType === 'evidence', 'it-now': pinType === 'now' }\">\n    <div class=\"pin-icon\">\n      @if (pinIcon) {\n        <it-icon [name]=\"pinIcon\" [title]=\"pinIconTitle\" [attr.role]=\"pinIconTitle ? 'img' : null\"></it-icon>\n      } @else {\n        <it-icon name=\"code-circle\"></it-icon>\n      }\n    </div>\n    <div class=\"pin-text\">\n      <span>{{ pinText }}</span>\n    </div>\n  </h3>\n  <div class=\"card-wrapper\">\n    <div class=\"card\">\n      <div class=\"card-body\">\n        @if ((categoryTitle && categoryLink) || eventDate) {\n          <div class=\"category-top\">\n            @if (categoryTitle) {\n              <span class=\"visually-hidden\">{{ categoryLabel }}</span>\n              <a class=\"category\" [href]=\"categoryLink\">{{ categoryTitle }}</a>\n            }\n            @if (eventDate) {\n              <span class=\"visually-hidden\">{{ dateLabel }}</span>\n              <span class=\"data\">{{ eventDate | date: dateFormat }}</span>\n            }\n          </div>\n        }\n        <h4 class=\"card-title\">{{ title }}</h4>\n        <p class=\"card-text\">{{ text }}</p>\n        @if (signature) {\n          <span class=\"card-signature\">{{ signature }}</span>\n        }\n        @if (showReadMore) {\n          <a class=\"read-more\" [href]=\"readMoreLink\">\n            <span class=\"text\">{{ 'it.timeline.read-more' | translate }}</span>\n            <span class=\"visually-hidden\">{{ 'it.timeline.read-more-on' | translate: { title: title } }}</span>\n            <it-icon name=\"arrow-right\"></it-icon>\n          </a>\n        }\n      </div>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ItTimelineItemComponent } from './timeline-item/timeline-item.component';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { TimelineElement } from '../../../interfaces/core';\n\n/**\n * Timeline\n * @description Build timeline for chronological representation of events.\n */\n@Component({\n  selector: 'it-timeline',\n  templateUrl: './timeline.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, TranslateModule, ItTimelineItemComponent],\n})\nexport class ItTimelineComponent extends ItAbstractComponent {\n  /**\n   * Timeline elements array\n   * @default []\n   */\n  @Input() timelineElements: TimelineElement[] = [];\n\n  /**\n   * Default date format for timeline element reference date\n   * @default dd/MM/yyyy\n   */\n  @Input() dateFormat: string = 'dd/MM/yyyy';\n}\n","<div class=\"it-timeline-wrapper\">\n  <div class=\"row\">\n    @for (element of timelineElements; track $index) {\n      <div class=\"col-12\">\n        <it-timeline-item\n          [title]=\"element.title\"\n          [text]=\"element.text\"\n          [signature]=\"element.signature\"\n          [pinType]=\"element.pin?.type\"\n          [pinIcon]=\"element.pin?.icon\"\n          [pinText]=\"element.pin?.text\"\n          [eventDate]=\"element.eventDate\"\n          [dateFormat]=\"dateFormat\"\n          [categoryTitle]=\"element.category?.title\"\n          [categoryLink]=\"element.category?.link\"\n          [showReadMore]=\"!!element.link?.length\"\n          [readMoreLink]=\"element.link\" />\n      </div>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItTimelineComponent } from './timeline.component';\nimport { ItTimelineItemComponent } from './timeline-item/timeline-item.component';\n\nconst timelineComponents = [ItTimelineComponent, ItTimelineItemComponent];\n\n@NgModule({\n  imports: timelineComponents,\n  exports: timelineComponents,\n})\nexport class ItTimelineModule {}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnDestroy, Output, inject } from '@angular/core';\nimport { ElementPlacement } from '../../../interfaces/core';\nimport { Tooltip } from 'bootstrap-italia';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Directive({\n  standalone: true,\n  selector: '[itTooltip]',\n  exportAs: 'itTooltip',\n})\nexport class ItTooltipDirective implements AfterViewInit, OnDestroy {\n  private readonly _elementRef = inject(ElementRef);\n\n  /**\n   * Define the tooltip title\n   * @param title the tooltip title\n   */\n  @Input('itTooltip') set title(title: string | undefined) {\n    if (title) {\n      // this.element.setAttribute(\"title\", title);\n      this.element.setAttribute('data-bs-original-title', title);\n    }\n  }\n\n  /**\n   * Define the tooltip placement\n   * @param placement\n   */\n  @Input() set tooltipPlacement(placement: ElementPlacement) {\n    this.element.setAttribute('data-bs-placement', placement);\n  }\n\n  /**\n   * Indicates whether the title contains html\n   * @param html true if contain html\n   */\n  @Input({ transform: inputToBoolean }) set tooltipHtml(html: boolean) {\n    this.element.setAttribute('data-bs-html', html ? 'true' : 'false');\n  }\n\n  /**\n   * This event fires immediately when the show method is called.\n   */\n  @Output() showEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is triggered when the tooltip has been made visible to the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() shownEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires immediately when the hide method is called.\n   */\n  @Output() hideEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event is raised when the tooltip has finished being hidden from the user (it will wait for the CSS transitions to complete).\n   */\n  @Output() hiddenEvent: EventEmitter<Event> = new EventEmitter();\n\n  /**\n   * This event fires after the show event when the tooltip template has been added to the DOM.\n   */\n  @Output() insertedEvent: EventEmitter<Event> = new EventEmitter();\n\n  private readonly element: HTMLElement;\n  private tooltip?: Tooltip;\n\n  constructor() {\n    this.element = this._elementRef.nativeElement;\n  }\n\n  ngAfterViewInit(): void {\n    this.element.setAttribute('data-bs-toggle', 'tooltip');\n    this.tooltip = Tooltip.getOrCreateInstance(this.element);\n\n    this.element.addEventListener('show.bs.tooltip', event => this.showEvent.emit(event));\n    this.element.addEventListener('shown.bs.tooltip', event => this.shownEvent.emit(event));\n    this.element.addEventListener('hide.bs.tooltip', event => this.hideEvent.emit(event));\n    this.element.addEventListener('hidden.bs.tooltip', event => this.hiddenEvent.emit(event));\n    this.element.addEventListener('inserted.bs.tooltip', event => this.insertedEvent.emit(event));\n  }\n\n  ngOnDestroy(): void {\n    this.dispose();\n  }\n\n  /**\n   * Shows the tooltip of an item.\n   */\n  public show(): void {\n    this.tooltip?.show();\n  }\n\n  /**\n   * Hide the tooltip of an element.\n   */\n  public hide(): void {\n    this.tooltip?.hide();\n  }\n\n  /**\n   * Activate / Deactivate the tooltip of an element\n   */\n  public toggle(): void {\n    this.tooltip?.toggle();\n  }\n\n  /**\n   * Hides and destroys the tooltip of an element.\n   */\n  public dispose(): void {\n    this.tooltip?.dispose();\n  }\n\n  /**\n   * Gives the tooltip of an element a chance to be shown.\n   */\n  public enable(): void {\n    this.tooltip?.enable();\n  }\n\n  /**\n   * Removes the ability to show the tooltip of an element.\n   */\n  public disable(): void {\n    this.tooltip?.disable();\n  }\n\n  /**\n   * Toggles the possibility that the tooltip of an element is shown or hidden.\n   */\n  public toggleEnabled(): void {\n    this.tooltip?.disable();\n  }\n\n  /**\n   * Updates the position of an element's tooltip.\n   */\n  public update(): void {\n    this.tooltip?.disable();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-checkbox',\n  templateUrl: './checkbox.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, ReactiveFormsModule, AsyncPipe],\n})\nexport class ItCheckboxComponent extends ItAbstractFormComponent<boolean | null | undefined> implements OnInit, OnChanges {\n  /**\n   * If show checkbox as toggle\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) toggle?: boolean;\n\n  /**\n   * If show checkbox inline\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) inline?: boolean;\n\n  /**\n   * If is checkbox group\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) group?: boolean;\n\n  /**\n   * If checkbox is checked\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) checked?: boolean;\n\n  /**\n   * If checkbox is indeterminate\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) indeterminate?: boolean;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.markAsChecked();\n  }\n\n  override ngOnChanges(changes: SimpleChanges) {\n    if (changes['checked']) {\n      this.markAsChecked();\n    }\n  }\n\n  private markAsChecked(): void {\n    if (this.control.value || this.checked === undefined) {\n      return;\n    }\n\n    const value = this.checked;\n    this.writeValue(value);\n    return this.onChange(value);\n  }\n}\n","<ng-container>\n  <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n    @if (toggle) {\n      <div class=\"toggles\">\n        <label [for]=\"id\">\n          <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n          <input\n            [id]=\"id\"\n            type=\"checkbox\"\n            [formControl]=\"control\"\n            [attr.aria-describedby]=\"group ? id + '-help' : null\"\n            (click)=\"$event.stopPropagation()\" />\n          <span class=\"lever\"></span>\n        </label>\n      </div>\n    } @else {\n      <input\n        [id]=\"id\"\n        type=\"checkbox\"\n        [class.is-invalid]=\"isInvalid\"\n        [class.is-valid]=\"isValid\"\n        [class.semi-checked]=\"indeterminate\"\n        [formControl]=\"control\"\n        [attr.aria-describedby]=\"group ? id + '-help' : undefined\"\n        (click)=\"$event.stopPropagation()\" />\n      <label class=\"form-check-label\" [for]=\"id\">\n        <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n      </label>\n    }\n\n    @if (group) {\n      <small [id]=\"id + '-help'\" class=\"form-text\">\n        <ng-content></ng-content>\n      </small>\n    }\n\n    @if (isInvalid && group) {\n      <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n        <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n      </div>\n    }\n  </div>\n\n  @if (isInvalid && !group) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n    </div>\n  }\n</ng-container>\n\n<ng-template #error>\n  <div #customError>\n    <ng-content select=\"[error]\"></ng-content>\n  </div>\n  @if (!customError.hasChildNodes()) {\n    {{ invalidMessage | async }}\n  }\n</ng-template>\n\n<ng-template #htmlLabel>\n  <div #customLabel>\n    <ng-content select=\"[label]\"></ng-content>\n  </div>\n  @if (!customLabel.hasChildNodes()) {\n    {{ label }}\n  }\n</ng-template>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { ItValidators } from '../../../validators/it-validators';\nimport { map, Observable } from 'rxjs';\nimport { InputPassword } from 'bootstrap-italia';\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\nimport { AsyncPipe } from '@angular/common';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-password-input',\n  templateUrl: './password-input.component.html',\n  styleUrls: ['./password-input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ReactiveFormsModule, ItIconComponent, AsyncPipe, TranslateModule],\n})\nexport class ItPasswordInputComponent extends ItAbstractFormComponent<string | null | undefined> implements OnInit, AfterViewInit {\n  /**\n   * The field is required\n   * @default true\n   */\n  @Input() required: boolean = true;\n\n  /**\n   * The password minimum length\n   * @default 10\n   */\n  @Input() minLength: number = 10;\n\n  /**\n   * The password must contain at least one number\n   * @default true\n   */\n  @Input() useNumber: boolean = true;\n\n  /**\n   * The password must contain at least one uppercase character\n   * @default true\n   */\n  @Input() useCapitalCase: boolean = true;\n\n  /**\n   * The password must contain at least one lowercase character\n   * @default true\n   */\n  @Input() useSmallCase: boolean = true;\n\n  /**\n   * The password must contain at least one special character\n   * @default true\n   */\n  @Input() useSpecialCharacters: boolean = true;\n\n  /**\n   * The input placeholder\n   */\n  @Input() placeholder: string = '';\n\n  /**\n   * The input description\n   * - <b>true</b>: show the StrengthMeter description message\n   * - <b>string</b>: show custom description\n   * @default true for StrengthMeter mode else is undefined\n   */\n  @Input() description: string | true | undefined;\n\n  /**\n   * Enable to show the strength meter\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) showStrengthMeter?: boolean;\n\n  /**\n   * Is the confirmation password field\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) confirmPasswordField?: boolean;\n\n  /**\n   * Input autocomplete attribute (Browser autocomplete)\n   * @default undefined\n   */\n  @Input() autocomplete: string | undefined;\n\n  private inputPasswordBs?: InputPassword;\n\n  @ViewChild('input') private inputElement?: ElementRef<HTMLInputElement>;\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    if (!this.confirmPasswordField) {\n      this.addValidators(\n        ItValidators.password(\n          this.minLength,\n          this.useNumber,\n          this.useCapitalCase,\n          this.useSmallCase,\n          this.useSpecialCharacters,\n          this.required\n        )\n      );\n    } else if (this.required) {\n      this.addValidators(Validators.required);\n    }\n  }\n\n  override ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    if (this.inputElement) {\n      this.inputPasswordBs = InputPassword.getOrCreateInstance(this.inputElement.nativeElement, {\n        showText: this.isStrengthMeter,\n        minimumLength: this.minLength,\n      });\n    }\n  }\n\n  protected get isStrengthMeter(): boolean {\n    return !this.confirmPasswordField && !!this.showStrengthMeter;\n  }\n\n  /**\n   * Return the invalid message string from TranslateService\n   */\n  override get invalidMessage(): Observable<string> {\n    if (this.hasError('noPasswordMatch')) {\n      return this._translateService.get('it.errors.password-no-match');\n    }\n    if (this.hasError('minlength')) {\n      return this._translateService.get('it.errors.password-min-length', {\n        minLength: this.minLength,\n      });\n    }\n    if (this.hasError('hasNumber')) {\n      return this._translateService.get('it.errors.password-number');\n    }\n    if (this.hasError('hasCapitalCase')) {\n      return this._translateService.get('it.errors.password-capital-case');\n    }\n    if (this.hasError('hasSmallCase')) {\n      return this._translateService.get('it.errors.password-capital-case');\n    }\n    if (this.hasError('hasSpecialCharacters')) {\n      return this._translateService.get('it.errors.password-special-character');\n    }\n\n    return super.invalidMessage;\n  }\n\n  /**\n   * Retrieve the default StrengthMeter description message from TranslateService\n   */\n  protected get strengthMeterDescription(): Observable<string> {\n    const keys = ['it.form.password-strength-meter.description.default'];\n    if (this.useNumber) {\n      keys.push('it.form.password-strength-meter.description.number');\n    }\n    if (this.useCapitalCase) {\n      keys.push('it.form.password-strength-meter.description.capital-case');\n    }\n    if (this.useSpecialCharacters) {\n      keys.push('it.form.password-strength-meter.description.special-character');\n    }\n\n    return this._translateService.get(keys, { minLength: this.minLength }).pipe(map(labels => Object.values(labels).join(', ')));\n  }\n}\n","<div class=\"form-group\">\n  @if (label) {\n    <label [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{ label }}</label>\n  }\n  <input\n    #input\n    [id]=\"id\"\n    type=\"password\"\n    class=\"form-control input-password\"\n    [class.is-invalid]=\"isInvalid\"\n    [class.is-valid]=\"isValid\"\n    [formControl]=\"control\"\n    [placeholder]=\"placeholder\"\n    [attr.aria-describedby]=\"description !== undefined || isStrengthMeter ? id + '-description' : null\"\n    [autocomplete]=\"confirmPasswordField ? 'off' : autocomplete\" />\n\n  <span class=\"password-icon\" aria-hidden=\"true\">\n    <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n    <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n  </span>\n\n  @if (isInvalid) {\n    <div [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n      <div #customError>\n        <ng-content select=\"[error]\"></ng-content>\n      </div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n\n  @if (description !== undefined && !isStrengthMeter) {\n    <small [id]=\"id + '-description'\" class=\"form-text\">\n      {{ description !== true ? description : (strengthMeterDescription | async) }}\n    </small>\n  }\n\n  <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n    {{ 'it.form.caps-inserted' | translate }}\n  </small>\n\n  @if (isStrengthMeter) {\n    <div class=\"password-strength-meter\">\n      <small\n        [id]=\"id + '-description'\"\n        class=\"form-text text-muted\"\n        [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n        [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n        [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n        [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n        {{ description !== undefined && description !== true ? description : (strengthMeterDescription | async) }}\n      </small>\n      <div class=\"password-meter progress rounded-0 position-absolute\">\n        <div class=\"row position-absolute w-100 m-0\">\n          <div class=\"col-3 border-start border-end border-white\"></div>\n          <div class=\"col-3 border-start border-end border-white\"></div>\n          <div class=\"col-3 border-start border-end border-white\"></div>\n          <div class=\"col-3 border-start border-end border-white\"></div>\n        </div>\n        <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n      </div>\n    </div>\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AsyncPipe } from '@angular/common';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-radio-button',\n  templateUrl: './radio-button.component.html',\n  styleUrls: ['./radio-button.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ReactiveFormsModule, AsyncPipe],\n})\nexport class ItRadioButtonComponent extends ItAbstractFormComponent<string | number | null | undefined> implements OnInit {\n  /**\n   * The radio value\n   */\n  @Input({ required: true }) value: string | number | undefined | null;\n\n  /**\n   * If show radio inline\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) inline?: boolean;\n\n  /**\n   * If is radio group\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) group?: boolean;\n\n  /**\n   * If is radio is checked\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) checked?: boolean;\n\n  /**\n   * Set the radio name manually.\n   * For example when the radio button name is duplicated inside page\n   * @default by default the radio name is calculated from form field name\n   */\n  @Input() forceRadioName?: string;\n\n  get name(): string {\n    if (this.forceRadioName) {\n      return this.forceRadioName;\n    }\n\n    let name = '';\n    if (this._ngControl) {\n      name = this._ngControl.name?.toString() || '';\n\n      // Retrieve parent name, prevent duplicate name inside FormArray or nested FormGroup\n      let control = this._ngControl.control?.parent;\n      while (control?.parent) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const controls: { [key: string]: any } = control?.parent?.controls || {};\n        const parentName = Object.keys(controls).find(name => control === controls[name]) || null;\n        if (!parentName) {\n          break;\n        }\n        name = `${parentName}.${name}`; // parent.0.radioName\n        control = control.parent;\n      }\n    }\n\n    return name;\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    if (this.control.value || !this.value || !this.checked) {\n      return;\n    }\n\n    this.writeValue(this.value);\n    return this.onChange(this.value);\n  }\n}\n","<ng-container>\n  <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n    <input\n      [id]=\"id\"\n      type=\"radio\"\n      [value]=\"value\"\n      [name]=\"name\"\n      [class.is-invalid]=\"isInvalid\"\n      [class.is-valid]=\"isValid\"\n      [formControl]=\"control\"\n      [attr.aria-describedby]=\"group ? id + '-help' : null\" />\n\n    <label class=\"form-check-label\" [for]=\"id\">\n      <div #customLabel>\n        <ng-content select=\"[label]\"></ng-content>\n      </div>\n      @if (!customLabel.hasChildNodes()) {\n        {{ label }}\n      }\n    </label>\n\n    @if (group) {\n      <small [id]=\"id + '-help'\" class=\"form-text\">\n        <ng-content></ng-content>\n      </small>\n    }\n\n    @if (isInvalid && group) {\n      <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n        <div #customError>\n          <ng-content select=\"[error]\"></ng-content>\n        </div>\n        @if (!customError.hasChildNodes()) {\n          {{ invalidMessage | async }}\n        }\n      </div>\n    }\n  </div>\n\n  @if (isInvalid && !group) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError>\n        <ng-content select=\"[error]\"></ng-content>\n      </div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</ng-container>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { distinctUntilChanged, startWith, Subscription } from 'rxjs';\n\n@Component({\n  selector: 'it-range',\n  imports: [ReactiveFormsModule],\n  templateUrl: './range.component.html',\n  styleUrls: ['./range.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItRangeComponent extends ItAbstractFormComponent<number | null | undefined> implements OnInit, OnChanges, OnDestroy {\n  /**\n   * The max value\n   */\n  @Input() max?: number;\n\n  /**\n   * The min value\n   */\n  @Input() min?: number;\n\n  /**\n   * The step value\n   */\n  @Input() step?: number | 'any';\n\n  /**\n   * The color on left of thumb [Require rightColor]\n   * @example '#0d6efd' or 'var(--bs-primary)'\n   * @default undefined ('var(--bs-gray-300)')\n   */\n  @Input() leftColor?: string;\n\n  /**\n   * The color on right of thumb [Require leftColor]\n   * @example '#0d6efd' or 'var(--bs-primary)'\n   * @default undefined ('var(--bs-gray-300)')\n   */\n  @Input() rightColor?: string;\n\n  @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLInputElement>;\n\n  private subscription?: Subscription;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.subscription = this.control.valueChanges\n      .pipe(distinctUntilChanged(), startWith(undefined))\n      .subscribe(() => this.updateSliderColor());\n  }\n\n  override ngOnChanges(changes: SimpleChanges) {\n    if (changes['leftColor']) {\n      this.slider.nativeElement.style.setProperty('--range-left-color', this.leftColor ?? null);\n    }\n    if (changes['rightColor']) {\n      this.slider.nativeElement.style.setProperty('--range-right-color', this.rightColor ?? null);\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n  override writeValue(value: number | null | undefined) {\n    super.writeValue(value);\n    this.updateSliderColor();\n  }\n\n  /**\n   * Update the percentage of slider color\n   * @private\n   */\n  private updateSliderColor(): void {\n    if (!this.leftColor || !this.rightColor) {\n      return;\n    }\n\n    const max = Number(this.slider.nativeElement.max) || 100;\n    const min = Number(this.slider.nativeElement.min) || 0;\n\n    // Calculate visible width\n    const diff = max - min;\n    const val = (((this.control.value ?? diff / 2) - min) * 100) / diff;\n    this.slider.nativeElement.style.setProperty('--range-percentage', `${val}%`);\n  }\n}\n","<div class=\"d-flex justify-content-between align-items-center\">\n  @if (label) {\n    <label [for]=\"id\" class=\"form-label\">{{ label }}</label>\n  }\n  <ng-content></ng-content>\n</div>\n\n<input\n  #slider\n  [id]=\"id\"\n  type=\"range\"\n  [min]=\"min\"\n  [max]=\"max\"\n  [step]=\"step\"\n  class=\"form-range\"\n  [class.double-color]=\"!!leftColor && !!rightColor\"\n  [formControl]=\"control\" />\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\n\n@Component({\n  selector: 'it-rating',\n  templateUrl: './rating.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, ReactiveFormsModule, ItIconComponent],\n})\nexport class ItRatingComponent extends ItAbstractFormComponent<number | null | undefined> implements OnInit, OnChanges {\n  /**\n   * The rating value\n   */\n  @Input() value: number | undefined;\n\n  /**\n   * Number of stars to show\n   * @default 5\n   */\n  @Input() starCount: number = 5;\n\n  protected stars: Array<number> = this.generateStars();\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    super.ngOnChanges(changes);\n\n    if (changes['starCount'] || !this.stars.length) {\n      this.stars = this.generateStars();\n    }\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    if (!this.control.value && !!this.value) {\n      this.writeValue(this.value);\n      this.onChange(this.value);\n    }\n  }\n\n  /**\n   * Generate the array of stars\n   * @private\n   */\n  private generateStars(): Array<number> {\n    return Array.from({ length: this.starCount }, (_, i) => i + 1).reverse();\n  }\n}\n","<fieldset class=\"rating\" [class.rating-label]=\"!!label\" [class.rating-read-only]=\"control.disabled\">\n  <legend>\n    <span>{{ label }}</span>\n    <span class=\"visually-hidden\">\n      {{ 'it.core.rating-star' | translate: { current: control.value || 0, total: stars.length } }}\n    </span>\n  </legend>\n\n  @for (starValue of stars; track starValue) {\n    <input\n      [id]=\"id + '-' + starValue\"\n      type=\"radio\"\n      [name]=\"id\"\n      [value]=\"starValue\"\n      [attr.aria-hidden]=\"control.disabled\"\n      [formControl]=\"control\" />\n    <label class=\"full\" [for]=\"id + '-' + starValue\">\n      <it-icon name=\"star-full\" size=\"sm\" aria-hidden=\"true\"></it-icon>\n      <span class=\"visually-hidden\">\n        {{ 'it.core.rate-star' | translate: { current: starValue, total: stars.length } }}\n      </span>\n    </label>\n  }\n</fieldset>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { SelectControlGroup, SelectControlOption } from '../../../interfaces/form';\nimport { AsyncPipe } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'it-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.scss'],\n  imports: [ReactiveFormsModule, AsyncPipe],\n})\nexport class ItSelectComponent extends ItAbstractFormComponent implements OnInit {\n  /**\n   * The select options\n   */\n  @Input() options: Array<SelectControlOption> | undefined;\n\n  /**\n   * The select group options\n   */\n  @Input() groups: Array<SelectControlGroup> | undefined;\n\n  /**\n   * The select description\n   */\n  @Input() description?: string;\n\n  /**\n   * If set, add a `disabled selected` option with value `null` and as text the value of the attribute\n   * @example 'Select an option'\n   */\n  @Input() defaultOption?: string;\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    if (this.control.value) {\n      return;\n    }\n    const selectedOption = this.options?.find(this.optionIsSelected);\n    if (selectedOption) {\n      this.writeValue(selectedOption.value);\n      if (this._ngControl?.control && selectedOption.value !== this._ngControl.control.value) {\n        this.onChange(selectedOption.value);\n      }\n      return;\n    }\n\n    const selectedGroupOption = this.groups?.flatMap(g => g.options).find(this.optionIsSelected);\n    if (selectedGroupOption) {\n      this.writeValue(selectedGroupOption.value);\n      if (this._ngControl?.control && selectedGroupOption.value !== this._ngControl.control.value) {\n        this.onChange(selectedGroupOption.value);\n      }\n    }\n  }\n\n  /**\n   * Check if the option is selected\n   * @param option the option\n   */\n  optionIsSelected(option: SelectControlOption): boolean {\n    if (option.selected === true) {\n      return true;\n    }\n\n    if (typeof option.selected === 'function') {\n      return option.selected(this.control.value);\n    }\n\n    return false;\n  }\n\n  /**\n   * Check if the option is disabled\n   * @param option the option\n   */\n  optionIsDisabled(option: SelectControlOption): boolean {\n    if (option.disabled === true) {\n      return true;\n    }\n\n    if (typeof option.disabled === 'function') {\n      return option.disabled(this.control.value);\n    }\n\n    return false;\n  }\n}\n","<div class=\"select-wrapper\">\n  @if (label) {\n    <label [for]=\"id\">{{ label }}</label>\n  }\n  <select\n    [id]=\"id\"\n    [formControl]=\"control\"\n    [class.is-invalid]=\"isInvalid\"\n    [class.is-valid]=\"isValid\"\n    (blur)=\"markAsTouched()\"\n    [attr.aria-describedby]=\"description ? id + '-description' : null\">\n    @if (defaultOption) {\n      <option [ngValue]=\"null\" disabled selected>\n        {{ defaultOption }}\n      </option>\n    }\n\n    <ng-content></ng-content>\n\n    @if (options) {\n      @for (option of options; track option.value) {\n        <option [disabled]=\"optionIsDisabled(option)\" [ngValue]=\"option.value\">\n          {{ option.text ?? option.value }}\n        </option>\n      }\n    }\n\n    @if (groups) {\n      @for (group of groups; track group) {\n        <optgroup [label]=\"group.label\">\n          @for (option of group.options; track option.value) {\n            <option [disabled]=\"optionIsDisabled(option)\" [ngValue]=\"option.value\">\n              {{ option.text ?? option.value }}\n            </option>\n          }\n        </optgroup>\n      }\n    }\n  </select>\n  @if (description) {\n    <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n  }\n\n  @if (isInvalid) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError>\n        <ng-content select=\"[error]\"></ng-content>\n      </div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { Observable } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'it-textarea',\n  templateUrl: './textarea.component.html',\n  styleUrls: ['./textarea.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ReactiveFormsModule, AsyncPipe],\n})\nexport class ItTextareaComponent extends ItAbstractFormComponent<string | null | undefined> {\n  /**\n   * Textarea Rows\n   * @default 3\n   */\n  @Input() rows?: number = 3;\n\n  /**\n   * The textarea placeholder\n   */\n  @Input() placeholder: string = '';\n\n  /**\n   * The input description\n   */\n  @Input() description: string | undefined;\n\n  /**\n   * To prevent modification of the contained value.\n   * - <b>plaintext</b>: Readonly field in the form stylized as plain text\n   * @default undefined\n   */\n  @Input() readonly: boolean | 'plaintext' | undefined;\n\n  /**\n   * Return the invalid message string from TranslateService\n   */\n  override get invalidMessage(): Observable<string> {\n    if (this.hasError('maxlength')) {\n      const error = this.getError('maxlength');\n      return this._translateService.get('it.errors.max-length-invalid', { max: error.requiredLength });\n    }\n    if (this.hasError('pattern')) {\n      const error = this.getError('pattern');\n      return this._translateService.get('it.errors.pattern-invalid', { pattern: error.requiredPattern });\n    }\n\n    return super.invalidMessage;\n  }\n\n  /**\n   * Check is readonly field\n   */\n  protected get isReadonly(): boolean {\n    return this.readonly === 'plaintext' || !!this.readonly;\n  }\n}\n","<div class=\"form-group\">\n  @if (label) {\n    <label [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{ label }}</label>\n  }\n  <textarea\n    [id]=\"id\"\n    [rows]=\"rows\"\n    [class.form-control]=\"readonly !== 'plaintext'\"\n    [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n    [class.is-invalid]=\"isInvalid\"\n    [class.is-valid]=\"isValid\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"control\"\n    [readonly]=\"isReadonly\"\n    (blur)=\"markAsTouched()\"></textarea>\n\n  @if (description) {\n    <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n  }\n  @if (isInvalid) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError><ng-content select=\"[error]\"></ng-content></div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</div>\n","import { Observable } from 'rxjs';\n\nexport class ItFileUtils {\n  /**\n   * Return the file size string\n   * @param file the file\n   * @param decimals decimal to show\n   */\n  public static getFileSizeString(file: File, decimals = 2): string {\n    const bytes = file.size;\n    if (!+bytes) {\n      return '0 Bytes';\n    }\n\n    const k = 1024;\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n  }\n\n  /**\n   * Convert a file to base64 string\n   * @param file the base64 string\n   */\n  public static fileToBase64(file: File): Observable<string> {\n    const reader = new FileReader();\n    reader.readAsDataURL(file);\n\n    return new Observable<string>(observer => {\n      reader.onload = e => {\n        const target = e.target;\n        if (!target?.result || target.result instanceof ArrayBuffer) {\n          return observer.error('Error on parse');\n        }\n        observer.next(target.result);\n        observer.complete();\n      };\n      reader.onerror = error => {\n        observer.error(error);\n      };\n    });\n  }\n\n  /**\n   * Convert base64 to Blob\n   * @param base64 the base64 string\n   * @param mimeType the <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\">MIME type</a> (example 'application/pdf')\n   */\n  public static base64ToBlob(base64: string, mimeType: string): Blob {\n    const byteString = window.atob(base64);\n    const arrayBuffer = new ArrayBuffer(byteString.length);\n    const int8Array = new Uint8Array(arrayBuffer);\n    for (let i = 0; i < byteString.length; i++) {\n      int8Array[i] = byteString.charCodeAt(i);\n    }\n    return new Blob([int8Array], { type: mimeType });\n  }\n\n  /**\n   * Convert base64 to File\n   * @param base64 the base64 string\n   * @param mimeType the <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\">MIME type</a> (example 'application/pdf')\n   * @param filename the file name\n   */\n  public static base64ToFile(base64: string, mimeType: string, filename: string): File {\n    const fileBlob = ItFileUtils.base64ToBlob(base64, mimeType);\n    return new File([fileBlob], filename, { type: mimeType });\n  }\n\n  /**\n   * Extract the MIME type from base64 string\n   * @param base64 the base64 string\n   */\n  public static getMimeTypeFromBase64(base64: string): string | undefined {\n    const mime = base64.match(/data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/);\n    return mime?.length ? mime[1] : undefined;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { ItFileUtils } from '../../../utils/file-utils';\nimport { ProgressDonut } from 'bootstrap-italia';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { NgOptimizedImage } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IT_ASSET_BASE_PATH } from '../../../interfaces/design-angular-kit-config';\n\n@Component({\n  selector: 'it-upload-drag-drop',\n  templateUrl: './upload-drag-drop.component.html',\n  exportAs: 'itUploadDragDrop',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent, TranslateModule, NgOptimizedImage],\n})\nexport class ItUploadDragDropComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * The accepted file type to upload <br>\n   * Possible values: <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\">MIME Types</a> separated by comma\n   * @example application/pdf,image/png\n   * @default *\n   */\n  @Input() accept: string = '*';\n\n  /**\n   * Fired when file start to upload\n   */\n  @Output() fileStartUpload = new EventEmitter<File>();\n\n  protected isDragover: boolean = false;\n  protected isLoading: boolean = false;\n  protected isSuccess: boolean = false;\n\n  protected donut?: ProgressDonut;\n\n  @ViewChild('donutElement') private donutElement?: ElementRef<HTMLDivElement>;\n\n  protected filename?: string;\n  protected extension?: string;\n  protected fileSize?: string;\n\n  /**\n   * The bootstrap-italia asset folder path\n   * @default ./bootstrap-italia\n   */\n  protected assetBasePath: string;\n\n  constructor() {\n    super();\n    this.assetBasePath = inject(IT_ASSET_BASE_PATH);\n  }\n\n  override ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    if (this.donutElement) {\n      this.donut = ProgressDonut.getOrCreateInstance(this.donutElement.nativeElement);\n    }\n  }\n\n  // Dragover listener\n  @HostListener('dragover', ['$event'])\n  public onDragOver(evt: DragEvent): void {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.isDragover = !this.isLoading;\n  }\n\n  // Dragleave listener\n  @HostListener('dragleave', ['$event'])\n  public onDragLeave(evt: DragEvent): void {\n    evt.preventDefault();\n    evt.stopPropagation();\n    this.isDragover = false;\n  }\n\n  // Drop leave listener\n  @HostListener('drop', ['$event'])\n  public onDrop(evt: DragEvent): void {\n    evt.preventDefault();\n    evt.stopPropagation();\n\n    this.isDragover = false;\n    const files = evt.dataTransfer?.files;\n    if (this.isLoading || !files?.length) {\n      return;\n    }\n    this.start(files[0]);\n  }\n\n  /**\n   * On load file from input\n   * @param event\n   */\n  onLoadFile(event: Event): void {\n    const files = (event.target as HTMLInputElement)?.files;\n    if (!files?.length) {\n      return;\n    }\n    this.start(files[0]);\n  }\n\n  /**\n   * Start the upload file\n   * @param file\n   */\n  public start(file: File): void {\n    if (this.accept !== '*' && !this.accept.includes(file.type)) {\n      return;\n    }\n\n    this.reset();\n    this.isLoading = true;\n\n    const splitName = file.name.split('.');\n    this.filename = splitName[0];\n    this.extension = splitName[1]?.toUpperCase();\n    this.fileSize = ItFileUtils.getFileSizeString(file);\n\n    this.fileStartUpload.emit(file);\n  }\n\n  /**\n   * Percentage of upload\n   * @param value the percentage [0 - 100]\n   */\n  public progress(value: number) {\n    if (!this.isLoading) {\n      return;\n    }\n\n    if (value >= 100) {\n      this.success();\n    } else {\n      this.donut?.set((value < 0 ? 0 : value) / 100);\n    }\n  }\n\n  /**\n   * Upload success\n   */\n  public success(): void {\n    this.isLoading = false;\n    this.isSuccess = true;\n    this._changeDetectorRef.detectChanges();\n  }\n\n  /**\n   * Reset file uploader\n   */\n  public reset(): void {\n    this.isLoading = false;\n    this.isSuccess = false;\n    this.filename = this.extension = this.fileSize = undefined;\n    this.donut?.set(0);\n    this._changeDetectorRef.detectChanges();\n  }\n}\n","<div class=\"upload-dragdrop\" [class.dragover]=\"isDragover\" [class.loading]=\"isLoading\" [class.success]=\"isSuccess\">\n  <div class=\"upload-dragdrop-image\">\n    <img\n      [ngSrc]=\"assetBasePath + '/dist/assets/upload-drag-drop-icon.svg'\"\n      alt=\"drag-drop-icon\"\n      aria-hidden=\"true\"\n      [width]=\"180\"\n      [height]=\"180\" />\n    <div class=\"upload-dragdrop-loading\">\n      <div class=\"progress-donut\" #donutElement></div>\n    </div>\n    <div class=\"upload-dragdrop-success\">\n      <it-icon name=\"check\"></it-icon>\n    </div>\n  </div>\n  <div class=\"upload-dragdrop-text\">\n    <p class=\"upload-dragdrop-weight\">\n      <it-icon name=\"file\" size=\"xs\"></it-icon>\n      {{ extension }} ({{ fileSize }})\n    </p>\n    <h5>{{ filename || ('it.form.upload-drag-file' | translate) }}</h5>\n    @if (isLoading) {\n      <p>{{ 'it.form.upload-loading' | translate }}</p>\n    }\n    @if (isSuccess) {\n      <p>{{ 'it.form.upload-complete' | translate }}</p>\n    }\n    @if (!isLoading && !isSuccess) {\n      <p>\n        {{ 'it.form.upload-or' | translate }}\n        <input type=\"file\" [id]=\"id\" class=\"upload-dragdrop-input\" [accept]=\"accept\" (change)=\"onLoadFile($event)\" />\n        <label [for]=\"id\">{{ 'it.form.upload-select-device' | translate }}</label>\n      </p>\n    }\n  </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { forkJoin, take, tap } from 'rxjs';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { UploadFileListItem } from '../../../interfaces/form';\nimport { inputToBoolean } from '../../../utils/coercion';\nimport { ItFileUtils } from '../../../utils/file-utils';\nimport { ItProgressBarComponent } from '../../core/progress-bar/progress-bar.component';\nimport { ItTooltipDirective } from '../../core/tooltip/tooltip.directive';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\n\n@Component({\n  selector: 'it-upload-file-list',\n  templateUrl: './upload-file-list.component.html',\n  imports: [ItIconComponent, TranslateModule, ItTooltipDirective, ItProgressBarComponent],\n})\nexport class ItUploadFileListComponent extends ItAbstractComponent implements OnInit, OnChanges {\n  /**\n   * The list of files to show in list\n   */\n  @Input({ required: true }) fileList!: Array<UploadFileListItem>;\n\n  /**\n   * The accepted file type to upload <br>\n   * Possible values: <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\">MIME Types</a> separated by comma\n   * @example application/pdf,image/png\n   * @default *\n   */\n  @Input() accept: string = '*';\n\n  /**\n   * A label for the upload button\n   */\n  @Input({ required: false }) label?: string;\n\n  /**\n   * If upload multiple files\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) multiple: boolean = true;\n\n  /**\n   * If is file list image\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) images?: boolean;\n\n  /**\n   * Hide the load button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) hideLoadButton?: boolean;\n\n  /**\n   * Fired when upload new files\n   */\n  @Output() uploadFiles: EventEmitter<FileList> = new EventEmitter<FileList>();\n\n  /**\n   * Fired on delete item button click\n   */\n  @Output() deleteItem: EventEmitter<UploadFileListItem> = new EventEmitter<UploadFileListItem>();\n\n  /**\n   * Cache to preview image\n   */\n  previewImages: Map<number, string> = new Map<number, string>();\n\n  ngOnInit(): void {\n    if (!!this.images && this.accept === '*') {\n      this.accept = 'image/*';\n    }\n  }\n\n  override ngOnChanges(changes: SimpleChanges): void {\n    if (changes['fileList'] && !!this.images) {\n      const images$ = this.fileList.map(item =>\n        ItFileUtils.fileToBase64(item.file).pipe(\n          take(1),\n          tap(base64 => this.previewImages.set(item.id, base64))\n        )\n      );\n      forkJoin(images$).subscribe(() => {\n        this._changeDetectorRef.detectChanges();\n        super.ngOnChanges(changes);\n      });\n    } else {\n      super.ngOnChanges(changes);\n    }\n  }\n\n  /**\n   * On load file from input\n   * @param event\n   */\n  onLoadFiles(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    const files = input?.files;\n    if (!files?.length) {\n      return;\n    }\n\n    const newFiles = Array.from(files).filter(\n      file =>\n        !this.fileList.some(item => {\n          return item.file.name === file.name && item.file.size === file.size && item.file.type === file.type;\n        })\n    );\n\n    const fileList = new DataTransfer();\n    newFiles.forEach(file => fileList.items.add(file));\n\n    this.uploadFiles.emit(fileList.files);\n    input.value = '';\n  }\n\n  /**\n   * Get the file size string\n   * @param file\n   */\n  getFileSize(file: File): string {\n    return ItFileUtils.getFileSizeString(file);\n  }\n}\n","@if (!hideLoadButton) {\n  <input type=\"file\" [id]=\"id\" class=\"upload\" [accept]=\"accept\" [multiple]=\"multiple\" (change)=\"onLoadFiles($event)\" />\n  <label [for]=\"id\">\n    @if (label) {\n      <it-icon name=\"upload\" size=\"sm\"></it-icon>\n      <span>{{ label }}</span>\n    } @else {\n      <it-icon name=\"upload\" size=\"sm\"></it-icon>\n      <span>{{ 'it.form.upload' | translate }}</span>\n    }\n  </label>\n}\n\n@if (fileList.length) {\n  <ul class=\"upload-file-list\" [class.upload-file-list-image]=\"images\">\n    @for (item of fileList; track item.id) {\n      <li\n        class=\"upload-file\"\n        [class.error]=\"item.error\"\n        [class.uploading]=\"!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100\"\n        [class.success]=\"!item.error && (!item.progress || item.progress >= 100)\">\n        @if (images) {\n          <div class=\"upload-image\">\n            <img [attr.src]=\"previewImages.get(item.id)\" [alt]=\"item.file.name\" />\n          </div>\n        } @else {\n          <it-icon name=\"file\" size=\"sm\" [color]=\"!item.error ? (item.progress ? 'secondary' : 'primary') : 'danger'\"></it-icon>\n        }\n        <p [itTooltip]=\"item.tooltip\">\n          <span class=\"visually-hidden\">{{ 'it.form.uploaded-file' | translate: { name: item.file.name } }}</span>\n          {{ item.file.name }} <span class=\"upload-file-weight\">{{ getFileSize(item.file) }}</span>\n        </p>\n        @if (item.removable && (!item.progress || item.progress < 100)) {\n          <button type=\"button\" (click)=\"deleteItem.emit(item)\">\n            <span class=\"visually-hidden\">{{ 'it.form.delete-file' | translate: { name: item.file.name } }}</span>\n            <it-icon name=\"close\"></it-icon>\n          </button>\n        }\n        @if ((!item.removable && !item.progress) || (item.progress !== undefined && item.progress >= 100)) {\n          <button type=\"button\" disabled>\n            <span class=\"visually-hidden\">{{ 'it.form.upload-complete' | translate }}</span>\n            <it-icon name=\"check\"></it-icon>\n          </button>\n        }\n        @if (!item.error && item.progress !== undefined && item.progress > 0 && item.progress < 100) {\n          <it-progress-bar [value]=\"item.progress!\"></it-progress-bar>\n        }\n      </li>\n    }\n  </ul>\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Allows you to highlight text with the <mark> tag\n */\n@Pipe({\n  standalone: true,\n  name: 'itMarkMatchingText',\n})\nexport class ItMarkMatchingTextPipe implements PipeTransform {\n  private readonly domSanitizer = inject(DomSanitizer);\n\n  /**\n   * Allows you to highlight text with the <mark> tag\n   * @param allString the full text to search from\n   * @param searchString the string to search\n   */\n  transform(allString: string | undefined, searchString: string | number | null | undefined): SafeHtml | string | undefined {\n    if (!searchString) {\n      return allString;\n    } else if (!allString) {\n      return '';\n    }\n\n    if (typeof searchString === 'number') {\n      searchString = searchString.toString();\n    }\n\n    // Check if search string is a substring of pivot string (no case-sensitive)\n    const idxOfMatchString = allString.toLowerCase().indexOf(searchString.toLowerCase());\n    if (idxOfMatchString !== -1) {\n      // retrieve the exactly substring\n      const matchingString = allString.substring(idxOfMatchString, idxOfMatchString + searchString.length);\n      // Replace original string marking as <strong> (bold) the matchinng substring\n      const regEx = new RegExp('(' + matchingString + ')', 'gi');\n      const res = allString.replace(regEx, '<mark>$1</mark>');\n      return this.domSanitizer.bypassSecurityTrustHtml(res);\n    }\n\n    return allString;\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, map, Observable, of, switchMap } from 'rxjs';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { ItMarkMatchingTextPipe } from '../../../pipes/mark-matching-text.pipe';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { SearchItem } from '../../../interfaces/form';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  standalone: true,\n  selector: 'it-search',\n  templateUrl: './search.component.html',\n  imports: [AsyncPipe, ItIconComponent, ItMarkMatchingTextPipe, NgTemplateOutlet, ReactiveFormsModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItSearchComponent extends ItAbstractFormComponent<string | null | undefined> implements OnInit {\n  /**\n   * Indicates the list of searchable elements on which to base the input search system\n   * If you need to retrieve items via API, can pass a function of Observable\n   * @default undefined\n   */\n  @Input({ required: true }) searchData!: Array<SearchItem> | ((search?: string | null) => Observable<Array<SearchItem>>);\n\n  /**\n   * To get a large version of Search\n   */\n  @Input({ transform: inputToBoolean }) big?: boolean;\n\n  /**\n   * Time span [ms] has passed without another source emission, to delay data filtering.\n   * Useful when the user is typing multiple letters\n   * @default 300 [ms]\n   */\n  @Input() debounceTime = 300;\n\n  /**\n   * The input placeholder\n   */\n  @Input() placeholder = '';\n\n  /**\n   * The input label even get labelWaria icon\n   */\n  @Input() labelWaria: string | undefined = undefined;\n\n  /**\n   * Show the label\n   */\n  @Input({ transform: inputToBoolean }) forceShowLabel: boolean = true;\n\n  /**\n   * Fired when the Search Item has been selected\n   */\n  @Output() searchSelectedEvent: EventEmitter<SearchItem> = new EventEmitter();\n\n  protected showAutocompletion = false;\n\n  /** Observable da cui vengono emessi i risultati dell'auto completamento */\n  protected searchResults$: Observable<{\n    searchedValue: string | undefined | null;\n    relatedEntries: Array<SearchItem>;\n  }> = new Observable();\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.searchResults$ = this.getSearchResults$();\n  }\n\n  /**\n   * Create the search list\n   */\n  private getSearchResults$(): Observable<{\n    searchedValue: string | null | undefined;\n    relatedEntries: Array<SearchItem>;\n  }> {\n    return this.control.valueChanges.pipe(\n      debounceTime(this.debounceTime), // Delay filter data after time span has passed without another source emission, useful when the user is typing multiple letters\n      distinctUntilChanged(), // Only if searchValue is distinct in comparison to the last value\n      switchMap(searchedValue => {\n        if (!this.searchData) {\n          return of({\n            searchedValue,\n            relatedEntries: <Array<SearchItem>>[],\n          });\n        }\n\n        const autoCompleteData$ = Array.isArray(this.searchData) ? of(this.searchData) : this.searchData(searchedValue);\n        return autoCompleteData$.pipe(\n          map(searchData => {\n            if (!searchedValue || typeof searchedValue === 'number') {\n              return { searchedValue, relatedEntries: [] };\n            }\n\n            const lowercaseValue = searchedValue.toLowerCase();\n            const relatedEntries = searchData.filter(item => item.value?.toLowerCase().includes(lowercaseValue));\n\n            return { searchedValue, relatedEntries };\n          })\n        );\n      })\n    );\n  }\n\n  protected onEntryClick(entry: SearchItem, event: Event) {\n    // Se non è stato definito un link associato all'elemento dell'search, probabilmente il desiderata\n    // non è effettuare la navigazione al default '#', pertanto in tal caso meglio annullare la navigazione.\n    if (!entry.link) {\n      event.preventDefault();\n    }\n\n    this.searchSelectedEvent.next(entry);\n    this.control.setValue(entry.value);\n    this.showAutocompletion = false;\n  }\n\n  protected searchItemTrackByValueFn(index: number, item: SearchItem) {\n    return item.value;\n  }\n\n  protected onKeyDown() {\n    this.showAutocompletion = true;\n  }\n}\n","<div class=\"form-group\" [class.autocomplete-wrapper-big]=\"big\">\n  @if (label) {\n    <label [for]=\"id\" [class.active]=\"true\">\n      {{ label }}\n    </label>\n  }\n\n  <input\n    [id]=\"id\"\n    type=\"search\"\n    class=\"autocomplete form-control\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"control\"\n    [class.is-invalid]=\"isInvalid\"\n    [class.is-valid]=\"isValid\"\n    (blur)=\"markAsTouched()\"\n    (keydown)=\"onKeyDown()\" />\n\n  <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n    <it-icon [labelWaria]=\"labelWaria\" name=\"search\" size=\"sm\"></it-icon>\n  </span>\n\n  @if (searchResults$ | async; as autocomplete) {\n    <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n      @for (entry of autocomplete.relatedEntries; track searchItemTrackByValueFn($index, entry)) {\n        <li>\n          <a [href]=\"entry.link\" (click)=\"onEntryClick(entry, $event)\">\n            @if (entry.avatarSrcPath) {\n              <div class=\"avatar size-sm\">\n                <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\" />\n              </div>\n            }\n            @if (entry.icon) {\n              <it-icon [name]=\"entry.icon\" size=\"sm\"></it-icon>\n            }\n            <span class=\"autocomplete-list-text\">\n              <span [innerHTML]=\"entry.value | itMarkMatchingText: autocomplete.searchedValue\"></span>\n              @if (entry.label) {\n                <em>{{ entry.label }}</em>\n              }\n            </span>\n          </a>\n        </li>\n      }\n    </ul>\n  }\n\n  @if (isInvalid) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError>\n        <ng-content select=\"[error]\"></ng-content>\n      </div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</div>\n","import { TransferItem, TransferItemSelection } from '../transfer.model';\nimport { SelectionState, State } from './transfer.state';\n\n//#region private utility functions\nconst generateSelectAll = <T>(checked: boolean, items: TransferItem<T>[]) => {\n  const selected = new Set<TransferItem<T>>();\n  if (checked) {\n    items.forEach(item => selected.add(item));\n  }\n\n  return selected;\n};\n\nconst updateSelected = <T>(set: Set<TransferItem<T>>, item: TransferItem<T>) => {\n  if (set.has(item)) {\n    set.delete(item);\n  } else {\n    set.add(item);\n  }\n\n  return set;\n};\n//#endregion\n\n//#region reducers\nconst init = <T>(state: State<T>, { source, target }: SelectionState<T>) => ({\n  ...state,\n  initialItems: {\n    source: [...source],\n    target: [...target],\n  },\n  current: {\n    source: [...source],\n    target: [...target],\n  },\n});\n\nconst transfer = <T>(state: State<T>) => {\n  return {\n    ...state,\n    current: {\n      ...state.current,\n      source: state.current.source.filter(i => !state.selections.source.has(i)),\n      target: Array.from(new Set([...state.current.target, ...Array.from(state.selections.source)] as TransferItemSelection<T>)),\n    },\n    selections: {\n      ...state.selections,\n      source: new Set<TransferItem<T>>(),\n    },\n    operationsEnabled: {\n      ...state.operationsEnabled,\n      transfer: false,\n      reset: true,\n    },\n  } satisfies State<T>;\n};\n\nconst backtransfer = <T>(state: State<T>) => {\n  return {\n    ...state,\n    current: {\n      ...state.current,\n      target: state.current.target.filter(i => !state.selections.target.has(i)),\n      source: Array.from(new Set([...state.current.source, ...Array.from(state.selections.target)] as TransferItemSelection<T>)),\n    },\n    selections: {\n      ...state.selections,\n      target: new Set<TransferItem<T>>(),\n    },\n    operationsEnabled: {\n      ...state.operationsEnabled,\n      backtransfer: false,\n      reset: true,\n    },\n  } satisfies State<T>;\n};\n\nconst reset = <T>(state: State<T>) => {\n  return {\n    ...state,\n    current: {\n      source: [...state.initialItems.source],\n      target: [...state.initialItems.target],\n    },\n    operationsEnabled: {\n      ...state.operationsEnabled,\n      reset: false,\n    },\n  } satisfies State<T>;\n};\n\nconst selectAllSource = <T>(state: State<T>, { checked }: { checked: boolean }) => {\n  const items = state.current.source;\n  const selected = generateSelectAll(checked, items);\n  const transfer = Boolean(selected.size);\n\n  return {\n    ...state,\n    selections: {\n      ...state.selections,\n      source: selected,\n    },\n    operationsEnabled: {\n      ...state.operationsEnabled,\n      transfer,\n    },\n  } satisfies State<T>;\n};\n\nconst selectAllTarget = <T>(state: State<T>, { checked }: { checked: boolean }) => {\n  const items = state.current.target;\n  const selected = generateSelectAll(checked, items);\n  const backtransfer = Boolean(selected.size);\n\n  return {\n    ...state,\n    selections: {\n      ...state.selections,\n      target: selected,\n    },\n    operationsEnabled: {\n      ...state.operationsEnabled,\n      backtransfer,\n    },\n  } satisfies State<T>;\n};\n\nconst selectionItemSource = <T>(previousState: State<T>, { item }: { item: TransferItem<T> }) => {\n  const selected = updateSelected(previousState.selections.source, item);\n  const selectedItems = Array.from(selected);\n  const transfer = Boolean(selectedItems.length);\n  const source = new Set([...selectedItems]);\n\n  const state = {\n    ...previousState,\n    selections: {\n      ...previousState.selections,\n      source,\n    },\n    operationsEnabled: {\n      ...previousState.operationsEnabled,\n      transfer,\n    },\n  } satisfies State<T>;\n\n  return state;\n};\n\nconst selectionItemTarget = <T>(previousState: State<T>, { item }: { item: TransferItem<T> }) => {\n  const selected = updateSelected(previousState.selections.target, item);\n  const selectedItems = Array.from(selected);\n  const backtransfer = Boolean(selectedItems.length);\n  const target = new Set([...selectedItems]);\n\n  const state = {\n    ...previousState,\n    selections: {\n      ...previousState.selections,\n      target,\n    },\n    operationsEnabled: {\n      ...previousState.operationsEnabled,\n      backtransfer,\n    },\n  } satisfies State<T>;\n\n  return state;\n};\n//#endregion reducers\n\n//#region public reducers\nconst initialStateFn = <T>() => ({\n  initialItems: {\n    source: [],\n    target: [],\n  },\n  current: {\n    source: [],\n    target: [],\n  },\n  selections: {\n    source: new Set<TransferItem<T>>(),\n    target: new Set<TransferItem<T>>(),\n  },\n  operationsEnabled: {\n    transfer: false,\n    backtransfer: false,\n    reset: false,\n  },\n});\nconst initFn =\n  <T>(payload: SelectionState<T>) =>\n  (state: State<T>) =>\n    init(state, payload);\n\nconst transferFn =\n  <T>() =>\n  (state: State<T>) =>\n    transfer(state);\n\nconst backtransferFn =\n  <T>() =>\n  (state: State<T>) =>\n    backtransfer(state);\n\nconst resetFn =\n  <T>() =>\n  (state: State<T>) =>\n    reset(state);\n\nconst selectAllSourceFn =\n  <T>({ checked }: { checked: boolean }) =>\n  (state: State<T>) =>\n    selectAllSource(state, { checked }) as State<T>;\n\nconst selectAllTargetFn =\n  <T>({ checked }: { checked: boolean }) =>\n  (state: State<T>) =>\n    selectAllTarget(state, { checked }) as State<T>;\n\nconst selectionItemSourceFn =\n  <T>({ item }: { item: TransferItem<T> }) =>\n  (state: State<T>) =>\n    selectionItemSource(state, { item }) as State<T>;\n\nconst selectionItemTargetFn =\n  <T>({ item }: { item: TransferItem<T> }) =>\n  (state: State<T>) =>\n    selectionItemTarget(state, { item }) as State<T>;\n//#endregion\n\nexport default {\n  initialStateFn,\n  initFn,\n  transferFn,\n  backtransferFn,\n  resetFn,\n  selectAllSourceFn,\n  selectAllTargetFn,\n  selectionItemSourceFn,\n  selectionItemTargetFn,\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, map, of } from 'rxjs';\nimport { SourceType, TransferItem } from '../transfer.model';\nimport reducers from './transfer.reducers';\nimport { SelectionState, State } from './transfer.state';\n\n@Injectable()\nexport class TransferStore<T> {\n  private readonly _state = new BehaviorSubject<State<T>>(reducers.initialStateFn());\n\n  private readonly sourceItems = this._state.pipe(map(state => state.current.source));\n\n  private readonly targetItems = this._state.pipe(map(state => state.current.target));\n\n  readonly valueChanged = this._state.pipe(\n    map(state => state.current.target),\n    distinctUntilChanged()\n  );\n\n  readonly selectItems = (sourceType: SourceType) => {\n    if (sourceType === 'source') {\n      return this.sourceItems;\n    }\n\n    if (sourceType === 'target') {\n      return this.targetItems;\n    }\n\n    return of<TransferItem<T>[]>([]);\n  };\n\n  readonly selectSelectedItems = (sourceType: SourceType) => {\n    if (sourceType === 'source') {\n      return this._state.pipe(map(state => state.selections.source));\n    }\n\n    if (sourceType === 'target') {\n      return this._state.pipe(map(state => state.selections.target));\n    }\n\n    return of(new Set<TransferItem<T>>());\n  };\n\n  readonly transferEnabled = this._state.pipe(map(state => state.operationsEnabled.transfer));\n\n  readonly backtransferEnabled = this._state.pipe(map(state => state.operationsEnabled.backtransfer));\n\n  readonly resetEnabled = this._state.pipe(map(state => state.operationsEnabled.reset));\n\n  init({ source, target }: SelectionState<T>) {\n    this.updateState(reducers.initFn({ source, target }));\n  }\n\n  transfer() {\n    this.updateState(reducers.transferFn());\n  }\n  backtransfer() {\n    this.updateState(reducers.backtransferFn());\n  }\n\n  reset() {\n    this.updateState(reducers.resetFn());\n  }\n\n  checkboxSelection(item: TransferItem<T>, sourceType: SourceType) {\n    if (sourceType === 'source') {\n      this.updateState(reducers.selectionItemSourceFn({ item }));\n    }\n\n    if (sourceType === 'target') {\n      this.updateState(reducers.selectionItemTargetFn({ item }));\n    }\n  }\n\n  selectAllSelection(checked: boolean, sourceType: SourceType) {\n    if (sourceType === 'source') {\n      this.updateState(reducers.selectAllSourceFn({ checked }));\n    }\n\n    if (sourceType === 'target') {\n      this.updateState(reducers.selectAllTargetFn({ checked }));\n    }\n  }\n\n  private updateState(reducerFn: (state: State<T>) => State<T>) {\n    this._state.next(reducerFn(this._state.value));\n  }\n}\n","import { AsyncPipe, TitleCasePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, HostAttributeToken, inject, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { combineLatest, distinctUntilChanged, map, shareReplay, skip, startWith, tap } from 'rxjs';\nimport { ItAbstractComponent } from '../../../../abstracts/abstract.component';\nimport { TransferStore } from '../store/transfer.store';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SourceType, TransferItem } from '../transfer.model';\n\ninterface SelectableTransferItem<T> extends TransferItem<T> {\n  selected: boolean;\n}\n\n@Component({\n  selector: 'it-transfer-list',\n  imports: [TranslateModule, AsyncPipe, TitleCasePipe],\n  templateUrl: './transfer-list.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItTransferListComponent<T> extends ItAbstractComponent {\n  private readonly store = inject<TransferStore<T>>(TransferStore);\n\n  /**\n   * Widget title\n   */\n  readonly title = inject(new HostAttributeToken('title'), { optional: true });\n\n  readonly sourceType = inject(new HostAttributeToken('sourceType'), { optional: true }) as SourceType;\n\n  private readonly items = this.store.selectItems(this.sourceType).pipe(distinctUntilChanged(), shareReplay());\n  private readonly selected = this.store.selectSelectedItems(this.sourceType).pipe(distinctUntilChanged(), shareReplay());\n\n  readonly numberOfItems$ = this.items.pipe(\n    map(items => ({ length: items.length })),\n    startWith({ length: 0 })\n  );\n  readonly selectAllDisabled = this.items.pipe(map(items => items.length === 0));\n  /**\n   * Items of the list\n   * @default []\n   */\n  readonly items$ = combineLatest([this.items, this.selected]).pipe(\n    map(([items, selected]) =>\n      items.map(item => {\n        (item as SelectableTransferItem<T>).selected = selected.has(item);\n        return item as SelectableTransferItem<T>;\n      })\n    )\n  );\n\n  @ViewChild('selectAllCheckbox')\n  selectAllCheckboxRef!: ElementRef<HTMLInputElement>;\n\n  readonly instanceId = this.getInstanceId();\n\n  constructor() {\n    super();\n    this.onItemsUpdate();\n  }\n  /**\n   * Checkbox selection click handler\n   */\n  checkboxSelectionHandler(item: TransferItem<T>) {\n    this.store.checkboxSelection(item, this.sourceType);\n  }\n  /**\n   * Checkbox select all selection handler\n   */\n  checkboxSelectAllHandler(event: Event) {\n    const checked = ((event as PointerEvent).target as HTMLInputElement).checked;\n    this.store.selectAllSelection(checked, this.sourceType);\n  }\n\n  /**\n   * Items update subscription\n   */\n  private onItemsUpdate() {\n    this.items\n      .pipe(\n        takeUntilDestroyed(),\n        skip(1),\n        tap(() => {\n          if (this.selectAllCheckboxRef) {\n            this.selectAllCheckboxRef.nativeElement.checked = false;\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  private getInstanceId() {\n    return Math.floor(Math.random() * 100000000).toString();\n  }\n}\n","<div class=\"it-transfer-wrapper source\">\n  <div class=\"transfer-header\">\n    <div class=\"form-check\">\n      <input\n        #selectAllCheckbox\n        type=\"checkbox\"\n        id=\"{{ instanceId }}checkbox{{ title }}\"\n        [disabled]=\"selectAllDisabled | async\"\n        (click)=\"checkboxSelectAllHandler($event)\" />\n      <label for=\"{{ instanceId }}checkbox{{ title }}\">\n        <span>\n          @if (numberOfItems$ | async; as numberOfItems) {\n            <span class=\"num\"> {{ numberOfItems.length }}</span>\n            <span> {{ (numberOfItems.length === 1 ? 'it.transfer.item' : 'it.transfer.items') | translate }}</span>\n          }\n        </span>\n        <span class=\"descr\">{{ title | titlecase }}</span>\n      </label>\n    </div>\n    <!-- form check -->\n  </div>\n  <!-- transfer-header -->\n  <div class=\"transfer-scroll\">\n    <div class=\"transfer-group\">\n      @for (item of items$ | async; track item.value) {\n        <div class=\"form-check\">\n          <input\n            type=\"checkbox\"\n            id=\"{{ instanceId }}-{{ item.value }}\"\n            [checked]=\"item.selected\"\n            (click)=\"checkboxSelectionHandler(item)\" />\n          <label for=\"{{ instanceId }}-{{ item.value }}\">\n            <span>\n              <span>{{ item.text }}</span>\n            </span>\n          </label>\n        </div>\n      }\n    </div>\n  </div>\n</div>\n<!-- it-transfer-wrapper -->\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControlName, NgControl, NgModel, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { tap } from 'rxjs';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { TransferStore } from './store/transfer.store';\nimport { ItTransferListComponent } from './transfer-list/transfer-list.component';\nimport { TransferItem } from './transfer.model';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\n\n/**\n * Transfer\n * @description Component that allows the creation of checkbox lists.\n */\n@Component({\n  selector: 'it-transfer',\n  templateUrl: './transfer.component.html',\n  imports: [TranslateModule, ItIconComponent, ItTransferListComponent, NgClass, AsyncPipe, ReactiveFormsModule],\n  providers: [TransferStore],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItTransferComponent<T = any> extends ItAbstractFormComponent<T> implements OnInit {\n  protected override _ngControl = inject(NgControl, { self: true, optional: true });\n  protected override _translateService = inject(TranslateService);\n  private readonly store = inject<TransferStore<T>>(TransferStore);\n\n  /**\n   * The select options (left side)\n   */\n  @Input() options = [];\n  /**\n   * The selected options (right side)\n   */\n  @Input() selected = [];\n  /**\n   * Fired when there is a transfer, a backtransfer or a reset event\n   */\n  @Output() readonly transferChanges = new EventEmitter<TransferItem<T>[]>();\n\n  /**\n   * Enable transfer button\n   * @default false\n   */\n  readonly transferEnabled = this.store.transferEnabled;\n  /**\n   * Enable backtransfer button\n   * @default false\n   */\n  readonly backtransferEnabled = this.store.backtransferEnabled;\n  /**\n   * Enable reset button\n   * @default false\n   */\n  readonly resetEnabled = this.store.resetEnabled;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.storeInit();\n    this.onStoreValueChanged();\n  }\n\n  /**\n   * Transfer button click handler\n   */\n  transferClickHandler(event: MouseEvent) {\n    this.buttonEventHandler(event, () => this.store.transfer());\n  }\n  /**\n   * Transfer button keypress handler\n   */\n  transferKeyPressHandler(event: KeyboardEvent) {\n    this.buttonEventHandler(event, () => this.store.transfer());\n  }\n  /**\n   * Backtransfer button click handler\n   */\n  backtransferClickHandler(event: MouseEvent) {\n    this.buttonEventHandler(event, () => this.store.backtransfer());\n  }\n  /**\n   * Backtransfer button keypress handler\n   */\n  backtransferKeyPressHandler(event: KeyboardEvent) {\n    this.buttonEventHandler(event, () => this.store.backtransfer());\n  }\n  /**\n   * Reset button click handler\n   */\n  resetClickHandler(event: MouseEvent) {\n    this.buttonEventHandler(event, () => this.store.reset());\n  }\n  /**\n   * Reset button keypress handler\n   */\n  resetKeyPressHandler(event: KeyboardEvent) {\n    this.buttonEventHandler(event, () => this.store.reset());\n  }\n\n  private buttonEventHandler(event: Event, updateStoreCb: () => void) {\n    event.preventDefault();\n    updateStoreCb();\n  }\n\n  private storeInit() {\n    let target = [];\n    const ngControl = this._ngControl;\n    const isNgControlDefined = Boolean(this._ngControl);\n\n    // if ngControl is defined, take values from it. Input() target will be ignored\n    if (isNgControlDefined) {\n      console.debug('ngControl instanceof NgModel:', ngControl instanceof NgModel);\n      console.debug('ngControl instanceof FormControlName:', ngControl instanceof FormControlName);\n\n      // if ngControl is an ngModel (template-driven form use case), take values from it\n      if (ngControl instanceof NgModel) {\n        console.debug('ngControl instanceof NgModel');\n        const model = (ngControl as NgModel).model;\n        target = Array.isArray(model) ? model : [];\n      }\n\n      // if ngControl is an FormControlName (reactive form use case), take values from it\n      if (ngControl instanceof FormControlName) {\n        console.debug('ngControl instanceof FormControlName');\n        const model = (ngControl as FormControlName).control.value;\n        target = Array.isArray(model) ? model : [];\n      }\n\n      console.debug('ngControl is defined. Input() target will be ignored');\n    } else if (this.selected && Array.isArray(this.selected)) {\n      target = [...this.selected];\n    }\n\n    console.debug('target:', this.selected, 'formControl:', this.control.value, 'ngModel:', this._ngControl);\n    this.store.init({ source: [...this.options], target });\n  }\n\n  private onStoreValueChanged() {\n    this.store.valueChanged\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        tap(value => this.writeValue(value as T)),\n        tap(value => this.onChange(value as T)),\n        tap(value => this.transferChanges.emit(value))\n      )\n      .subscribe();\n  }\n}\n","<div>\n  @if (label) {\n    <label [for]=\"id\" [class.active]=\"!!control.value\">{{ label }}</label>\n  }\n  <div class=\"row\">\n    <div class=\"col-xs-12 col-md-5\">\n      <it-transfer-list sourceType=\"source\" [title]=\"'it.transfer.source' | translate\"></it-transfer-list>\n    </div>\n    <!-- col -->\n    <div class=\"col-xs-12 col-md-2\">\n      <!-- transfer buttons-->\n      <div class=\"it-transfer-buttons\">\n        <a\n          class=\"transfer\"\n          role=\"button\"\n          href=\"#\"\n          [ngClass]=\"{ active: transferEnabled | async }\"\n          (click)=\"transferClickHandler($event)\"\n          (keypress)=\"transferKeyPressHandler($event)\"\n          [attr.aria-label]=\"'it.transfer.aria-label-move-forward' | translate\">\n          <it-icon name=\"arrow-right\"></it-icon>\n        </a>\n        <span class=\"visually-hidden\">{{ 'it.transfer.label-move-forward' | translate }}</span>\n        <a\n          class=\"backtransfer\"\n          role=\"button\"\n          href=\"#\"\n          [ngClass]=\"{ active: backtransferEnabled | async }\"\n          (click)=\"backtransferClickHandler($event)\"\n          (keypress)=\"backtransferKeyPressHandler($event)\"\n          [attr.aria-label]=\"'it.transfer.aria-label-move-backward' | translate\">\n          <it-icon name=\"arrow-left\"></it-icon>\n        </a>\n        <span class=\"visually-hidden\">{{ 'it.transfer.label-move-backward' | translate }}</span>\n        <a\n          class=\"reset\"\n          role=\"button\"\n          href=\"#\"\n          [ngClass]=\"{ active: resetEnabled | async }\"\n          (click)=\"resetClickHandler($event)\"\n          (keypress)=\"resetKeyPressHandler($event)\"\n          [attr.aria-label]=\"'it.transfer.aria-label-reset' | translate\">\n          <it-icon name=\"restore\"></it-icon>\n        </a>\n        <span class=\"visually-hidden\">{{ 'it.transfer.label-reset' | translate }}</span>\n      </div>\n    </div>\n    <div class=\"col-xs-12 col-md-5\">\n      <it-transfer-list sourceType=\"target\" [title]=\"'it.transfer.target' | translate\"></it-transfer-list>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';\nimport { AsyncPipe } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SelectAutocomplete } from 'bootstrap-italia';\n\ntype functionSource = (query: string, populateResults: (results: string[]) => void) => void;\n\n@Component({\n  selector: 'it-autocomplete',\n  templateUrl: './autocomplete.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ReactiveFormsModule, AsyncPipe],\n})\nexport class ItAutocompleteComponent extends ItAbstractFormComponent<string | null | undefined> {\n  /**\n   * Autocomplete elements.\n   * @default []\n   */\n  @Input() source: string[] | functionSource = [];\n\n  /**\n   * Autocomplete if required.\n   * @default false\n   */\n  @Input() required: boolean = false;\n\n  /**\n   * Input field name\n   */\n  @Input() name: string | undefined;\n\n  /**\n   * The input description\n   */\n  @Input() description: string | undefined;\n\n  /**\n   * Prevents suggestions from appearing if fewer than N characters are typed\n   * @default 0\n   */\n  @Input() minLength: number = 0;\n\n  /**\n   * Default value\n   */\n  @Input() defaultValue: string | null = '';\n\n  /**\n   * Function to set assistive hint label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() assistiveHintLabel: () => string = () =>\n    'Quando i risultati del completamento automatico sono disponibili, usa le frecce su e giù per rivedere e Invio per selezionare. Utenti di dispositivi touch, esplora tramite tocco o con gesti di scorrimento';\n\n  /**\n   * Function to set label in case of no result. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() noResultsLabel: () => string = () => 'Nessun risultato trovato';\n\n  /**\n   * Function to set label that alerts you that query's too short. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() statusQueryTooShortLabel: (minQueryLength: number) => string = minQueryLength =>\n    `Digita ${minQueryLength} o più caratteri per mostrare le opzioni di ricerca`;\n\n  /**\n   * Function to set no results label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() statusNoResultsLabel: () => string = () => 'Nessun risultato di ricerca';\n\n  /**\n   * Function to set selected option label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() statusSelectedOptionLabel: (selectedOption: string, length: number, index: number) => string = (selectedOption, length, index) =>\n    `${selectedOption} ${index + 1} di ${length} è sottolineato`;\n\n  /**\n   * Function to set status results label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization\n   */\n  @Input() statusResultsLabel: (length: number, contentSelectedOption: string) => string = (length, contentSelectedOption) => {\n    const words = {\n      result: length === 1 ? 'risultato' : 'risultati',\n      is: length === 1 ? 'è' : 'sono',\n      available: length === 1 ? 'disponibile' : 'disponibili',\n    };\n\n    return `${length} ${words.result} ${words.is} ${words.available}. ${contentSelectedOption}`;\n  };\n\n  /**\n   * Fired when value changes\n   */\n  @Output() selected = new EventEmitter();\n\n  @ViewChild('selectAutocomplete') private selectAutocompleteEl?: ElementRef<HTMLButtonElement>;\n\n  private selectAutocomplete?: SelectAutocomplete;\n\n  private value: string | undefined = '';\n  private _interval: any = 0;\n  private _inputEl: HTMLElement | null = null;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    if (!this.control.value && !!this.value) {\n      this.writeValue(this.value);\n      this.onChange(this.value);\n    }\n  }\n\n  override writeValue(value: string | null | undefined): void {\n    super.writeValue(value);\n    if (!value && this._inputEl) {\n      this.clear();\n    }\n  }\n\n  clear() {\n    (this._inputEl as HTMLInputElement).value = '';\n  }\n\n  _findInput() {\n    this._interval = setInterval(() => {\n      this._inputEl = document.getElementById(this.id);\n      if (this._inputEl) {\n        clearInterval(this._interval);\n        this._initInputEl();\n      }\n    }, 500);\n  }\n\n  private _setAndCheck(value: string) {\n    this.value = value == '' ? undefined : value;\n    if (this.control.touched) {\n      this.writeValue(this.value);\n      this.onChange(this.value);\n    }\n    if (this.isValid == false && this.isInvalid == false) {\n      this._inputEl?.classList.remove('just-validate-success-field');\n      this._inputEl?.classList.remove('is-invalid');\n    } else if (this.isValid == true) {\n      this._inputEl?.classList.add('just-validate-success-field');\n      this._inputEl?.classList.remove('is-invalid');\n    } else if (this.isInvalid == true) {\n      this._inputEl?.classList.add('is-invalid');\n      this._inputEl?.classList.remove('just-validate-success-field');\n    }\n  }\n\n  private _initInputEl() {\n    if (this._inputEl) {\n      this._inputEl.onfocus = (ev: Event) => this._setAndCheck((ev.target as HTMLInputElement).value);\n      this._inputEl.onblur = (ev: Event) => this._setAndCheck((ev.target as HTMLInputElement).value);\n      this._inputEl.oninput = (ev: Event) => {\n        this.markAsTouched();\n        this._setAndCheck((ev.target as HTMLInputElement).value);\n      };\n\n      // Fix aria-labelledby: bootstrap-italia sets it to the input's id,\n      // but it should point to the label element for proper accessible naming\n      if (this.label) {\n        const listbox = this.selectAutocompleteEl?.nativeElement.querySelector('ul[role=\"listbox\"]');\n        listbox?.setAttribute('aria-labelledby', this.id + '-label');\n      }\n    }\n  }\n\n  override ngAfterViewInit() {\n    if (this.selectAutocompleteEl) {\n      super.ngAfterViewInit();\n      const element = this.selectAutocompleteEl.nativeElement;\n      this.selectAutocomplete = new SelectAutocomplete(element, {\n        id: this.id,\n        name: this.name || this.id,\n        source: this.source,\n        required: this.required,\n        minLength: this.minLength,\n        defaultValue: this.defaultValue,\n        tAssistiveHint: this.assistiveHintLabel,\n        tNoResults: this.noResultsLabel,\n        tStatusQueryTooShort: this.statusQueryTooShortLabel,\n        tStatusNoResults: this.statusNoResultsLabel,\n        tStatusSelectedOption: this.statusSelectedOptionLabel,\n        tStatusResults: this.statusResultsLabel,\n        onConfirm: (selectedElement: string) => {\n          this.markAsTouched();\n          this._setAndCheck(selectedElement);\n          this.selected.emit(selectedElement);\n        },\n      });\n      this._findInput();\n    }\n  }\n}\n","<div class=\"form-group\">\n  @if (label) {\n    <label [for]=\"id\" [id]=\"id + '-label'\" [class.active]=\"!!control.value\">{{ label }}</label>\n  }\n  <div #selectAutocomplete name=\"region\" [id]=\"id + 'Wrapper'\" class=\"autocomplete-wrapper\"></div>\n\n  @if (description) {\n    <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n  }\n  @if (isInvalid) {\n    <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n      <div #customError><ng-content select=\"[error]\"></ng-content></div>\n      @if (!customError.hasChildNodes()) {\n        {{ invalidMessage | async }}\n      }\n    </div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { ItCheckboxComponent } from './checkbox/checkbox.component';\nimport { ItInputComponent } from './input/input.component';\nimport { ItPasswordInputComponent } from './password-input/password-input.component';\nimport { ItRadioButtonComponent } from './radio-button/radio-button.component';\nimport { ItRangeComponent } from './range/range.component';\nimport { ItRatingComponent } from './rating/rating.component';\nimport { ItSelectComponent } from './select/select.component';\nimport { ItTextareaComponent } from './textarea/textarea.component';\nimport { ItUploadDragDropComponent } from './upload-drag-drop/upload-drag-drop.component';\nimport { ItUploadFileListComponent } from './upload-file-list/upload-file-list.component';\nimport { ItSearchComponent } from './search/search.component';\nimport { ItTransferComponent } from './transfer/transfer.component';\nimport { ItAutocompleteComponent } from './autocomplete/autocomplete.component';\n\nconst formComponents = [\n  ItAutocompleteComponent,\n  ItSearchComponent,\n  ItCheckboxComponent,\n  ItInputComponent,\n  ItPasswordInputComponent,\n  ItRadioButtonComponent,\n  ItRangeComponent,\n  ItRatingComponent,\n  ItSelectComponent,\n  ItTextareaComponent,\n  ItTransferComponent,\n  ItUploadDragDropComponent,\n  ItUploadFileListComponent,\n];\n\n@NgModule({\n  imports: formComponents,\n  exports: formComponents,\n})\nexport class ItFormModule {}\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\nimport { Location, NgTemplateOutlet } from '@angular/common';\nimport { ItButtonDirective } from '../../core/button/button.directive';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-back-button',\n  templateUrl: './back-button.component.html',\n  exportAs: 'itBackButton',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, ItButtonDirective, ItIconComponent, TranslateModule],\n})\nexport class ItBackButtonComponent {\n  readonly _location = inject(Location);\n\n  /**\n   * Back button style\n   * - <b>link</b>: use a link with icon and text\n   * - <b>button</b>: use a button with icon and text\n   * @default button\n   */\n  @Input() buttonStyle: 'link' | 'button' = 'button';\n\n  /**\n   * Button direction\n   * - <b>left</b>: Back direction\n   * - <b>up</b>: Upper direction\n   * @default left\n   */\n  @Input() direction: 'left' | 'up' = 'left';\n\n  /**\n   * Show/Hide icon\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) showIcon: boolean = true;\n\n  /**\n   * Show/Hide text\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) showText: boolean = true;\n\n  /**\n   * Custom back logic <br/>\n   *\n   * NOTE: to use 'this' need bind function  <br/>\n   * @example backCbFn = this.errorCallback.bind(this);\n   * (errorCallback is your function, pass backCbFn to the component)\n   */\n  @Input() backFn?: (location: Location) => void;\n\n  /**\n   * Go back function\n   */\n  public goBack(event: Event): void {\n    event.preventDefault();\n    if (this.backFn) {\n      return this.backFn(this._location);\n    }\n\n    this._location.back();\n  }\n}\n","@if (buttonStyle === 'link') {\n  <a href=\"#\" class=\"go-back\" (click)=\"goBack($event)\">\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </a>\n}\n\n@if (buttonStyle === 'button') {\n  <button itButton=\"primary\" class=\"go-back\" (click)=\"goBack($event)\">\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </button>\n}\n\n<ng-template #content>\n  @if (showIcon) {\n    <it-icon\n      size=\"sm\"\n      [name]=\"direction === 'left' ? 'arrow-left' : 'arrow-up'\"\n      [color]=\"buttonStyle === 'link' ? 'primary' : 'white'\"\n      [class.me-2]=\"showText\"></it-icon>\n  }\n\n  <span [class.visually-hidden]=\"!showText\">\n    {{ (direction === 'left' ? 'it.navigation.go-back' : 'it.navigation.upper-level') | translate }}\n  </span>\n</ng-template>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { BackToTop } from 'bootstrap-italia';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-back-to-top',\n  templateUrl: './back-to-top.component.html',\n  exportAs: 'itBackToTop',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [ItIconComponent],\n})\nexport class ItBackToTopComponent extends ItAbstractComponent implements AfterViewInit {\n  /**\n   * Aria label for the component\n   * @default 'Torna su'\n   */\n  @Input() ariaLabel: string = 'Torna su';\n\n  /**\n   * Show small button\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) small?: boolean;\n\n  /**\n   * Show shadow\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) shadow?: boolean;\n\n  /**\n   * Button usable button on a dark background\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dark?: boolean;\n\n  private backToTop?: BackToTop;\n\n  @ViewChild('backToTop') private backToTopElement?: ElementRef<HTMLAnchorElement>;\n\n  override ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    if (this.backToTopElement) {\n      const element = this.backToTopElement.nativeElement;\n      this.backToTop = BackToTop.getOrCreateInstance(element);\n    }\n  }\n\n  /**\n   * Show button\n   */\n  public show(): void {\n    this.backToTop?.show();\n  }\n\n  /**\n   * Hide the button\n   */\n  public hide(): void {\n    this.backToTop?.hide();\n  }\n\n  /**\n   * Activates the scroll animation towards the Y coordinate indicated by the positionTop option\n   */\n  public scrollToTop(): void {\n    this.backToTop?.scrollToTop();\n  }\n\n  /**\n   * Eliminate component features\n   */\n  public dispose(): void {\n    this.backToTop?.dispose();\n  }\n}\n","<a\n  #backToTop\n  [id]=\"id\"\n  href=\"#\"\n  [attr.aria-label]=\"ariaLabel\"\n  class=\"back-to-top\"\n  [class.back-to-top-small]=\"small\"\n  [class.shadow]=\"shadow\"\n  [class.dark]=\"dark\">\n  <it-icon name=\"arrow-up\" [color]=\"dark ? 'secondary' : 'light'\"></it-icon>\n</a>\n","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { IconName } from '../../../../interfaces/icon';\nimport { ItLinkComponent } from '../../../core/link/link.component';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-breadcrumb-item',\n  templateUrl: './breadcrumb-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItBreadcrumbItemComponent extends ItLinkComponent {\n  /**\n   * Is active breadcrumb item\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) active?: boolean;\n\n  /**\n   * The name of icon to show\n   */\n  @Input() iconName: IconName | undefined;\n\n  /**\n   * The content of item\n   */\n  @ViewChild(TemplateRef) public htmlContent!: TemplateRef<any>;\n}\n","<ng-template>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  Input,\n  OnDestroy,\n  QueryList,\n  inject,\n} from '@angular/core';\nimport { ItBreadcrumbItemComponent } from '../breadcrumb-item/breadcrumb-item.component';\nimport { startWith, Subscription } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { ItLinkComponent } from '../../../core/link/link.component';\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n  selector: 'it-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, ItIconComponent, ItLinkComponent, NgTemplateOutlet],\n})\nexport class ItBreadcrumbComponent implements AfterViewInit, OnDestroy {\n  private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /**\n   * The character to use as separator\n   * @default /\n   */\n  @Input() separator: string = '/';\n\n  /**\n   * Dark style\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) dark?: boolean;\n\n  /**\n   * The tab items\n   */\n  @ContentChildren(ItBreadcrumbItemComponent) items?: QueryList<ItBreadcrumbItemComponent>;\n\n  private itemSubscriptions?: Array<Subscription>;\n\n  ngAfterViewInit(): void {\n    this.items?.changes\n      .pipe(\n        // When breadcrumb items changes (dynamic add/remove)\n        startWith(undefined)\n      )\n      .subscribe(() => {\n        this.itemSubscriptions?.forEach(sub => sub.unsubscribe()); // Remove old subscriptions\n        this.itemSubscriptions = this.items?.map(item =>\n          item.valueChanges.subscribe(() => {\n            this._changeDetectorRef.detectChanges(); // DetectChanges when breadcrumb item attributes changes\n          })\n        );\n        this._changeDetectorRef.detectChanges(); // Force update html render\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.itemSubscriptions?.forEach(item => item.unsubscribe());\n  }\n}\n","<nav class=\"breadcrumb-container\" [attr.aria-label]=\"'it.navigation.navigation-path' | translate\">\n  @if (items) {\n    <ol class=\"breadcrumb\" [class.dark]=\"dark\" [class.px-3]=\"dark\">\n      @for (item of items; track item; let isLast = $last) {\n        <li class=\"breadcrumb-item\" [class.active]=\"item.active\" [attr.aria-current]=\"item.active ? 'page' : null\">\n          @if (item.iconName) {\n            <it-icon [name]=\"item.iconName\" [color]=\"dark ? 'white' : 'secondary'\" size=\"sm\" svgClass=\"align-top me-1\"></it-icon>\n          }\n          @if (!item.active && !isLast) {\n            <it-link [href]=\"item.href\" [class]=\"item.class\" [externalLink]=\"item.externalLink\" [disabled]=\"item.disabled\">\n              <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n            </it-link>\n          } @else {\n            <ng-container *ngTemplateOutlet=\"item.htmlContent\"></ng-container>\n          }\n          @if (!isLast) {\n            <span class=\"separator\">{{ separator }}</span>\n          }\n        </li>\n      }\n    </ol>\n  }\n</nav>\n","import { NgModule } from '@angular/core';\nimport { ItBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { ItBreadcrumbItemComponent } from './breadcrumb-item/breadcrumb-item.component';\n\nconst breadcrumb = [ItBreadcrumbComponent, ItBreadcrumbItemComponent];\n\n@NgModule({\n  imports: breadcrumb,\n  exports: breadcrumb,\n})\nexport class ItBreadcrumbsModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { ItButtonDirective } from '../../../core/button/button.directive';\nimport { inputToBoolean } from '../../../../utils/coercion';\nimport { NavBarCollapsible } from 'bootstrap-italia';\n\n@Component({\n  selector: 'it-navbar',\n  templateUrl: './navbar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, ItIconComponent, ItButtonDirective],\n})\nexport class ItNavBarComponent implements AfterViewInit {\n  @Input({ transform: inputToBoolean }) megamenu?: boolean;\n  @Input({ transform: inputToBoolean }) expand?: boolean = true;\n\n  @ViewChild('collapseButton') private collapseButton?: ElementRef<HTMLButtonElement>;\n  @ViewChild('collapseView') private collapseView?: ElementRef<HTMLButtonElement>;\n\n  private navbar?: NavBarCollapsible;\n\n  ngAfterViewInit() {\n    if (this.collapseButton && this.collapseView?.nativeElement != undefined) {\n      setTimeout(() => {\n        this.navbar = NavBarCollapsible.getOrCreateInstance(this.collapseView!.nativeElement);\n      }, 300);\n    }\n  }\n\n  get isOpen() {\n    return this.navbar?._isShown;\n  }\n\n  open() {\n    this.navbar?.show(this.collapseButton?.nativeElement);\n  }\n\n  close() {\n    this.navbar?.hide();\n  }\n\n  toggleCollapse() {\n    this.navbar?.toggle(this.collapseButton?.nativeElement);\n  }\n}\n","<nav\n  class=\"navbar\"\n  [class.navbar-expand-lg]=\"expand\"\n  [class.has-megamenu]=\"megamenu\"\n  [attr.aria-label]=\"'it.navbar.aria-label-main' | translate\">\n  <button\n    (click)=\"toggleCollapse()\"\n    #collapseButton\n    class=\"custom-navbar-toggler\"\n    type=\"button\"\n    [attr.aria-label]=\"'it.navbar.aria-label-toggle' | translate\">\n    <it-icon name=\"burger\"></it-icon>\n  </button>\n  <div #collapseView class=\"navbar-collapsable\" tabindex=\"-1\">\n    <div class=\"close-div\">\n      <button class=\"btn close-menu\" type=\"button\">\n        <span class=\"visually-hidden\">{{ 'it.navbar.hide' | translate }}</span>\n        <it-icon name=\"close-big\"></it-icon>\n      </button>\n    </div>\n    <div class=\"menu-wrapper\">\n      <ul class=\"navbar-nav\">\n        <ng-content select=\"[navItems]\"></ng-content>\n      </ul>\n    </div>\n  </div>\n</nav>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'it-navbar-item',\n  templateUrl: './navbar-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItNavBarItemComponent {}\n","<li class=\"nav-item\">\n  <ng-content></ng-content>\n</li>\n","import { NgModule } from '@angular/core';\nimport { ItNavBarComponent } from './navbar/navbar.component';\nimport { ItNavBarItemComponent } from './navbar-item/navbar-item.component';\n\nconst navbarComponents = [ItNavBarComponent, ItNavBarItemComponent];\n\n@NgModule({\n  imports: navbarComponents,\n  exports: navbarComponents,\n})\nexport class ItNavBarModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { filter } from 'rxjs';\n\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { ItNavBarModule } from '../navbar/navbar.module';\nimport { ItNavBarComponent } from '../navbar/navbar/navbar.component';\n\nimport { ItButtonDirective } from '../../core/button/button.directive';\nimport { inputToBoolean } from '../../../utils/coercion';\nimport { HeaderSticky } from 'bootstrap-italia';\n\n@Component({\n  selector: 'it-header',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, ItIconComponent, ItButtonDirective, ItNavBarModule],\n})\nexport class ItHeaderComponent implements AfterViewInit, OnChanges {\n  @Input({ transform: inputToBoolean }) light?: boolean;\n\n  @Input({ transform: inputToBoolean }) sticky?: boolean;\n\n  @Input({ transform: inputToBoolean }) showSlim?: boolean = true;\n\n  @Input({ transform: inputToBoolean }) smallHeader?: boolean = true;\n\n  @Input({ transform: inputToBoolean }) showSearch?: boolean = true;\n\n  @Input() idCollapsable: string = 'menuCollapsable';\n\n  @Input() slimTitle: string | undefined;\n  @Input() slimTitleLink: string | undefined = '#';\n\n  @Input() loginStyle: 'none' | 'default' | 'full' = 'none';\n\n  @Output() loginClick: EventEmitter<Event>;\n\n  @Output() searchClick: EventEmitter<Event>;\n\n  @ViewChild('headerWrapper') private headerWrapper?: ElementRef<HTMLButtonElement>;\n\n  @ViewChild(ItNavBarComponent) private itNavBarComponent?: ItNavBarComponent;\n\n  @Input({ transform: inputToBoolean }) megamenu?: boolean;\n  @Input({ transform: inputToBoolean }) expand?: boolean = true;\n\n  private stickyHeader?: HeaderSticky;\n\n  private readonly router = inject(Router);\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  constructor() {\n    this.loginClick = new EventEmitter<Event>();\n    this.searchClick = new EventEmitter<Event>();\n\n    /**\n     * Force a synchronous change-detection pass on the header tree after\n     * every router navigation.  `routerLinkActive` adds/removes the CSS\n     * `active` class via direct DOM manipulation, but the entire header\n     * component tree uses OnPush change detection combined with sticky\n     * positioning (HeaderSticky). Without an explicit CD cycle the browser\n     * may not repaint the active-state border until the user interacts\n     * with the page (see issue #589).\n     *\n     * As a UX improvement the mobile navbar is also auto-closed on\n     * navigation so users do not have to dismiss it manually.\n     */\n    this.router.events\n      .pipe(\n        filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n        takeUntilDestroyed()\n      )\n      .subscribe(() => {\n        this.closeNavBar();\n        this.cdr.detectChanges();\n      });\n  }\n\n  ngAfterViewInit() {\n    this.updateListeners();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['sticky'] && changes['sticky'].currentValue == true && !changes['sticky'].firstChange) {\n      this.updateListeners();\n    }\n    if (changes['sticky'] && changes['sticky'].currentValue == false) {\n      this.stickyHeader?._elementObj?._unsetSticky();\n      this.stickyHeader?._elementObj?.dispose();\n      delete this.stickyHeader;\n      this.stickyHeader = undefined;\n    }\n  }\n\n  updateListeners() {\n    if (!this.stickyHeader && this.headerWrapper?.nativeElement != undefined && this.sticky) {\n      setTimeout(() => {\n        this.stickyHeader = new HeaderSticky(this.headerWrapper!.nativeElement);\n      }, 300);\n    }\n  }\n\n  openNavBar() {\n    this.itNavBarComponent?.open();\n  }\n\n  closeNavBar() {\n    this.itNavBarComponent?.close();\n  }\n\n  protected emitLoginClick(event: Event): void {\n    event.preventDefault();\n    this.loginClick.emit(event);\n  }\n\n  protected emitSearchClick(event: Event): void {\n    event.preventDefault();\n    this.searchClick.emit(event);\n  }\n\n  toggleCollapse() {\n    this.itNavBarComponent?.toggleCollapse();\n  }\n}\n","<header\n  #headerWrapper\n  class=\"it-header-wrapper\"\n  [class.it-header-sticky]=\"sticky\"\n  data-bs-position-type=\"fixed\"\n  data-bs-sticky-class-name=\"is-sticky\"\n  data-bs-target=\"#header-nav-wrapper\">\n  @if (showSlim) {\n    <div class=\"it-header-slim-wrapper\" [class.theme-light]=\"light\">\n      <div class=\"container-xxl\">\n        <div class=\"row\">\n          <div class=\"col-12\">\n            <div class=\"it-header-slim-wrapper-content\">\n              <a class=\"d-none d-lg-block navbar-brand\" [href]=\"slimTitleLink\" [target]=\"slimTitleLink !== '#' ? '_blank' : '_self'\">\n                {{ slimTitle }}\n              </a>\n              <div class=\"nav-mobile\">\n                <nav [attr.aria-label]=\"'it.navigation.secondary-navigation' | translate\">\n                  <a\n                    class=\"it-opener d-lg-none\"\n                    data-bs-toggle=\"collapse\"\n                    [href]=\"'#' + idCollapsable\"\n                    role=\"button\"\n                    [attr.aria-controls]=\"idCollapsable\">\n                    <span>{{ slimTitle }}</span>\n                    <it-icon name=\"expand\"></it-icon>\n                  </a>\n                  <div class=\"link-list-wrapper collapse\" [id]=\"idCollapsable\">\n                    <ng-content select=\"[slimLinkList]\"></ng-content>\n                  </div>\n                </nav>\n              </div>\n              <div class=\"it-header-slim-right-zone\">\n                <ng-content select=\"[slimRightZone]\"></ng-content>\n                @if (loginStyle === 'default') {\n                  <div class=\"it-access-top-wrapper\">\n                    <a class=\"btn btn-primary btn-sm\" (click)=\"emitLoginClick($event)\" href=\"#\">\n                      {{ 'it.navigation.login' | translate }}\n                    </a>\n                  </div>\n                }\n                @if (loginStyle === 'full') {\n                  <a itButton=\"primary\" class=\"btn-full btn-icon\" (click)=\"emitLoginClick($event)\" href=\"#\">\n                    <span class=\"rounded-icon\">\n                      <it-icon name=\"user\" color=\"primary\"></it-icon>\n                    </span>\n                    <span class=\"d-none d-lg-block\">{{ 'it.navigation.full-login' | translate }}</span>\n                  </a>\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  }\n  <div class=\"it-nav-wrapper\">\n    <div class=\"it-header-center-wrapper\" [class.it-small-header]=\"smallHeader\" [class.theme-light]=\"light\">\n      <div class=\"container\">\n        <div class=\"row\">\n          <div class=\"col-12\">\n            <div class=\"it-header-center-content-wrapper\">\n              <div class=\"it-brand-wrapper\">\n                <ng-content select=\"[brand]\"></ng-content>\n              </div>\n              <div class=\"it-right-zone\">\n                <ng-content select=\"[rightZone]\"></ng-content>\n\n                @if (showSearch) {\n                  <div class=\"it-search-wrapper\">\n                    <span class=\"d-none d-md-block\">{{ 'it.navigation.search' | translate }}</span>\n                    <a\n                      href=\"#\"\n                      class=\"search-link rounded-icon\"\n                      [attr.aria-label]=\"'it.navigation.website-search' | translate\"\n                      (click)=\"emitSearchClick($event)\">\n                      <it-icon name=\"search\"></it-icon>\n                    </a>\n                  </div>\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"it-header-navbar-wrapper\" [class.theme-light-desk]=\"light\" id=\"header-nav-wrapper\">\n      <div class=\"container\">\n        <div class=\"row\">\n          <div class=\"col-12\">\n            <it-navbar [megamenu]=\"megamenu\" [expand]=\"expand\">\n              <ng-container navItems>\n                <ng-content select=\"[navItems]\"></ng-content>\n              </ng-container>\n            </it-navbar>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</header>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ItAbstractComponent } from '../../../abstracts/abstract.component';\n\n@Component({\n  standalone: true,\n  selector: 'it-footer',\n  templateUrl: './footer.component.html',\n  exportAs: 'itFooter',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class ItFooterComponent extends ItAbstractComponent {}\n","<footer class=\"it-footer\">\n  <div class=\"it-footer-main\">\n    <div class=\"container\">\n      <section>\n        <div class=\"row clearfix\">\n          <div class=\"col-sm-12\">\n            <ng-content select=\"[header]\"></ng-content>\n          </div>\n        </div>\n      </section>\n      <section>\n        <ng-content select=\"[links]\"></ng-content>\n      </section>\n      <section class=\"py-4 border-white border-top\">\n        <ng-content select=\"[contacts]\"></ng-content>\n      </section>\n    </div>\n  </div>\n  <div class=\"it-footer-small-prints clearfix\">\n    <div class=\"container\">\n      <ul class=\"it-footer-small-prints-list list-inline mb-0 d-flex flex-column flex-md-row\">\n        <ng-content select=\"[small-links]\"></ng-content>\n      </ul>\n    </div>\n  </div>\n</footer>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-megamenu',\n  templateUrl: './megamenu.component.html',\n  styleUrls: ['./megamenu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet],\n})\nexport class ItMegamenuComponent {\n  /**\n   * Megamenu mode\n   */\n  @Input() mode: 'right-section' | 'left-section' | 'normal' = 'normal';\n\n  /**\n   * To show Megamenu header\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) header?: boolean;\n\n  /**\n   * To show Megamenu footer\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) footer?: boolean;\n}\n","<div class=\"megamenu pb-5 pt-3 py-lg-0\">\n  <div class=\"row\">\n    @if (mode === 'left-section') {\n      <div class=\"col-xs-12 col-lg-4 px-0\">\n        <div class=\"row\">\n          <div class=\"col-12 it-vertical it-description pb-lg-3\">\n            <div class=\"description-content ps-4 ps-sm-5 ms-3\">\n              <ng-content select=\"[megamenuLeftZone]\"></ng-content>\n            </div>\n          </div>\n        </div>\n      </div>\n    }\n    <div class=\"col-12\" [class.col-lg-8]=\"mode !== 'normal'\">\n      @if (header) {\n        <div class=\"it-heading-link-wrapper\">\n          <ng-content select=\"[megamenuHeadingLink]\"></ng-content>\n        </div>\n      }\n      <div class=\"row\">\n        <ng-content select=\"[megamenuLinkList]\"></ng-content>\n      </div>\n    </div>\n    @if (footer || mode === 'right-section') {\n      <div [class.col-xs-12]=\"mode === 'right-section'\" [class.col-lg-4]=\"mode === 'right-section'\" [class.px-0]=\"mode === 'right-section'\">\n        <div [class.it-footer-link-wrapper]=\"footer\" [class.it-footer-link-wrapper-vertical]=\"mode === 'right-section'\">\n          <div class=\"d-flex flex-column justify-content-around\" [class.flex-lg-row]=\"mode !== 'right-section'\">\n            <ng-content select=\"[megamenuFooter]\"></ng-content>\n          </div>\n        </div>\n      </div>\n    }\n  </div>\n</div>\n","import { NavscrollItem, NavscrollItems } from './navscroll.model';\n\nfunction searchFn(items: Set<NavscrollItem>, item: NavscrollItem): Array<NavscrollItem> {\n  //ricerca\n  const nodes = Array.from(items);\n  const parent = nodes.find(i => i.childs.includes(item));\n  const ancestors = parent?.childs?.length ? searchFn(items, parent) : [];\n  return [item, ...ancestors];\n}\n\nfunction flattenNavscrollItemsFn(items: NavscrollItems): NavscrollItems {\n  const result: NavscrollItems = [];\n\n  function flatten(items: NavscrollItems): void {\n    for (const item of items) {\n      result.push(item);\n      if (item.childs && item.childs.length > 0) {\n        flatten(item.childs);\n      }\n    }\n  }\n\n  flatten(items);\n  return result;\n}\n\nexport const search = searchFn;\nexport const flattenNavscrollItems = flattenNavscrollItemsFn;\n","import { BehaviorSubject, distinctUntilChanged, map, Subject } from 'rxjs';\nimport { NavscrollItem } from './navscroll.model';\nimport { flattenNavscrollItems, search } from './navscroll.utils';\n\ninterface NavscrollState {\n  items: Set<NavscrollItem>;\n  active: Array<NavscrollItem>;\n  selected?: NavscrollItem;\n  progressBar: number;\n  isMobile: boolean;\n}\n\nexport class NavscrollStore {\n  readonly #state = new BehaviorSubject<NavscrollState>({\n    items: new Set<NavscrollItem>(),\n    active: [],\n    selected: undefined,\n    progressBar: 0,\n    isMobile: false,\n  });\n\n  readonly #state$ = this.#state.asObservable();\n\n  readonly selected = this.#state$.pipe(\n    map(({ selected }) => selected),\n    distinctUntilChanged()\n  );\n\n  readonly progressBar = this.#state$.pipe(\n    map(({ progressBar }) => progressBar),\n    distinctUntilChanged()\n  );\n\n  readonly isMobile = this.#state$.pipe(\n    map(({ isMobile }) => isMobile),\n    distinctUntilChanged()\n  );\n\n  readonly #menuItemSelected = new Subject();\n\n  readonly menuItemSelected = this.#menuItemSelected.asObservable();\n\n  init(navscrollItems: Array<NavscrollItem>) {\n    const flattenItems = flattenNavscrollItems(navscrollItems);\n    //the first item is selected by default\n    const selected = ((flattenItems && flattenItems.length && flattenItems[0]) as NavscrollItem) ?? undefined;\n\n    const state = {\n      items: new Set(flattenItems),\n      active: selected ? [selected] : [],\n      selected: selected,\n      progressBar: 0,\n      isMobile: false,\n    };\n\n    this.#state.next(state);\n  }\n\n  setActive(item: NavscrollItem) {\n    const { items } = this.#state.value;\n\n    const active = search(items, item);\n    const state = this.#state.value;\n    this.#state.next({ ...state, items, selected: item, active });\n  }\n\n  isActive$(item: NavscrollItem) {\n    return this.#state.asObservable().pipe(map(state => state.active.includes(item)));\n  }\n\n  updateProgressBar(container: HTMLElement) {\n    if (!container) {\n      return;\n    }\n    const offset = Math.abs(container.getBoundingClientRect().top);\n    const height = container.getBoundingClientRect().height;\n    const scrollAmount = (offset / height) * 100;\n    const scrollValue = Math.min(100, Math.max(0, scrollAmount));\n    const state = this.#state.value;\n    this.#state.next({\n      ...state,\n      progressBar: container.getBoundingClientRect().y > 0 ? 0 : scrollValue,\n    });\n  }\n\n  selectMenuItem() {\n    this.#menuItemSelected.next(undefined);\n  }\n\n  setMobile({ innerWidth }: { innerWidth: number }) {\n    const isLessThan992px = innerWidth < 992;\n    const isMobile = isLessThan992px;\n    const state = this.#state.value;\n    this.#state.next({ ...state, isMobile });\n  }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  IsActiveMatchOptions,\n  NavigationEnd,\n  Router,\n  Event as RouterEvent,\n  RouterLink,\n  RouterLinkActive,\n  RouterLinkWithHref,\n  Scroll,\n} from '@angular/router';\nimport { AsyncSubject, filter, switchMap, tap } from 'rxjs';\nimport { NavscrollItem } from './navscroll.model';\nimport { NavscrollStore } from './navscroll.store';\n\nconst ROUTER_LINK_ACTIVE_OPTIONS: IsActiveMatchOptions = {\n  fragment: 'exact',\n  paths: 'exact',\n  queryParams: 'exact',\n  matrixParams: 'exact',\n};\n\n@Component({\n  selector: 'it-navscroll-list-item',\n  standalone: true,\n  imports: [RouterLink, RouterLinkActive, RouterLinkWithHref, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <a\n      class=\"nav-link\"\n      [class.active]=\"active | async\"\n      [routerLink]=\"[]\"\n      routerLinkActive\n      [fragment]=\"item?.href\"\n      [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n      ariaCurrentWhenActive=\"page\"\n      #rtl=\"routerLinkActive\"\n      (click)=\"clickHandler($event)\"\n      ><span>{{ item?.title }}</span></a\n    >\n  `,\n})\nexport class ItNavscrollListItemComponent implements OnInit {\n  @Input() item!: NavscrollItem;\n\n  @Output() readonly checkActive = new EventEmitter<NavscrollItem>();\n\n  @ViewChild('rtl')\n  readonly rtl: any;\n\n  readonly routerLinkActiveOptions = ROUTER_LINK_ACTIVE_OPTIONS;\n\n  readonly #initIsActive = new AsyncSubject<NavscrollItem>();\n\n  readonly active = this.#initIsActive.asObservable().pipe(switchMap(item => this.#store.isActive$(item)));\n\n  readonly #router = inject(Router);\n\n  readonly #store = inject(NavscrollStore);\n\n  readonly #destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.#initIsActiveSub();\n    this.#router.events\n      .pipe(\n        takeUntilDestroyed(this.#destroyRef),\n        filter((event: RouterEvent) => {\n          const isNavigationEndEvent = event instanceof NavigationEnd;\n          const isScrollEvent = event instanceof Scroll && (event as Scroll).routerEvent instanceof NavigationEnd;\n          return isNavigationEndEvent || isScrollEvent;\n        }),\n        tap(() => {\n          if (this.rtl?.isActive) {\n            this.#store.setActive(this.item);\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  clickHandler(event: Event) {\n    event.preventDefault();\n    this.#store.selectMenuItem();\n    this.#router.navigate([], { fragment: this.item.href });\n  }\n\n  #initIsActiveSub() {\n    this.#initIsActive.next(this.item);\n    this.#initIsActive.complete();\n  }\n}\n","import { JsonPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';\nimport { ItNavscrollListItemComponent } from './navscroll-list-item.component';\nimport { NavscrollItems } from './navscroll.model';\n\n@Component({\n  selector: 'it-navscroll-list-items',\n  imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, RouterLinkWithHref, JsonPipe, ItNavscrollListItemComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <ul class=\"link-list\">\n      @for (item of items; track item.href) {\n        <li class=\"nav-item\">\n          <it-navscroll-list-item [item]=\"item\"></it-navscroll-list-item>\n          @if (item.childs?.length) {\n            <it-navscroll-list-items [items]=\"item.childs\"></it-navscroll-list-items>\n          }\n        </li>\n      }\n    </ul>\n  `,\n})\nexport class ItNavscrollListItemsComponent {\n  @Input() items!: NavscrollItems;\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet, ViewportScroller } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  HostListener,\n  inject,\n  Input,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { delay, filter, map, tap, withLatestFrom } from 'rxjs';\nimport { inputToBoolean } from '../../../utils/coercion';\nimport { ItNavscrollListItemsComponent } from './navscroll-list-items.component';\nimport { NavscrollItem } from './navscroll.model';\nimport { NavscrollStore } from './navscroll.store';\n\n/**\n * Navscroll\n * @description Show a list of links to anchor of the document.\n */\n@Component({\n  selector: 'it-navscroll',\n  imports: [\n    ItNavscrollListItemsComponent,\n    AsyncPipe,\n    NgTemplateOutlet,\n    RouterLink,\n    RouterLinkActive,\n    RouterLinkWithHref,\n    TranslateModule,\n    AsyncPipe,\n    NgClass,\n  ],\n  templateUrl: './navscroll.component.html',\n  styleUrl: './navscroll.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [NavscrollStore],\n})\nexport class ItNavscrollComponent implements OnInit {\n  static _nextId = 0;\n\n  readonly accordionId = `navscroll-accordion-${ItNavscrollComponent._nextId++}`;\n  /**\n   * Header of the Navscroll\n   */\n  @Input() header = '';\n\n  /**\n   * Render the header as a collapsible accordion toggle,\n   * allowing users to show/hide the navigation links.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) headerAsAccordion?: boolean;\n\n  /**\n   * Hide the navigation bar when in mobile mode (viewport < 992px).\n   * Mandatory when navscroll is used in a mobile context or in combination with a sticky header.\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) hideNavigationOnMobile?: boolean;\n\n  /**\n   * Whether the accordion starts expanded.\n   * Only applies when headerAsAccordion is true.\n   * @default true\n   */\n  @Input({ transform: inputToBoolean }) accordionExpanded: boolean = true;\n  /**\n   * A list of links\n   */\n  @Input() items!: Array<NavscrollItem>;\n  /**\n   * Border position\n   * @default left\n   */\n  @Input() borderPosition: 'left' | 'right' = 'left';\n  /**\n   * Alignment\n   * @default top\n   */\n  @Input() alignment: 'top' | 'bottom' = 'top';\n\n  /**\n   * Theme\n   * @default light\n   */\n  @Input() theme: 'light' | 'dark' = 'light';\n\n  /**\n   * Custom template for the content section\n   */\n  @Input()\n  pageSectionsTemplate?: TemplateRef<any>;\n\n  @HostListener('window:scroll') // for window scroll events\n  onScroll() {\n    const sectionContainer = this.#elementRef.nativeElement.querySelector('.it-page-sections-container');\n    this.#store.updateProgressBar(sectionContainer);\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.#setMobile();\n  }\n\n  @ViewChild('toggleButtonRef')\n  readonly toggleButtonRef!: ElementRef<HTMLButtonElement>;\n\n  readonly #store = inject(NavscrollStore);\n\n  readonly #scroller = inject(ViewportScroller);\n\n  readonly #destroyRef = inject(DestroyRef);\n\n  readonly #elementRef = inject(ElementRef);\n\n  readonly selectedTitle = this.#store.selected.pipe(map(selected => selected?.title ?? ''));\n\n  readonly progressBarValue = this.#store.progressBar;\n\n  readonly isMobile = this.#store.isMobile;\n\n  readonly isNotMobile = this.#store.isMobile.pipe(map(v => !v));\n\n  constructor() {\n    this.#store.menuItemSelected\n      .pipe(\n        takeUntilDestroyed(),\n        withLatestFrom(this.isMobile),\n        tap(v => {\n          const isMobile = v[1];\n          if (isMobile) {\n            this.toggleButtonRef.nativeElement.click();\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  ngOnInit(): void {\n    this.#initViewScrollerSubscription();\n    this.#store.init(this.items);\n    this.#setMobile();\n  }\n\n  #initViewScrollerSubscription() {\n    this.#store.selected\n      .pipe(\n        takeUntilDestroyed(this.#destroyRef),\n        filter(selected => Boolean(selected)),\n        map(v => v as NavscrollItem),\n        delay(0), //WA\n        tap({\n          next: ({ href }) => {\n            this.#scroller.scrollToAnchor(href);\n          },\n        })\n      )\n      .subscribe();\n  }\n\n  #setMobile() {\n    this.#store.setMobile(window);\n  }\n}\n","<div class=\"container py-lg-5\">\n  <div class=\"row\">\n    @if (!hideNavigationOnMobile || (isNotMobile | async)) {\n      <div class=\"col-12 col-lg-4\">\n        <div class=\"it-navscroll-sticky\" [ngClass]=\"{ 'it-navscroll-sticky-mobile': isMobile | async }\" data-bs-stackable=\"true\">\n          <nav\n            class=\"navbar it-navscroll-wrapper navbar-expand-lg\"\n            [class.it-top-navscroll]=\"alignment === 'top'\"\n            [class.it-bottom-navscroll]=\"alignment === 'bottom'\"\n            [class.it-left-side]=\"borderPosition === 'left'\"\n            [class.it-right-side]=\"borderPosition === 'right'\"\n            [class.theme-dark-mobile]=\"theme === 'dark'\"\n            [class.theme-dark-desktop]=\"theme === 'dark'\">\n            <button\n              class=\"custom-navbar-toggler\"\n              type=\"button\"\n              aria-controls=\"navbarNav\"\n              [attr.aria-label]=\"'it.navigation.aria-label-toggle' | translate\"\n              data-bs-toggle=\"navbarcollapsible\"\n              data-bs-target=\"#navbarNav\"\n              #toggleButtonRef>\n              <span class=\"it-list\"></span>{{ selectedTitle | async }}\n            </button>\n            <div class=\"progress custom-navbar-progressbar\">\n              <div\n                class=\"progress-bar it-navscroll-progressbar\"\n                role=\"progressbar\"\n                [style.width.%]=\"progressBarValue | async\"\n                [attr.aria-valuenow]=\"progressBarValue | async\"\n                aria-valuemin=\"0\"\n                aria-valuemax=\"100\"></div>\n            </div>\n            <div class=\"navbar-collapsable\" id=\"navbarNav\" tabindex=\"-1\">\n              <div class=\"close-div visually-hidden\">\n                <button class=\"btn close-menu\" type=\"button\"><span class=\"it-close\"></span>Chiudi</button>\n              </div>\n              <button type=\"button\" class=\"it-back-button btn w-100 text-start\">\n                <svg class=\"icon icon-sm icon-primary align-top\">\n                  <use\n                    href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"\n                    xlink:href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"></use>\n                </svg>\n                <span>Indietro</span>\n              </button>\n              <div class=\"menu-wrapper\" tabindex=\"-1\">\n                <div class=\"link-list-wrapper\">\n                  @if (headerAsAccordion) {\n                    <div class=\"accordion\" [id]=\"accordionId\">\n                      <div class=\"accordion-item\">\n                        <h3 class=\"accordion-header\" [id]=\"accordionId + '-heading'\">\n                          <button\n                            class=\"accordion-button\"\n                            [class.collapsed]=\"!accordionExpanded\"\n                            type=\"button\"\n                            data-bs-toggle=\"collapse\"\n                            [attr.data-bs-target]=\"'#' + accordionId + '-body'\"\n                            [attr.aria-expanded]=\"accordionExpanded\"\n                            [attr.aria-controls]=\"accordionId + '-body'\">\n                            {{ header }}\n                          </button>\n                        </h3>\n                        <div\n                          [id]=\"accordionId + '-body'\"\n                          class=\"accordion-collapse collapse\"\n                          [class.show]=\"accordionExpanded\"\n                          [attr.aria-labelledby]=\"accordionId + '-heading'\">\n                          <div class=\"accordion-body\">\n                            <it-navscroll-list-items [items]=\"items\"></it-navscroll-list-items>\n                          </div>\n                        </div>\n                      </div>\n                    </div>\n                  } @else {\n                    <h3>{{ header }}</h3>\n                    <div class=\"progress\">\n                      <div\n                        class=\"progress-bar it-navscroll-progressbar\"\n                        role=\"progressbar\"\n                        [style.width.%]=\"progressBarValue | async\"\n                        [attr.aria-valuenow]=\"progressBarValue | async\"\n                        aria-valuemin=\"0\"\n                        aria-valuemax=\"100\"></div>\n                    </div>\n                    <it-navscroll-list-items [items]=\"items\"></it-navscroll-list-items>\n                  }\n                </div>\n              </div>\n            </div>\n          </nav>\n        </div>\n      </div>\n    }\n    <div class=\"col-12 col-lg-8 it-page-sections-container\">\n      <ng-container\n        *ngTemplateOutlet=\"pageSectionsTemplate ? pageSectionsTemplate : defaultPageSectionsTemplate; context: { items: items }\">\n      </ng-container>\n    </div>\n  </div>\n</div>\n\n<ng-template #defaultPageSectionsTemplate let-items=\"items\">\n  @for (item of items; track item.href) {\n    <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: 1 }\"></ng-container>\n  }\n</ng-template>\n\n<ng-template #paragraphTemplate let-item=\"item\" let-level=\"level\" let-nextLevel=\"level+1\">\n  @switch (level) {\n    @case (1) {\n      <h2 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h2>\n    }\n    @case (2) {\n      <h3 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h3>\n    }\n    @case (3) {\n      <h4 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h4>\n    }\n    @case (4) {\n      <h5 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h5>\n    }\n    @default {\n      <h6 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h6>\n    }\n  }\n  @if (item.html) {\n    <div [innerHTML]=\"item.html\"></div>\n  } @else {\n    <p>{{ item.text }}</p>\n  }\n  @for (item of item.childs; track item.href) {\n    <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: nextLevel }\"></ng-container>\n  }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-sidebar',\n  imports: [],\n  templateUrl: './sidebar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ItSidebarComponent {\n  /**\n   * Per creare una sidebar con linea separatrice a destra è sufficiente aggiungere la classe\n   */\n  @Input({ transform: inputToBoolean })\n  @HostBinding('class.it-line-right-side')\n  public withRightLine = false;\n\n  /**\n   * Per creare una sidebar con linea separatrice a sinistra è sufficiente aggiungere la classe\n   */\n  @Input({ transform: inputToBoolean })\n  @HostBinding('class.it-line-left-side')\n  public withLeftLine = false;\n\n  /**\n   * Per cambiare il tema della sidebar e renderla scura\n   */\n  @Input({ transform: inputToBoolean })\n  @HostBinding('class.theme-dark')\n  public dark = false;\n\n  /**\n   * L'intestazione della sidebar\n   */\n  @Input() public header?: string;\n\n  @HostBinding('class') componentClass = 'd-block sidebar-wrapper';\n}\n","@if (header) {\n  <h3>{{ header }}</h3>\n}\n<div class=\"sidebar-linklist-wrapper\">\n  <!--TODO: wrap ng-content with it-list -> inside content use a list of it-list-item directives-->\n  <ng-content></ng-content>\n</div>\n<div class=\"sidebar-linklist-wrapper linklist-secondary\">\n  <!--TODO: wrap ng-content with it-list -> inside content use a list of it-list-item directives-->\n  <ng-content select=\"[secondary]\"></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../../utils/coercion';\nimport { ItLinkComponent } from '../../../core/link/link.component';\n\n@Component({\n  selector: 'it-skiplink',\n  templateUrl: './skiplink.component.html',\n  exportAs: 'itSkipLink',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, TranslateModule, ItLinkComponent],\n})\nexport class ItSkiplinkComponent {\n  /**\n   * Aria label for `nav` mode\n   * @default 'Scorciatoie di navigazione'\n   */\n  @Input() ariaLabel: string = 'Scorciatoie di navigazione';\n\n  /**\n   * If `true` nav mode is enabled\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) nav?: boolean;\n}\n","@if (nav) {\n  <nav class=\"skiplinks\">\n    <ul>\n      <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n    </ul>\n  </nav>\n} @else {\n  <div class=\"skiplinks\">\n    <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n  </div>\n}\n\n<ng-template #linkContent>\n  <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { inputToBoolean } from '../../../../utils/coercion';\nimport { ItLinkComponent } from '../../../core/link/link.component';\nimport { ItSkiplinkComponent } from '../skiplink/skiplink.component';\n\n@Component({\n  selector: 'it-skiplink-item',\n  templateUrl: './skiplink-item.component.html',\n  exportAs: 'itSkipLinkItem',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgTemplateOutlet, TranslateModule, ItLinkComponent],\n})\nexport class ItSkiplinkItemComponent {\n  /**\n   * The router link action\n   *\n   * Commands to pass to Router#createUrlTree.\n   * - array: commands to pass to Router#createUrlTree.\n   * - string: shorthand for array of commands with just the string, i.e. ['/route']\n   * - null|undefined: Disables the link by removing the href\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @Input() href: any[] | string | null | undefined;\n\n  /**\n   * Is an external link (false to not use Angular router link)\n   * @default false\n   */\n  @Input({ transform: inputToBoolean }) externalLink?: boolean;\n  inNav: boolean;\n\n  constructor() {\n    const parent = inject(ItSkiplinkComponent, { host: true });\n\n    this.inNav = parent.nav ? true : false;\n  }\n}\n","@if (inNav) {\n  <li class=\"visually-hidden-focusable\">\n    <it-link [href]=\"href\" [externalLink]=\"externalLink\">\n      <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n    </it-link>\n  </li>\n} @else {\n  <it-link class=\"visually-hidden-focusable\" [href]=\"href\" [externalLink]=\"externalLink\">\n    <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n  </it-link>\n}\n\n<ng-template #linkContent>\n  <ng-content></ng-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { ItSkiplinkComponent } from './skiplink/skiplink.component';\nimport { ItSkiplinkItemComponent } from './skiplink-item/skiplink-item.component';\n\nconst skiplinkComponents = [ItSkiplinkComponent, ItSkiplinkItemComponent];\n\n@NgModule({\n  imports: skiplinkComponents,\n  exports: skiplinkComponents,\n})\nexport class ItSkiplinkModule {}\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItBackButtonComponent } from '../../navigation/back-button/back-button.component';\nimport { ItButtonDirective } from '../../core/button/button.directive';\nimport { inputToBoolean } from '../../../utils/coercion';\n\n@Component({\n  selector: 'it-error-page',\n  templateUrl: './error-page.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [TranslateModule, RouterLink, ItBackButtonComponent, ItButtonDirective],\n})\nexport class ItErrorPageComponent {\n  private readonly route = inject(ActivatedRoute);\n\n  /**\n   * The error code to show\n   */\n  @Input() errorCode: number | 404 | 403 | 500 | undefined;\n\n  /**\n   * Show/Hide error code\n   * @default true - show\n   */\n  @Input({ transform: inputToBoolean }) showErrorCode?: boolean = true;\n\n  /**\n   * Custom error title\n   * - If set it will be displayed instead of the default title.\n   * - It is possible to use i18n keys\n   */\n  @Input() errorTitle: string | undefined;\n\n  /**\n   * Custom error description\n   * - If set it will be displayed instead of the default description.\n   * - It is possible to use i18n keys\n   */\n  @Input() errorDescription: string | undefined;\n\n  /**\n   * Show/Hide back button\n   * @default true - show\n   */\n  @Input({ transform: inputToBoolean }) showBackButton?: boolean = true;\n\n  /**\n   * Show/Hide home button\n   * @default true - show\n   */\n  @Input({ transform: inputToBoolean }) showHomeButton?: boolean = true;\n\n  constructor() {\n    this.route.data.subscribe(data => {\n      if (!this.errorCode && data['errorCode']) {\n        this.errorCode = data['errorCode']; // Get errorCode from route data\n      }\n      if (data['showErrorCode'] !== undefined) {\n        this.showErrorCode = data['showErrorCode']; // Get showErrorCode from route data\n      }\n      if (!this.errorTitle && data['errorTitle']) {\n        this.errorTitle = data['errorTitle']; // Get errorTitle from route data\n      }\n      if (!this.errorDescription && data['errorDescription']) {\n        this.errorDescription = data['errorDescription']; // Get errorDescription from route data\n      }\n      if (data['showBackButton'] !== undefined) {\n        this.showBackButton = data['showBackButton']; // Get showBackButton from route data\n      }\n      if (data['showHomeButton'] !== undefined) {\n        this.showHomeButton = data['showHomeButton']; // Get showHomeButton from route data\n      }\n    });\n  }\n\n  get isDefaultErrorCode(): boolean {\n    return this.errorCode === 404 || this.errorCode === 403 || this.errorCode === 500;\n  }\n}\n","<div class=\"container text-center mt-5\">\n  @if (errorCode && showErrorCode) {\n    <h1>{{ errorCode }}</h1>\n  }\n  <h2>\n    @if (!errorTitle && isDefaultErrorCode) {\n      {{ 'it.utils.error-page.' + errorCode + '.title' | translate }}\n    } @else {\n      {{ errorTitle || 'it.errors.generic' | translate }}\n    }\n  </h2>\n\n  <p class=\"mt-3 w-75 mx-auto\">\n    @if (!errorDescription && isDefaultErrorCode) {\n      {{ 'it.utils.error-page.' + errorCode + '.description' | translate }}\n    } @else {\n      {{ errorDescription || 'it.errors.generic-support-message' | translate }}\n    }\n  </p>\n\n  @if (showBackButton || showHomeButton) {\n    <div class=\"mt-5\">\n      @if (showBackButton) {\n        <it-back-button></it-back-button>\n      }\n      @if (showHomeButton) {\n        <a itButton=\"outline-primary\" class=\"ms-3\" routerLink=\"/\" title=\"{{ 'it.utils.error-page.go-to-homepage' | translate }}\">\n          {{ 'it.utils.error-page.go-to-homepage' | translate }}\n        </a>\n      }\n    </div>\n  }\n</div>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { map, Observable, startWith } from 'rxjs';\nimport { AvailableLanguage } from '../../../interfaces/utils';\nimport { ItDropdownModule } from '../../core/dropdown/dropdown.module';\n\n@Component({\n  selector: 'it-language-switcher',\n  templateUrl: './language-switcher.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AsyncPipe, TranslateModule, ItDropdownModule],\n})\nexport class ItLanguageSwitcherComponent implements OnInit {\n  private readonly translateService = inject(TranslateService);\n\n  /**\n   * The available languages\n   * @default The languages available through TranslateService (ngx-translate)\n   */\n  @Input() availableLanguages: Array<AvailableLanguage> | undefined;\n\n  /**\n   * Dropdown mode\n   */\n  @Input() mode: 'button' | 'link' | 'nav' = 'link';\n\n  protected currentLang$: Observable<AvailableLanguage | undefined>;\n\n  constructor() {\n    const translateService = this.translateService;\n\n    this.currentLang$ = this.translateService.onLangChange.pipe(\n      startWith({ lang: translateService.getCurrentLang() }),\n      map(event => this.availableLanguages?.find(l => l.code === event.lang))\n    );\n  }\n\n  ngOnInit(): void {\n    if (!this.availableLanguages) {\n      this.availableLanguages = this.translateService.getLangs().map(lang => ({\n        code: lang,\n        label: lang,\n        ...(lang === 'it' && { label: 'ITA' }),\n        ...(lang === 'en' && { label: 'ENG' }),\n      }));\n    } else {\n      this.translateService.addLangs(this.availableLanguages.map(l => l.code)); // Adds custom languages\n    }\n  }\n\n  /**\n   * Change the current language\n   * @param lang the language code\n   */\n  public changeLanguage(lang: string): void {\n    this.translateService.use(lang);\n  }\n}\n","<it-dropdown [mode]=\"mode\">\n  <ng-container button>\n    <span class=\"visually-hidden\">{{ 'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n    <span>{{ (currentLang$ | async)?.label || ('it.utils.select-language' | translate) }}</span>\n  </ng-container>\n\n  @if (availableLanguages) {\n    <ng-container list>\n      @for (lang of availableLanguages; track lang.code) {\n        <it-dropdown-item (click)=\"changeLanguage(lang.code)\" [active]=\"lang.code === (currentLang$ | async)?.code\">\n          {{ lang.label }}\n          @if (lang.code === (currentLang$ | async)?.code) {\n            <span class=\"visually-hidden\">\n              {{ 'it.utils.selected' | translate }}\n            </span>\n          }\n        </it-dropdown-item>\n      }\n    </ng-container>\n  }\n</it-dropdown>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\ntype DateAgoPipeInterval = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\n/**\n * Indicates in a textual way how much time has passed since the indicated date\n * @example 2 hours ago\n */\n@Pipe({\n  name: 'itDateAgo',\n  pure: false,\n  standalone: true,\n})\nexport class ItDateAgoPipe extends TranslatePipe implements PipeTransform {\n  /**\n   * Indicates in a textual way how much time has passed since the indicated date\n   * @example 2 hours ago\n   * @param value the Date or date string\n   */\n  override transform(value: string | Date | null | undefined): string {\n    if (!value) {\n      return '';\n    }\n\n    const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);\n    if (isNaN(seconds)) {\n      return '';\n    }\n\n    // less than 30 seconds ago will show as 'Just now'\n    if (seconds < 29) {\n      return super.transform('it.date-ago-pipe.just-now');\n    }\n\n    const intervals = new Map<DateAgoPipeInterval, number>([\n      ['year', 31536000],\n      ['month', 2592000],\n      ['week', 604800],\n      ['day', 86400],\n      ['hour', 3600],\n      ['minute', 60],\n      ['second', 1],\n    ]);\n\n    for (const interval of intervals) {\n      const counter = Math.floor(seconds / interval[1]);\n      if (counter > 0) {\n        return super.transform(`it.date-ago-pipe.${counter === 1 ? 'singular-' : ''}${interval[0]}-ago`, {\n          count: counter,\n        });\n      }\n    }\n\n    return '';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport type ItDurationPipeType = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\n\n/**\n * Transform a number into a duration.\n * Is necessary indicate the value expressed by the number, for example 'day'.\n * @example\n *  - 1, 'day' -> 1 day\n *  - 5, 'day' -> 5 days\n *  - 7, 'day' -> 1 week\n *  - 365, 'day' -> 1 year\n *  - 2, 'week' -> 2 weeks\n *  ...\n */\n@Pipe({\n  name: 'itDuration',\n  standalone: true,\n})\nexport class ItDurationPipe extends TranslatePipe implements PipeTransform {\n  /**\n   * Transform a number into a duration.\n   * Is necessary indicate the value expressed by the number, for example 'day'.\n   * @example\n   *  - 1, 'day' -> 1 day\n   *  - 5, 'day' -> 5 days\n   *  - 7, 'day' -> 1 week\n   *  - 8, 'day' -> 1 week\n   *  - 365, 'day' -> 1 year\n   *  - 2, 'week' -> 2 weeks\n   *  - 24, 'month' -> 1 year\n   *  ...\n   * @param value the number\n   * @param type the number expressed type\n   */\n  override transform(value: string | number | undefined | null, type: ItDurationPipeType): string {\n    let valueAdjust = Number(value);\n    if (isNaN(valueAdjust) || value === null) {\n      return '';\n    }\n\n    switch (type) {\n      // eslint-disable-next-line no-fallthrough,@typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      case 'second':\n        if (valueAdjust < 60) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 60);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      // eslint-disable-next-line no-fallthrough\n      case 'minute':\n        if (valueAdjust < 60) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 60);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      // eslint-disable-next-line no-fallthrough\n      case 'hour':\n        if (valueAdjust < 24) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 24);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      // eslint-disable-next-line no-fallthrough\n      case 'day':\n        if (valueAdjust < 7) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 7);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      // eslint-disable-next-line no-fallthrough\n      case 'week':\n        if (valueAdjust < 5) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 5);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      // eslint-disable-next-line no-fallthrough\n      case 'month':\n        if (valueAdjust < 24) {\n          return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n            count: valueAdjust,\n          });\n        }\n        valueAdjust = Math.round(valueAdjust / 24);\n      // eslint-disable-next-line no-fallthrough\n      case 'year':\n        return super.transform(`it.duration.${type}${valueAdjust === 1 ? '' : 's'}`, {\n          count: valueAdjust,\n        });\n      default:\n        return '';\n    }\n  }\n}\n","import { provideHttpClient } from '@angular/common/http';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer, Provider } from '@angular/core';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { provideTranslateService, TranslateService } from '@ngx-translate/core';\nimport { provideTranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { loadFonts } from 'bootstrap-italia';\nimport { DesignAngularKitConfig, IT_ASSET_BASE_PATH } from './interfaces/design-angular-kit-config';\n\n/**\n * Configures DesignAngularKit library\n * @param config the DesignAngularKit config\n */\nexport function provideDesignAngularKit(config?: DesignAngularKitConfig): EnvironmentProviders {\n  let assetBasePath = './bootstrap-italia';\n  if (config?.assetBasePath) {\n    assetBasePath = config.assetBasePath.endsWith('/')\n      ? config.assetBasePath.substring(0, config.assetBasePath.lastIndexOf('/'))\n      : config.assetBasePath;\n  }\n\n  const providers: Array<EnvironmentProviders | Provider> = [\n    {\n      provide: IT_ASSET_BASE_PATH,\n      useValue: assetBasePath,\n    },\n    provideAnimationsAsync(),\n    provideHttpClient(),\n  ];\n\n  if (config?.loadFont !== false) {\n    // Add provider to initialize the bootstrap-italia font\n    providers.push(\n      provideAppInitializer(() => {\n        const initializerFn = (() => {\n          return () => {\n            loadFonts(`${assetBasePath}/dist/fonts`);\n          };\n        })();\n        return initializerFn();\n      })\n    );\n  }\n\n  // Add provider to initialize the TranslateModule\n  const langPrefix = `${assetBasePath}/i18n/`;\n  const langSuffix = `.json`; // TODO: add ?v${version} to prevent cache loading on version change\n  providers.push(\n    // Design Angular Kit < 21\n    // ngx-translate <= 16\n    // importProvidersFrom(\n    //   TranslateModule.forRoot({\n    //     loader: config?.translateLoader?.(langPrefix, langSuffix) ?? {\n    //       provide: TranslateLoader,\n    //       useFactory: (http: HttpClient) => new TranslateHttpLoader(http, langPrefix, langSuffix),\n    //       deps: [HttpClient],\n    //     },\n    //     fallbackLang: 'it'\n    //   })\n    // )\n    // Design Angular Kit  >= 21\n    // ngx-translate >= 17\n    provideTranslateService({\n      loader: config?.translateLoader?.(langPrefix, langSuffix) ?? provideTranslateHttpLoader({ prefix: langPrefix, suffix: langSuffix }),\n      fallbackLang: 'it',\n    })\n  );\n\n  // Add provider to initialize library default languages\n  providers.push(\n    provideAppInitializer(() => {\n      const initializerFn = ((translateService: TranslateService) => {\n        return () => {\n          translateService.addLangs(['it', 'en']); // Adds 'it' and 'en' as available languages.\n        };\n      })(inject(TranslateService));\n      return initializerFn();\n    })\n  );\n\n  return makeEnvironmentProviders(providers);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ItVideoPlayerComponent } from './components/core/video-player/video-player.component';\nimport { ItAccordionComponent } from './components/core/accordion/accordion.component';\nimport { ItAlertComponent } from './components/core/alert/alert.component';\nimport { ItAvatarModule } from './components/core/avatar/avatar.module';\nimport { ItBadgeDirective } from './components/core/badge/badge.directive';\nimport { ItButtonDirective } from './components/core/button/button.directive';\nimport { ItCalloutComponent } from './components/core/callout/callout.component';\nimport { ItCardComponent } from './components/core/card/card.component';\nimport { ItCarouselModule } from './components/core/carousel/carousel.module';\nimport { ItChipComponent } from './components/core/chip/chip.component';\nimport { ItCollapseComponent } from './components/core/collapse/collapse.component';\nimport { ItDimmerModule } from './components/core/dimmer/dimmer.module';\nimport { ItDropdownModule } from './components/core/dropdown/dropdown.module';\nimport { ItForwardDirective } from './components/core/forward/forward.directive';\nimport { ItLinkComponent } from './components/core/link/link.component';\nimport { ItListModule } from './components/core/list/list.module';\nimport { ItModalComponent } from './components/core/modal/modal.component';\nimport { ItNotificationsComponent } from './components/core/notifications/notifications.component';\nimport { ItPaginationComponent } from './components/core/pagination/pagination.component';\nimport { ItPopoverDirective } from './components/core/popover/popover.directive';\nimport { ItProgressBarComponent } from './components/core/progress-bar/progress-bar.component';\nimport { ItProgressButtonComponent } from './components/core/progress-button/progress-button.component';\nimport { ItSpinnerComponent } from './components/core/spinner/spinner.component';\nimport { ItSteppersModule } from './components/core/steppers/steppers.module';\nimport { ItTabModule } from './components/core/tab/tab.module';\nimport { ItTableModule } from './components/core/table/table.module';\nimport { ItTimelineModule } from './components/core/timeline/timeline.module';\nimport { ItTooltipDirective } from './components/core/tooltip/tooltip.directive';\nimport { ItFormModule } from './components/form/form.module';\nimport { ItBackButtonComponent } from './components/navigation/back-button/back-button.component';\nimport { ItBackToTopComponent } from './components/navigation/back-to-top/back-to-top.component';\nimport { ItBreadcrumbsModule } from './components/navigation/breadcrumbs/breadcrumbs.module';\nimport { ItHeaderComponent } from './components/navigation/header/header.component';\nimport { ItFooterComponent } from './components/navigation/footer/footer.component';\nimport { ItMegamenuComponent } from './components/navigation/megamenu/megamenu.component';\nimport { ItNavBarModule } from './components/navigation/navbar/navbar.module';\nimport { ItNavscrollComponent } from './components/navigation/navscroll/navscroll.component';\nimport { ItSidebarComponent } from './components/navigation/sidebar/sidebar.component';\nimport { ItSkiplinkModule } from './components/navigation/skiplink/skiplink.module';\nimport { ItErrorPageComponent } from './components/utils/error-page/error-page.component';\nimport { ItIconComponent } from './components/utils/icon/icon.component';\nimport { ItLanguageSwitcherComponent } from './components/utils/language-switcher/language-switcher.component';\nimport { DesignAngularKitConfig } from './interfaces/design-angular-kit-config';\nimport { ItDateAgoPipe } from './pipes/date-ago.pipe';\nimport { ItDurationPipe } from './pipes/duration.pipe';\nimport { ItMarkMatchingTextPipe } from './pipes/mark-matching-text.pipe';\nimport { provideDesignAngularKit } from './provide-design-angular-kit';\n\n/**\n * Core components\n */\nconst core = [\n  ItAccordionComponent,\n  ItAlertComponent,\n  ItAvatarModule,\n  ItBadgeDirective,\n  ItButtonDirective,\n  ItCalloutComponent,\n  ItCardComponent,\n  ItCarouselModule,\n  ItChipComponent,\n  ItCollapseComponent,\n  ItDimmerModule,\n  ItDropdownModule,\n  ItForwardDirective,\n  ItLinkComponent,\n  ItListModule,\n  ItModalComponent,\n  ItNotificationsComponent,\n  ItPaginationComponent,\n  ItPopoverDirective,\n  ItProgressBarComponent,\n  ItProgressButtonComponent,\n  ItSpinnerComponent,\n  ItSteppersModule,\n  ItTabModule,\n  ItTableModule,\n  ItTooltipDirective,\n  ItTimelineModule,\n  ItVideoPlayerComponent,\n];\n\n/**\n * Navigation Components\n */\nconst navigation = [\n  ItBackButtonComponent,\n  ItBackToTopComponent,\n  ItBreadcrumbsModule,\n  ItHeaderComponent,\n  ItFooterComponent,\n  ItNavBarModule,\n  ItSidebarComponent,\n  ItMegamenuComponent,\n  ItSkiplinkModule,\n  ItNavscrollComponent,\n];\n\n/**\n * Utils components\n */\nconst utils = [ItErrorPageComponent, ItIconComponent, ItLanguageSwitcherComponent];\n\n/**\n * Library pipes\n */\nconst pipes = [ItDateAgoPipe, ItDurationPipe, ItMarkMatchingTextPipe];\n\nconst components = [\n  ...core, // Core components\n  ItFormModule, // Form components\n  ...navigation, // Navigation Components\n  ...utils, // Utils components\n  ...pipes, // Library pipes\n];\n\n@NgModule({\n  imports: components,\n  exports: components,\n})\nexport class DesignAngularKitModule {\n  public static forRoot(config?: DesignAngularKitConfig): ModuleWithProviders<DesignAngularKitModule> {\n    return {\n      ngModule: DesignAngularKitModule,\n      providers: [provideDesignAngularKit(config)],\n    };\n  }\n\n  public static forChild(): ModuleWithProviders<DesignAngularKitModule> {\n    return {\n      ngModule: DesignAngularKitModule,\n    };\n  }\n}\n","// See options: https://videojs.com/guides/options\n\ninterface Source {\n  src: string;\n  type: string;\n}\n\ninterface Caption {\n  lang: string;\n  src: string;\n  label: string;\n  default?: true;\n}\n\ninterface Chapter {\n  lang: string;\n  src: string;\n  label: string;\n  default?: true;\n}\n\ntype Sources = Array<Source>;\ntype Captions = Array<Caption>;\ntype Chapters = Array<Chapter>;\ntype Preload = 'auto' | 'none' | 'metadata' | '';\ntype EmbedSourceType = 'video/youtube';\ntype TAutoplay = 'muted' | 'play' | 'any';\n\ntype ItNativeVideoPlayerOptions = {\n  autoplay?: boolean | TAutoplay;\n  controls?: boolean;\n  fluid?: boolean;\n  loop?: boolean;\n  muted?: boolean;\n  poster?: string;\n  preload?: Preload;\n  sources: Sources;\n  captions?: Captions;\n  chapters?: Chapters;\n};\n\ntype ItEmbedVideoPlayerOptions = Omit<ItNativeVideoPlayerOptions, 'sources' | 'captions' | 'chapters'> & {\n  source: Source & { type: EmbedSourceType };\n};\n\ntype ItVideoPlayerOptions = ItNativeVideoPlayerOptions | ItEmbedVideoPlayerOptions;\n\ntype ItVideoPlayerConfig = ItVideoPlayerOptions & { tech: string };\n\nexport type { Caption, Chapter, ItEmbedVideoPlayerOptions, ItNativeVideoPlayerOptions, ItVideoPlayerConfig, ItVideoPlayerOptions, Source };\n","import { NgModule } from '@angular/core';\nimport { ItVideoPlayerComponent } from './video-player.component';\n\n@NgModule({\n  imports: [ItVideoPlayerComponent],\n  exports: [ItVideoPlayerComponent],\n})\nexport class ItVideoPlayerModule {}\n","//Qs\n//Aria hidden?\n//state management with service?\n//interface?\n\nexport interface TransferItem<ValueType> {\n  text: string;\n  value: ValueType;\n}\n\nexport type TransferItemSelection<ValueType> = Array<TransferItem<ValueType>>;\n\nexport type SourceType = 'source' | 'target';\n","export type IconSize = 'xs' | 'sm' | 'lg' | 'xl';\n\nexport type IconColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'light' | 'white';\n\nexport type IconName = (typeof IconNameArray)[number];\n\nexport const IconNameArray = [\n  'arrow-down',\n  'arrow-down-circle',\n  'arrow-down-triangle',\n  'arrow-left',\n  'arrow-left-circle',\n  'arrow-left-triangle',\n  'arrow-right',\n  'arrow-right-circle',\n  'arrow-right-triangle',\n  'arrow-up',\n  'arrow-up-circle',\n  'arrow-up-triangle',\n  'ban',\n  'bluesky',\n  'bookmark',\n  'box',\n  'burger',\n  'calendar',\n  'camera',\n  'car',\n  'card',\n  'cart',\n  'chart-line',\n  'check',\n  'check-circle',\n  'chevron-left',\n  'chevron-right',\n  'clip',\n  'clock',\n  'close',\n  'close-big',\n  'close-circle',\n  'code-circle',\n  'comment',\n  'copy',\n  'delete',\n  'download',\n  'error',\n  'exchange-circle',\n  'expand',\n  'external-link',\n  'flag',\n  'folder',\n  'fullscreen',\n  'funnel',\n  'hearing',\n  'help',\n  'help-circle',\n  'horn',\n  'inbox',\n  'info-circle',\n  'key',\n  'link',\n  'list',\n  'locked',\n  'logout',\n  'mail',\n  'mail-open',\n  'map-marker',\n  'map-marker-circle',\n  'map-marker-minus',\n  'map-marker-plus',\n  'maximize',\n  'maximize-alt',\n  'minimize',\n  'minus',\n  'minus-circle',\n  'more-actions',\n  'more-items',\n  'note',\n  'pa',\n  'password-invisible',\n  'password-visible',\n  'pencil',\n  'piattaforme',\n  'pin',\n  'plug',\n  'plus',\n  'plus-circle',\n  'presentation',\n  'print',\n  'refresh',\n  'restore',\n  'rss',\n  'rss-square',\n  'search',\n  'settings',\n  'share',\n  'sign',\n  'software',\n  'star-full',\n  'star-outline',\n  'telephone',\n  'tool',\n  'unlocked',\n  'upload',\n  'user',\n  'video',\n  'warning',\n  'warning-circle',\n  'wifi',\n  'zoom-in',\n  'zoom-out',\n\n  // Files\n  'file',\n  'files',\n  'file-audio',\n  'file-compressed',\n  'file-csv',\n  'file-docx',\n  'file-json',\n  'file-image',\n  'file-odp',\n  'file-ods',\n  'file-odt',\n  'file-pdf',\n  'file-pdf-ext',\n  'file-sheet',\n  'file-slides',\n  'file-ppt',\n  'file-signed',\n  'file-txt',\n  'file-video',\n  'file-xlsx',\n  'file-xml',\n\n  // Platforms\n  'behance',\n  'android-square',\n  'android',\n  'apple-square',\n  'apple',\n  'facebook',\n  'facebook-square',\n  'figma',\n  'figma-square',\n  'flickr',\n  'flickr-square',\n  'github',\n  'instagram',\n  'linkedin',\n  'linkedin-square',\n  'mastodon',\n  'mastodon-square',\n  'medium',\n  'medium-square',\n  'moodle',\n  'moodle-square',\n  'pinterest',\n  'pinterest-square',\n  'quora',\n  'quora-square',\n  'reddit',\n  'reddit-square',\n  'slack',\n  'slack-square',\n  'snapchat',\n  'snapchat-square',\n  'stackexchange',\n  'stackexchange-square',\n  'stackoverflow',\n  'stackoverflow-square',\n  'telegram',\n  'threads',\n  'threads-square',\n  'tiktok',\n  'tiktok-square',\n  'twitter',\n  'twitter-square',\n  'vimeo',\n  'vimeo-square',\n  'whatsapp',\n  'whatsapp-square',\n  'youtube',\n  'google',\n  'spotify',\n\n  // Extra\n  'designers-italia',\n  'team-digitale',\n] as const;\n","import { Observable, shareReplay, takeWhile, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport class ItDateUtils {\n  /**\n   * Add seconds to date\n   * @param date the date\n   * @param seconds seconds to add\n   */\n  public static addSeconds(date: Date, seconds: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setSeconds(date.getSeconds() + seconds);\n    return newDate;\n  }\n\n  /**\n   * Add minutes to date\n   * @param date the date\n   * @param minutes minutes to add\n   */\n  public static addMinutes(date: Date, minutes: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setMinutes(date.getMinutes() + minutes);\n    return newDate;\n  }\n\n  /**\n   * Add hours to date\n   * @param date the date\n   * @param hours hours to add\n   */\n  public static addHours(date: Date, hours: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setHours(date.getHours() + hours);\n    return newDate;\n  }\n\n  /**\n   * Add days to date\n   * @param date the date\n   * @param days days to add\n   */\n  public static addDays(date: Date, days: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setDate(date.getDate() + days);\n    return newDate;\n  }\n\n  /**\n   * Add years to date\n   * @param date the date\n   * @param months months to add\n   */\n  public static addMonths(date: Date, months: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setMonth(date.getMonth() + months);\n    return newDate;\n  }\n\n  /**\n   * Add years to date\n   * @param date the date\n   * @param years years to add\n   */\n  public static addYears(date: Date, years: number): Date {\n    const newDate = new Date(date.valueOf());\n    newDate.setFullYear(date.getFullYear() + years);\n    return newDate;\n  }\n\n  /**\n   * Calculate number of days between two date\n   * @param startDate\n   * @param endDate\n   * @param absolute return unsigned result\n   */\n  public static countDays(startDate: Date, endDate: Date, absolute: boolean = false): number {\n    const differenceInTime = endDate.getTime() - startDate.getTime();\n    const diff = absolute ? Math.abs(differenceInTime) : differenceInTime;\n    return Math.ceil(diff / (1000 * 3600 * 24));\n  }\n\n  /**\n   * Check if string is a date with iso format\n   * @param value the string\n   */\n  public static isIsoString(value: string | null): boolean {\n    if (!value || !/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(value)) {\n      return false;\n    }\n    const d = new Date(value);\n    return !!d && !isNaN(d.getTime()) && d.toISOString() === value;\n  }\n\n  /**\n   * Convert iso string to Date\n   * @param isoString the iso string\n   */\n  public static isoStringToDate(isoString: string | null): Date | null {\n    return isoString ? new Date(Date.parse(isoString)) : null;\n  }\n\n  /**\n   * Remove time from an iso date string\n   * @param isoString the iso string\n   */\n  public static isoStringRemoveTime(isoString: string): string {\n    let date = ItDateUtils.isoStringToDate(isoString);\n    if (!date) {\n      return isoString;\n    }\n    const offset = date.getTimezoneOffset();\n    date = new Date(date.getTime() - offset * 60 * 1000);\n    return date.toISOString().substring(0, isoString.indexOf('T'));\n  }\n\n  /**\n   * Set iso string hours to 0 and format correctly the date (consider timezone offset)\n   * @example '2024-03-04T23:00:00.000Z' -> '2024-03-05T00:00:00.000Z'\n   * @param isoString the iso string\n   */\n  public static isoStringSetZeroTime(isoString: string): string {\n    let date = ItDateUtils.isoStringToDate(isoString);\n    if (!date) {\n      return isoString;\n    }\n    const offset = date.getTimezoneOffset();\n    date = new Date(date.getTime() - offset * 60 * 1000);\n    date.setUTCHours(0, 0, 0, 0);\n    return date.toISOString();\n  }\n\n  /**\n   * Calculate the date time left and return the string format [d h m s]\n   * @param endDate\n   */\n  public static timeLeftString(endDate: Date): Observable<string> {\n    const endTime = endDate.getTime();\n    return timer(0, 1000).pipe(\n      map(() => Math.floor((endTime - new Date().getTime()) / 1000)),\n      takeWhile(delta => delta >= 0),\n      map(delta => {\n        const arrayResult: Array<string> = [];\n        const days = Math.floor(delta / 60 / 60 / 24);\n        if (days > 0) {\n          arrayResult.push(days + 'd');\n        }\n        delta -= days * 60 * 60 * 24;\n        const hours = Math.floor(delta / 60 / 60) % 24;\n        if (hours > 0) {\n          arrayResult.push(hours + 'h');\n        }\n\n        delta -= hours * 60 * 60;\n        const minutes = Math.floor(delta / 60) % 60;\n        arrayResult.push(minutes + 'm');\n\n        delta -= minutes * 60;\n        const seconds = delta % 60;\n        arrayResult.push(seconds + 's');\n\n        return arrayResult.join(' ');\n      }),\n      shareReplay(1)\n    );\n  }\n\n  /**\n   * Calculate the next day of week\n   * @param dayOfWeek Day of week 0=Sunday, 1=Monday...4=Thursday...\n   * @param hour the specif hour\n   * @param minute the specific minute\n   */\n  public static nextWeekDayAndTime(dayOfWeek: number, hour = 0, minute = 0): Date {\n    const now = new Date();\n    const result = new Date(now.getFullYear(), now.getMonth(), now.getDate() + ((7 + dayOfWeek - now.getDay()) % 7), hour, minute, 0, 0);\n\n    if (result < now) {\n      result.setDate(result.getDate() + 7);\n    }\n\n    return result;\n  }\n}\n","/*\n * Public API Surface of design-angular-kit\n */\n\nexport * from './lib/design-angular-kit.module';\nexport * from './lib/provide-design-angular-kit';\n\n// Core components\nexport * from './lib/components/core/accordion/accordion.component';\nexport * from './lib/components/core/alert/alert.component';\n\nexport * from './lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component';\nexport * from './lib/components/core/avatar/avatar-extra-text.directive';\nexport * from './lib/components/core/avatar/avatar-group/avatar-group.component';\nexport * from './lib/components/core/avatar/avatar-presence.directive';\nexport * from './lib/components/core/avatar/avatar-status.directive';\nexport * from './lib/components/core/avatar/avatar-wrapper.directive';\nexport * from './lib/components/core/avatar/avatar.directive';\nexport * from './lib/components/core/avatar/avatar.module';\n\nexport * from './lib/components/core/badge/badge.directive';\nexport * from './lib/components/core/button/button.directive';\nexport * from './lib/components/core/callout/callout.component';\nexport * from './lib/components/core/card/card.component';\n\nexport * from './lib/components/core/carousel/carousel-item/carousel-item.component';\nexport * from './lib/components/core/carousel/carousel.module';\nexport * from './lib/components/core/carousel/carousel/carousel.component';\n\nexport * from './lib/components/core/chip/chip.component';\nexport * from './lib/components/core/collapse/collapse.component';\n\nexport * from './lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component';\nexport * from './lib/components/core/dimmer/dimmer-icon/dimmer-icon.component';\nexport * from './lib/components/core/dimmer/dimmer.component';\nexport * from './lib/components/core/dimmer/dimmer.module';\n\nexport * from './lib/components/core/dropdown/dropdown-item/dropdown-item.component';\nexport * from './lib/components/core/dropdown/dropdown.module';\nexport * from './lib/components/core/dropdown/dropdown/dropdown.component';\n\nexport * from './lib/components/core/forward/forward.directive';\nexport * from './lib/components/core/link/link.component';\n\nexport * from './lib/components/core/list/list-item/list-item.component';\nexport * from './lib/components/core/list/list.module';\nexport * from './lib/components/core/list/list/list.component';\n\nexport * from './lib/components/core/modal/modal.component';\nexport * from './lib/components/core/notifications/notifications.component';\nexport * from './lib/components/core/pagination/pagination.component';\nexport * from './lib/components/core/popover/popover.directive';\nexport * from './lib/components/core/progress-bar/progress-bar.component';\nexport * from './lib/components/core/progress-button/progress-button.component';\nexport * from './lib/components/core/spinner/spinner.component';\n\nexport * from './lib/components/core/steppers/steppers-container/steppers-container.component';\nexport * from './lib/components/core/steppers/steppers-item/steppers-item.component';\nexport * from './lib/components/core/steppers/steppers.module';\n\nexport * from './lib/components/core/tab/tab-container/tab-container.component';\nexport * from './lib/components/core/tab/tab-item/tab-item.component';\nexport * from './lib/components/core/tab/tab.module';\n\nexport * from './lib/components/core/table/sort/sort-header/sort-header.component';\nexport * from './lib/components/core/table/sort/sort.directive';\nexport * from './lib/components/core/table/table.component';\nexport * from './lib/components/core/table/table.module';\n\nexport * from './lib/components/core/timeline/timeline-item/timeline-item.component';\nexport * from './lib/components/core/timeline/timeline.component';\nexport * from './lib/components/core/timeline/timeline.module';\n\nexport * from './lib/components/core/video-player/video-player.component';\nexport * from './lib/components/core/video-player/video-player.model';\nexport * from './lib/components/core/video-player/video-player.module';\n\nexport * from './lib/components/core/tooltip/tooltip.directive';\n\n// Forms components\nexport * from './lib/components/form/autocomplete/autocomplete.component';\nexport * from './lib/components/form/checkbox/checkbox.component';\nexport * from './lib/components/form/form.module';\nexport * from './lib/components/form/input/input.component';\nexport * from './lib/components/form/password-input/password-input.component';\nexport * from './lib/components/form/radio-button/radio-button.component';\nexport * from './lib/components/form/range/range.component';\nexport * from './lib/components/form/rating/rating.component';\nexport * from './lib/components/form/search/search.component';\nexport * from './lib/components/form/select/select.component';\nexport * from './lib/components/form/textarea/textarea.component';\nexport * from './lib/components/form/transfer/transfer.component';\nexport * from './lib/components/form/transfer/transfer.model';\nexport * from './lib/components/form/upload-drag-drop/upload-drag-drop.component';\nexport * from './lib/components/form/upload-file-list/upload-file-list.component';\n\n// Navigation components\nexport * from './lib/components/navigation/back-button/back-button.component';\nexport * from './lib/components/navigation/back-to-top/back-to-top.component';\n\nexport * from './lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component';\nexport * from './lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component';\nexport * from './lib/components/navigation/breadcrumbs/breadcrumbs.module';\n\nexport * from './lib/components/navigation/header/header.component';\nexport * from './lib/components/navigation/footer/footer.component';\nexport * from './lib/components/navigation/megamenu/megamenu.component';\n\nexport * from './lib/components/navigation/navbar/navbar-item/navbar-item.component';\nexport * from './lib/components/navigation/navbar/navbar.module';\nexport * from './lib/components/navigation/navbar/navbar/navbar.component';\n\nexport * from './lib/components/navigation/navscroll/navscroll.component';\nexport * from './lib/components/navigation/navscroll/navscroll.model';\n\nexport * from './lib/components/navigation/sidebar/sidebar.component';\n\nexport * from './lib/components/navigation/skiplink/skiplink-item/skiplink-item.component';\nexport * from './lib/components/navigation/skiplink/skiplink.module';\nexport * from './lib/components/navigation/skiplink/skiplink/skiplink.component';\n\n// Utils components\nexport * from './lib/components/utils/error-page/error-page.component';\nexport * from './lib/components/utils/icon/icon.component';\nexport * from './lib/components/utils/language-switcher/language-switcher.component';\n\n// Services\nexport * from './lib/services/notification/notification.service';\n\n// Pipes\nexport * from './lib/pipes/date-ago.pipe';\nexport * from './lib/pipes/duration.pipe';\nexport * from './lib/pipes/mark-matching-text.pipe';\n\n// Interfaces\nexport * from './lib/interfaces/design-angular-kit-config';\nexport * from './lib/interfaces/sortable-table';\n\nexport * from './lib/interfaces/core';\nexport * from './lib/interfaces/form';\nexport * from './lib/interfaces/icon';\nexport * from './lib/interfaces/utils';\n\n// Utils\nexport * from './lib/utils/date-utils';\nexport * from './lib/utils/file-utils';\nexport * from './lib/utils/regex';\n\n// Validators\nexport * from './lib/validators/it-validators';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ItDropdownComponent","BSNotification","i1","i2.ItDropdownItemComponent","i2","i1.ItNavBarComponent","i3","map"],"mappings":"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"}