design-angular-kit 19.0.0 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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.cookie.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.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","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 { 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","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 /**\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(private config: VideoPlayerConfigService) {\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;}',\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 }\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\n override ngAfterViewInit() {\n super.ngAfterViewInit();\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 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)!\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n} @else {\n <a [id]=\"id\" [class]=\"class\" [attr.href]=\"disabled ? null : href\">\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, Input } from '@angular/core';\nimport { IconName } from '../../../../interfaces/icon';\nimport { ItLinkComponent } from '../../link/link.component';\nimport { ItIconComponent } from '../../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { inputToBoolean } from '../../../../utils/coercion';\n\n@Component({\n selector: 'it-dropdown-item',\n templateUrl: './dropdown-item.component.html',\n styleUrls: ['./dropdown-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ItIconComponent, TranslateModule, ItLinkComponent],\n})\nexport class ItDropdownItemComponent extends ItLinkComponent {\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 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 setDark(dark: boolean): void {\n if (this.isDark !== dark) {\n this.isDark = dark;\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n","<li>\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</li>\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, Host, HostBinding, Input, Optional, QueryList } from '@angular/core';\nimport { ButtonColor, ButtonSize } from '../../../interfaces/core';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { ItProgressButtonComponent } from '../progress-button/progress-button.component';\nimport { inputToBoolean } from '../../../utils/coercion';\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 /**\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('disabled')\n disabled?: boolean;\n\n /**\n * The type attribute\n * @default button\n */\n @Input()\n @HostBinding('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 constructor(@Optional() @Host() private progressButtonComponent: ItProgressButtonComponent) {}\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 cards with short or \"preview\" content\n * @default false\n */\n @Input({ transform: inputToBoolean }) teaser?: boolean;\n\n /**\n * To create special cards\n * @default false\n */\n @Input({ transform: inputToBoolean }) special?: boolean;\n\n /**\n * Card with image\n * @default false\n */\n @Input({ transform: inputToBoolean }) hasImage?: boolean;\n\n /**\n * To add rounding effects\n * @default false\n */\n @Input({ transform: inputToBoolean }) rounded?: boolean;\n\n /**\n * To add shadow effects\n * @default false\n */\n @Input({ transform: inputToBoolean }) shadow?: boolean;\n\n /**\n * To add background and shadow\n * @default false\n */\n @Input({ transform: inputToBoolean }) background?: boolean;\n\n /**\n * To add bottom border\n * @default false\n */\n @Input({ transform: inputToBoolean }) borderBottom?: boolean;\n\n /**\n * To render a big card\n * @default false\n */\n @Input({ transform: inputToBoolean }) big?: 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","<ng-template #cardContent>\n <ng-content select=\"[beforeBody]\"></ng-content>\n\n <div class=\"card-body {{ bodyClass }}\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n@if (!special) {\n <div\n class=\"card {{ cardClass }}\"\n [class.card-img]=\"hasImage\"\n [class.card-teaser]=\"teaser\"\n [class.no-after]=\"hasImage\"\n [class.shadow]=\"shadow\"\n [class.card-bg]=\"background\"\n [class.card-big]=\"big\"\n [class.border-bottom-card]=\"borderBottom\"\n [class.rounded]=\"rounded\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </div>\n} @else {\n <a\n class=\"card special-card {{ cardClass }}\"\n [class.card-img]=\"hasImage\"\n [class.card-teaser]=\"teaser\"\n [class.shadow]=\"shadow\"\n [class.card-bg]=\"background\"\n [class.card-big]=\"big\"\n [class.no-after]=\"hasImage\"\n [class.border-bottom-card]=\"borderBottom\"\n [class.rounded]=\"rounded\">\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </a>\n}\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} 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 /**\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 constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\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})\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 } 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 /**\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 constructor(private elementRef: ElementRef) {}\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 { DOCUMENT } from '@angular/common';\nimport { Directive, HostListener, Inject, Input } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[itForward]',\n host: { class: 'forward' },\n})\nexport class ItForwardDirective {\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 constructor(@Inject(DOCUMENT) private document?: Document) {}\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 } from '@angular/core';\nimport { inputToBoolean } from '../../../../utils/coercion';\nimport { ItLinkComponent } from '../../link/link.component';\n\n@Component({\n selector: 'it-list-item',\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 {\n constructor(private elRef: ElementRef) {\n super();\n }\n\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","<li>\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\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</li>\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 } 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 /**\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 private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _notificationService: ItNotificationService\n ) {\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 { ControlContainer, ControlValueAccessor, FormControl, FormGroup, NgControl, ValidatorFn } from '@angular/forms';\nimport { Component, DoCheck, Input, OnInit, Optional, Self } from '@angular/core';\nimport { ItAbstractComponent } from './abstract.component';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inputToBoolean } from '../utils/coercion';\n\n@Component({\n template: '',\n standalone: false,\n})\nexport abstract class ItAbstractFormComponent<T = any> extends ItAbstractComponent implements OnInit, ControlValueAccessor, DoCheck {\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 protected readonly _translateService: TranslateService,\n @Self() @Optional() protected readonly _ngControl: NgControl,\n @Optional() protected fgd?: ControlContainer\n ) {\n super();\n this.control = new FormControl();\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.pristine || this._ngControl.touched === true);\n }\n return this.control.invalid && (!this.control.pristine || 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.pristine || this._ngControl.touched === true);\n }\n return this.control.valid && (!this.control.pristine || 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 (e) {\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]=\"id + '-description'\"\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]=\"id + '-description'\"\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)=\"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\" 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 class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"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 <it-dropdown-item href=\"#\" externalLink=\"true\" (click)=\"changerChange($event, value)\">\n {{ value }} / {{ 'it.core.page' | translate | lowercase }}\n </it-dropdown-item>\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 } 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 /**\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(private readonly _elementRef: ElementRef) {\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} 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 /**\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(private readonly _changeDetectorRef: ChangeDetectorRef) {\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 ? '- ' + ('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 {{ 'it.core.confirm' | translate }}\n </button>\n }\n </nav>\n }\n</div>\n\n<ng-template #checkIcon>\n <it-icon [labelWaria]=\"'it.core.confirmed' | translate\" name=\"check\" class=\"steppers-success\"></it-icon>\n <span class=\"visually-hidden\">{{ '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 {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n booleanAttribute,\n HostBinding,\n} 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 /** 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 constructor(\n @Optional()\n @Inject(IT_SORT_DEFAULT_OPTIONS)\n private _defaultOptions?: ItSortDefaultOptions\n ) {}\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 Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation,\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 /**\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 private readonly _changeDetectorRef: ChangeDetectorRef,\n // `SortDirective` is not optionally injected, but just asserted manually w/ better error.\n @Optional() public readonly _sort: ItSortDirective,\n @Optional() @Inject(IT_SORT_DEFAULT_OPTIONS) defaultOptions?: ItSortDefaultOptions\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 } 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 /**\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(private readonly _elementRef: ElementRef) {\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]=\"id + '-help'\"\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]=\"id + '-help'\"\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]=\"id + '-description'\"\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]=\"id + '-help'\" />\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]=\"id + '-description'\">\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 { ItAbstractComponent } from '../../../abstracts/abstract.component';\nimport { UploadFileListItem } from '../../../interfaces/form';\nimport { ItFileUtils } from '../../../utils/file-utils';\nimport { forkJoin, take, tap } from 'rxjs';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItTooltipDirective } from '../../core/tooltip/tooltip.directive';\nimport { ItProgressBarComponent } from '../../core/progress-bar/progress-bar.component';\nimport { inputToBoolean } from '../../../utils/coercion';\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 * 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 <it-icon name=\"upload\" size=\"sm\"></it-icon>\n <span>{{ 'it.form.upload' | translate }}</span>\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 } 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 constructor(private readonly domSanitizer: 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 protected get isActiveLabel(): boolean {\n const value = this.control.value;\n return this.forceShowLabel && (!!value || !!this.placeholder);\n }\n}\n","<div class=\"form-group\" [class.autocomplete-wrapper-big]=\"big\">\n @if (label) {\n <label [for]=\"id\" [class.visually-hidden]=\"!isActiveLabel\" [class.active]=\"isActiveLabel\">\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 /**\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(private readonly store: TransferStore<T>) {\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, Optional, Output, Self } 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 /**\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 constructor(\n @Self()\n @Optional()\n override readonly _ngControl: NgControl,\n override readonly _translateService: TranslateService,\n private readonly store: TransferStore<T>\n ) {\n super(_translateService, _ngControl);\n }\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 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 }\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\" [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 } 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 /**\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 constructor(public readonly _location: Location) {}\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} 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 /**\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 constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\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 Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\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 constructor() {\n this.loginClick = new EventEmitter<Event>();\n this.searchClick = new EventEmitter<Event>();\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 { delay, filter, map, tap, withLatestFrom } from 'rxjs';\nimport { ItNavscrollListItemsComponent } from './navscroll-list-items.component';\nimport { NavscrollItem } from './navscroll.model';\nimport { NavscrollStore } from './navscroll.store';\nimport { TranslateModule } from '@ngx-translate/core';\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 /**\n * Header of the Navscroll\n */\n @Input() header = '';\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', ['$event']) // 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', ['$event'])\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 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 <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 <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 </div>\n </div>\n </div>\n </nav>\n </div>\n </div>\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, Host, 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';\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(@Host() parent: ItSkiplinkComponent) {\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 } 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 /**\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(private readonly route: ActivatedRoute) {\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 { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { map, Observable, startWith } from 'rxjs';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AvailableLanguage } from '../../../interfaces/utils';\nimport { AsyncPipe } from '@angular/common';\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 /**\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(private readonly translateService: TranslateService) {\n this.currentLang$ = this.translateService.onLangChange.pipe(\n startWith({ lang: translateService.currentLang }),\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): 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, type: ItDurationPipeType): string {\n let valueAdjust = Number(value);\n if (isNaN(valueAdjust)) {\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 { HttpClient, provideHttpClient } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n importProvidersFrom,\n makeEnvironmentProviders,\n Provider,\n provideAppInitializer,\n inject,\n} from '@angular/core';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TranslateHttpLoader } 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 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 defaultLanguage: 'it',\n useDefaultLang: true,\n })\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.VideoPlayerConfigService","i1.ItDropdownComponent","i1.ItProgressButtonComponent","BSNotification","i1.ItNotificationService","i2","i1","i2.ItDropdownComponent","i3.ItDropdownItemComponent","i4","i1.TransferStore","i3.TransferStore","i2.ItNavBarComponent","i1.ItSkiplinkComponent","map"],"mappings":"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"}
1
+ {"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.cookie.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.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","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 { 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","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 /**\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(private config: VideoPlayerConfigService) {\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;}',\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 }\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\n override ngAfterViewInit() {\n super.ngAfterViewInit();\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 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)!\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n} @else {\n <a [id]=\"id\" [class]=\"class\" [attr.href]=\"disabled ? null : href\">\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, Host, HostBinding, Input, Optional, QueryList } from '@angular/core';\nimport { ButtonColor, ButtonSize } from '../../../interfaces/core';\nimport { ItIconComponent } from '../../utils/icon/icon.component';\nimport { ItProgressButtonComponent } from '../progress-button/progress-button.component';\nimport { inputToBoolean } from '../../../utils/coercion';\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 /**\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('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 constructor(@Optional() @Host() private progressButtonComponent: ItProgressButtonComponent) {}\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 * Shadow type\n * @default 'sm'\n */\n @Input() shadow: 'sm' | 'lg' | 'normal' | 'none' = 'sm';\n\n //'button' | 'reset' | 'submit' = 'button';\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 <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} 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 /**\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 constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\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})\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 } 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 /**\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 constructor(private elementRef: ElementRef) {}\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 { DOCUMENT } from '@angular/common';\nimport { Directive, HostListener, Inject, Input } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[itForward]',\n host: { class: 'forward' },\n})\nexport class ItForwardDirective {\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 constructor(@Inject(DOCUMENT) private document?: Document) {}\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 } 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 /**\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 private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _notificationService: ItNotificationService\n ) {\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 { ControlContainer, ControlValueAccessor, FormControl, FormGroup, NgControl, ValidatorFn } from '@angular/forms';\nimport { Component, DoCheck, Input, OnInit, Optional, Self } from '@angular/core';\nimport { ItAbstractComponent } from './abstract.component';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { inputToBoolean } from '../utils/coercion';\n\n@Component({\n template: '',\n standalone: false,\n})\nexport abstract class ItAbstractFormComponent<T = any> extends ItAbstractComponent implements OnInit, ControlValueAccessor, DoCheck {\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 protected readonly _translateService: TranslateService,\n @Self() @Optional() protected readonly _ngControl: NgControl,\n @Optional() protected fgd?: ControlContainer\n ) {\n super();\n this.control = new FormControl();\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.pristine || this._ngControl.touched === true);\n }\n return this.control.invalid && (!this.control.pristine || 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.pristine || this._ngControl.touched === true);\n }\n return this.control.valid && (!this.control.pristine || 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 (e) {\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]=\"id + '-description'\"\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]=\"id + '-description'\"\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)=\"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\" 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 class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"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 <it-dropdown-item href=\"#\" externalLink=\"true\" (click)=\"changerChange($event, value)\">\n {{ value }} / {{ 'it.core.page' | translate | lowercase }}\n </it-dropdown-item>\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 } 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 /**\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(private readonly _elementRef: ElementRef) {\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} 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 /**\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(private readonly _changeDetectorRef: ChangeDetectorRef) {\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 {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n booleanAttribute,\n HostBinding,\n} 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 /** 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 constructor(\n @Optional()\n @Inject(IT_SORT_DEFAULT_OPTIONS)\n private _defaultOptions?: ItSortDefaultOptions\n ) {}\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 Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation,\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 /**\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 private readonly _changeDetectorRef: ChangeDetectorRef,\n // `SortDirective` is not optionally injected, but just asserted manually w/ better error.\n @Optional() public readonly _sort: ItSortDirective,\n @Optional() @Inject(IT_SORT_DEFAULT_OPTIONS) defaultOptions?: ItSortDefaultOptions\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 } 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 /**\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(private readonly _elementRef: ElementRef) {\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]=\"id + '-help'\"\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]=\"id + '-description'\"\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]=\"id + '-help'\" />\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]=\"id + '-description'\">\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 } 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 constructor(private readonly domSanitizer: 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 /**\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(private readonly store: TransferStore<T>) {\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, Optional, Output, Self } 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 /**\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 constructor(\n @Self()\n @Optional()\n override readonly _ngControl: NgControl,\n override readonly _translateService: TranslateService,\n private readonly store: TransferStore<T>\n ) {\n super(_translateService, _ngControl);\n }\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 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 }\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\" [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 } 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 /**\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 constructor(public readonly _location: Location) {}\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} 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 /**\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 constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\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 Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\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 constructor() {\n this.loginClick = new EventEmitter<Event>();\n this.searchClick = new EventEmitter<Event>();\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 { delay, filter, map, tap, withLatestFrom } from 'rxjs';\nimport { ItNavscrollListItemsComponent } from './navscroll-list-items.component';\nimport { NavscrollItem } from './navscroll.model';\nimport { NavscrollStore } from './navscroll.store';\nimport { TranslateModule } from '@ngx-translate/core';\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 /**\n * Header of the Navscroll\n */\n @Input() header = '';\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', ['$event']) // 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', ['$event'])\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 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 <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 <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 </div>\n </div>\n </div>\n </nav>\n </div>\n </div>\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, Host, 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';\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(@Host() parent: ItSkiplinkComponent) {\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 } 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 /**\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(private readonly route: ActivatedRoute) {\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 { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { map, Observable, startWith } from 'rxjs';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AvailableLanguage } from '../../../interfaces/utils';\nimport { AsyncPipe } from '@angular/common';\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 /**\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(private readonly translateService: TranslateService) {\n this.currentLang$ = this.translateService.onLangChange.pipe(\n startWith({ lang: translateService.currentLang }),\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): 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, type: ItDurationPipeType): string {\n let valueAdjust = Number(value);\n if (isNaN(valueAdjust)) {\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 { HttpClient, provideHttpClient } from '@angular/common/http';\nimport {\n EnvironmentProviders,\n importProvidersFrom,\n makeEnvironmentProviders,\n Provider,\n provideAppInitializer,\n inject,\n} from '@angular/core';\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\nimport { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { TranslateHttpLoader } 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 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 defaultLanguage: 'it',\n useDefaultLang: true,\n })\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.VideoPlayerConfigService","i1.ItDropdownComponent","i1.ItProgressButtonComponent","BSNotification","i1.ItNotificationService","i2","i1","i2.ItDropdownComponent","i3.ItDropdownItemComponent","i4","i1.TransferStore","i3.TransferStore","i2.ItNavBarComponent","i1.ItSkiplinkComponent","map"],"mappings":"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"}