@ibragim-dev-org/ui-forge-library 1.0.8 → 1.0.9

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":"ibragim-dev-org-ui-forge-library.mjs","sources":["../../../projects/ui-forge-library/src/date/date.utils.ts","../../../projects/ui-forge-library/src/directives/auto-focus.directive.ts","../../../projects/ui-forge-library/src/services/lazy-image.service.ts","../../../projects/ui-forge-library/src/directives/lazy-img.directive.ts","../../../projects/ui-forge-library/src/directives/mask-gradient.directive.ts","../../../projects/ui-forge-library/src/directives/track-lifecycle.directive.ts","../../../projects/ui-forge-library/src/directives/sticky-observer.directive.ts","../../../projects/ui-forge-library/src/pipes/center-ellipsis.pipe.ts","../../../projects/ui-forge-library/src/helpers/aspect-ratio.helper.ts","../../../projects/ui-forge-library/src/helpers/string-to-color.helper.ts","../../../projects/ui-forge-library/src/icons/icons-library.service.ts","../../../projects/ui-forge-library/src/icons/icon/icon.component.ts","../../../projects/ui-forge-library/src/regex/regex.const.ts","../../../projects/ui-forge-library/src/services/country.service.ts","../../../projects/ui-forge-library/src/services/theme.service.ts","../../../projects/ui-forge-library/src/ui/ui-accordion/ui-accordion.component.ts","../../../projects/ui-forge-library/src/ui/ui-accordion/ui-accordion.component.html","../../../projects/ui-forge-library/src/ui/ui-alert-messages/ui-alert.class.ts","../../../projects/ui-forge-library/src/ui/ui-alert-messages/ui-alert-messages.service.ts","../../../projects/ui-forge-library/src/ui/ui-avatar/ui-avatar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-daily-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-monthly-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-yearly-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-code/ui-code.directive.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup.instance.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup.service.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup-container.directive.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/ui-dropdown.service.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/ui-dropdown-container.directive.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/hover-tip.directive.ts","../../../projects/ui-forge-library/src/ui/ui-image/ui-image.directive.ts","../../../projects/ui-forge-library/src/ui/ui-pagination/ui-pagination.directive.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup-image.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-button.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-select-buttons.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-copy-button.directive.ts","../../../projects/ui-forge-library/src/ui/ui-tabs/ui-tabs.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-field-base.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-checkbox.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-country.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-date.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-phone-number.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-select.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-sequence.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-time.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-validation-errors.directive.ts","../../../projects/ui-forge-library/src/public-api.ts","../../../projects/ui-forge-library/src/ibragim-dev-org-ui-forge-library.ts"],"sourcesContent":["export class DateUtils {\r\n public static parse(value: string, isUsaDateFormat: boolean = DateUtils.isUsaDateFormat()): Date | null {\r\n if (!value) return null;\r\n\r\n const parts: string[] = value.split('/');\r\n if (parts.length !== 3) return null;\r\n\r\n const [first, second, year] = parts.map(Number);\r\n\r\n const month: number = isUsaDateFormat ? first : second;\r\n const day: number = isUsaDateFormat ? second : first;\r\n\r\n if (!day || !month || !year) return null;\r\n if (month < 1 || month > 12) return null;\r\n if (day < 1 || day > 31) return null;\r\n\r\n return new Date(year, month - 1, day);\r\n }\r\n\r\n public static format(date: Date, isUsaDateFormat: boolean = false): string {\r\n const d: string = String(date.getDate()).padStart(2, '0');\r\n const m: string = String(date.getMonth() + 1).padStart(2, '0');\r\n const y: number = date.getFullYear();\r\n return isUsaDateFormat ? `${m}/${d}/${y}` : `${d}/${m}/${y}`;\r\n }\r\n\r\n public static isUsaDateFormat(): boolean {\r\n const localeFromIntl: string | undefined = Intl.DateTimeFormat().resolvedOptions().locale;\r\n const localeFromNavigator: string | undefined = typeof navigator !== 'undefined' ? navigator.language : undefined;\r\n\r\n const locale: string = (localeFromIntl || localeFromNavigator || '').toLowerCase();\r\n return locale === 'en-us' || locale.startsWith('en-us-');\r\n }\r\n\r\n public static setMonthSafe(date: Date, month: number): Date {\r\n const d: Date = new Date(date);\r\n\r\n const year: number = d.getFullYear();\r\n const day: number = d.getDate();\r\n\r\n const lastDay: number = new Date(year, month + 1, 0).getDate();\r\n\r\n d.setDate(Math.min(day, lastDay));\r\n d.setMonth(month);\r\n return d;\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, input, InputSignal } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appAutoFocus]',\r\n})\r\nexport class AutoFocusDirective {\r\n public $shouldFocus: InputSignal<boolean> = input.required({ debugName: 'appAutoFocus' });\r\n\r\n public constructor(private el: ElementRef<HTMLInputElement>) {\r\n effect((): void => {\r\n if (this.$shouldFocus()) {\r\n this.el.nativeElement.focus();\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LazyImageService {\r\n private observer?: IntersectionObserver;\r\n\r\n public getObserver(): IntersectionObserver {\r\n if (!this.observer) {\r\n this.observer = new IntersectionObserver((entries): void => {\r\n entries.forEach((entry): void => {\r\n const img: HTMLImageElement = entry.target as HTMLImageElement;\r\n\r\n if (entry.isIntersecting) {\r\n const src: string | null = img.getAttribute('data-src');\r\n if (src) img.src = src;\r\n\r\n this.observer?.unobserve(img);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return this.observer;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\n\r\nimport { LazyImageService } from '../services/lazy-image.service';\r\n\r\n@Directive({\r\n selector: 'img[lazySrc]',\r\n})\r\nexport class LazyImgDirective implements OnInit, OnDestroy {\r\n @Input() public lazySrc!: string;\r\n\r\n @Output() public loadError: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private observer!: IntersectionObserver;\r\n\r\n public constructor(\r\n private readonly el: ElementRef<HTMLImageElement>,\r\n private readonly lazyService: LazyImageService,\r\n ) {}\r\n\r\n private onError(): void {\r\n this.loadError.emit();\r\n }\r\n\r\n public ngOnInit(): void {\r\n const img: HTMLImageElement = this.el.nativeElement;\r\n\r\n if (!this.lazySrc || this.lazySrc.trim().length === 0) {\r\n this.loadError.emit();\r\n return;\r\n }\r\n\r\n img.addEventListener('error', this.onError);\r\n\r\n img.setAttribute('data-src', this.lazySrc);\r\n\r\n this.observer = this.lazyService.getObserver();\r\n this.observer.observe(img);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n const img: HTMLImageElement = this.el.nativeElement;\r\n\r\n if (this.observer) {\r\n this.observer.unobserve(img);\r\n }\r\n\r\n img.removeEventListener('error', this.onError);\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n PLATFORM_ID,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime, fromEvent, tap, asyncScheduler } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[markGradientDirective]',\r\n})\r\nexport class MaskGradientDirective implements AfterViewInit {\r\n public id: InputSignal<string> = input.required();\r\n\r\n public constructor(\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly destroyRef: DestroyRef,\r\n private readonly renderer: Renderer2,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {}\r\n\r\n public ngAfterViewInit(): void {\r\n fromEvent(this.elementRef.nativeElement, 'scroll')\r\n .pipe(\r\n tap((): void => {\r\n this.setGradient();\r\n }),\r\n debounceTime(300),\r\n tap((): void => {\r\n const el: HTMLElement = this.elementRef.nativeElement;\r\n const scrollTop: number = el.scrollTop;\r\n if (isPlatformBrowser(this.platformId)) {\r\n sessionStorage.setItem(this.id() + 'scroll-position', scrollTop.toString());\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const scrollPosition: number = parseInt(sessionStorage.getItem(this.id() + 'scroll-position') ?? '0');\r\n this.elementRef.nativeElement.scroll({ behavior: 'instant', top: scrollPosition });\r\n }\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n asyncScheduler.schedule((): void => {\r\n this.setGradient();\r\n });\r\n });\r\n resizeObserver.observe(this.elementRef.nativeElement);\r\n this.destroyRef.onDestroy((): void => resizeObserver.disconnect());\r\n }\r\n }\r\n\r\n private setGradient(): void {\r\n const scrollTop: number = this.elementRef.nativeElement.scrollTop;\r\n const scrollHeight: number = this.elementRef.nativeElement.scrollHeight;\r\n const clientHeight: number = this.elementRef.nativeElement.clientHeight;\r\n\r\n const atTop: boolean = scrollTop < 10;\r\n const atBottom: boolean = scrollTop + clientHeight >= scrollHeight - 10;\r\n\r\n let gradient: string = '';\r\n\r\n if (atTop) {\r\n gradient = `linear-gradient(0deg, rgb(0 0 0 / 0%) 0%, rgb(0 0 0 / 100%) 10%)`;\r\n } else if (atBottom) {\r\n gradient = `linear-gradient(0deg, rgb(0 0 0 / 100%) 90%, rgb(0 0 0 / 0%) 100%)`;\r\n } else {\r\n gradient = `linear-gradient(\r\n 0deg,\r\n rgb(0 0 0 / 0%) 0%,\r\n rgb(0 0 0 / 100%) 10%,\r\n rgb(0 0 0 / 100%) 90%,\r\n rgb(0 0 0 / 0%) 100%\r\n )`;\r\n }\r\n\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'mask-image', gradient);\r\n this.renderer.setStyle(this.elementRef.nativeElement, '-webkit-mask-image', gradient);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n DoCheck,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n OnDestroy,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[trackLifecycle]',\r\n})\r\nexport class TrackLifecycleDirective\r\n implements\r\n OnInit,\r\n OnChanges,\r\n DoCheck,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n OnDestroy\r\n{\r\n @Output() public onConstructed: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onChanges: EventEmitter<SimpleChanges> = new EventEmitter<SimpleChanges>();\r\n @Output() public onInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onDoCheck: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterContentInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterContentChecked: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterViewInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterViewChecked: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onDestroy: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public constructor() {\r\n this.onConstructed.emit();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.onChanges.emit(changes);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.onInit.emit();\r\n }\r\n\r\n public ngDoCheck(): void {\r\n this.onDoCheck.emit();\r\n }\r\n\r\n public ngAfterContentInit(): void {\r\n this.onAfterContentInit.emit();\r\n }\r\n\r\n public ngAfterContentChecked(): void {\r\n this.onAfterContentChecked.emit();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.onAfterViewInit.emit();\r\n }\r\n public ngAfterViewChecked(): void {\r\n this.onAfterViewChecked.emit();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.onDestroy.emit();\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appStickyObserver]',\r\n})\r\nexport class StickyObserverDirective implements AfterViewInit, OnDestroy {\r\n private observer!: IntersectionObserver;\r\n private sentinel!: HTMLDivElement;\r\n\r\n public constructor(\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n protected readonly renderer: Renderer2,\r\n ) {}\r\n\r\n public ngAfterViewInit(): void {\r\n const stickyEl: HTMLElement = this.elementRef.nativeElement;\r\n\r\n this.sentinel = this.renderer.createElement('div') as HTMLDivElement;\r\n this.renderer.setStyle(this.sentinel, 'height', '1px');\r\n this.renderer.setStyle(this.sentinel, 'margin-top', '-1px');\r\n this.renderer.setStyle(this.sentinel, 'pointer-events', 'none');\r\n this.renderer.setStyle(this.sentinel, 'opacity', '0');\r\n\r\n const parent: HTMLElement = stickyEl.parentElement!;\r\n parent.insertBefore(this.sentinel, stickyEl);\r\n\r\n this.observer = new IntersectionObserver(\r\n ([entry]) => {\r\n const isStuck = entry.boundingClientRect.top < 0;\r\n if (isStuck) {\r\n this.renderer.addClass(stickyEl, 'sticked');\r\n } else {\r\n this.renderer.removeClass(stickyEl, 'sticked');\r\n }\r\n },\r\n { threshold: [1] },\r\n );\r\n\r\n this.observer.observe(this.sentinel);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.observer?.disconnect();\r\n this.sentinel?.remove();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'centerEllipsis',\r\n})\r\nexport class CenterEllipsisPipe implements PipeTransform {\r\n public transform(value: string, visibleStart = 4, visibleEnd = 4): string {\r\n if (!value) {\r\n return '';\r\n }\r\n if (value.length <= visibleStart + visibleEnd) {\r\n return value;\r\n }\r\n\r\n const start = value.slice(0, visibleStart);\r\n const end = value.slice(-visibleEnd);\r\n\r\n return `${start}...${end}`;\r\n }\r\n}\r\n","export function getAspectRatioFit(\r\n maxWidth: number,\r\n maxHeight: number,\r\n srcWidth?: number | null,\r\n srcHeight?: number | null,\r\n): { width: number; height: number } {\r\n if (srcWidth && srcHeight) {\r\n const ratio: number = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\r\n return { width: srcWidth * ratio, height: srcHeight * ratio };\r\n }\r\n return { width: maxWidth, height: maxHeight };\r\n}\r\n","export function stringToHslColor(string: string, saturation: number = 100, lightness: number = 75): string {\r\n let hash: number = 0;\r\n for (let i: number = 0; i < string.length; i++) {\r\n hash = string.charCodeAt(i) + ((hash << 5) - hash);\r\n hash = hash & hash;\r\n }\r\n return `hsl(${hash % 360}, ${saturation}%, ${lightness}%)`;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AppIcon, AppIconName, RawSVG } from './icon.type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppIconsLibrary {\r\n private icons: Map<string, RawSVG> = new Map<AppIconName, RawSVG>();\r\n\r\n public addIcon(icon: RawSVG, name: AppIconName): void {\r\n this.icons.set(\r\n name,\r\n icon\r\n .replace('<svg', '<svg class=\"svg-icon\" ')\r\n .replace(/data-fill/g, 'fill')\r\n .replace(/data-stroke/g, 'stroke') as RawSVG,\r\n );\r\n }\r\n\r\n public getIcon(name: AppIconName): AppIcon | undefined {\r\n const icon: RawSVG | undefined = this.icons.get(name);\r\n if (!icon) {\r\n console.error(`${name} icon was not found`);\r\n return undefined;\r\n }\r\n return { svgData: icon, name };\r\n }\r\n}\r\n","import {\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n SecurityContext,\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { AppIcon, AppIconName } from '../icon.type';\r\nimport { AppIconsLibrary } from '../icons-library.service';\r\n\r\n@Component({\r\n selector: 'app-icon',\r\n template: ``,\r\n styleUrls: ['./icon.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true })\r\n public set icon(i: AppIconName | AppIcon | undefined) {\r\n if (i !== this.iconApp) {\r\n i = i || '';\r\n const prev: string | AppIcon = this.iconApp;\r\n this.iconApp = i;\r\n this.updateIcon(i, prev);\r\n }\r\n }\r\n\r\n private iconApp: AppIconName | AppIcon = '';\r\n\r\n public constructor(\r\n public elementRef: ElementRef<HTMLElement>,\r\n private icons: AppIconsLibrary,\r\n private renderer: Renderer2,\r\n private sanitizer: DomSanitizer,\r\n @Attribute('no-scaling') public noScaling: string,\r\n @Attribute('stroke-diff') public strokeDiff: string,\r\n ) {}\r\n\r\n private updateIcon(current: AppIconName | AppIcon, previous: AppIconName | AppIcon): void {\r\n let rawSvg: string;\r\n let currentClass: string = '';\r\n const previousClass: string = typeof previous === 'object' ? previous.name : previous;\r\n if (typeof current === 'object') {\r\n rawSvg = current.svgData;\r\n currentClass = current.name;\r\n } else {\r\n currentClass = current;\r\n rawSvg = this.icons.getIcon(current)?.svgData || '';\r\n }\r\n if (!rawSvg) {\r\n return;\r\n }\r\n rawSvg = rawSvg\r\n .replace('<svg', '<svg class=\"svg-icon\" ')\r\n .replace(/data-fill/g, 'fill')\r\n .replace(/data-stroke/g, 'stroke');\r\n if (this.noScaling) {\r\n rawSvg = rawSvg.replace(/stroke-width=\"/g, ' vector-effect=\"non-scaling-stroke\" stroke-width=\"');\r\n } else if (this.strokeDiff) {\r\n rawSvg = this.adjustStrokeWidth(rawSvg, +this.strokeDiff);\r\n }\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', rawSvg);\r\n this.renderer.addClass(this.elementRef.nativeElement, 'icon');\r\n if (previousClass) {\r\n this.renderer.removeClass(this.elementRef.nativeElement, previousClass);\r\n }\r\n if (currentClass) {\r\n this.renderer.addClass(this.elementRef.nativeElement, currentClass);\r\n }\r\n }\r\n\r\n private adjustStrokeWidth(svgString: string, strokeDiff: number): string {\r\n return svgString.replace(/stroke-width=\"([\\d.]+)\"/g, (_: string, n: string): string => {\r\n const updatedWidth: number = parseFloat(n) + strokeDiff;\r\n return `stroke-width=\"${updatedWidth}\"`;\r\n });\r\n }\r\n}\r\n","export const HAS_NUMBER: RegExp = /\\d/;\r\nexport const HAS_CAPITAL_CASE: RegExp = /[A-Z]/;\r\nexport const HAS_SMALL_CASE: RegExp = /[a-z]/;\r\nexport const HAS_SPECIAL_CHARTERS: RegExp = /[ !@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/;\r\nexport const MIN_LENGTH: RegExp = /[A-Za-z\\d/!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]{8,30}$/;\r\n\r\nexport const EMAIL: RegExp = /(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,9})/;\r\n","import { PhoneNumberUtil, AsYouTypeFormatter } from 'google-libphonenumber';\r\n\r\nexport interface CountryData {\r\n code: string;\r\n name: string;\r\n iso: string;\r\n phonePrefix: string;\r\n}\r\n\r\nexport const emptyCountry: CountryData = {\r\n code: '',\r\n name: '',\r\n iso: '',\r\n phonePrefix: '',\r\n};\r\n\r\nexport class CountryService {\r\n private static readonly phoneUtil: PhoneNumberUtil = PhoneNumberUtil.getInstance();\r\n\r\n private static readonly flagOverrides: Record<string, string> = {\r\n AC: 'sh-ac',\r\n TA: 'sh-ta',\r\n XK: 'xk',\r\n EA: 'es-ce',\r\n IC: 'es-cn',\r\n CP: 'fr-cp',\r\n DG: 'dg',\r\n GG: 'gg',\r\n JE: 'je',\r\n IM: 'im',\r\n CW: 'cw',\r\n SX: 'sx',\r\n MF: 'mf',\r\n };\r\n\r\n private static readonly supportedRegions: libphonenumber.RegionCode[] =\r\n CountryService.phoneUtil.getSupportedRegions();\r\n\r\n private static readonly regionNames: Intl.DisplayNames = new Intl.DisplayNames(['en'], { type: 'region' });\r\n\r\n private static readonly allCountries: CountryData[] = CountryService.supportedRegions.map((code): CountryData => {\r\n const name: string = CountryService.regionNames.of(code) ?? '';\r\n\r\n const isoCode: string = (CountryService.flagOverrides[code] ?? code).toLowerCase();\r\n const phonePrefix: string = '+' + CountryService.phoneUtil.getCountryCodeForRegion(code);\r\n\r\n return {\r\n code,\r\n name: name,\r\n iso: isoCode,\r\n phonePrefix: phonePrefix,\r\n };\r\n });\r\n\r\n public static readonly countries: CountryData[] = CountryService.allCountries;\r\n\r\n public static formatPhoneNumber(raw: string, countryCode: string): string {\r\n const formatter: AsYouTypeFormatter = new AsYouTypeFormatter(countryCode);\r\n let formatted: string = '';\r\n for (const digit of raw) {\r\n formatted = formatter.inputDigit(digit);\r\n }\r\n return formatted;\r\n }\r\n\r\n public static getCountryByCode(code: string): CountryData | undefined {\r\n return CountryService.countries.find((v): boolean => v.code === code.toUpperCase());\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\n/**\r\n * ThemeService<T>\r\n * A generic, type-safe service for managing and applying color themes.\r\n *\r\n * @template T - The shape of a theme object, typically defined by a shared interface.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ThemeService<T extends object, K extends string> {\r\n private themes: Record<K, T> = {} as Record<K, T>;\r\n\r\n private activeTheme!: K;\r\n\r\n public constructor(@Inject(DOCUMENT) private document: Document) {}\r\n\r\n /**\r\n * Initializes the theme system with a map of named themes and sets the active theme.\r\n *\r\n * @param themes - A record of theme names mapped to theme objects\r\n * @param activeTheme - The name of the theme to activate initially\r\n */\r\n public init(themes: Record<K, T>, activeTheme: K): void {\r\n this.themes = themes;\r\n this.activeTheme = activeTheme;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Returns the name of the currently active theme.\r\n *\r\n * @returns The active theme name\r\n */\r\n public getActive(): K {\r\n return this.activeTheme;\r\n }\r\n\r\n /**\r\n * Sets a new active theme by name and applies its styles.\r\n *\r\n * @param name - The name of the theme to activate\r\n */\r\n public set(name: K): void {\r\n this.activeTheme = name;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Applies the current theme's styles to the document body using CSS variables.\r\n */\r\n private update(): void {\r\n const theme: T = this.themes[this.activeTheme];\r\n Object.entries(theme).forEach(([key, value]): void => {\r\n this.document.body.style.setProperty(key, value);\r\n });\r\n }\r\n}\r\n","import { isPlatformBrowser, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Inject, PLATFORM_ID } from '@angular/core';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n Signal,\r\n signal,\r\n untracked,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { timer, tap, asyncScheduler, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-ui-accordion',\r\n standalone: true,\r\n imports: [NgStyle],\r\n templateUrl: './ui-accordion.component.html',\r\n styleUrl: './ui-accordion.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UiAccordionComponent implements AfterViewInit {\r\n public readonly $isOpen: ModelSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly $durationMs: InputSignal<number> = input<number>(300);\r\n\r\n protected readonly $contentHeight: WritableSignal<string> = signal<string>('0');\r\n\r\n protected readonly $transition: Signal<string> = computed<string>((): string => `all ${this.$durationMs()}ms linear`);\r\n\r\n protected readonly $overflow: WritableSignal<'visible' | 'hidden'> = signal('hidden');\r\n\r\n private readonly $content: Signal<ElementRef<HTMLDivElement> | undefined> =\r\n viewChild<ElementRef<HTMLDivElement>>('container');\r\n\r\n private resizeDebounceTimer: Subscription = new Subscription();\r\n\r\n public constructor(\r\n private readonly destroyRef: DestroyRef,\r\n @Inject(PLATFORM_ID) private readonly platformId: object,\r\n ) {\r\n effect((): void => {\r\n untracked((): void => {\r\n timer(this.$durationMs())\r\n .pipe(\r\n tap((): void => {\r\n this.$overflow.set(this.$isOpen() ? 'visible' : 'hidden');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.setSize();\r\n\r\n const content: ElementRef<HTMLDivElement> | undefined = this.$content();\r\n if (content && isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n this.resizeDebounceTimer.unsubscribe();\r\n\r\n this.resizeDebounceTimer = asyncScheduler.schedule((): void => {\r\n this.setSize();\r\n });\r\n });\r\n resizeObserver.observe(content.nativeElement);\r\n this.destroyRef.onDestroy((): void => resizeObserver.disconnect());\r\n }\r\n }\r\n\r\n private setSize(): void {\r\n const content: ElementRef<HTMLDivElement> | undefined = this.$content();\r\n if (content) {\r\n const height: number = content.nativeElement.offsetHeight;\r\n this.$contentHeight.set(height + 'px');\r\n }\r\n }\r\n}\r\n","<button class=\"button\" (click)=\"$isOpen.set(!$isOpen())\">\r\n <ng-content select=\"[button]\"></ng-content>\r\n</button>\r\n\r\n<div\r\n class=\"content\"\r\n [ngStyle]=\"{\r\n maxHeight: $isOpen() ? $contentHeight() : 0 + 'px',\r\n transition: $transition(),\r\n overflow: $overflow(),\r\n }\"\r\n>\r\n <div #container>\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { ComponentType } from '@angular/cdk/overlay';\r\nimport { ulid } from 'ulid';\r\n\r\nexport enum AlertType {\r\n SUCCESS = 'success',\r\n ERROR = 'error',\r\n INFO = 'information',\r\n WARNING = 'warning',\r\n CUSTOM = 'custom',\r\n}\r\nexport class Alert {\r\n public id: string = ulid();\r\n public type: string = AlertType.SUCCESS;\r\n public title: string = '';\r\n public message: string = '';\r\n public icon: string = '';\r\n public component?: ComponentType<unknown>;\r\n public componentInputs?: {\r\n [P in keyof ComponentType<unknown>]?: ComponentType<unknown>[P];\r\n };\r\n\r\n public constructor(init?: Partial<Alert>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport interface AlertParams {\r\n title?: string;\r\n message: string;\r\n}\r\n","import { GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { Injectable, signal, WritableSignal } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { asyncScheduler, filter, Observable, scheduled, switchMap, take, tap, timer } from 'rxjs';\r\n\r\nimport { Alert, AlertParams, AlertType } from './ui-alert.class';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiAlertMessagesService {\r\n public readonly $alerts: WritableSignal<Alert[]> = signal<Alert[]>([]);\r\n private overlayRef?: OverlayRef;\r\n private component: ComponentType<unknown> | null = null;\r\n\r\n public constructor(\r\n private readonly overlay: Overlay,\r\n private router: Router,\r\n ) {}\r\n\r\n public success(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Success!',\r\n type: AlertType.SUCCESS,\r\n message: params.message,\r\n icon: 'success.svg',\r\n }),\r\n );\r\n }\r\n\r\n public error(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Error!',\r\n type: AlertType.ERROR,\r\n message: params.message,\r\n icon: 'error.svg',\r\n }),\r\n );\r\n }\r\n\r\n public information(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Information!',\r\n type: AlertType.INFO,\r\n message: params.message,\r\n icon: 'info.svg',\r\n }),\r\n );\r\n }\r\n\r\n public warning(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Warning!',\r\n type: AlertType.WARNING,\r\n message: params.message,\r\n icon: 'warning.svg',\r\n }),\r\n );\r\n }\r\n\r\n public remove(alert: Alert): void {\r\n timer(250)\r\n .pipe(\r\n tap((): void => {\r\n this.$alerts.set(this.$alerts().filter((x: Alert): boolean => x !== alert));\r\n }),\r\n switchMap((): Observable<number> => {\r\n if (!this.$alerts().length) {\r\n return timer(250).pipe(\r\n tap((): void => {\r\n this.overlayRef?.detach();\r\n }),\r\n );\r\n }\r\n\r\n return scheduled([0], asyncScheduler);\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public removeAll(): void {\r\n this.$alerts.set([]);\r\n timer(250)\r\n .pipe(\r\n tap((): void => {\r\n this.overlayRef?.detach();\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public init(component: ComponentType<unknown>): void {\r\n this.component = component;\r\n\r\n const strategy: GlobalPositionStrategy = this.overlay.position().global();\r\n\r\n const config: OverlayConfig = new OverlayConfig({\r\n positionStrategy: strategy,\r\n });\r\n this.overlayRef = this.overlay.create(config);\r\n\r\n this.overlayRef.attach(new ComponentPortal(this.component));\r\n }\r\n\r\n protected open(alert: Alert): void {\r\n if (!this.component) {\r\n throw new Error(\r\n '[UiAlertMessagesService] AlertMessagesComponent has not been initialized. ' +\r\n 'Call `init(AlertMessagesComponent)` during application startup (e.g. in `app.config.ts`) to enable alert rendering.',\r\n );\r\n }\r\n\r\n if (!this.$alerts().length) {\r\n this.init(this.component);\r\n }\r\n\r\n this.router.events\r\n .pipe(\r\n filter((v): v is NavigationEnd => v instanceof NavigationEnd),\r\n tap((): void => {\r\n this.removeAll();\r\n }),\r\n take(1),\r\n )\r\n .subscribe();\r\n\r\n this.$alerts.set([...this.$alerts(), alert]);\r\n\r\n timer(10000)\r\n .pipe(\r\n tap((): void => {\r\n this.remove(alert);\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n","import { Directive, effect, input, InputSignal, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { stringToHslColor } from '../../helpers/string-to-color.helper';\r\n\r\ntype AvatarStyles = 'small' | 'medium' | 'large' | 'rounded';\r\n\r\n@Directive({\r\n selector: 'app-ui-avatar',\r\n})\r\nexport abstract class UiAvatarDirective {\r\n public readonly $class: InputSignal<AvatarStyles[]> = input.required<AvatarStyles[]>();\r\n public readonly $src: InputSignal<string> = input.required();\r\n public readonly $acronym: InputSignal<string> = input.required();\r\n\r\n protected readonly $backgroundColor: WritableSignal<string> = signal('');\r\n protected readonly $textColor: WritableSignal<string> = signal('');\r\n protected readonly $text: WritableSignal<string> = signal('');\r\n protected readonly $canShowAvatar: WritableSignal<boolean> = signal(true);\r\n\r\n public constructor() {\r\n effect((): void => {\r\n let acronym: string = '';\r\n this.$acronym()\r\n .split(' ')\r\n .forEach((v: string): void => {\r\n acronym = acronym + v[0];\r\n });\r\n this.$backgroundColor.set(stringToHslColor(this.$acronym(), 100, 85));\r\n this.$textColor.set(stringToHslColor(this.$acronym(), 100, 35));\r\n this.$text.set(acronym);\r\n });\r\n }\r\n}\r\n","import {\r\n computed,\r\n Directive,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n Signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { DateUtils } from '../../date/date.utils';\r\nimport { CalendarDay } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-daily-calendar',\r\n})\r\nexport class UiDailyCalendarDirective {\r\n private readonly weekDaysEuropean: string[] = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\r\n private readonly weekDaysUsa: string[] = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\n public readonly $isRangeSelection: InputSignal<boolean> = input(false);\r\n\r\n public get weekDays(): string[] {\r\n return this.isUsaDateFormat() ? this.weekDaysUsa : this.weekDaysEuropean;\r\n }\r\n\r\n public readonly $dateStart: ModelSignal<Date | null> = model<Date | null>(null);\r\n public readonly $dateEnd: ModelSignal<Date | null> = model<Date | null>(null);\r\n\r\n public readonly $hoverDate: WritableSignal<Date | null> = signal<Date | null>(null);\r\n\r\n public readonly $currentMonth: ModelSignal<number> = model.required();\r\n public readonly $currentYear: ModelSignal<number> = model.required();\r\n\r\n public readonly $onRangeSelect: OutputEmitterRef<{ start: Date | null; end: Date | null }> = output<{\r\n start: Date | null;\r\n end: Date | null;\r\n }>();\r\n\r\n public readonly $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n protected readonly $calendarDays: Signal<CalendarDay[]> = computed((): CalendarDay[] => {\r\n const year: number = this.$currentYear();\r\n const month: number = this.$currentMonth();\r\n return this.generateCalendar(month, year);\r\n });\r\n\r\n private generateCalendar(month: number, year: number): CalendarDay[] {\r\n const firstDayOfMonth: Date = new Date(year, month, 1);\r\n const nativeStartDayOfWeek: number = firstDayOfMonth.getDay();\r\n const startDayOfWeek: number = this.isUsaDateFormat()\r\n ? nativeStartDayOfWeek\r\n : nativeStartDayOfWeek === 0\r\n ? 6\r\n : nativeStartDayOfWeek - 1;\r\n\r\n const daysInMonth: number = new Date(year, month + 1, 0).getDate();\r\n const daysInPrevMonth: number = new Date(year, month, 0).getDate();\r\n\r\n const days: CalendarDay[] = [];\r\n\r\n for (let i: number = startDayOfWeek - 1; i >= 0; i--) {\r\n const day: number = daysInPrevMonth - i;\r\n const newDate: Date = new Date(year, month - 1, day);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: false,\r\n });\r\n }\r\n\r\n for (let d: number = 1; d <= daysInMonth; d++) {\r\n const newDate: Date = new Date(year, month, d);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: true,\r\n });\r\n }\r\n\r\n const totalCells: number = 42;\r\n let nextDay: number = 1;\r\n while (days.length < totalCells) {\r\n const newDate: Date = new Date(year, month + 1, nextDay++);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: false,\r\n });\r\n }\r\n\r\n return days;\r\n }\r\n\r\n private isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n }\r\n\r\n private isBetween(date: Date, start: Date | null, end: Date | null): boolean {\r\n if (!start || !end) return false;\r\n const d: number = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\r\n const s: number = new Date(start.getFullYear(), start.getMonth(), start.getDate()).getTime();\r\n const e: number = new Date(end.getFullYear(), end.getMonth(), end.getDate()).getTime();\r\n return d > s && d < e;\r\n }\r\n\r\n private getDayState(date: Date): Pick<CalendarDay, 'isSelected' | 'isStart' | 'isEnd' | 'inRange' | 'inHoverRange'> {\r\n const hover: Date | null = this.$hoverDate();\r\n\r\n const start: Date | null = this.$dateStart();\r\n const end: Date | null = this.$dateEnd();\r\n\r\n if (!this.$isRangeSelection()) {\r\n return {\r\n isSelected: this.isSameDay(start, date),\r\n isStart: false,\r\n isEnd: false,\r\n inRange: false,\r\n inHoverRange: false,\r\n };\r\n }\r\n\r\n // Range mode\r\n const isStart: boolean = this.isSameDay(start, date);\r\n const isEnd: boolean = this.isSameDay(end, date);\r\n const inRange: boolean = this.isBetween(date, start, end);\r\n\r\n let inHoverRange: boolean = false;\r\n\r\n if (start && !end && hover) {\r\n const d: number = date.getTime();\r\n const s: number = start.getTime();\r\n const h: number = hover.getTime();\r\n\r\n if (h > s) {\r\n inHoverRange = d > s && d <= h;\r\n }\r\n }\r\n\r\n const isSingleSelected: boolean = this.isSameDay(start, date) || this.isSameDay(end, date);\r\n\r\n const isSelected: boolean = isStart || isEnd || (!end && isStart) || isSingleSelected;\r\n\r\n return { isSelected, isStart, isEnd, inRange, inHoverRange };\r\n }\r\n\r\n protected onHover(date: Date | null, inHoverRange: boolean): void {\r\n if (inHoverRange) {\r\n return;\r\n }\r\n\r\n const rangeStart: Date | null = this.$dateStart();\r\n const rangeEnd: Date | null = this.$dateEnd();\r\n\r\n if (!date) {\r\n this.$hoverDate.set(null);\r\n return;\r\n }\r\n\r\n if (!this.$isRangeSelection()) {\r\n return;\r\n }\r\n if (!rangeStart || rangeEnd) {\r\n return;\r\n }\r\n\r\n if (date.getTime() < rangeStart.getTime()) {\r\n this.$hoverDate.set(null);\r\n return;\r\n }\r\n\r\n this.$hoverDate.set(date);\r\n }\r\n\r\n private isUsaDateFormat(): boolean {\r\n return DateUtils.isUsaDateFormat();\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$hoverDate.set(null);\r\n\r\n if (!this.$isRangeSelection()) {\r\n this.$dateStart.set(date);\r\n this.$onSelect.emit(date);\r\n return;\r\n }\r\n\r\n const start: Date | null = this.$dateStart();\r\n const end: Date | null = this.$dateEnd();\r\n\r\n if (!start || (start && end)) {\r\n this.$dateStart.set(date);\r\n this.$dateEnd.set(null);\r\n this.$onRangeSelect.emit({ start: date, end: null });\r\n return;\r\n }\r\n\r\n if (start && !end) {\r\n const clicked: number = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\r\n const s: number = new Date(start.getFullYear(), start.getMonth(), start.getDate()).getTime();\r\n if (clicked < s) {\r\n this.$dateStart.set(date);\r\n this.$onRangeSelect.emit({ start: date, end: null });\r\n return;\r\n }\r\n\r\n this.$dateEnd.set(date);\r\n this.$onRangeSelect.emit({ start: this.$dateStart(), end: date });\r\n return;\r\n }\r\n }\r\n}\r\n","import { computed, Directive, model, ModelSignal, output, OutputEmitterRef, Signal } from '@angular/core';\r\n\r\nimport { CalendarMonthItem } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-monthly-calendar',\r\n})\r\nexport abstract class UiMonthlyCalendarDirective {\r\n public $date: ModelSignal<Date | null> = model<Date | null>(new Date());\r\n\r\n public $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n public $currentYear: ModelSignal<number> = model.required();\r\n\r\n protected $months: Signal<CalendarMonthItem[]> = computed((): CalendarMonthItem[] => {\r\n const year: number = this.$currentYear();\r\n return this.generateMonths(year);\r\n });\r\n\r\n private generateMonths(year: number): CalendarMonthItem[] {\r\n const current: Date = this.$date() ?? new Date();\r\n const day: number = current.getDate();\r\n\r\n const monthNames: string[] = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n\r\n const months: CalendarMonthItem[] = monthNames.map((name, index): CalendarMonthItem => {\r\n const lastDay: number = new Date(year, index + 1, 0).getDate();\r\n\r\n const safeDay: number = Math.min(day, lastDay);\r\n const newDate: Date = new Date(year, index, safeDay);\r\n return {\r\n index,\r\n name,\r\n short: name.substring(0, 3),\r\n date: newDate,\r\n isSelected: this.isSelected(newDate),\r\n };\r\n });\r\n\r\n return months;\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$onSelect.emit(date);\r\n }\r\n\r\n private isSelected(date: Date): boolean {\r\n const selected: Date = this.$date() ?? new Date();\r\n\r\n return (\r\n date.getFullYear() === selected.getFullYear() &&\r\n date.getMonth() === selected.getMonth() &&\r\n date.getDate() === selected.getDate()\r\n );\r\n }\r\n}\r\n","import { computed, Directive, model, ModelSignal, output, OutputEmitterRef, Signal } from '@angular/core';\r\n\r\nimport { CalendarYearItem } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-yearly-calendar',\r\n})\r\nexport class UiYearlyCalendarDirective {\r\n public $date: ModelSignal<Date | null> = model<Date | null>(new Date());\r\n\r\n public $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n public $currentYear: ModelSignal<number> = model.required();\r\n\r\n protected $years: Signal<CalendarYearItem[]> = computed((): CalendarYearItem[] => {\r\n const year: number = this.$currentYear();\r\n return this.generateYears(year);\r\n });\r\n\r\n private generateYears(startYear: number): CalendarYearItem[] {\r\n const current: Date = this.$date() ?? new Date();\r\n const month: number = current.getMonth();\r\n const day: number = current.getDate();\r\n const selectedYear: number = current.getFullYear();\r\n\r\n const years: CalendarYearItem[] = [];\r\n\r\n for (let i: number = 0; i < 20; i++) {\r\n const year: number = startYear + i;\r\n\r\n years.push({\r\n year,\r\n date: this.createSafeDate(year, month, day),\r\n isSelected: year === selectedYear,\r\n });\r\n }\r\n\r\n return years;\r\n }\r\n\r\n private createSafeDate(year: number, month: number, day: number): Date {\r\n const lastDay: number = new Date(year, month + 1, 0).getDate();\r\n const safeDay: number = Math.min(day, lastDay);\r\n return new Date(year, month, safeDay);\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$date.set(date);\r\n this.$onSelect.emit(date);\r\n }\r\n}\r\n","import { Directive, effect, input, InputSignal, signal, untracked, WritableSignal } from '@angular/core';\r\n\r\ninterface LangRegExps {\r\n comment: { css: string; regexp: RegExp };\r\n string: { css: string; regexp: RegExp };\r\n class: { css: string; regexp: RegExp };\r\n function: { css: string; regexp: RegExp };\r\n typeKeyword: { css: string; regexp: RegExp };\r\n keyword: { css: string; regexp: RegExp };\r\n module: { css: string; regexp: RegExp };\r\n controlFlowLoop: { css: string; regexp: RegExp };\r\n number: { css: string; regexp: RegExp };\r\n enum: { css: string; regexp: RegExp };\r\n openBracket: { css: string; regexp: RegExp };\r\n closeBracket: { css: string; regexp: RegExp };\r\n operator: { css: string; regexp: RegExp };\r\n remains: { css: string; regexp: RegExp };\r\n}\r\n\r\nconst typescript: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/gs },\r\n class: { css: 'hl4', regexp: /\\b([A-Z][a-zA-Z$#_-]*)\\b/g },\r\n typeKeyword: {\r\n css: 'hl6',\r\n regexp: /\\b(any|boolean|null|number|object|string|void|symbol|bigint|unknown|never)\\b/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp:\r\n /\\b(keyof|debugger|await|async|readonly|delete|instanceof|in|package|type|with|const|true|false|enum|let|var|namespace|as|class|extends|abstract|implements|interface|private|protected|public|static|constructor|function|new|super|this|typeof|yield)\\b/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b(export|import|module|from)\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(<])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b([A-Z0-9]+(?:_[A-Z0-9]+)*)\\b/g },\r\n operator: { css: 'hl12', regexp: /([+\\-=&|=>.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst xml: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /<!--[\\s\\S]*?-->/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/gs },\r\n class: { css: 'hl4', regexp: /\\b/g },\r\n typeKeyword: {\r\n css: 'hl',\r\n regexp: /\\b([a-zA-Z_:][a-zA-Z0-9_.:-]*)\\b(?=\\s*=|\\])/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp: /(?<=<\\/?|!)[a-zA-Z0-9_-]+(?=\\s|>)/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|of|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b([A-Z0-9]+(?:_[A-Z0-9]+)*)\\b/g },\r\n operator: { css: 'hl16', regexp: /([+\\-&/|.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl12', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst json: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /\\b/g },\r\n string: { css: 'hl3', regexp: /([\"'`])([^\"':`]+)\\1(?!\\s*:)/g },\r\n class: { css: 'hl4', regexp: /\\b/g },\r\n typeKeyword: {\r\n css: 'hl6',\r\n regexp: /\\b/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp: /\\b(true|false)/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b/g },\r\n operator: { css: 'hl12', regexp: /([:,])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst css: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/g },\r\n class: { css: 'hl9', regexp: /(?:\\.|:)?[\\w-]+\\s*(?=\\{)/g },\r\n typeKeyword: {\r\n css: 'hl8',\r\n regexp: /@\\w+/g,\r\n },\r\n keyword: {\r\n css: 'hl',\r\n regexp: /\\$\\w[-\\w_]*/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(<])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl', regexp: /[\\w-_]+:/g },\r\n operator: { css: 'hl12', regexp: /([+\\-=&|=>.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl3', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst codeLanguages: Record<string, LangRegExps> = {\r\n javascript: typescript,\r\n typescript: typescript,\r\n js: typescript,\r\n ts: typescript,\r\n css: css,\r\n json: json,\r\n html: xml,\r\n xml: xml,\r\n};\r\n\r\ninterface Highlighted {\r\n string: string;\r\n index: number;\r\n css: string;\r\n}\r\n\r\n@Directive({\r\n selector: 'app-ui-code',\r\n})\r\nexport abstract class UiCodeDirective {\r\n public readonly $code: InputSignal<string> = input.required();\r\n\r\n protected readonly $language: WritableSignal<string> = signal('');\r\n\r\n protected readonly $highlightedArray: WritableSignal<Highlighted[]> = signal([]);\r\n\r\n public constructor() {\r\n effect((): void => {\r\n this.highlightCode(this.$code());\r\n });\r\n }\r\n\r\n private highlightCode(code: string): void {\r\n code = code.replace(/^\\n+|\\n+$/g, '').trimEnd();\r\n\r\n const split: string[] = code.split(/[\\s\\n]/, 1);\r\n\r\n if (Object.keys(codeLanguages).includes(split[0].toLowerCase())) {\r\n this.$language.set(split[0]);\r\n code = code.replace(split[0], '').trim();\r\n } else {\r\n this.$language.set('hl2');\r\n untracked((): void => {\r\n this.$highlightedArray.set([{ css: 'hl2', string: code.trim(), index: 0 }]);\r\n });\r\n return;\r\n }\r\n\r\n let resultArray: Highlighted[] = [];\r\n\r\n Object.keys(codeLanguages[this.$language()]).forEach((element: string): void => {\r\n resultArray.push(\r\n ...[...code.matchAll(codeLanguages[this.$language()][element as keyof LangRegExps].regexp)].map(\r\n (v): Highlighted => ({\r\n css: codeLanguages[this.$language()][element as keyof LangRegExps].css,\r\n index: v.index,\r\n string: v[0],\r\n }),\r\n ),\r\n );\r\n\r\n code = code.replaceAll(codeLanguages[this.$language()][element as keyof LangRegExps].regexp, (match): string =>\r\n `%`.repeat(match.length),\r\n );\r\n });\r\n\r\n let bracketsStack: number = 0;\r\n\r\n resultArray = resultArray\r\n .sort((a, b): number => (a.index > b.index ? 1 : -1))\r\n .map((m): Highlighted => {\r\n let result: Highlighted = m;\r\n const setResult: () => void = (): void => {\r\n if (bracketsStack % 3 === 0) {\r\n result = { ...m, css: 'hl13' };\r\n }\r\n if (bracketsStack % 3 === 1) {\r\n result = { ...m, css: 'hl14' };\r\n }\r\n if (bracketsStack % 3 === 2) {\r\n result = { ...m, css: 'hl15' };\r\n }\r\n };\r\n if (m.css === 'hl13') {\r\n setResult();\r\n bracketsStack += 1;\r\n }\r\n if (m.css === 'hl14') {\r\n bracketsStack -= 1;\r\n setResult();\r\n }\r\n return result;\r\n });\r\n\r\n this.$highlightedArray.set(resultArray);\r\n }\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { DestroyRef } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nexport interface PopupAnimationOptions {\r\n positionX: number;\r\n positionY: number;\r\n startTransition: string;\r\n endTransition: string;\r\n}\r\n\r\nexport class UiPopupInstance {\r\n public id: string = '';\r\n public width: number = 0;\r\n\r\n public readonly animationOrigin$: BehaviorSubject<string> = new BehaviorSubject<string>('center');\r\n\r\n public readonly options: PopupAnimationOptions = {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0)',\r\n endTransition: 'scale(0)',\r\n };\r\n\r\n private readonly closed: Subject<void> = new Subject<void>();\r\n private readonly shouldClose: Subject<void> = new Subject<void>();\r\n\r\n public constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly destroyRef: DestroyRef,\r\n options: PopupAnimationOptions = {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.8)',\r\n endTransition: 'scale(1)',\r\n },\r\n ) {\r\n this.options = options;\r\n\r\n this.overlayRef\r\n .detachments()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((): void => {\r\n this.closed.next();\r\n this.closed.complete();\r\n\r\n this.overlayRef.dispose();\r\n });\r\n }\r\n\r\n public close(): void {\r\n this.shouldClose.next();\r\n this.shouldClose.complete();\r\n }\r\n\r\n public detach(): void {\r\n this.overlayRef.detach();\r\n }\r\n\r\n public onShouldClose(): Observable<void> {\r\n return this.shouldClose.asObservable();\r\n }\r\n}\r\n","import { ComponentType, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ComponentRef, DestroyRef, Injectable, Injector, Type } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { debounceTime, fromEvent, Observable, Subject, switchMap, takeUntil, tap, timer } from 'rxjs';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\nimport { PopupAnimationOptions, UiPopupInstance } from './ui-popup.instance';\r\nimport { UiPopupOptions } from './ui-popup.interfaces';\r\n\r\ninterface PopupParameters {\r\n animationOptions: PopupAnimationOptions;\r\n isStaticBackdrop: boolean;\r\n isClosePrevious: boolean;\r\n width: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiPopupService {\r\n public popupInstances: UiPopupInstance[] = [];\r\n private backdropRef?: OverlayRef;\r\n private backdropPortal?: ComponentPortal<unknown>;\r\n private backdropPortalRef?: ComponentRef<ComponentType<unknown>>;\r\n\r\n protected readonly destroyDownloading$: Subject<void> = new Subject<void>();\r\n\r\n protected readonly destroyOutsideClickSubscription$: Subject<void> = new Subject<void>();\r\n\r\n public constructor(\r\n protected overlay: Overlay,\r\n protected injector: Injector,\r\n protected destroyRef: DestroyRef,\r\n protected router: Router,\r\n ) {}\r\n\r\n public init<TComponent>(component: Type<TComponent>): void {\r\n this.backdropPortal = new ComponentPortal(component);\r\n }\r\n\r\n /**\r\n * Opens a popup with the specified component and options.\r\n *\r\n * @param component - The component to be displayed in the popup.\r\n * @param options - Configuration options for the popup, including inputs.\r\n * @param id - A unique identifier for the popup instance.\r\n * @param parameters - (Optional) Configuration options for the popup.\r\n */\r\n public open<TComponent>(\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n parameters: Partial<PopupParameters>,\r\n ): void {\r\n if (this.popupInstances.length) {\r\n if (parameters.isClosePrevious) {\r\n this.closePrevious();\r\n }\r\n }\r\n\r\n this.showBackdrop(parameters.isStaticBackdrop);\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\r\n });\r\n\r\n this.subscribeToOutsideEvents();\r\n\r\n this.createPopup<TComponent>(overlayRef, component, options, id, parameters);\r\n }\r\n\r\n /**\r\n * Opens a popup that scales from the provided origin element to the centered popup size.\r\n * Useful for image-preview transitions where the source element animates into the popup.\r\n */\r\n public openScaledFromElement<TComponent>(\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n originElement: HTMLElement,\r\n sourceWidth: number,\r\n sourceHeight: number,\r\n parameters: Partial<PopupParameters> = {},\r\n ): void {\r\n const animationOptions: PopupAnimationOptions = this.createScaleAnimationOptionsFromElement(\r\n originElement,\r\n sourceWidth,\r\n sourceHeight,\r\n );\r\n\r\n this.open(component, options, id, {\r\n ...parameters,\r\n animationOptions,\r\n });\r\n }\r\n\r\n /**\r\n * Closes the last opened popup.\r\n */\r\n public close(): void {\r\n if (this.popupInstances.length >= 1) {\r\n this.popupInstances[this.popupInstances.length - 1].close();\r\n this.popupInstances.pop();\r\n if (!this.popupInstances.length) {\r\n this.destroy();\r\n }\r\n }\r\n }\r\n\r\n private closePrevious(): void {\r\n if (this.popupInstances.length >= 1) {\r\n this.popupInstances[this.popupInstances.length - 1].close();\r\n this.popupInstances.pop();\r\n }\r\n }\r\n\r\n /**\r\n * Closes a popup by its index in the popupInstances array.\r\n *\r\n * @param index - The index of the popup to close.\r\n */\r\n public closeByIndex(index: number): void {\r\n this.popupInstances[index].close();\r\n this.popupInstances.splice(index, 1);\r\n if (!this.popupInstances.length) {\r\n this.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Closes a popup by its unique identifier.\r\n *\r\n * @param id - The unique identifier of the popup to close.\r\n */\r\n public closeById(id: string): void {\r\n const dropDownIndex: number = this.popupInstances.findIndex((v: UiPopupInstance): boolean => v.id === id);\r\n\r\n if (dropDownIndex >= 0) {\r\n this.closeByIndex(dropDownIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Closes all currently opened popups.\r\n */\r\n public closeAll(): void {\r\n this.popupInstances.forEach((element: UiPopupInstance): void => {\r\n element.close();\r\n });\r\n this.popupInstances = [];\r\n this.destroy();\r\n }\r\n\r\n /**\r\n * Creates a popup instance with the specified component and options.\r\n *\r\n * @param overlayRef - The overlay reference for the popup.\r\n * @param component - The component to be displayed in the popup.\r\n * @param options - Configuration options for the popup, including inputs.\r\n * @param id - A unique identifier for the popup instance.\r\n * @param parameters - (Optional) Configuration options for the popup.\r\n */\r\n protected createPopup<TComponent>(\r\n overlayRef: OverlayRef,\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n parameters: Partial<PopupParameters>,\r\n ): void {\r\n const newParameters: PopupParameters = this.fetchPopupParameters(parameters);\r\n\r\n const uiPopupInstance: UiPopupInstance = new UiPopupInstance(\r\n overlayRef,\r\n this.destroyRef,\r\n newParameters.animationOptions,\r\n );\r\n\r\n if (newParameters.width > 0) {\r\n uiPopupInstance.width = newParameters.width;\r\n }\r\n\r\n const injector: Injector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: UiPopupInstance, useValue: uiPopupInstance }],\r\n });\r\n\r\n const componentRef: ComponentRef<TComponent> = overlayRef.attach(\r\n new ComponentPortal(component, undefined, injector),\r\n );\r\n\r\n if (options) {\r\n if (options.inputs) {\r\n Object.keys(options.inputs).forEach((key: string): void => {\r\n if (options.inputs) {\r\n componentRef.setInput(key, options.inputs[key as keyof typeof options.inputs]);\r\n }\r\n });\r\n }\r\n }\r\n uiPopupInstance.id = id;\r\n this.popupInstances.push(uiPopupInstance);\r\n }\r\n\r\n /**\r\n * Subscribes to outside events (e.g., scroll, router events) to close popups.\r\n */\r\n protected subscribeToOutsideEvents(): void {\r\n this.destroyOutsideClickSubscription$.next();\r\n\r\n fromEvent(window, 'scroll')\r\n .pipe(\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n\r\n this.router.events\r\n .pipe(\r\n debounceTime(100),\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n protected destroy(): void {\r\n this.hideBackdrop();\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n protected showBackdrop(isStaticBackdrop: boolean = false): void {\r\n document.body.style.setProperty('overflow-y', 'hidden');\r\n\r\n if (this.backdropRef) {\r\n return;\r\n }\r\n\r\n this.backdropRef = this.overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\r\n scrollStrategy: this.overlay.scrollStrategies.noop(),\r\n });\r\n\r\n this.backdropPortalRef = this.backdropRef.attach(this.backdropPortal);\r\n if (this.backdropPortalRef) {\r\n this.backdropPortalRef.location.nativeElement.classList.add('animate-in');\r\n this.backdropPortalRef.setInput('isStaticBackdrop', isStaticBackdrop);\r\n }\r\n }\r\n\r\n protected hideBackdrop(): void {\r\n if (!this.backdropRef) {\r\n return;\r\n }\r\n\r\n if (this.backdropPortalRef) {\r\n this.backdropPortalRef.location.nativeElement.classList.remove('animate-in');\r\n this.backdropPortalRef.location.nativeElement.classList.add('animate-out');\r\n }\r\n\r\n timer(150)\r\n .pipe(\r\n tap(() => {\r\n this.backdropRef?.detach();\r\n this.backdropRef?.dispose();\r\n this.backdropRef = undefined;\r\n document.body.style.setProperty('overflow-y', 'auto');\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Fetches and normalizes popup parameters.\r\n *\r\n * @param parameters - Partial configuration options for the popup.\r\n * @returns A complete set of popup parameters with default values applied.\r\n */\r\n private fetchPopupParameters(parameters: Partial<PopupParameters>): PopupParameters {\r\n return {\r\n animationOptions:\r\n parameters.animationOptions === undefined\r\n ? {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.8)',\r\n endTransition: 'scale(1)',\r\n }\r\n : parameters.animationOptions,\r\n isClosePrevious: parameters.isClosePrevious === undefined ? false : parameters.isClosePrevious,\r\n isStaticBackdrop: parameters.isStaticBackdrop === undefined ? false : parameters.isStaticBackdrop,\r\n width: parameters.width === undefined ? 0 : parameters.width,\r\n };\r\n }\r\n\r\n private createScaleAnimationOptionsFromElement(\r\n originElement: HTMLElement,\r\n sourceWidth: number,\r\n sourceHeight: number,\r\n ): PopupAnimationOptions {\r\n const rect: DOMRect = originElement.getBoundingClientRect();\r\n\r\n const centerX: number = window.innerWidth / 2;\r\n const centerY: number = window.innerHeight / 2;\r\n\r\n const targetX: number = rect.left + rect.width / 2;\r\n const targetY: number = rect.top + rect.height / 2;\r\n\r\n const offsetX: number = targetX - centerX;\r\n const offsetY: number = targetY - centerY;\r\n\r\n const fitted = getAspectRatioFit(\r\n window.innerWidth - window.innerWidth / 8,\r\n window.innerHeight - window.innerHeight / 8,\r\n sourceWidth,\r\n sourceHeight,\r\n );\r\n\r\n const scaleY: number = Math.trunc((sourceHeight / fitted.height) * 100) / 100;\r\n const scaleX: number = Math.trunc((sourceWidth / fitted.width) * 100) / 100;\r\n\r\n return {\r\n positionX: offsetX,\r\n positionY: offsetY,\r\n startTransition: `scale(${scaleY}, ${scaleX})`,\r\n endTransition: 'scale(1)',\r\n };\r\n }\r\n}\r\n","import {\r\n DestroyRef,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n OnInit,\r\n signal,\r\n untracked,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject, tap, takeUntil, fromEvent, timer } from 'rxjs';\r\n\r\nimport { UiPopupInstance } from './ui-popup.instance';\r\nimport { UiPopupAnimation } from './ui-popup.interfaces';\r\nimport { UiPopupService } from './ui-popup.service';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\n@Directive({\r\n selector: 'app-ui-popup-container',\r\n})\r\nexport abstract class UiPopupContainerDirective implements OnInit {\r\n protected readonly $isShow: WritableSignal<boolean> = signal(false);\r\n\r\n protected readonly $pulseTrigger: WritableSignal<boolean> = signal(false);\r\n\r\n public readonly $overflowHidden: InputSignal<boolean> = input(true);\r\n\r\n public readonly $shouldClose: ModelSignal<boolean> = model(false);\r\n\r\n public readonly $hasCloseButton: InputSignal<boolean> = input(false);\r\n\r\n public readonly $isEnableFadeAnimation: InputSignal<boolean> = input(true);\r\n\r\n protected readonly $iconClose: ModelSignal<AppIcon | undefined> = model();\r\n\r\n protected readonly $animationParams: WritableSignal<UiPopupAnimation> = signal<UiPopupAnimation>({\r\n startOrigin: 'center center',\r\n endOrigin: 'center center',\r\n start: 'transformY(0)',\r\n end: 'transformY(-20%)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n\r\n protected readonly destroyAnimationOrigin$: Subject<void> = new Subject();\r\n\r\n public constructor(\r\n @Inject(UiPopupInstance) protected popupInstance: UiPopupInstance,\r\n protected destroyRef: DestroyRef,\r\n protected popupService: UiPopupService,\r\n protected elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n effect((): void => {\r\n if (this.$shouldClose()) {\r\n untracked((): void => {\r\n this.close();\r\n });\r\n }\r\n });\r\n\r\n effect((): void => {\r\n const params: UiPopupAnimation = this.$animationParams();\r\n this.elementRef.nativeElement.style.setProperty('--start', params.start);\r\n this.elementRef.nativeElement.style.setProperty('--end', params.end);\r\n this.elementRef.nativeElement.style.setProperty('--start-origin', params.startOrigin);\r\n this.elementRef.nativeElement.style.setProperty('--end-origin', params.endOrigin);\r\n this.elementRef.nativeElement.style.setProperty('--left-start', params.leftStart);\r\n this.elementRef.nativeElement.style.setProperty('--left-end', params.leftEnd);\r\n this.elementRef.nativeElement.style.setProperty('--top-start', params.topStart);\r\n this.elementRef.nativeElement.style.setProperty('--top-end', params.topEnd);\r\n });\r\n }\r\n public ngOnInit(): void {\r\n this.popupInstance\r\n .onShouldClose()\r\n .pipe(\r\n tap((): void => {\r\n this.$isShow.set(false);\r\n }),\r\n\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n this.popupInstance.animationOrigin$\r\n .pipe(\r\n tap((e: string): void => {\r\n this.$animationParams.set({\r\n startOrigin: e,\r\n endOrigin: e,\r\n start: this.popupInstance.options.startTransition,\r\n end: this.popupInstance.options.endTransition,\r\n leftStart: `${this.popupInstance.options.positionX}px`,\r\n leftEnd: '0',\r\n topStart: `${this.popupInstance.options.positionY}px`,\r\n topEnd: '0',\r\n });\r\n\r\n this.$isShow.set(true);\r\n }),\r\n takeUntil(this.destroyAnimationOrigin$),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<KeyboardEvent>(window, 'keydown')\r\n .pipe(\r\n tap((e: KeyboardEvent): void => {\r\n if (e.key === 'Escape' || e.key === 'Esc') {\r\n this.close();\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n protected close(): void {\r\n if (this.popupInstance.id) {\r\n this.popupService.closeById(this.popupInstance.id);\r\n return;\r\n }\r\n\r\n this.popupService.close();\r\n }\r\n\r\n protected onAnimationDone(): void {\r\n if (!this.$isShow()) {\r\n this.popupInstance.detach();\r\n }\r\n }\r\n\r\n protected shouldClose(): void {\r\n this.$shouldClose.set(true);\r\n }\r\n}\r\n","import {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n OverlayRef,\r\n PositionStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject, Observable, switchMap, takeUntil, tap, timer } from 'rxjs';\r\n\r\nimport { DropdownParameters, DropdownPosition } from './ui-dropdown.interfaces';\r\nimport { UiPopupService } from '../ui-popup/ui-popup.service';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiDropdownService extends UiPopupService {\r\n private tipContainerRef?: OverlayRef;\r\n private tipContainerPortal?: ComponentPortal<unknown>;\r\n\r\n public containerSize$: BehaviorSubject<{ width: number; height: number }> = new BehaviorSubject({\r\n width: 0,\r\n height: 0,\r\n });\r\n\r\n private connectedPositions: Record<\r\n DropdownPosition,\r\n { animationOrigin: string; connectedPosition: ConnectedPosition }\r\n > = {\r\n bottom: {\r\n animationOrigin: 'top center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n top: {\r\n animationOrigin: 'bottom center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n center: {\r\n animationOrigin: 'center center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'center',\r\n overlayX: 'center',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n left: {\r\n animationOrigin: 'right center',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n right: {\r\n animationOrigin: 'left center',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'right-top': {\r\n animationOrigin: 'left bottom',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'right-bottom': {\r\n animationOrigin: 'left top',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'left-top': {\r\n animationOrigin: 'right bottom',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'left-bottom': {\r\n animationOrigin: 'right top',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n };\r\n\r\n public override init(component: Type<unknown>, tipComponent?: Type<unknown>): void {\r\n super.init(component);\r\n\r\n if (tipComponent) {\r\n this.tipContainerPortal = new ComponentPortal(tipComponent);\r\n }\r\n }\r\n\r\n /**\r\n * Opens a tooltip (tip) component attached to a specific HTML element.\r\n * The tooltip displays text content with customizable position and offset.\r\n *\r\n * @param text - The text content to display in the tooltip.\r\n * @param attachedRef - The HTML element to which the tooltip is attached.\r\n * @param id - A unique identifier for the tooltip instance.\r\n * @param position - (Optional) The positioning of the tooltip relative to the attached element (default: 'top').\r\n * Available positions: 'top', 'bottom', 'left', 'right', 'center',\r\n * 'left-top', 'left-bottom', 'right-top', 'right-bottom'.\r\n * @param offsetY - (Optional) Vertical offset for tooltip positioning in pixels (default: 0).\r\n * @param offsetX - (Optional) Horizontal offset for tooltip positioning in pixels (default: 0).\r\n *\r\n */\r\n public openTip(\r\n text: string,\r\n attachedRef: HTMLElement,\r\n id: string,\r\n position: DropdownPosition = 'top',\r\n offsetY: number = 0,\r\n offsetX: number = 0,\r\n ): void {\r\n if (this.tipContainerRef) {\r\n return;\r\n }\r\n\r\n const tipComponent = this.tipContainerPortal?.component;\r\n\r\n if (tipComponent) {\r\n this.openAttached(\r\n tipComponent,\r\n attachedRef,\r\n id,\r\n {\r\n options: {\r\n inputs: {\r\n text: text,\r\n },\r\n },\r\n position: position,\r\n hasBackdrop: false,\r\n removePrevious: false,\r\n hasAttachedWidth: false,\r\n },\r\n offsetY,\r\n offsetX,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Opens a dropdown attached to a specific HTML element.\r\n *\r\n * @param component - The component to be displayed in the dropdown.\r\n * @param attachedRef - The HTML element to which the dropdown is attached.\r\n * @param id - A unique identifier for the dropdown instance.\r\n * @param parameters - (Optional) Configuration options for the dropdown.\r\n * @param offsetY - (Optional) Vertical offset for dropdown positioning.\r\n * @param offsetX - (Optional) Horizontal offset for dropdown positioning.\r\n */\r\n public openAttached<TComponent>(\r\n component: Type<TComponent>,\r\n attachedRef: HTMLElement,\r\n id: string,\r\n parameters: Partial<DropdownParameters<TComponent>> = {},\r\n offsetY: number = 0,\r\n offsetX: number = 0,\r\n ): void {\r\n const fetchedParameters: DropdownParameters<TComponent> = this.fetchDropDownParameters(parameters);\r\n\r\n let attachedWidth: number = 0;\r\n\r\n if (fetchedParameters.hasAttachedWidth) {\r\n attachedWidth = attachedRef.clientWidth;\r\n }\r\n\r\n // Reset old outside listeners before opening a new dropdown to avoid stale close callbacks.\r\n if (this.popupInstances.length) {\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n if (fetchedParameters.removePrevious && this.popupInstances.length) {\r\n this.close();\r\n }\r\n\r\n if (window.matchMedia('(max-width: 48rem)').matches) {\r\n this.showBackdrop();\r\n }\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: fetchedParameters.hasBackdrop,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.createPositionStrategy(attachedRef, fetchedParameters, offsetX, offsetY),\r\n });\r\n\r\n if (fetchedParameters.removePrevious) {\r\n this.subscribeToOutsideEvents(overlayRef);\r\n }\r\n\r\n this.createPopup<TComponent>(overlayRef, component, fetchedParameters.options ?? {}, id, { width: attachedWidth });\r\n\r\n this.popupInstances[this.popupInstances.length - 1].animationOrigin$.next(\r\n this.connectedPositions[parameters.position ?? 'bottom'].animationOrigin,\r\n );\r\n }\r\n\r\n /**\r\n * Opens a dropdown from the mouse position with intelligent border detection.\r\n * The dropdown grows from the mouse cursor, adjusting position and animation origin\r\n * based on available space near window boundaries.\r\n *\r\n * @param component - The component to be displayed in the dropdown.\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param id - A unique identifier for the dropdown instance.\r\n * @param parameters - (Optional) Configuration options for the dropdown.\r\n */\r\n public openAtMousePosition<TComponent>(\r\n component: Type<TComponent>,\r\n event: MouseEvent,\r\n id: string,\r\n parameters: Partial<DropdownParameters<TComponent>> = {},\r\n ): void {\r\n const fetchedParameters: DropdownParameters<TComponent> = this.fetchDropDownParameters(parameters);\r\n\r\n // Reset old outside listeners before opening a new dropdown to avoid stale close callbacks.\r\n if (this.popupInstances.length) {\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n if (fetchedParameters.removePrevious && this.popupInstances.length) {\r\n this.close();\r\n }\r\n\r\n if (window.matchMedia('(max-width: 48rem)').matches) {\r\n this.showBackdrop();\r\n }\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: fetchedParameters.hasBackdrop,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.createMousePositionStrategy(event),\r\n });\r\n\r\n if (fetchedParameters.removePrevious) {\r\n this.subscribeToOutsideEvents(overlayRef);\r\n }\r\n\r\n this.createPopup<TComponent>(overlayRef, component, fetchedParameters.options ?? {}, id, {\r\n animationOptions: {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.4)',\r\n endTransition: 'scale(1)',\r\n },\r\n });\r\n\r\n this.containerSize$\r\n .pipe(\r\n tap((size: { width: number; height: number }): void => {\r\n if (size.width === 0 || size.height === 0) {\r\n return;\r\n }\r\n\r\n const animationOrigin = this.calculateMousePositionAnimationOrigin(event, size);\r\n const positionAdjustment = this.calculateMousePositionAdjustment(event, size);\r\n\r\n this.popupInstances[this.popupInstances.length - 1].animationOrigin$.next(animationOrigin);\r\n\r\n const positionStrategy = overlayRef.getConfig().positionStrategy;\r\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy && positionAdjustment) {\r\n positionStrategy.setOrigin({ x: positionAdjustment.left, y: positionAdjustment.top });\r\n overlayRef.updatePosition();\r\n }\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Calculates the animation origin based on mouse position relative to window boundaries.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param containerSize - The size of the dropdown container.\r\n * @returns The animation origin string (e.g., 'top left', 'bottom right').\r\n */\r\n private calculateMousePositionAnimationOrigin(\r\n event: MouseEvent,\r\n containerSize: { width: number; height: number },\r\n ): string {\r\n const EDGE_MARGIN = 20;\r\n const rightSpace = document.body.clientWidth - event.clientX;\r\n const bottomSpace = document.body.clientHeight - event.clientY;\r\n const hasRightSpace = rightSpace >= containerSize.width + EDGE_MARGIN;\r\n const hasBottomSpace = bottomSpace >= containerSize.height + EDGE_MARGIN;\r\n\r\n if (!hasRightSpace && !hasBottomSpace) {\r\n return 'bottom right';\r\n }\r\n if (!hasRightSpace) {\r\n return 'top right';\r\n }\r\n if (!hasBottomSpace) {\r\n return 'bottom left';\r\n }\r\n return 'top left';\r\n }\r\n\r\n /**\r\n * Calculates position adjustments for the dropdown when opened from mouse position.\r\n * Ensures the dropdown stays within boundaries and positions intelligently.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param containerSize - The size of the dropdown container.\r\n * @returns An object with left and top position adjustments.\r\n */\r\n private calculateMousePositionAdjustment(\r\n event: MouseEvent,\r\n containerSize: { width: number; height: number },\r\n ): { left: number; top: number } {\r\n const EDGE_MARGIN = 20;\r\n const rightSpace = document.body.clientWidth - event.clientX;\r\n const bottomSpace = document.body.clientHeight - event.clientY;\r\n\r\n let left = event.clientX;\r\n let top = event.clientY;\r\n\r\n if (rightSpace < containerSize.width + EDGE_MARGIN && bottomSpace < containerSize.height + EDGE_MARGIN) {\r\n left = event.clientX - containerSize.width + (rightSpace - EDGE_MARGIN);\r\n top = event.clientY - containerSize.height + (bottomSpace - EDGE_MARGIN);\r\n } else if (rightSpace < containerSize.width + EDGE_MARGIN) {\r\n left = event.clientX - containerSize.width + (rightSpace - EDGE_MARGIN);\r\n } else if (bottomSpace < containerSize.height + EDGE_MARGIN) {\r\n top = event.clientY - containerSize.height + (bottomSpace - EDGE_MARGIN);\r\n }\r\n\r\n return { left, top };\r\n }\r\n\r\n /**\r\n * Creates a global position strategy for mouse-positioned dropdowns.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @returns The configured PositionStrategy for the overlay.\r\n */\r\n private createMousePositionStrategy(event: MouseEvent): PositionStrategy {\r\n if (window.innerWidth <= 768) {\r\n return this.overlay.position().global().bottom();\r\n }\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo({ x: event.clientX, y: event.clientY })\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n ]);\r\n }\r\n\r\n protected override subscribeToOutsideEvents(overlayRef?: OverlayRef): void {\r\n super.subscribeToOutsideEvents();\r\n\r\n if (!overlayRef) {\r\n return;\r\n }\r\n\r\n timer(150)\r\n .pipe(\r\n switchMap((): Observable<MouseEvent> => overlayRef.outsidePointerEvents()),\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Fetches and normalizes dropdown parameters.\r\n *\r\n * @param parameters - Partial configuration options for the dropdown.\r\n * @returns A complete set of dropdown parameters with default values applied.\r\n */\r\n private fetchDropDownParameters<TComponent>(\r\n parameters: Partial<DropdownParameters<TComponent>>,\r\n ): DropdownParameters<TComponent> {\r\n return {\r\n hasBackdrop: parameters.hasBackdrop === undefined ? false : parameters.hasBackdrop,\r\n options: parameters.options === undefined ? {} : parameters.options,\r\n position: parameters.position === undefined ? 'bottom' : parameters.position,\r\n removePrevious: parameters.removePrevious === undefined ? true : parameters.removePrevious,\r\n hasAttachedWidth: parameters.hasAttachedWidth === undefined ? false : parameters.hasAttachedWidth,\r\n };\r\n }\r\n\r\n /**\r\n * Creates a position strategy for the dropdown overlay.\r\n *\r\n * @param attachedRef - The HTML element to which the dropdown is attached.\r\n * @param parameters - The normalized dropdown parameters, including position and options.\r\n * @param offsetX - Horizontal offset for dropdown positioning.\r\n * @param offsetY - Vertical offset for dropdown positioning.\r\n * @returns The configured PositionStrategy for the overlay.\r\n */\r\n private createPositionStrategy<TComponent>(\r\n attachedRef: HTMLElement,\r\n parameters: DropdownParameters<TComponent>,\r\n offsetX: number,\r\n offsetY: number,\r\n ): PositionStrategy {\r\n if (window.innerWidth <= 768) {\r\n return this.overlay.position().global().bottom();\r\n }\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(attachedRef)\r\n .withPositions([\r\n {\r\n ...this.connectedPositions[parameters.position ?? 'bottom'].connectedPosition,\r\n offsetX: offsetX,\r\n offsetY: offsetY,\r\n },\r\n ]);\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n OnInit,\r\n Renderer2,\r\n signal,\r\n Signal,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, tap } from 'rxjs';\r\n\r\nimport { UiDropdownService } from './ui-dropdown.service';\r\nimport { UiPopupContainerDirective } from '../ui-popup/ui-popup-container.directive';\r\nimport { UiPopupInstance } from '../ui-popup/ui-popup.instance';\r\nimport { UiPopupAnimation } from '../ui-popup/ui-popup.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-drop-down-container',\r\n})\r\nexport abstract class UiDropdownContainerDirective extends UiPopupContainerDirective implements AfterViewInit, OnInit {\r\n protected readonly $width: WritableSignal<string> = signal<string>('');\r\n private readonly $contentWrapper: Signal<ElementRef<HTMLElement> | undefined> =\r\n viewChild<ElementRef<HTMLElement>>('contentWrapper');\r\n\r\n private readonly $swipeButton: Signal<ElementRef<HTMLButtonElement> | undefined> =\r\n viewChild<ElementRef<HTMLButtonElement>>('swipeButton');\r\n\r\n protected override $animationParams: WritableSignal<UiPopupAnimation> = signal<UiPopupAnimation>({\r\n startOrigin: 'center center',\r\n endOrigin: 'center center',\r\n start: 'scale(0)',\r\n end: 'scale(1)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n\r\n public constructor(\r\n private dropDownService: UiDropdownService,\r\n @Inject(UiPopupInstance) popupInstance: UiPopupInstance,\r\n destroyRef: DestroyRef,\r\n elementRef: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2,\r\n ) {\r\n super(popupInstance, destroyRef, dropDownService, elementRef);\r\n\r\n afterRenderEffect((): void => {\r\n this.initTouchEvents();\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n if (window.innerWidth <= 768) {\r\n this.destroyAnimationOrigin$.next();\r\n\r\n this.$animationParams.set({\r\n startOrigin: 'bottom center',\r\n endOrigin: 'bottom center',\r\n start: 'translateY(100%)',\r\n end: 'translateY(0%)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n }\r\n\r\n fromEvent(this.elementRef.nativeElement, 'wheel', { passive: true })\r\n .pipe(\r\n tap((e: Event): void => {\r\n e.stopPropagation();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.popupInstance.width) {\r\n this.$width.set(this.popupInstance.width + 'px');\r\n }\r\n const contentWrapper: ElementRef<HTMLElement> | undefined = this.$contentWrapper();\r\n if (contentWrapper) {\r\n this.dropDownService.containerSize$.next({\r\n width: contentWrapper.nativeElement.offsetWidth,\r\n height: contentWrapper.nativeElement.offsetHeight,\r\n });\r\n }\r\n }\r\n\r\n private initTouchEvents(): void {\r\n const swipeButton: ElementRef<HTMLButtonElement> | undefined = this.$swipeButton();\r\n const contentWrapper: ElementRef<HTMLElement> | undefined = this.$contentWrapper();\r\n\r\n if (contentWrapper && swipeButton) {\r\n let startY: number = 0;\r\n const elementHeight: number = contentWrapper.nativeElement.offsetHeight;\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchstart', { passive: false })\r\n .pipe(\r\n tap((event): void => {\r\n startY = event.touches[0].clientY;\r\n event.preventDefault();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchmove', { passive: false })\r\n .pipe(\r\n tap((event): void => {\r\n const currentY: number = event.touches[0].clientY;\r\n const heightChange: number = startY - currentY;\r\n if (heightChange > 0) {\r\n this.renderer.setStyle(\r\n contentWrapper.nativeElement,\r\n 'height',\r\n `${contentWrapper.nativeElement.offsetHeight + heightChange}px`,\r\n );\r\n } else {\r\n const newHeight: number = contentWrapper.nativeElement.offsetHeight + heightChange;\r\n if (newHeight > 50) {\r\n this.renderer.setStyle(contentWrapper.nativeElement, 'height', `${newHeight}px`);\r\n }\r\n }\r\n startY = currentY;\r\n event.preventDefault();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchend', { passive: false })\r\n .pipe(\r\n tap((): void => {\r\n if (contentWrapper.nativeElement.offsetHeight <= elementHeight / 2) {\r\n this.close();\r\n } else {\r\n this.renderer.setStyle(contentWrapper.nativeElement, 'height', `${elementHeight}px`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, input, InputSignal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime, fromEvent, tap } from 'rxjs';\r\n\r\nimport { DropdownPosition } from './ui-dropdown.interfaces';\r\nimport { UiDropdownService } from './ui-dropdown.service';\r\n\r\n@Directive({\r\n selector: '[appHoverTip]',\r\n})\r\nexport class HoverTipDirective implements AfterViewInit {\r\n private static instanceCounter: number = 0;\r\n\r\n public readonly $text: InputSignal<string> = input.required({ alias: 'appHoverTip' });\r\n\r\n public readonly $debounceTime: InputSignal<number> = input(1000);\r\n\r\n public readonly $position: InputSignal<DropdownPosition> = input<DropdownPosition>('top', {\r\n alias: 'appHoverTipPosition',\r\n });\r\n\r\n public readonly $offsetX: InputSignal<number> = input<number>(0, {\r\n alias: 'appHoverTipOffsetX',\r\n });\r\n\r\n public readonly $offsetY: InputSignal<number> = input<number>(0, {\r\n alias: 'appHoverTipOffsetY',\r\n });\r\n\r\n private readonly tipId: string = `hover-tip-${HoverTipDirective.instanceCounter++}`;\r\n\r\n private isOpen: boolean = false;\r\n\r\n public constructor(\r\n private readonly hostRef: ElementRef<HTMLElement>,\r\n private readonly uiDropdownService: UiDropdownService,\r\n private readonly destroyRef: DestroyRef,\r\n ) {\r\n this.destroyRef.onDestroy((): void => {\r\n this.closeTip();\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n const debounceTimeValue: number = this.$debounceTime();\r\n\r\n fromEvent(this.hostRef.nativeElement, 'mouseenter')\r\n .pipe(\r\n debounceTime(debounceTimeValue),\r\n tap((): void => {\r\n this.openTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent(this.hostRef.nativeElement, 'mouseleave')\r\n .pipe(\r\n tap((): void => {\r\n this.closeTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent(window, 'blur')\r\n .pipe(\r\n tap((): void => {\r\n this.closeTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n private openTip(): void {\r\n const text: string = this.$text().trim();\r\n const isHostHovered: boolean = this.hostRef.nativeElement.matches(':hover');\r\n\r\n if (!text || this.isOpen || !isHostHovered) {\r\n return;\r\n }\r\n\r\n this.uiDropdownService.openTip(\r\n text,\r\n this.hostRef.nativeElement,\r\n this.tipId,\r\n this.$position(),\r\n this.$offsetY(),\r\n this.$offsetX(),\r\n );\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n private closeTip(): void {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n\r\n this.uiDropdownService.closeById(this.tipId);\r\n this.isOpen = false;\r\n }\r\n}\r\n","import { Directive, input, InputSignal, OnInit, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\n\r\n@Directive({\r\n selector: 'app-ui-image',\r\n})\r\nexport class UiImageDirective implements OnInit {\r\n public readonly $src: InputSignal<string> = input.required();\r\n\r\n protected readonly $maxWidth: InputSignal<number> = input(320);\r\n protected readonly $maxHeight: InputSignal<number> = input(320);\r\n\r\n protected readonly $canShowImage: WritableSignal<boolean> = signal(true);\r\n\r\n protected readonly $imageWidth: WritableSignal<number> = signal(0);\r\n protected readonly $imageHeight: WritableSignal<number> = signal(0);\r\n\r\n public ngOnInit(): void {\r\n if (this.$src()) {\r\n const img: HTMLImageElement = new Image();\r\n img.src = this.$src();\r\n\r\n img.onload = (): void => {\r\n this.setSize(this.$maxWidth(), this.$maxHeight(), img.width, img.height);\r\n img.remove();\r\n };\r\n } else {\r\n this.setSize();\r\n }\r\n }\r\n\r\n private setSize(\r\n maxWidth: number = this.$maxWidth() / 2,\r\n maxHeight: number = this.$maxHeight() / 2,\r\n width: number = 20,\r\n height: number = 20,\r\n ): void {\r\n const result: {\r\n width: number;\r\n height: number;\r\n } = getAspectRatioFit(maxWidth, maxHeight, width, height);\r\n\r\n this.$imageWidth.set(result.width);\r\n this.$imageHeight.set(result.height);\r\n }\r\n}\r\n","import { Directive, input, InputSignal, output, OutputEmitterRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'app-ui-pagination',\r\n})\r\nexport abstract class UiPaginationDirective {\r\n public readonly $hasNext: InputSignal<boolean> = input.required<boolean>();\r\n public readonly $hasPrevious: InputSignal<boolean> = input.required<boolean>();\r\n\r\n public readonly $nextClicked: OutputEmitterRef<void> = output<void>();\r\n public readonly $previousClicked: OutputEmitterRef<void> = output<void>();\r\n}\r\n","import { Directive, Input, signal, ElementRef, viewChild, DestroyRef, OnInit, AfterViewInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, tap } from 'rxjs';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\n\r\n@Directive({\r\n selector: 'app-ui-popup-image',\r\n})\r\nexport abstract class UiPopupImageDirective implements OnInit, AfterViewInit {\r\n @Input({ required: true }) public readonly src: string = '';\r\n @Input({ required: true }) public readonly width: number = 0;\r\n @Input({ required: true }) public readonly height: number = 0;\r\n\r\n protected readonly $imageWidth = signal(0);\r\n protected readonly $imageHeight = signal(0);\r\n\r\n protected readonly $imageStyleTransform = signal('');\r\n\r\n protected readonly $container = viewChild<ElementRef<HTMLDivElement>>('container');\r\n protected readonly $image = viewChild<ElementRef<HTMLDivElement>>('image');\r\n\r\n protected readonly $cursor = signal('auto');\r\n\r\n private isDragging = false;\r\n private isTouchDragging = false;\r\n private isPinching = false;\r\n\r\n private lastTouchX = 0;\r\n private lastTouchY = 0;\r\n\r\n private lastTouchDistance = 0;\r\n\r\n private size = { w: 0, h: 0 };\r\n private speed = 0.5;\r\n\r\n private readonly pos = { x: 0, y: 0 };\r\n private readonly target = { x: 0, y: 0 };\r\n private readonly pointer = { x: 0, y: 0 };\r\n\r\n private scale = 1;\r\n\r\n constructor(private destroyRef: DestroyRef) {}\r\n\r\n ngOnInit(): void {\r\n const result = getAspectRatioFit(\r\n window.innerWidth - window.innerWidth / 8,\r\n window.innerHeight - window.innerHeight / 8,\r\n this.width,\r\n this.height,\r\n );\r\n\r\n this.$imageWidth.set(result.width);\r\n this.$imageHeight.set(result.height);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const container = this.$container()?.nativeElement;\r\n if (!container) return;\r\n\r\n this.size = {\r\n w: container.offsetWidth,\r\n h: container.offsetHeight,\r\n };\r\n\r\n // -----------------------------\r\n // KEYBOARD CURSOR LOGIC\r\n // -----------------------------\r\n fromEvent<KeyboardEvent>(window, 'keydown')\r\n .pipe(\r\n tap((event) => {\r\n if (event.ctrlKey) this.$cursor.set('zoom-in');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<KeyboardEvent>(window, 'keyup')\r\n .pipe(\r\n tap((event) => {\r\n if (event.key === 'Control') {\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // MOUSE DRAG\r\n // -----------------------------\r\n fromEvent<MouseEvent>(window, 'mouseup')\r\n .pipe(\r\n tap((event) => {\r\n if (event.button === 0) {\r\n this.isDragging = false;\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<MouseEvent>(container, 'mousedown')\r\n .pipe(\r\n tap((event) => {\r\n if (event.button === 0) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n this.$cursor.set(this.scale > 1 ? 'grabbing' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<MouseEvent>(window, 'mousemove')\r\n .pipe(\r\n tap((e) => {\r\n if (this.isDragging && this.scale > 1) {\r\n this.pos.x += e.movementX;\r\n this.pos.y += e.movementY;\r\n\r\n this.setPosition();\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // MOUSE WHEEL ZOOM\r\n // -----------------------------\r\n fromEvent<WheelEvent>(window, 'wheel', { passive: false })\r\n .pipe(\r\n tap((event) => {\r\n event.preventDefault();\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n if (event.ctrlKey) {\r\n this.pointer.x = event.clientX - rect.left;\r\n this.pointer.y = event.clientY - rect.top;\r\n\r\n this.target.x = (this.pointer.x - this.pos.x) / this.scale;\r\n this.target.y = (this.pointer.y - this.pos.y) / this.scale;\r\n\r\n this.scale += -1 * Math.max(-1, Math.min(1, event.deltaY)) * this.speed * this.scale;\r\n\r\n const maxScale = 4;\r\n const minScale = 1;\r\n this.scale = Math.max(minScale, Math.min(maxScale, this.scale));\r\n\r\n this.pos.x = -this.target.x * this.scale + this.pointer.x;\r\n this.pos.y = -this.target.y * this.scale + this.pointer.y;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n } else {\r\n this.pos.x -= event.deltaX * 2;\r\n this.pos.y -= event.deltaY * 2;\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // TOUCH PINCH ZOOM\r\n // -----------------------------\r\n fromEvent<TouchEvent>(container, 'touchstart')\r\n .pipe(\r\n tap((event) => {\r\n if (event.touches.length === 2) {\r\n this.isPinching = true;\r\n\r\n const [t1, t2] = event.touches;\r\n this.lastTouchDistance = Math.hypot(t2.clientX - t1.clientX, t2.clientY - t1.clientY);\r\n }\r\n\r\n if (event.touches.length === 1 && this.scale > 1) {\r\n const t = event.touches[0];\r\n this.lastTouchX = t.clientX;\r\n this.lastTouchY = t.clientY;\r\n this.isTouchDragging = true;\r\n this.$cursor.set('grabbing');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(container, 'touchmove')\r\n .pipe(\r\n tap((event) => {\r\n if (this.isPinching && event.touches.length === 2) {\r\n event.preventDefault();\r\n\r\n const [t1, t2] = event.touches;\r\n\r\n const newDistance = Math.hypot(t2.clientX - t1.clientX, t2.clientY - t1.clientY);\r\n\r\n const delta = newDistance - this.lastTouchDistance;\r\n this.lastTouchDistance = newDistance;\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n const centerX = (t1.clientX + t2.clientX) / 2 - rect.left;\r\n const centerY = (t1.clientY + t2.clientY) / 2 - rect.top;\r\n\r\n this.pointer.x = centerX;\r\n this.pointer.y = centerY;\r\n\r\n this.target.x = (this.pointer.x - this.pos.x) / this.scale;\r\n this.target.y = (this.pointer.y - this.pos.y) / this.scale;\r\n\r\n const pinchSpeed = 0.005;\r\n this.scale += delta * pinchSpeed * this.scale;\r\n\r\n const maxScale = 4;\r\n const minScale = 1;\r\n this.scale = Math.max(minScale, Math.min(maxScale, this.scale));\r\n\r\n this.pos.x = -this.target.x * this.scale + this.pointer.x;\r\n this.pos.y = -this.target.y * this.scale + this.pointer.y;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n\r\n if (this.isTouchDragging && event.touches.length === 1) {\r\n event.preventDefault();\r\n\r\n const t = event.touches[0];\r\n\r\n const dx = t.clientX - this.lastTouchX;\r\n const dy = t.clientY - this.lastTouchY;\r\n\r\n this.lastTouchX = t.clientX;\r\n this.lastTouchY = t.clientY;\r\n\r\n this.pos.x += dx;\r\n this.pos.y += dy;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(container, 'touchend')\r\n .pipe(\r\n tap(() => {\r\n this.isPinching = false;\r\n this.isTouchDragging = false;\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n private setPosition(): void {\r\n if (this.pos.x > 0) this.pos.x = 0;\r\n if (this.pos.x + this.size.w * this.scale < this.size.w) {\r\n this.pos.x = -this.size.w * (this.scale - 1);\r\n }\r\n\r\n if (this.pos.y > 0) this.pos.y = 0;\r\n if (this.pos.y + this.size.h * this.scale < this.size.h) {\r\n this.pos.y = -this.size.h * (this.scale - 1);\r\n }\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, input, InputSignal, Renderer2 } from '@angular/core';\r\n\r\nexport type ButtonColor =\r\n | 'primary'\r\n | 'secondary'\r\n | 'tertiary'\r\n | 'quaternary'\r\n | 'success'\r\n | 'warning'\r\n | 'info'\r\n | 'danger';\r\n\r\nconst buttonColors: ButtonColor[] = [\r\n 'primary',\r\n 'secondary',\r\n 'tertiary',\r\n 'quaternary',\r\n 'success',\r\n 'warning',\r\n 'info',\r\n 'danger',\r\n];\r\n\r\ntype SizeBehavior = 'block' | 'padding';\r\n\r\ntype ButtonSizes = 'medium' | 'small';\r\n\r\n@Directive({\r\n selector: 'app-ui-button',\r\n})\r\nexport abstract class UiButtonDirective {\r\n public readonly $color: InputSignal<ButtonColor> = input.required<ButtonColor>();\r\n\r\n public readonly $isOutlined: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $isRounded: InputSignal<boolean> = input<boolean>(false);\r\n\r\n public readonly $sizeBehavior: InputSignal<SizeBehavior> = input<SizeBehavior>('padding');\r\n\r\n public readonly $size: InputSignal<ButtonSizes> = input<ButtonSizes>('medium');\r\n public readonly $isDisabled: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $isLoading: InputSignal<boolean> = input<boolean>(false);\r\n\r\n public constructor(\r\n protected readonly elementRef: ElementRef<HTMLButtonElement>,\r\n protected readonly renderer: Renderer2,\r\n ) {\r\n effect((): void => {\r\n if (this.$sizeBehavior() === 'block') {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'block');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'block');\r\n }\r\n });\r\n\r\n effect(() => {\r\n const isOutlined = this.$isOutlined();\r\n if (isOutlined) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'outline');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'outline');\r\n }\r\n });\r\n effect(() => {\r\n const isRounded = this.$isRounded();\r\n if (isRounded) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'rounded');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'rounded');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$size() === 'small') {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'small');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'small');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$isDisabled()) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'disabled');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'disabled');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$isLoading()) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'loading');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'loading');\r\n }\r\n });\r\n effect((): void => {\r\n const color = this.$color();\r\n\r\n buttonColors.forEach((color): void => {\r\n this.renderer.removeClass(this.elementRef.nativeElement, color);\r\n });\r\n\r\n this.renderer.addClass(this.elementRef.nativeElement, color);\r\n });\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n OnInit,\r\n output,\r\n OutputEmitterRef,\r\n PLATFORM_ID,\r\n Renderer2,\r\n signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { UiSelectButton, OverflowMode } from './ui-select-interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-select-buttons',\r\n})\r\nexport class UiSelectButtonsDirective implements OnInit, AfterViewInit {\r\n public readonly $buttons: InputSignal<UiSelectButton[]> = input.required<UiSelectButton[]>();\r\n public readonly $selectedButtonIndex: WritableSignal<number> = signal(0);\r\n\r\n public readonly $alignment: InputSignal<'justified' | 'vertical' | 'left'> = input<'justified' | 'vertical' | 'left'>(\r\n 'left',\r\n );\r\n\r\n public readonly $overflowMode: InputSignal<OverflowMode> = input<OverflowMode>('scroll');\r\n\r\n public readonly $buttonChanged: OutputEmitterRef<number> = output<number>();\r\n\r\n protected readonly $isScrollable: WritableSignal<boolean> = signal(false);\r\n\r\n public constructor(\r\n private readonly renderer: Renderer2,\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly destroyRef: DestroyRef,\r\n @Inject(PLATFORM_ID) private readonly platformId: object,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$alignment());\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$overflowMode());\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.checkScroll();\r\n if (isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n this.checkScroll();\r\n });\r\n resizeObserver.observe(this.elementRef.nativeElement);\r\n\r\n this.destroyRef.onDestroy((): void => {\r\n resizeObserver.disconnect();\r\n });\r\n }\r\n }\r\n\r\n protected select(index: number): void {\r\n this.$selectedButtonIndex.set(index);\r\n this.$buttonChanged.emit(index);\r\n }\r\n\r\n private checkScroll(): void {\r\n const el: HTMLElement = this.elementRef.nativeElement;\r\n const isScrollable: boolean = el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight;\r\n this.$isScrollable.set(isScrollable);\r\n if (isScrollable) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'scrollable');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'scrollable');\r\n }\r\n }\r\n}\r\n","import { DestroyRef, Directive, input, InputSignal, signal, WritableSignal } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { Subject, timer, tap, takeUntil } from \"rxjs\";\r\n\r\n@Directive({\r\n selector: 'app-ui-copy-button',\r\n})\r\nexport abstract class UiCopyButtonDirective { \r\n public readonly $text: InputSignal<string> = input.required();\r\n\r\n protected readonly $isCopied: WritableSignal<boolean> = signal(false);\r\n\r\n \r\n private readonly destroyTimer$: Subject<void> = new Subject();\r\n\r\n public constructor(private readonly destroyRef: DestroyRef) {}\r\n \r\n protected copy(): void {\r\n this.destroyTimer$.next();\r\n const text: string = this.$text();\r\n\r\n if (window.navigator.clipboard && window.navigator.clipboard.writeText) {\r\n window.navigator.clipboard\r\n .writeText(text)\r\n .then((): void => {\r\n this.$isCopied.set(true);\r\n timer(5000)\r\n .pipe(\r\n tap((): void => {\r\n this.$isCopied.set(false);\r\n }),\r\n takeUntil(this.destroyTimer$),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n })\r\n .catch((err): void => {\r\n console.error('Error copying text:', err);\r\n });\r\n }\r\n }\r\n}","import {\r\n contentChild,\r\n contentChildren,\r\n Directive,\r\n effect,\r\n model,\r\n ModelSignal,\r\n Signal,\r\n TemplateRef,\r\n untracked,\r\n OnInit,\r\n Renderer2,\r\n ElementRef,\r\n input,\r\n InputSignal,\r\n} from '@angular/core';\r\nimport { UiTab, TabsAlignment } from './ui-tabs.interfaces';\r\n\r\n@Directive({\r\n selector: '[appUiTabs]',\r\n exportAs: 'uiTabs',\r\n})\r\nexport class UiTabsDirective implements OnInit {\r\n public readonly $tabs: ModelSignal<UiTab[]> = model.required<UiTab[]>();\r\n public readonly $alignment: InputSignal<TabsAlignment> = input<TabsAlignment>('left');\r\n\r\n public readonly $selectedTabIndex: ModelSignal<number> = model(0);\r\n\r\n protected readonly $templates: Signal<readonly TemplateRef<HTMLElement>[]> =\r\n contentChildren<TemplateRef<HTMLElement>>('tab');\r\n protected readonly $headContent: Signal<TemplateRef<HTMLElement> | undefined> =\r\n contentChild<TemplateRef<HTMLElement>>('head');\r\n\r\n public constructor(\r\n protected readonly renderer: Renderer2,\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n effect((): void => {\r\n const tabs: UiTab[] = this.$tabs();\r\n this.$templates().forEach((f, i): void => {\r\n tabs[i].template = f;\r\n });\r\n untracked((): void => {\r\n this.$tabs.set(tabs);\r\n });\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$alignment());\r\n }\r\n}\r\n","import { Directive, input, InputSignal, model, ModelSignal, OnInit } from '@angular/core';\r\nimport { FormValueControl } from '@angular/forms/signals';\r\n\r\nimport { ValidationErrorsType } from './ui-validation-errors.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-field-base',\r\n})\r\nexport abstract class UiFieldBaseDirective<T> implements FormValueControl<T | null>, OnInit {\r\n public readonly value: ModelSignal<T | null> = model<T | null>(null);\r\n public readonly disabled: InputSignal<boolean> = input(false);\r\n public readonly invalid: InputSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly errors: InputSignal<readonly ValidationErrorsType[]> = input<readonly ValidationErrorsType[]>([]);\r\n\r\n public readonly touched: ModelSignal<boolean> = model(false);\r\n public readonly dirty: ModelSignal<boolean> = model(false);\r\n\r\n private initialValue: T | null = null;\r\n\r\n public ngOnInit(): void {\r\n this.initialValue = this.value();\r\n }\r\n\r\n protected onInput(value: T): void {\r\n this.value.set(value);\r\n\r\n if (this.initialValue !== null && value !== this.initialValue) {\r\n this.dirty.set(true);\r\n }\r\n }\r\n}\r\n","import { computed, Directive, input, InputSignal, model, ModelSignal, Signal } from '@angular/core';\r\nimport { FormCheckboxControl } from '@angular/forms/signals';\r\n\r\nimport { ValidationErrorsType } from './ui-validation-errors.directive';\r\n\r\nexport type CheckboxStyles = 'primary' | 'success' | 'warning' | 'info' | 'danger';\r\n\r\n@Directive({\r\n selector: 'app-ui-input',\r\n})\r\nexport abstract class UiInputCheckboxDirective implements FormCheckboxControl {\r\n public readonly checked: ModelSignal<boolean> = model<boolean>(false);\r\n public readonly invalid: InputSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly disabled: InputSignal<boolean> = input(false);\r\n public readonly $style: InputSignal<CheckboxStyles> = input<CheckboxStyles>('primary');\r\n public readonly $label: InputSignal<string> = input<string>('');\r\n\r\n public readonly $hideValidatorErrors: InputSignal<boolean> = input(false);\r\n\r\n public readonly errors: InputSignal<readonly ValidationErrorsType[]> = input<readonly ValidationErrorsType[]>([]);\r\n\r\n public readonly touched: ModelSignal<boolean> = model(false);\r\n public readonly dirty: ModelSignal<boolean> = model(false);\r\n\r\n protected readonly $isError: Signal<boolean> = computed((): boolean => {\r\n return (this.touched() || (this.dirty() && this.touched())) && this.invalid();\r\n });\r\n\r\n public change(): void {\r\n this.checked.update((val): boolean => !val);\r\n }\r\n}\r\n","import { computed, Directive, input, InputSignal, Signal } from '@angular/core';\r\n\r\nimport { UiFieldBaseDirective } from './ui-field-base.directive';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\ninterface LayoutSize {\r\n padding: string;\r\n font: string;\r\n borderRadius: string;\r\n}\r\n\r\ntype Size = 'small' | 'medium';\r\n\r\nconst sizes: Record<Size, LayoutSize> = {\r\n small: {\r\n padding: 'padding-xs',\r\n font: 'paragraph-sm',\r\n borderRadius: 'border-radius-m',\r\n },\r\n medium: {\r\n padding: 'padding-sm',\r\n font: 'paragraph-l',\r\n borderRadius: 'border-radius-m',\r\n },\r\n};\r\n\r\n@Directive({\r\n selector: 'app-ui-input',\r\n})\r\nexport abstract class UiInputDirective extends UiFieldBaseDirective<string> {\r\n public readonly $size: InputSignal<Size> = input<Size>('medium');\r\n public readonly $placeholder: InputSignal<string> = input<string>('');\r\n public readonly $label: InputSignal<string> = input<string>('');\r\n public readonly $shouldFocusedAfterViewInit: InputSignal<boolean> = input(false);\r\n\r\n public readonly $hideValidatorErrors: InputSignal<boolean> = input(false);\r\n\r\n public readonly $icon: InputSignal<AppIcon | null> = input<AppIcon | null>(null);\r\n\r\n protected readonly $layoutSize: Signal<LayoutSize> = computed((): LayoutSize => {\r\n const size: Size = this.$size();\r\n return sizes[size];\r\n });\r\n\r\n protected readonly $isError: Signal<boolean> = computed((): boolean => {\r\n return (this.touched() || (this.dirty() && this.touched())) && this.invalid();\r\n });\r\n}\r\n","import { Directive, AfterViewInit, ElementRef, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { CountryData, CountryService, emptyCountry } from '../../services/country.service';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-country',\r\n})\r\nexport abstract class UiInputCountryDirective extends UiInputDirective implements AfterViewInit {\r\n protected $selectedCountry: WritableSignal<CountryData> = signal(emptyCountry);\r\n protected $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.autoSetCountry();\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pastedText: string = event.clipboardData?.getData('text') || '';\r\n\r\n const country: CountryData | undefined = this.searchCountry(pastedText);\r\n if (country) {\r\n this.setCountry(country);\r\n return;\r\n }\r\n this.onInput(this.value() + pastedText);\r\n }\r\n\r\n private searchCountry(temp: string): CountryData | undefined {\r\n const country: CountryData | undefined = CountryService.countries.find((c): boolean =>\r\n c.name.toLowerCase().includes(temp.toLowerCase()),\r\n );\r\n\r\n return country;\r\n }\r\n\r\n protected setCountry(country: CountryData): void {\r\n this.$selectedCountry.set(country);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n this.onInput(country.name);\r\n\r\n if (inputElement) {\r\n inputElement.focus();\r\n }\r\n }\r\n\r\n protected autoSetCountry(): void {\r\n const value: string | null = this.value();\r\n if (!value?.length) {\r\n this.$selectedCountry.set({\r\n code: '',\r\n name: '',\r\n iso: 'xx',\r\n phonePrefix: '',\r\n });\r\n return;\r\n }\r\n const country: CountryData | undefined = this.searchCountry(value);\r\n if (country) {\r\n this.$selectedCountry.set(country);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, input, InputSignal, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { DateUtils } from '../../date/date.utils';\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-date',\r\n})\r\nexport abstract class UIInputDateDirective extends UiInputDirective {\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n public readonly $isRangeSelection: InputSignal<boolean> = input(false);\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n protected setDate(date: Date): void {\r\n const newDate: string = this.formatDate(date);\r\n this.onInput(newDate);\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const day: string = date.getDate() < 10 ? '0' + date.getDate() : date.getDate().toString();\r\n const month: string = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1).toString();\r\n\r\n if (this.isUsaDateFormat()) {\r\n return month + '/' + day + '/' + date.getFullYear();\r\n }\r\n\r\n return day + '/' + month + '/' + date.getFullYear();\r\n }\r\n\r\n protected isUsaDateFormat(): boolean {\r\n return DateUtils.isUsaDateFormat();\r\n }\r\n\r\n protected setRangeDates(dates: { start: Date | null; end: Date | null }): void {\r\n if (!dates.start) {\r\n this.onInput('');\r\n return;\r\n }\r\n\r\n const startStr: string = this.formatDate(dates.start);\r\n const endStr: string = dates.end ? this.formatDate(dates.end) : '';\r\n const result: string = endStr ? `${startStr} - ${endStr}` : startStr;\r\n\r\n this.onInput(result);\r\n }\r\n\r\n public override onInput(value: string): void {\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n const start: number | null = inputElement.selectionStart;\r\n const end: number | null = inputElement.selectionEnd;\r\n\r\n const oldValue: string = value;\r\n const newValue: string = this.maskDate(oldValue);\r\n\r\n const oldSlashCount: number = (oldValue.match(/\\//g) || []).length;\r\n const newSlashCount: number = (newValue.match(/\\//g) || []).length;\r\n\r\n const oldDashCount: number = (oldValue.match(/-/g) || []).length;\r\n const newDashCount: number = (newValue.match(/-/g) || []).length;\r\n\r\n const slashAdded: boolean = newSlashCount > oldSlashCount;\r\n const dashAdded: boolean = newDashCount > oldDashCount;\r\n\r\n super.onInput(newValue);\r\n\r\n inputElement.value = newValue;\r\n\r\n if (slashAdded || dashAdded) {\r\n inputElement.setSelectionRange(newValue.length, newValue.length);\r\n } else {\r\n inputElement.setSelectionRange(start, end);\r\n }\r\n }\r\n }\r\n\r\n private maskDate(value: string): string {\r\n const digits: string = value.replace(/\\D/g, '');\r\n\r\n const limit: number = this.$isRangeSelection() ? 16 : 8;\r\n const limited: string = digits.substring(0, limit);\r\n\r\n const formatSingle: (str: string) => string = (str: string): string => {\r\n let res: string = '';\r\n if (str.length > 0) {\r\n res += str.substring(0, 2);\r\n }\r\n if (str.length >= 3) {\r\n res += '/' + str.substring(2, 4);\r\n }\r\n if (str.length >= 5) {\r\n res += '/' + str.substring(4, 8);\r\n }\r\n return res;\r\n };\r\n\r\n if (this.$isRangeSelection()) {\r\n const first: string = limited.substring(0, 8);\r\n const second: string = limited.substring(8, 16);\r\n\r\n const firstDate: string = formatSingle(first);\r\n const secondDate: string = formatSingle(second);\r\n\r\n return secondDate ? `${firstDate} - ${secondDate}` : firstDate;\r\n }\r\n\r\n return formatSingle(limited);\r\n }\r\n}\r\n","import { Directive, AfterViewInit, ElementRef, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { CountryData, emptyCountry, CountryService } from '../../services/country.service';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-phone-number',\r\n})\r\nexport abstract class UIPhoneNumberDirective extends UiInputDirective implements AfterViewInit {\r\n protected $selectedCountry: WritableSignal<CountryData> = signal(emptyCountry);\r\n protected $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n protected $countryCode: WritableSignal<string> = signal('');\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n const selectedCountry: CountryData = CountryService.getCountryByCode('US') ?? emptyCountry;\r\n this.$selectedCountry.set(selectedCountry);\r\n this.$countryCode.set(selectedCountry.phonePrefix + ' ');\r\n }\r\n\r\n protected override onInput(value: string): void {\r\n const digitsOnly: string = value.replace(/\\D/g, '');\r\n\r\n const formattedValue: string = CountryService.formatPhoneNumber(digitsOnly, this.$selectedCountry().code);\r\n\r\n super.onInput(formattedValue);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n inputElement.value = formattedValue;\r\n }\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pastedText: string = event.clipboardData?.getData('text') || '';\r\n\r\n const country: CountryData | undefined = CountryService.countries.find((c): boolean =>\r\n pastedText.startsWith(c.phonePrefix),\r\n );\r\n if (country) {\r\n const localNumber: string = pastedText.slice(country.phonePrefix.length);\r\n\r\n this.setCountry(country);\r\n this.onInput(localNumber);\r\n } else {\r\n this.onInput(this.value() + pastedText);\r\n }\r\n }\r\n\r\n protected setCountry(country: CountryData): void {\r\n this.$selectedCountry.set(country);\r\n this.$countryCode.set(country.phonePrefix);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n inputElement.focus();\r\n }\r\n }\r\n}\r\n","import { Directive, input, InputSignal, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\nexport interface InputSelectData {\r\n value: string;\r\n ico?: AppIcon;\r\n}\r\n\r\n@Directive({\r\n selector: 'app-ui-select',\r\n})\r\nexport abstract class UiInputSelectDirective extends UiInputDirective {\r\n public readonly $items: InputSignal<InputSelectData[]> = input.required();\r\n\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n protected readonly $selectedValue: WritableSignal<InputSelectData> = signal({ value: '' });\r\n}\r\n","import { Directive, InputSignal, input, Signal, computed, ViewChildren, QueryList, ElementRef } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-sequence',\r\n})\r\nexport abstract class UiInputSequenceDirective extends UiInputDirective {\r\n public $numberCells: InputSignal<number> = input(6);\r\n\r\n protected $inputs: Signal<string[]> = computed((): string[] => Array(this.$numberCells()).fill(''));\r\n\r\n @ViewChildren('input')\r\n private inputRefs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n protected onInputSequence(event: Event, index: number): void {\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n const value: string = input.value;\r\n\r\n if (!/^\\d+$/.test(value)) {\r\n input.value = '';\r\n return;\r\n }\r\n\r\n if (value.length > 1) {\r\n input.value = value.charAt(0);\r\n }\r\n\r\n if (value && index < this.$inputs().length - 1) {\r\n this.focusInput(index + 1);\r\n }\r\n this.setValue();\r\n }\r\n protected onClick(event: MouseEvent | FocusEvent): void {\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n input.setSelectionRange(1, 1);\r\n }\r\n\r\n protected onKeyDown(event: KeyboardEvent, index: number): void {\r\n const blocked: string[] = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n\r\n if (blocked.includes(event.key)) {\r\n event.preventDefault();\r\n if (event.key === 'ArrowLeft') {\r\n this.focusInput(index - 1);\r\n }\r\n if (event.key === 'ArrowRight') {\r\n this.focusInput(index + 1);\r\n }\r\n return;\r\n }\r\n\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n\r\n if (event.key === 'Backspace' && !input.value && index > 0) {\r\n this.focusInput(index - 1);\r\n }\r\n }\r\n\r\n private focusInput(index: number): void {\r\n const el: HTMLInputElement = this.inputRefs.toArray()[index]?.nativeElement;\r\n if (el) el.focus();\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent, index: number): void {\r\n event.preventDefault();\r\n\r\n const pasted: string = event.clipboardData?.getData('text') ?? '';\r\n if (!pasted) {\r\n return;\r\n }\r\n const digitsOnly: string = pasted.replace(/\\D/g, '');\r\n\r\n const inputsArray: ElementRef<HTMLInputElement>[] = this.inputRefs.toArray();\r\n\r\n const chars: string[] = digitsOnly.replace(/\\s+/g, '').split('');\r\n\r\n const inputLength: number = this.$inputs().length;\r\n\r\n chars.forEach((char, offset): void => {\r\n const targetIndex: number = index + offset;\r\n if (targetIndex < inputLength) {\r\n const input: HTMLInputElement = inputsArray[targetIndex].nativeElement;\r\n input.value = char;\r\n }\r\n });\r\n\r\n const nextEmpty: number = inputsArray.findIndex((el): boolean => el.nativeElement.value === '');\r\n\r\n if (nextEmpty !== -1) {\r\n this.focusInput(nextEmpty);\r\n } else {\r\n this.focusInput(inputLength - 1);\r\n }\r\n this.setValue();\r\n }\r\n\r\n private setValue(): void {\r\n const inputsArray: ElementRef<HTMLInputElement>[] = this.inputRefs.toArray();\r\n const value: string = inputsArray.map((el): string => el.nativeElement.value).join('');\r\n\r\n this.onInput(value);\r\n }\r\n}\r\n","import { Directive, ElementRef, Signal, signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-time',\r\n})\r\nexport abstract class UiInputTimeDirective extends UiInputDirective {\r\n protected readonly times: string[] = [\r\n '00:00',\r\n '00:30',\r\n '01:00',\r\n '01:30',\r\n '02:00',\r\n '02:30',\r\n '03:00',\r\n '03:30',\r\n '04:00',\r\n '04:30',\r\n '05:00',\r\n '05:30',\r\n '06:00',\r\n '06:30',\r\n '07:00',\r\n '07:30',\r\n '08:00',\r\n '08:30',\r\n '09:00',\r\n '09:30',\r\n '10:00',\r\n '10:30',\r\n '11:00',\r\n '11:30',\r\n '12:00',\r\n '12:30',\r\n '13:00',\r\n '13:30',\r\n '14:00',\r\n '14:30',\r\n '15:00',\r\n '15:30',\r\n '16:00',\r\n '16:30',\r\n '17:00',\r\n '17:30',\r\n '18:00',\r\n '18:30',\r\n '19:00',\r\n '19:30',\r\n '20:00',\r\n '20:30',\r\n '21:00',\r\n '21:30',\r\n '22:00',\r\n '22:30',\r\n '23:00',\r\n '23:30',\r\n ];\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n public override onInput(value: string): void {\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n if (!inputElement) return;\r\n\r\n const start: number | null = inputElement.selectionStart;\r\n const end: number | null = inputElement.selectionEnd;\r\n\r\n const oldValue: string = value;\r\n const newValue: string = this.maskTime(oldValue);\r\n\r\n const oldColonCount: number = (oldValue.match(/:/g) || []).length;\r\n const newColonCount: number = (newValue.match(/:/g) || []).length;\r\n const colonAdded: boolean = newColonCount > oldColonCount;\r\n\r\n super.onInput(newValue);\r\n inputElement.value = newValue;\r\n\r\n if (colonAdded) {\r\n inputElement.setSelectionRange(newValue.length, newValue.length);\r\n } else {\r\n inputElement.setSelectionRange(start, end);\r\n }\r\n }\r\n\r\n public maskTime(value: string): string {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n const digits: string = value.replace(/\\D/g, '').slice(0, 4);\r\n\r\n const len: number = digits.length;\r\n\r\n if (len === 1) {\r\n return digits;\r\n }\r\n\r\n if (len === 2) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n if (hh > 23) hh = 23;\r\n return hh.toString().padStart(2, '0');\r\n }\r\n\r\n if (len === 3) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n if (hh > 23) hh = 23;\r\n const m: string = digits[2];\r\n return `${hh.toString().padStart(2, '0')}:${m}`;\r\n }\r\n\r\n if (len === 4) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n let mm: number = Number(digits.slice(2, 4));\r\n\r\n if (hh > 23) {\r\n hh = 23;\r\n }\r\n if (mm > 59) {\r\n mm = 59;\r\n }\r\n\r\n return `${hh.toString().padStart(2, '0')}:${mm.toString().padStart(2, '0')}`;\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","import { Directive, input, InputSignal } from '@angular/core';\r\nimport { WithOptionalField, ValidationError } from '@angular/forms/signals';\r\n\r\nexport type ValidationErrorsType = WithOptionalField<ValidationError>;\r\n\r\n@Directive({\r\n selector: 'app-ui-validation-errors',\r\n})\r\nexport abstract class UiValidationErrorsDirective {\r\n public readonly $isError: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $errors: InputSignal<readonly ValidationErrorsType[]> =\r\n input.required<readonly ValidationErrorsType[]>();\r\n}\r\n","/*\r\n * Public API Surface of ui-forge-library\r\n */\r\nexport * from './date';\r\nexport * from './directives';\r\n\r\nexport * from './pipes';\r\nexport * from './helpers';\r\nexport * from './icons';\r\nexport * from './regex';\r\nexport * from './services';\r\nexport * from './types';\r\n\r\nexport * from './ui/ui-accordion';\r\nexport * from './ui/ui-alert-messages';\r\nexport * from './ui/ui-avatar';\r\nexport * from './ui/ui-calendar';\r\nexport * from './ui/ui-code';\r\nexport * from './ui/ui-dropdown';\r\nexport * from './ui/ui-image';\r\nexport * from './ui/ui-pagination';\r\nexport * from './ui/ui-popup';\r\nexport * from './ui/ui-buttons';\r\nexport * from './ui/ui-tabs';\r\nexport * from './ui/ui-forms';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LazyImageService","i1.AppIconsLibrary","i2","i1.UiPopupService","i1.UiDropdownService"],"mappings":"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"}
1
+ {"version":3,"file":"ibragim-dev-org-ui-forge-library.mjs","sources":["../../../projects/ui-forge-library/src/date/date.utils.ts","../../../projects/ui-forge-library/src/directives/auto-focus.directive.ts","../../../projects/ui-forge-library/src/services/lazy-image.service.ts","../../../projects/ui-forge-library/src/directives/lazy-img.directive.ts","../../../projects/ui-forge-library/src/directives/mask-gradient.directive.ts","../../../projects/ui-forge-library/src/directives/track-lifecycle.directive.ts","../../../projects/ui-forge-library/src/directives/sticky-observer.directive.ts","../../../projects/ui-forge-library/src/pipes/center-ellipsis.pipe.ts","../../../projects/ui-forge-library/src/helpers/aspect-ratio.helper.ts","../../../projects/ui-forge-library/src/helpers/string-to-color.helper.ts","../../../projects/ui-forge-library/src/icons/icons-library.service.ts","../../../projects/ui-forge-library/src/icons/icon/icon.component.ts","../../../projects/ui-forge-library/src/regex/regex.const.ts","../../../projects/ui-forge-library/src/services/country.service.ts","../../../projects/ui-forge-library/src/services/theme.service.ts","../../../projects/ui-forge-library/src/ui/ui-accordion/ui-accordion.component.ts","../../../projects/ui-forge-library/src/ui/ui-accordion/ui-accordion.component.html","../../../projects/ui-forge-library/src/ui/ui-alert-messages/ui-alert.class.ts","../../../projects/ui-forge-library/src/ui/ui-alert-messages/ui-alert-messages.service.ts","../../../projects/ui-forge-library/src/ui/ui-avatar/ui-avatar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-daily-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-monthly-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-calendar/ui-yearly-calendar.directive.ts","../../../projects/ui-forge-library/src/ui/ui-code/ui-code.directive.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup.instance.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup.service.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup-container.directive.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/ui-dropdown.service.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/ui-dropdown-container.directive.ts","../../../projects/ui-forge-library/src/ui/ui-dropdown/hover-tip.directive.ts","../../../projects/ui-forge-library/src/ui/ui-image/ui-image.directive.ts","../../../projects/ui-forge-library/src/ui/ui-pagination/ui-pagination.directive.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup-image.directive.ts","../../../projects/ui-forge-library/src/ui/ui-popup/ui-popup-backdrop.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-button.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-select-buttons.directive.ts","../../../projects/ui-forge-library/src/ui/ui-buttons/ui-copy-button.directive.ts","../../../projects/ui-forge-library/src/ui/ui-tabs/ui-tabs.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-field-base.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-checkbox.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-country.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-date.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-phone-number.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-select.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-sequence.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-input-time.directive.ts","../../../projects/ui-forge-library/src/ui/ui-forms/ui-validation-errors.directive.ts","../../../projects/ui-forge-library/src/public-api.ts","../../../projects/ui-forge-library/src/ibragim-dev-org-ui-forge-library.ts"],"sourcesContent":["export class DateUtils {\r\n public static parse(value: string, isUsaDateFormat: boolean = DateUtils.isUsaDateFormat()): Date | null {\r\n if (!value) return null;\r\n\r\n const parts: string[] = value.split('/');\r\n if (parts.length !== 3) return null;\r\n\r\n const [first, second, year] = parts.map(Number);\r\n\r\n const month: number = isUsaDateFormat ? first : second;\r\n const day: number = isUsaDateFormat ? second : first;\r\n\r\n if (!day || !month || !year) return null;\r\n if (month < 1 || month > 12) return null;\r\n if (day < 1 || day > 31) return null;\r\n\r\n return new Date(year, month - 1, day);\r\n }\r\n\r\n public static format(date: Date, isUsaDateFormat: boolean = false): string {\r\n const d: string = String(date.getDate()).padStart(2, '0');\r\n const m: string = String(date.getMonth() + 1).padStart(2, '0');\r\n const y: number = date.getFullYear();\r\n return isUsaDateFormat ? `${m}/${d}/${y}` : `${d}/${m}/${y}`;\r\n }\r\n\r\n public static isUsaDateFormat(): boolean {\r\n const localeFromIntl: string | undefined = Intl.DateTimeFormat().resolvedOptions().locale;\r\n const localeFromNavigator: string | undefined = typeof navigator !== 'undefined' ? navigator.language : undefined;\r\n\r\n const locale: string = (localeFromIntl || localeFromNavigator || '').toLowerCase();\r\n return locale === 'en-us' || locale.startsWith('en-us-');\r\n }\r\n\r\n public static setMonthSafe(date: Date, month: number): Date {\r\n const d: Date = new Date(date);\r\n\r\n const year: number = d.getFullYear();\r\n const day: number = d.getDate();\r\n\r\n const lastDay: number = new Date(year, month + 1, 0).getDate();\r\n\r\n d.setDate(Math.min(day, lastDay));\r\n d.setMonth(month);\r\n return d;\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, input, InputSignal } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appAutoFocus]',\r\n})\r\nexport class AutoFocusDirective {\r\n public $shouldFocus: InputSignal<boolean> = input.required({ debugName: 'appAutoFocus' });\r\n\r\n public constructor(private el: ElementRef<HTMLInputElement>) {\r\n effect((): void => {\r\n if (this.$shouldFocus()) {\r\n this.el.nativeElement.focus();\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LazyImageService {\r\n private observer?: IntersectionObserver;\r\n\r\n public getObserver(): IntersectionObserver {\r\n if (!this.observer) {\r\n this.observer = new IntersectionObserver((entries): void => {\r\n entries.forEach((entry): void => {\r\n const img: HTMLImageElement = entry.target as HTMLImageElement;\r\n\r\n if (entry.isIntersecting) {\r\n const src: string | null = img.getAttribute('data-src');\r\n if (src) img.src = src;\r\n\r\n this.observer?.unobserve(img);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return this.observer;\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\n\r\nimport { LazyImageService } from '../services/lazy-image.service';\r\n\r\n@Directive({\r\n selector: 'img[lazySrc]',\r\n})\r\nexport class LazyImgDirective implements OnInit, OnDestroy {\r\n @Input() public lazySrc!: string;\r\n\r\n @Output() public loadError: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private observer!: IntersectionObserver;\r\n\r\n public constructor(\r\n private readonly el: ElementRef<HTMLImageElement>,\r\n private readonly lazyService: LazyImageService,\r\n ) {}\r\n\r\n private onError(): void {\r\n this.loadError.emit();\r\n }\r\n\r\n public ngOnInit(): void {\r\n const img: HTMLImageElement = this.el.nativeElement;\r\n\r\n if (!this.lazySrc || this.lazySrc.trim().length === 0) {\r\n this.loadError.emit();\r\n return;\r\n }\r\n\r\n img.addEventListener('error', this.onError);\r\n\r\n img.setAttribute('data-src', this.lazySrc);\r\n\r\n this.observer = this.lazyService.getObserver();\r\n this.observer.observe(img);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n const img: HTMLImageElement = this.el.nativeElement;\r\n\r\n if (this.observer) {\r\n this.observer.unobserve(img);\r\n }\r\n\r\n img.removeEventListener('error', this.onError);\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n PLATFORM_ID,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime, fromEvent, tap, asyncScheduler } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[markGradientDirective]',\r\n})\r\nexport class MaskGradientDirective implements AfterViewInit {\r\n public id: InputSignal<string> = input.required();\r\n\r\n public constructor(\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly destroyRef: DestroyRef,\r\n private readonly renderer: Renderer2,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {}\r\n\r\n public ngAfterViewInit(): void {\r\n fromEvent(this.elementRef.nativeElement, 'scroll')\r\n .pipe(\r\n tap((): void => {\r\n this.setGradient();\r\n }),\r\n debounceTime(300),\r\n tap((): void => {\r\n const el: HTMLElement = this.elementRef.nativeElement;\r\n const scrollTop: number = el.scrollTop;\r\n if (isPlatformBrowser(this.platformId)) {\r\n sessionStorage.setItem(this.id() + 'scroll-position', scrollTop.toString());\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const scrollPosition: number = parseInt(sessionStorage.getItem(this.id() + 'scroll-position') ?? '0');\r\n this.elementRef.nativeElement.scroll({ behavior: 'instant', top: scrollPosition });\r\n }\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n asyncScheduler.schedule((): void => {\r\n this.setGradient();\r\n });\r\n });\r\n resizeObserver.observe(this.elementRef.nativeElement);\r\n this.destroyRef.onDestroy((): void => resizeObserver.disconnect());\r\n }\r\n }\r\n\r\n private setGradient(): void {\r\n const scrollTop: number = this.elementRef.nativeElement.scrollTop;\r\n const scrollHeight: number = this.elementRef.nativeElement.scrollHeight;\r\n const clientHeight: number = this.elementRef.nativeElement.clientHeight;\r\n\r\n const atTop: boolean = scrollTop < 10;\r\n const atBottom: boolean = scrollTop + clientHeight >= scrollHeight - 10;\r\n\r\n let gradient: string = '';\r\n\r\n if (atTop) {\r\n gradient = `linear-gradient(0deg, rgb(0 0 0 / 0%) 0%, rgb(0 0 0 / 100%) 10%)`;\r\n } else if (atBottom) {\r\n gradient = `linear-gradient(0deg, rgb(0 0 0 / 100%) 90%, rgb(0 0 0 / 0%) 100%)`;\r\n } else {\r\n gradient = `linear-gradient(\r\n 0deg,\r\n rgb(0 0 0 / 0%) 0%,\r\n rgb(0 0 0 / 100%) 10%,\r\n rgb(0 0 0 / 100%) 90%,\r\n rgb(0 0 0 / 0%) 100%\r\n )`;\r\n }\r\n\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'mask-image', gradient);\r\n this.renderer.setStyle(this.elementRef.nativeElement, '-webkit-mask-image', gradient);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n DoCheck,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n OnDestroy,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[trackLifecycle]',\r\n})\r\nexport class TrackLifecycleDirective\r\n implements\r\n OnInit,\r\n OnChanges,\r\n DoCheck,\r\n AfterContentInit,\r\n AfterContentChecked,\r\n AfterViewInit,\r\n AfterViewChecked,\r\n OnDestroy\r\n{\r\n @Output() public onConstructed: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onChanges: EventEmitter<SimpleChanges> = new EventEmitter<SimpleChanges>();\r\n @Output() public onInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onDoCheck: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterContentInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterContentChecked: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterViewInit: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onAfterViewChecked: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() public onDestroy: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public constructor() {\r\n this.onConstructed.emit();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.onChanges.emit(changes);\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.onInit.emit();\r\n }\r\n\r\n public ngDoCheck(): void {\r\n this.onDoCheck.emit();\r\n }\r\n\r\n public ngAfterContentInit(): void {\r\n this.onAfterContentInit.emit();\r\n }\r\n\r\n public ngAfterContentChecked(): void {\r\n this.onAfterContentChecked.emit();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.onAfterViewInit.emit();\r\n }\r\n public ngAfterViewChecked(): void {\r\n this.onAfterViewChecked.emit();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.onDestroy.emit();\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appStickyObserver]',\r\n})\r\nexport class StickyObserverDirective implements AfterViewInit, OnDestroy {\r\n private observer!: IntersectionObserver;\r\n private sentinel!: HTMLDivElement;\r\n\r\n public constructor(\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n protected readonly renderer: Renderer2,\r\n ) {}\r\n\r\n public ngAfterViewInit(): void {\r\n const stickyEl: HTMLElement = this.elementRef.nativeElement;\r\n\r\n this.sentinel = this.renderer.createElement('div') as HTMLDivElement;\r\n this.renderer.setStyle(this.sentinel, 'height', '1px');\r\n this.renderer.setStyle(this.sentinel, 'margin-top', '-1px');\r\n this.renderer.setStyle(this.sentinel, 'pointer-events', 'none');\r\n this.renderer.setStyle(this.sentinel, 'opacity', '0');\r\n\r\n const parent: HTMLElement = stickyEl.parentElement!;\r\n parent.insertBefore(this.sentinel, stickyEl);\r\n\r\n this.observer = new IntersectionObserver(\r\n ([entry]) => {\r\n const isStuck = entry.boundingClientRect.top < 0;\r\n if (isStuck) {\r\n this.renderer.addClass(stickyEl, 'sticked');\r\n } else {\r\n this.renderer.removeClass(stickyEl, 'sticked');\r\n }\r\n },\r\n { threshold: [1] },\r\n );\r\n\r\n this.observer.observe(this.sentinel);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.observer?.disconnect();\r\n this.sentinel?.remove();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'centerEllipsis',\r\n})\r\nexport class CenterEllipsisPipe implements PipeTransform {\r\n public transform(value: string, visibleStart = 4, visibleEnd = 4): string {\r\n if (!value) {\r\n return '';\r\n }\r\n if (value.length <= visibleStart + visibleEnd) {\r\n return value;\r\n }\r\n\r\n const start = value.slice(0, visibleStart);\r\n const end = value.slice(-visibleEnd);\r\n\r\n return `${start}...${end}`;\r\n }\r\n}\r\n","export function getAspectRatioFit(\r\n maxWidth: number,\r\n maxHeight: number,\r\n srcWidth?: number | null,\r\n srcHeight?: number | null,\r\n): { width: number; height: number } {\r\n if (srcWidth && srcHeight) {\r\n const ratio: number = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\r\n return { width: srcWidth * ratio, height: srcHeight * ratio };\r\n }\r\n return { width: maxWidth, height: maxHeight };\r\n}\r\n","export function stringToHslColor(string: string, saturation: number = 100, lightness: number = 75): string {\r\n let hash: number = 0;\r\n for (let i: number = 0; i < string.length; i++) {\r\n hash = string.charCodeAt(i) + ((hash << 5) - hash);\r\n hash = hash & hash;\r\n }\r\n return `hsl(${hash % 360}, ${saturation}%, ${lightness}%)`;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { AppIcon, AppIconName, RawSVG } from './icon.type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppIconsLibrary {\r\n private icons: Map<string, RawSVG> = new Map<AppIconName, RawSVG>();\r\n\r\n public addIcon(icon: RawSVG, name: AppIconName): void {\r\n this.icons.set(\r\n name,\r\n icon\r\n .replace('<svg', '<svg class=\"svg-icon\" ')\r\n .replace(/data-fill/g, 'fill')\r\n .replace(/data-stroke/g, 'stroke') as RawSVG,\r\n );\r\n }\r\n\r\n public getIcon(name: AppIconName): AppIcon | undefined {\r\n const icon: RawSVG | undefined = this.icons.get(name);\r\n if (!icon) {\r\n console.error(`${name} icon was not found`);\r\n return undefined;\r\n }\r\n return { svgData: icon, name };\r\n }\r\n}\r\n","import {\r\n Attribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n SecurityContext,\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { AppIcon, AppIconName } from '../icon.type';\r\nimport { AppIconsLibrary } from '../icons-library.service';\r\n\r\n@Component({\r\n selector: 'app-icon',\r\n template: ``,\r\n styleUrls: ['./icon.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true })\r\n public set icon(i: AppIconName | AppIcon | undefined) {\r\n if (i !== this.iconApp) {\r\n i = i || '';\r\n const prev: string | AppIcon = this.iconApp;\r\n this.iconApp = i;\r\n this.updateIcon(i, prev);\r\n }\r\n }\r\n\r\n private iconApp: AppIconName | AppIcon = '';\r\n\r\n public constructor(\r\n public elementRef: ElementRef<HTMLElement>,\r\n private icons: AppIconsLibrary,\r\n private renderer: Renderer2,\r\n private sanitizer: DomSanitizer,\r\n @Attribute('no-scaling') public noScaling: string,\r\n @Attribute('stroke-diff') public strokeDiff: string,\r\n ) {}\r\n\r\n private updateIcon(current: AppIconName | AppIcon, previous: AppIconName | AppIcon): void {\r\n let rawSvg: string;\r\n let currentClass: string = '';\r\n const previousClass: string = typeof previous === 'object' ? previous.name : previous;\r\n if (typeof current === 'object') {\r\n rawSvg = current.svgData;\r\n currentClass = current.name;\r\n } else {\r\n currentClass = current;\r\n rawSvg = this.icons.getIcon(current)?.svgData || '';\r\n }\r\n if (!rawSvg) {\r\n return;\r\n }\r\n rawSvg = rawSvg\r\n .replace('<svg', '<svg class=\"svg-icon\" ')\r\n .replace(/data-fill/g, 'fill')\r\n .replace(/data-stroke/g, 'stroke');\r\n if (this.noScaling) {\r\n rawSvg = rawSvg.replace(/stroke-width=\"/g, ' vector-effect=\"non-scaling-stroke\" stroke-width=\"');\r\n } else if (this.strokeDiff) {\r\n rawSvg = this.adjustStrokeWidth(rawSvg, +this.strokeDiff);\r\n }\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', rawSvg);\r\n this.renderer.addClass(this.elementRef.nativeElement, 'icon');\r\n if (previousClass) {\r\n this.renderer.removeClass(this.elementRef.nativeElement, previousClass);\r\n }\r\n if (currentClass) {\r\n this.renderer.addClass(this.elementRef.nativeElement, currentClass);\r\n }\r\n }\r\n\r\n private adjustStrokeWidth(svgString: string, strokeDiff: number): string {\r\n return svgString.replace(/stroke-width=\"([\\d.]+)\"/g, (_: string, n: string): string => {\r\n const updatedWidth: number = parseFloat(n) + strokeDiff;\r\n return `stroke-width=\"${updatedWidth}\"`;\r\n });\r\n }\r\n}\r\n","export const HAS_NUMBER: RegExp = /\\d/;\r\nexport const HAS_CAPITAL_CASE: RegExp = /[A-Z]/;\r\nexport const HAS_SMALL_CASE: RegExp = /[a-z]/;\r\nexport const HAS_SPECIAL_CHARTERS: RegExp = /[ !@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/;\r\nexport const MIN_LENGTH: RegExp = /[A-Za-z\\d/!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]{8,30}$/;\r\n\r\nexport const EMAIL: RegExp = /(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,9})/;\r\n","import { PhoneNumberUtil, AsYouTypeFormatter } from 'google-libphonenumber';\r\n\r\nexport interface CountryData {\r\n code: string;\r\n name: string;\r\n iso: string;\r\n phonePrefix: string;\r\n}\r\n\r\nexport const emptyCountry: CountryData = {\r\n code: '',\r\n name: '',\r\n iso: '',\r\n phonePrefix: '',\r\n};\r\n\r\nexport class CountryService {\r\n private static readonly phoneUtil: PhoneNumberUtil = PhoneNumberUtil.getInstance();\r\n\r\n private static readonly flagOverrides: Record<string, string> = {\r\n AC: 'sh-ac',\r\n TA: 'sh-ta',\r\n XK: 'xk',\r\n EA: 'es-ce',\r\n IC: 'es-cn',\r\n CP: 'fr-cp',\r\n DG: 'dg',\r\n GG: 'gg',\r\n JE: 'je',\r\n IM: 'im',\r\n CW: 'cw',\r\n SX: 'sx',\r\n MF: 'mf',\r\n };\r\n\r\n private static readonly supportedRegions: libphonenumber.RegionCode[] =\r\n CountryService.phoneUtil.getSupportedRegions();\r\n\r\n private static readonly regionNames: Intl.DisplayNames = new Intl.DisplayNames(['en'], { type: 'region' });\r\n\r\n private static readonly allCountries: CountryData[] = CountryService.supportedRegions.map((code): CountryData => {\r\n const name: string = CountryService.regionNames.of(code) ?? '';\r\n\r\n const isoCode: string = (CountryService.flagOverrides[code] ?? code).toLowerCase();\r\n const phonePrefix: string = '+' + CountryService.phoneUtil.getCountryCodeForRegion(code);\r\n\r\n return {\r\n code,\r\n name: name,\r\n iso: isoCode,\r\n phonePrefix: phonePrefix,\r\n };\r\n });\r\n\r\n public static readonly countries: CountryData[] = CountryService.allCountries;\r\n\r\n public static formatPhoneNumber(raw: string, countryCode: string): string {\r\n const formatter: AsYouTypeFormatter = new AsYouTypeFormatter(countryCode);\r\n let formatted: string = '';\r\n for (const digit of raw) {\r\n formatted = formatter.inputDigit(digit);\r\n }\r\n return formatted;\r\n }\r\n\r\n public static getCountryByCode(code: string): CountryData | undefined {\r\n return CountryService.countries.find((v): boolean => v.code === code.toUpperCase());\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\n/**\r\n * ThemeService<T>\r\n * A generic, type-safe service for managing and applying color themes.\r\n *\r\n * @template T - The shape of a theme object, typically defined by a shared interface.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ThemeService<T extends object, K extends string> {\r\n private themes: Record<K, T> = {} as Record<K, T>;\r\n\r\n private activeTheme!: K;\r\n\r\n public constructor(@Inject(DOCUMENT) private document: Document) {}\r\n\r\n /**\r\n * Initializes the theme system with a map of named themes and sets the active theme.\r\n *\r\n * @param themes - A record of theme names mapped to theme objects\r\n * @param activeTheme - The name of the theme to activate initially\r\n */\r\n public init(themes: Record<K, T>, activeTheme: K): void {\r\n this.themes = themes;\r\n this.activeTheme = activeTheme;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Returns the name of the currently active theme.\r\n *\r\n * @returns The active theme name\r\n */\r\n public getActive(): K {\r\n return this.activeTheme;\r\n }\r\n\r\n /**\r\n * Sets a new active theme by name and applies its styles.\r\n *\r\n * @param name - The name of the theme to activate\r\n */\r\n public set(name: K): void {\r\n this.activeTheme = name;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Applies the current theme's styles to the document body using CSS variables.\r\n */\r\n private update(): void {\r\n const theme: T = this.themes[this.activeTheme];\r\n Object.entries(theme).forEach(([key, value]): void => {\r\n this.document.body.style.setProperty(key, value);\r\n });\r\n }\r\n}\r\n","import { isPlatformBrowser, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Inject, PLATFORM_ID } from '@angular/core';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n Signal,\r\n signal,\r\n untracked,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { timer, tap, asyncScheduler, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-ui-accordion',\r\n standalone: true,\r\n imports: [NgStyle],\r\n templateUrl: './ui-accordion.component.html',\r\n styleUrl: './ui-accordion.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UiAccordionComponent implements AfterViewInit {\r\n public readonly $isOpen: ModelSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly $durationMs: InputSignal<number> = input<number>(300);\r\n\r\n protected readonly $contentHeight: WritableSignal<string> = signal<string>('0');\r\n\r\n protected readonly $transition: Signal<string> = computed<string>((): string => `all ${this.$durationMs()}ms linear`);\r\n\r\n protected readonly $overflow: WritableSignal<'visible' | 'hidden'> = signal('hidden');\r\n\r\n private readonly $content: Signal<ElementRef<HTMLDivElement> | undefined> =\r\n viewChild<ElementRef<HTMLDivElement>>('container');\r\n\r\n private resizeDebounceTimer: Subscription = new Subscription();\r\n\r\n public constructor(\r\n private readonly destroyRef: DestroyRef,\r\n @Inject(PLATFORM_ID) private readonly platformId: object,\r\n ) {\r\n effect((): void => {\r\n untracked((): void => {\r\n timer(this.$durationMs())\r\n .pipe(\r\n tap((): void => {\r\n this.$overflow.set(this.$isOpen() ? 'visible' : 'hidden');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.setSize();\r\n\r\n const content: ElementRef<HTMLDivElement> | undefined = this.$content();\r\n if (content && isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n this.resizeDebounceTimer.unsubscribe();\r\n\r\n this.resizeDebounceTimer = asyncScheduler.schedule((): void => {\r\n this.setSize();\r\n });\r\n });\r\n resizeObserver.observe(content.nativeElement);\r\n this.destroyRef.onDestroy((): void => resizeObserver.disconnect());\r\n }\r\n }\r\n\r\n private setSize(): void {\r\n const content: ElementRef<HTMLDivElement> | undefined = this.$content();\r\n if (content) {\r\n const height: number = content.nativeElement.offsetHeight;\r\n this.$contentHeight.set(height + 'px');\r\n }\r\n }\r\n}\r\n","<button class=\"button\" (click)=\"$isOpen.set(!$isOpen())\">\r\n <ng-content select=\"[button]\"></ng-content>\r\n</button>\r\n\r\n<div\r\n class=\"content\"\r\n [ngStyle]=\"{\r\n maxHeight: $isOpen() ? $contentHeight() : 0 + 'px',\r\n transition: $transition(),\r\n overflow: $overflow(),\r\n }\"\r\n>\r\n <div #container>\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { ComponentType } from '@angular/cdk/overlay';\r\nimport { ulid } from 'ulid';\r\n\r\nexport enum AlertType {\r\n SUCCESS = 'success',\r\n ERROR = 'error',\r\n INFO = 'information',\r\n WARNING = 'warning',\r\n CUSTOM = 'custom',\r\n}\r\nexport class Alert {\r\n public id: string = ulid();\r\n public type: string = AlertType.SUCCESS;\r\n public title: string = '';\r\n public message: string = '';\r\n public icon: string = '';\r\n public component?: ComponentType<unknown>;\r\n public componentInputs?: {\r\n [P in keyof ComponentType<unknown>]?: ComponentType<unknown>[P];\r\n };\r\n\r\n public constructor(init?: Partial<Alert>) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport interface AlertParams {\r\n title?: string;\r\n message: string;\r\n}\r\n","import { GlobalPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { Injectable, signal, WritableSignal } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { asyncScheduler, filter, Observable, scheduled, switchMap, take, tap, timer } from 'rxjs';\r\n\r\nimport { Alert, AlertParams, AlertType } from './ui-alert.class';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiAlertMessagesService {\r\n public readonly $alerts: WritableSignal<Alert[]> = signal<Alert[]>([]);\r\n private overlayRef?: OverlayRef;\r\n private component: ComponentType<unknown> | null = null;\r\n\r\n public constructor(\r\n private readonly overlay: Overlay,\r\n private router: Router,\r\n ) {}\r\n\r\n public success(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Success!',\r\n type: AlertType.SUCCESS,\r\n message: params.message,\r\n icon: 'success.svg',\r\n }),\r\n );\r\n }\r\n\r\n public error(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Error!',\r\n type: AlertType.ERROR,\r\n message: params.message,\r\n icon: 'error.svg',\r\n }),\r\n );\r\n }\r\n\r\n public information(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Information!',\r\n type: AlertType.INFO,\r\n message: params.message,\r\n icon: 'info.svg',\r\n }),\r\n );\r\n }\r\n\r\n public warning(params: AlertParams): void {\r\n this.open(\r\n new Alert({\r\n title: params.title ?? 'Warning!',\r\n type: AlertType.WARNING,\r\n message: params.message,\r\n icon: 'warning.svg',\r\n }),\r\n );\r\n }\r\n\r\n public remove(alert: Alert): void {\r\n timer(250)\r\n .pipe(\r\n tap((): void => {\r\n this.$alerts.set(this.$alerts().filter((x: Alert): boolean => x !== alert));\r\n }),\r\n switchMap((): Observable<number> => {\r\n if (!this.$alerts().length) {\r\n return timer(250).pipe(\r\n tap((): void => {\r\n this.overlayRef?.detach();\r\n }),\r\n );\r\n }\r\n\r\n return scheduled([0], asyncScheduler);\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public removeAll(): void {\r\n this.$alerts.set([]);\r\n timer(250)\r\n .pipe(\r\n tap((): void => {\r\n this.overlayRef?.detach();\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public init(component: ComponentType<unknown>): void {\r\n this.component = component;\r\n\r\n const strategy: GlobalPositionStrategy = this.overlay.position().global();\r\n\r\n const config: OverlayConfig = new OverlayConfig({\r\n positionStrategy: strategy,\r\n });\r\n this.overlayRef = this.overlay.create(config);\r\n\r\n this.overlayRef.attach(new ComponentPortal(this.component));\r\n }\r\n\r\n protected open(alert: Alert): void {\r\n if (!this.component) {\r\n throw new Error(\r\n '[UiAlertMessagesService] AlertMessagesComponent has not been initialized. ' +\r\n 'Call `init(AlertMessagesComponent)` during application startup (e.g. in `app.config.ts`) to enable alert rendering.',\r\n );\r\n }\r\n\r\n if (!this.$alerts().length) {\r\n this.init(this.component);\r\n }\r\n\r\n this.router.events\r\n .pipe(\r\n filter((v): v is NavigationEnd => v instanceof NavigationEnd),\r\n tap((): void => {\r\n this.removeAll();\r\n }),\r\n take(1),\r\n )\r\n .subscribe();\r\n\r\n this.$alerts.set([...this.$alerts(), alert]);\r\n\r\n timer(10000)\r\n .pipe(\r\n tap((): void => {\r\n this.remove(alert);\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n","import { Directive, effect, input, InputSignal, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { stringToHslColor } from '../../helpers/string-to-color.helper';\r\n\r\ntype AvatarStyles = 'small' | 'medium' | 'large' | 'rounded';\r\n\r\n@Directive({\r\n selector: 'app-ui-avatar',\r\n})\r\nexport abstract class UiAvatarDirective {\r\n public readonly $class: InputSignal<AvatarStyles[]> = input.required<AvatarStyles[]>();\r\n public readonly $src: InputSignal<string> = input.required();\r\n public readonly $acronym: InputSignal<string> = input.required();\r\n\r\n protected readonly $backgroundColor: WritableSignal<string> = signal('');\r\n protected readonly $textColor: WritableSignal<string> = signal('');\r\n protected readonly $text: WritableSignal<string> = signal('');\r\n protected readonly $canShowAvatar: WritableSignal<boolean> = signal(true);\r\n\r\n public constructor() {\r\n effect((): void => {\r\n let acronym: string = '';\r\n this.$acronym()\r\n .split(' ')\r\n .forEach((v: string): void => {\r\n acronym = acronym + v[0];\r\n });\r\n this.$backgroundColor.set(stringToHslColor(this.$acronym(), 100, 85));\r\n this.$textColor.set(stringToHslColor(this.$acronym(), 100, 35));\r\n this.$text.set(acronym);\r\n });\r\n }\r\n}\r\n","import {\r\n computed,\r\n Directive,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n Signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { DateUtils } from '../../date/date.utils';\r\nimport { CalendarDay } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-daily-calendar',\r\n})\r\nexport class UiDailyCalendarDirective {\r\n private readonly weekDaysEuropean: string[] = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\r\n private readonly weekDaysUsa: string[] = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\n public readonly $isRangeSelection: InputSignal<boolean> = input(false);\r\n\r\n public get weekDays(): string[] {\r\n return this.isUsaDateFormat() ? this.weekDaysUsa : this.weekDaysEuropean;\r\n }\r\n\r\n public readonly $dateStart: ModelSignal<Date | null> = model<Date | null>(null);\r\n public readonly $dateEnd: ModelSignal<Date | null> = model<Date | null>(null);\r\n\r\n public readonly $hoverDate: WritableSignal<Date | null> = signal<Date | null>(null);\r\n\r\n public readonly $currentMonth: ModelSignal<number> = model.required();\r\n public readonly $currentYear: ModelSignal<number> = model.required();\r\n\r\n public readonly $onRangeSelect: OutputEmitterRef<{ start: Date | null; end: Date | null }> = output<{\r\n start: Date | null;\r\n end: Date | null;\r\n }>();\r\n\r\n public readonly $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n protected readonly $calendarDays: Signal<CalendarDay[]> = computed((): CalendarDay[] => {\r\n const year: number = this.$currentYear();\r\n const month: number = this.$currentMonth();\r\n return this.generateCalendar(month, year);\r\n });\r\n\r\n private generateCalendar(month: number, year: number): CalendarDay[] {\r\n const firstDayOfMonth: Date = new Date(year, month, 1);\r\n const nativeStartDayOfWeek: number = firstDayOfMonth.getDay();\r\n const startDayOfWeek: number = this.isUsaDateFormat()\r\n ? nativeStartDayOfWeek\r\n : nativeStartDayOfWeek === 0\r\n ? 6\r\n : nativeStartDayOfWeek - 1;\r\n\r\n const daysInMonth: number = new Date(year, month + 1, 0).getDate();\r\n const daysInPrevMonth: number = new Date(year, month, 0).getDate();\r\n\r\n const days: CalendarDay[] = [];\r\n\r\n for (let i: number = startDayOfWeek - 1; i >= 0; i--) {\r\n const day: number = daysInPrevMonth - i;\r\n const newDate: Date = new Date(year, month - 1, day);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: false,\r\n });\r\n }\r\n\r\n for (let d: number = 1; d <= daysInMonth; d++) {\r\n const newDate: Date = new Date(year, month, d);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: true,\r\n });\r\n }\r\n\r\n const totalCells: number = 42;\r\n let nextDay: number = 1;\r\n while (days.length < totalCells) {\r\n const newDate: Date = new Date(year, month + 1, nextDay++);\r\n days.push({\r\n date: newDate,\r\n ...this.getDayState(newDate),\r\n inCurrentMonth: false,\r\n });\r\n }\r\n\r\n return days;\r\n }\r\n\r\n private isSameDay(a: Date | null, b: Date | null): boolean {\r\n if (!a || !b) return false;\r\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n }\r\n\r\n private isBetween(date: Date, start: Date | null, end: Date | null): boolean {\r\n if (!start || !end) return false;\r\n const d: number = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\r\n const s: number = new Date(start.getFullYear(), start.getMonth(), start.getDate()).getTime();\r\n const e: number = new Date(end.getFullYear(), end.getMonth(), end.getDate()).getTime();\r\n return d > s && d < e;\r\n }\r\n\r\n private getDayState(date: Date): Pick<CalendarDay, 'isSelected' | 'isStart' | 'isEnd' | 'inRange' | 'inHoverRange'> {\r\n const hover: Date | null = this.$hoverDate();\r\n\r\n const start: Date | null = this.$dateStart();\r\n const end: Date | null = this.$dateEnd();\r\n\r\n if (!this.$isRangeSelection()) {\r\n return {\r\n isSelected: this.isSameDay(start, date),\r\n isStart: false,\r\n isEnd: false,\r\n inRange: false,\r\n inHoverRange: false,\r\n };\r\n }\r\n\r\n // Range mode\r\n const isStart: boolean = this.isSameDay(start, date);\r\n const isEnd: boolean = this.isSameDay(end, date);\r\n const inRange: boolean = this.isBetween(date, start, end);\r\n\r\n let inHoverRange: boolean = false;\r\n\r\n if (start && !end && hover) {\r\n const d: number = date.getTime();\r\n const s: number = start.getTime();\r\n const h: number = hover.getTime();\r\n\r\n if (h > s) {\r\n inHoverRange = d > s && d <= h;\r\n }\r\n }\r\n\r\n const isSingleSelected: boolean = this.isSameDay(start, date) || this.isSameDay(end, date);\r\n\r\n const isSelected: boolean = isStart || isEnd || (!end && isStart) || isSingleSelected;\r\n\r\n return { isSelected, isStart, isEnd, inRange, inHoverRange };\r\n }\r\n\r\n protected onHover(date: Date | null, inHoverRange: boolean): void {\r\n if (inHoverRange) {\r\n return;\r\n }\r\n\r\n const rangeStart: Date | null = this.$dateStart();\r\n const rangeEnd: Date | null = this.$dateEnd();\r\n\r\n if (!date) {\r\n this.$hoverDate.set(null);\r\n return;\r\n }\r\n\r\n if (!this.$isRangeSelection()) {\r\n return;\r\n }\r\n if (!rangeStart || rangeEnd) {\r\n return;\r\n }\r\n\r\n if (date.getTime() < rangeStart.getTime()) {\r\n this.$hoverDate.set(null);\r\n return;\r\n }\r\n\r\n this.$hoverDate.set(date);\r\n }\r\n\r\n private isUsaDateFormat(): boolean {\r\n return DateUtils.isUsaDateFormat();\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$hoverDate.set(null);\r\n\r\n if (!this.$isRangeSelection()) {\r\n this.$dateStart.set(date);\r\n this.$onSelect.emit(date);\r\n return;\r\n }\r\n\r\n const start: Date | null = this.$dateStart();\r\n const end: Date | null = this.$dateEnd();\r\n\r\n if (!start || (start && end)) {\r\n this.$dateStart.set(date);\r\n this.$dateEnd.set(null);\r\n this.$onRangeSelect.emit({ start: date, end: null });\r\n return;\r\n }\r\n\r\n if (start && !end) {\r\n const clicked: number = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\r\n const s: number = new Date(start.getFullYear(), start.getMonth(), start.getDate()).getTime();\r\n if (clicked < s) {\r\n this.$dateStart.set(date);\r\n this.$onRangeSelect.emit({ start: date, end: null });\r\n return;\r\n }\r\n\r\n this.$dateEnd.set(date);\r\n this.$onRangeSelect.emit({ start: this.$dateStart(), end: date });\r\n return;\r\n }\r\n }\r\n}\r\n","import { computed, Directive, model, ModelSignal, output, OutputEmitterRef, Signal } from '@angular/core';\r\n\r\nimport { CalendarMonthItem } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-monthly-calendar',\r\n})\r\nexport abstract class UiMonthlyCalendarDirective {\r\n public $date: ModelSignal<Date | null> = model<Date | null>(new Date());\r\n\r\n public $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n public $currentYear: ModelSignal<number> = model.required();\r\n\r\n protected $months: Signal<CalendarMonthItem[]> = computed((): CalendarMonthItem[] => {\r\n const year: number = this.$currentYear();\r\n return this.generateMonths(year);\r\n });\r\n\r\n private generateMonths(year: number): CalendarMonthItem[] {\r\n const current: Date = this.$date() ?? new Date();\r\n const day: number = current.getDate();\r\n\r\n const monthNames: string[] = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n\r\n const months: CalendarMonthItem[] = monthNames.map((name, index): CalendarMonthItem => {\r\n const lastDay: number = new Date(year, index + 1, 0).getDate();\r\n\r\n const safeDay: number = Math.min(day, lastDay);\r\n const newDate: Date = new Date(year, index, safeDay);\r\n return {\r\n index,\r\n name,\r\n short: name.substring(0, 3),\r\n date: newDate,\r\n isSelected: this.isSelected(newDate),\r\n };\r\n });\r\n\r\n return months;\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$onSelect.emit(date);\r\n }\r\n\r\n private isSelected(date: Date): boolean {\r\n const selected: Date = this.$date() ?? new Date();\r\n\r\n return (\r\n date.getFullYear() === selected.getFullYear() &&\r\n date.getMonth() === selected.getMonth() &&\r\n date.getDate() === selected.getDate()\r\n );\r\n }\r\n}\r\n","import { computed, Directive, model, ModelSignal, output, OutputEmitterRef, Signal } from '@angular/core';\r\n\r\nimport { CalendarYearItem } from './ui-calendar.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-yearly-calendar',\r\n})\r\nexport class UiYearlyCalendarDirective {\r\n public $date: ModelSignal<Date | null> = model<Date | null>(new Date());\r\n\r\n public $onSelect: OutputEmitterRef<Date> = output<Date>();\r\n\r\n public $currentYear: ModelSignal<number> = model.required();\r\n\r\n protected $years: Signal<CalendarYearItem[]> = computed((): CalendarYearItem[] => {\r\n const year: number = this.$currentYear();\r\n return this.generateYears(year);\r\n });\r\n\r\n private generateYears(startYear: number): CalendarYearItem[] {\r\n const current: Date = this.$date() ?? new Date();\r\n const month: number = current.getMonth();\r\n const day: number = current.getDate();\r\n const selectedYear: number = current.getFullYear();\r\n\r\n const years: CalendarYearItem[] = [];\r\n\r\n for (let i: number = 0; i < 20; i++) {\r\n const year: number = startYear + i;\r\n\r\n years.push({\r\n year,\r\n date: this.createSafeDate(year, month, day),\r\n isSelected: year === selectedYear,\r\n });\r\n }\r\n\r\n return years;\r\n }\r\n\r\n private createSafeDate(year: number, month: number, day: number): Date {\r\n const lastDay: number = new Date(year, month + 1, 0).getDate();\r\n const safeDay: number = Math.min(day, lastDay);\r\n return new Date(year, month, safeDay);\r\n }\r\n\r\n protected select(date: Date): void {\r\n this.$date.set(date);\r\n this.$onSelect.emit(date);\r\n }\r\n}\r\n","import { Directive, effect, input, InputSignal, signal, untracked, WritableSignal } from '@angular/core';\r\n\r\ninterface LangRegExps {\r\n comment: { css: string; regexp: RegExp };\r\n string: { css: string; regexp: RegExp };\r\n class: { css: string; regexp: RegExp };\r\n function: { css: string; regexp: RegExp };\r\n typeKeyword: { css: string; regexp: RegExp };\r\n keyword: { css: string; regexp: RegExp };\r\n module: { css: string; regexp: RegExp };\r\n controlFlowLoop: { css: string; regexp: RegExp };\r\n number: { css: string; regexp: RegExp };\r\n enum: { css: string; regexp: RegExp };\r\n openBracket: { css: string; regexp: RegExp };\r\n closeBracket: { css: string; regexp: RegExp };\r\n operator: { css: string; regexp: RegExp };\r\n remains: { css: string; regexp: RegExp };\r\n}\r\n\r\nconst typescript: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/gs },\r\n class: { css: 'hl4', regexp: /\\b([A-Z][a-zA-Z$#_-]*)\\b/g },\r\n typeKeyword: {\r\n css: 'hl6',\r\n regexp: /\\b(any|boolean|null|number|object|string|void|symbol|bigint|unknown|never)\\b/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp:\r\n /\\b(keyof|debugger|await|async|readonly|delete|instanceof|in|package|type|with|const|true|false|enum|let|var|namespace|as|class|extends|abstract|implements|interface|private|protected|public|static|constructor|function|new|super|this|typeof|yield)\\b/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b(export|import|module|from)\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(<])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b([A-Z0-9]+(?:_[A-Z0-9]+)*)\\b/g },\r\n operator: { css: 'hl12', regexp: /([+\\-=&|=>.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst xml: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /<!--[\\s\\S]*?-->/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/gs },\r\n class: { css: 'hl4', regexp: /\\b/g },\r\n typeKeyword: {\r\n css: 'hl',\r\n regexp: /\\b([a-zA-Z_:][a-zA-Z0-9_.:-]*)\\b(?=\\s*=|\\])/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp: /(?<=<\\/?|!)[a-zA-Z0-9_-]+(?=\\s|>)/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|of|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b([A-Z0-9]+(?:_[A-Z0-9]+)*)\\b/g },\r\n operator: { css: 'hl16', regexp: /([+\\-&/|.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl12', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst json: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /\\b/g },\r\n string: { css: 'hl3', regexp: /([\"'`])([^\"':`]+)\\1(?!\\s*:)/g },\r\n class: { css: 'hl4', regexp: /\\b/g },\r\n typeKeyword: {\r\n css: 'hl6',\r\n regexp: /\\b/g,\r\n },\r\n keyword: {\r\n css: 'hl7',\r\n regexp: /\\b(true|false)/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl11', regexp: /\\b/g },\r\n operator: { css: 'hl12', regexp: /([:,])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst css: LangRegExps = {\r\n comment: { css: 'hl1', regexp: /(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)/g },\r\n string: { css: 'hl3', regexp: /([\"'`].*?[\"'`])/g },\r\n class: { css: 'hl9', regexp: /(?:\\.|:)?[\\w-]+\\s*(?=\\{)/g },\r\n typeKeyword: {\r\n css: 'hl8',\r\n regexp: /@\\w+/g,\r\n },\r\n keyword: {\r\n css: 'hl',\r\n regexp: /\\$\\w[-\\w_]*/g,\r\n },\r\n module: { css: 'hl8', regexp: /\\b/g },\r\n controlFlowLoop: {\r\n css: 'hl8',\r\n regexp: /\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b/g,\r\n },\r\n function: { css: 'hl5', regexp: /\\b([$a-zA-Z_]*[$a-zA-Z0-9$#_-]*)\\s*(?=[(<])/g },\r\n number: { css: 'hl10', regexp: /\\b(\\d+)\\b/g },\r\n enum: { css: 'hl', regexp: /[\\w-_]+:/g },\r\n operator: { css: 'hl12', regexp: /([+\\-=&|=>.;:,?!<>])/g },\r\n openBracket: { css: 'hl13', regexp: /([{\\[(])/g },\r\n closeBracket: { css: 'hl14', regexp: /([}\\])])/g },\r\n remains: { css: 'hl3', regexp: /[^\\%]+/g },\r\n};\r\n\r\nconst codeLanguages: Record<string, LangRegExps> = {\r\n javascript: typescript,\r\n typescript: typescript,\r\n js: typescript,\r\n ts: typescript,\r\n css: css,\r\n json: json,\r\n html: xml,\r\n xml: xml,\r\n};\r\n\r\ninterface Highlighted {\r\n string: string;\r\n index: number;\r\n css: string;\r\n}\r\n\r\n@Directive({\r\n selector: 'app-ui-code',\r\n})\r\nexport abstract class UiCodeDirective {\r\n public readonly $code: InputSignal<string> = input.required();\r\n\r\n protected readonly $language: WritableSignal<string> = signal('');\r\n\r\n protected readonly $highlightedArray: WritableSignal<Highlighted[]> = signal([]);\r\n\r\n public constructor() {\r\n effect((): void => {\r\n this.highlightCode(this.$code());\r\n });\r\n }\r\n\r\n private highlightCode(code: string): void {\r\n code = code.replace(/^\\n+|\\n+$/g, '').trimEnd();\r\n\r\n const split: string[] = code.split(/[\\s\\n]/, 1);\r\n\r\n if (Object.keys(codeLanguages).includes(split[0].toLowerCase())) {\r\n this.$language.set(split[0]);\r\n code = code.replace(split[0], '').trim();\r\n } else {\r\n this.$language.set('hl2');\r\n untracked((): void => {\r\n this.$highlightedArray.set([{ css: 'hl2', string: code.trim(), index: 0 }]);\r\n });\r\n return;\r\n }\r\n\r\n let resultArray: Highlighted[] = [];\r\n\r\n Object.keys(codeLanguages[this.$language()]).forEach((element: string): void => {\r\n resultArray.push(\r\n ...[...code.matchAll(codeLanguages[this.$language()][element as keyof LangRegExps].regexp)].map(\r\n (v): Highlighted => ({\r\n css: codeLanguages[this.$language()][element as keyof LangRegExps].css,\r\n index: v.index,\r\n string: v[0],\r\n }),\r\n ),\r\n );\r\n\r\n code = code.replaceAll(codeLanguages[this.$language()][element as keyof LangRegExps].regexp, (match): string =>\r\n `%`.repeat(match.length),\r\n );\r\n });\r\n\r\n let bracketsStack: number = 0;\r\n\r\n resultArray = resultArray\r\n .sort((a, b): number => (a.index > b.index ? 1 : -1))\r\n .map((m): Highlighted => {\r\n let result: Highlighted = m;\r\n const setResult: () => void = (): void => {\r\n if (bracketsStack % 3 === 0) {\r\n result = { ...m, css: 'hl13' };\r\n }\r\n if (bracketsStack % 3 === 1) {\r\n result = { ...m, css: 'hl14' };\r\n }\r\n if (bracketsStack % 3 === 2) {\r\n result = { ...m, css: 'hl15' };\r\n }\r\n };\r\n if (m.css === 'hl13') {\r\n setResult();\r\n bracketsStack += 1;\r\n }\r\n if (m.css === 'hl14') {\r\n bracketsStack -= 1;\r\n setResult();\r\n }\r\n return result;\r\n });\r\n\r\n this.$highlightedArray.set(resultArray);\r\n }\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { DestroyRef } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nexport interface PopupAnimationOptions {\r\n positionX: number;\r\n positionY: number;\r\n startTransition: string;\r\n endTransition: string;\r\n}\r\n\r\nexport class UiPopupInstance {\r\n public id: string = '';\r\n public width: number = 0;\r\n\r\n public readonly animationOrigin$: BehaviorSubject<string> = new BehaviorSubject<string>('center');\r\n\r\n public readonly options: PopupAnimationOptions = {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0)',\r\n endTransition: 'scale(0)',\r\n };\r\n\r\n private readonly closed: Subject<void> = new Subject<void>();\r\n private readonly shouldClose: Subject<void> = new Subject<void>();\r\n\r\n public constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly destroyRef: DestroyRef,\r\n options: PopupAnimationOptions = {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.8)',\r\n endTransition: 'scale(1)',\r\n },\r\n ) {\r\n this.options = options;\r\n\r\n this.overlayRef\r\n .detachments()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((): void => {\r\n this.closed.next();\r\n this.closed.complete();\r\n\r\n this.overlayRef.dispose();\r\n });\r\n }\r\n\r\n public close(): void {\r\n this.shouldClose.next();\r\n this.shouldClose.complete();\r\n }\r\n\r\n public detach(): void {\r\n this.overlayRef.detach();\r\n }\r\n\r\n public onShouldClose(): Observable<void> {\r\n return this.shouldClose.asObservable();\r\n }\r\n}\r\n","import { ComponentType, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ComponentRef, DestroyRef, Injectable, Injector, Type } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { debounceTime, fromEvent, Observable, Subject, switchMap, takeUntil, tap, timer } from 'rxjs';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\nimport { PopupAnimationOptions, UiPopupInstance } from './ui-popup.instance';\r\nimport { UiPopupOptions } from './ui-popup.interfaces';\r\n\r\ninterface PopupParameters {\r\n animationOptions: PopupAnimationOptions;\r\n isStaticBackdrop: boolean;\r\n isClosePrevious: boolean;\r\n width: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiPopupService {\r\n public popupInstances: UiPopupInstance[] = [];\r\n private backdropRef?: OverlayRef;\r\n private backdropPortal?: ComponentPortal<unknown>;\r\n private backdropPortalRef?: ComponentRef<ComponentType<unknown>>;\r\n\r\n protected readonly destroyDownloading$: Subject<void> = new Subject<void>();\r\n\r\n protected readonly destroyOutsideClickSubscription$: Subject<void> = new Subject<void>();\r\n\r\n public constructor(\r\n protected overlay: Overlay,\r\n protected injector: Injector,\r\n protected destroyRef: DestroyRef,\r\n protected router: Router,\r\n ) {}\r\n\r\n public init<TComponent>(component: Type<TComponent>): void {\r\n this.backdropPortal = new ComponentPortal(component);\r\n }\r\n\r\n /**\r\n * Opens a popup with the specified component and options.\r\n *\r\n * @param component - The component to be displayed in the popup.\r\n * @param options - Configuration options for the popup, including inputs.\r\n * @param id - A unique identifier for the popup instance.\r\n * @param parameters - (Optional) Configuration options for the popup.\r\n */\r\n public open<TComponent>(\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n parameters: Partial<PopupParameters>,\r\n ): void {\r\n if (this.popupInstances.length) {\r\n if (parameters.isClosePrevious) {\r\n this.closePrevious();\r\n }\r\n }\r\n\r\n this.showBackdrop(parameters.isStaticBackdrop);\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\r\n });\r\n\r\n this.subscribeToOutsideEvents();\r\n\r\n this.createPopup<TComponent>(overlayRef, component, options, id, parameters);\r\n }\r\n\r\n /**\r\n * Opens a popup that scales from the provided origin element to the centered popup size.\r\n * Useful for image-preview transitions where the source element animates into the popup.\r\n */\r\n public openScaledFromElement<TComponent>(\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n originElement: HTMLElement,\r\n sourceWidth: number,\r\n sourceHeight: number,\r\n parameters: Partial<PopupParameters> = {},\r\n ): void {\r\n const animationOptions: PopupAnimationOptions = this.createScaleAnimationOptionsFromElement(\r\n originElement,\r\n sourceWidth,\r\n sourceHeight,\r\n );\r\n\r\n this.open(component, options, id, {\r\n ...parameters,\r\n animationOptions,\r\n });\r\n }\r\n\r\n /**\r\n * Closes the last opened popup.\r\n */\r\n public close(): void {\r\n if (this.popupInstances.length >= 1) {\r\n this.popupInstances[this.popupInstances.length - 1].close();\r\n this.popupInstances.pop();\r\n if (!this.popupInstances.length) {\r\n this.destroy();\r\n }\r\n }\r\n }\r\n\r\n private closePrevious(): void {\r\n if (this.popupInstances.length >= 1) {\r\n this.popupInstances[this.popupInstances.length - 1].close();\r\n this.popupInstances.pop();\r\n }\r\n }\r\n\r\n /**\r\n * Closes a popup by its index in the popupInstances array.\r\n *\r\n * @param index - The index of the popup to close.\r\n */\r\n public closeByIndex(index: number): void {\r\n this.popupInstances[index].close();\r\n this.popupInstances.splice(index, 1);\r\n if (!this.popupInstances.length) {\r\n this.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Closes a popup by its unique identifier.\r\n *\r\n * @param id - The unique identifier of the popup to close.\r\n */\r\n public closeById(id: string): void {\r\n const dropDownIndex: number = this.popupInstances.findIndex((v: UiPopupInstance): boolean => v.id === id);\r\n\r\n if (dropDownIndex >= 0) {\r\n this.closeByIndex(dropDownIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Closes all currently opened popups.\r\n */\r\n public closeAll(): void {\r\n this.popupInstances.forEach((element: UiPopupInstance): void => {\r\n element.close();\r\n });\r\n this.popupInstances = [];\r\n this.destroy();\r\n }\r\n\r\n /**\r\n * Creates a popup instance with the specified component and options.\r\n *\r\n * @param overlayRef - The overlay reference for the popup.\r\n * @param component - The component to be displayed in the popup.\r\n * @param options - Configuration options for the popup, including inputs.\r\n * @param id - A unique identifier for the popup instance.\r\n * @param parameters - (Optional) Configuration options for the popup.\r\n */\r\n protected createPopup<TComponent>(\r\n overlayRef: OverlayRef,\r\n component: Type<TComponent>,\r\n options: UiPopupOptions<TComponent>,\r\n id: string,\r\n parameters: Partial<PopupParameters>,\r\n ): void {\r\n const newParameters: PopupParameters = this.fetchPopupParameters(parameters);\r\n\r\n const uiPopupInstance: UiPopupInstance = new UiPopupInstance(\r\n overlayRef,\r\n this.destroyRef,\r\n newParameters.animationOptions,\r\n );\r\n\r\n if (newParameters.width > 0) {\r\n uiPopupInstance.width = newParameters.width;\r\n }\r\n\r\n const injector: Injector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: UiPopupInstance, useValue: uiPopupInstance }],\r\n });\r\n\r\n const componentRef: ComponentRef<TComponent> = overlayRef.attach(\r\n new ComponentPortal(component, undefined, injector),\r\n );\r\n\r\n if (options) {\r\n if (options.inputs) {\r\n Object.keys(options.inputs).forEach((key: string): void => {\r\n if (options.inputs) {\r\n componentRef.setInput(key, options.inputs[key as keyof typeof options.inputs]);\r\n }\r\n });\r\n }\r\n }\r\n uiPopupInstance.id = id;\r\n this.popupInstances.push(uiPopupInstance);\r\n }\r\n\r\n /**\r\n * Subscribes to outside events (e.g., scroll, router events) to close popups.\r\n */\r\n protected subscribeToOutsideEvents(): void {\r\n this.destroyOutsideClickSubscription$.next();\r\n\r\n fromEvent(window, 'scroll')\r\n .pipe(\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n\r\n this.router.events\r\n .pipe(\r\n debounceTime(100),\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n protected destroy(): void {\r\n this.hideBackdrop();\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n protected showBackdrop(isStaticBackdrop: boolean = false): void {\r\n document.body.style.setProperty('overflow-y', 'hidden');\r\n\r\n if (this.backdropRef) {\r\n return;\r\n }\r\n\r\n this.backdropRef = this.overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\r\n scrollStrategy: this.overlay.scrollStrategies.noop(),\r\n });\r\n\r\n this.backdropPortalRef = this.backdropRef.attach(this.backdropPortal);\r\n if (this.backdropPortalRef) {\r\n this.backdropPortalRef.location.nativeElement.classList.add('animate-in');\r\n this.backdropPortalRef.setInput('isStaticBackdrop', isStaticBackdrop);\r\n }\r\n }\r\n\r\n protected hideBackdrop(): void {\r\n if (!this.backdropRef) {\r\n return;\r\n }\r\n\r\n if (this.backdropPortalRef) {\r\n this.backdropPortalRef.location.nativeElement.classList.remove('animate-in');\r\n this.backdropPortalRef.location.nativeElement.classList.add('animate-out');\r\n }\r\n\r\n timer(150)\r\n .pipe(\r\n tap(() => {\r\n this.backdropRef?.detach();\r\n this.backdropRef?.dispose();\r\n this.backdropRef = undefined;\r\n document.body.style.setProperty('overflow-y', 'auto');\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Fetches and normalizes popup parameters.\r\n *\r\n * @param parameters - Partial configuration options for the popup.\r\n * @returns A complete set of popup parameters with default values applied.\r\n */\r\n private fetchPopupParameters(parameters: Partial<PopupParameters>): PopupParameters {\r\n return {\r\n animationOptions:\r\n parameters.animationOptions === undefined\r\n ? {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.8)',\r\n endTransition: 'scale(1)',\r\n }\r\n : parameters.animationOptions,\r\n isClosePrevious: parameters.isClosePrevious === undefined ? false : parameters.isClosePrevious,\r\n isStaticBackdrop: parameters.isStaticBackdrop === undefined ? false : parameters.isStaticBackdrop,\r\n width: parameters.width === undefined ? 0 : parameters.width,\r\n };\r\n }\r\n\r\n private createScaleAnimationOptionsFromElement(\r\n originElement: HTMLElement,\r\n sourceWidth: number,\r\n sourceHeight: number,\r\n ): PopupAnimationOptions {\r\n const rect: DOMRect = originElement.getBoundingClientRect();\r\n\r\n const centerX: number = window.innerWidth / 2;\r\n const centerY: number = window.innerHeight / 2;\r\n\r\n const targetX: number = rect.left + rect.width / 2;\r\n const targetY: number = rect.top + rect.height / 2;\r\n\r\n const offsetX: number = targetX - centerX;\r\n const offsetY: number = targetY - centerY;\r\n\r\n const fitted = getAspectRatioFit(\r\n window.innerWidth - window.innerWidth / 8,\r\n window.innerHeight - window.innerHeight / 8,\r\n sourceWidth,\r\n sourceHeight,\r\n );\r\n\r\n const scaleY: number = Math.trunc((sourceHeight / fitted.height) * 100) / 100;\r\n const scaleX: number = Math.trunc((sourceWidth / fitted.width) * 100) / 100;\r\n\r\n return {\r\n positionX: offsetX,\r\n positionY: offsetY,\r\n startTransition: `scale(${scaleY}, ${scaleX})`,\r\n endTransition: 'scale(1)',\r\n };\r\n }\r\n}\r\n","import {\r\n DestroyRef,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n model,\r\n ModelSignal,\r\n OnInit,\r\n signal,\r\n untracked,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject, tap, takeUntil, fromEvent, timer } from 'rxjs';\r\n\r\nimport { UiPopupInstance } from './ui-popup.instance';\r\nimport { UiPopupAnimation } from './ui-popup.interfaces';\r\nimport { UiPopupService } from './ui-popup.service';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\n@Directive({\r\n selector: 'app-ui-popup-container',\r\n})\r\nexport abstract class UiPopupContainerDirective implements OnInit {\r\n protected readonly $isShow: WritableSignal<boolean> = signal(false);\r\n\r\n protected readonly $pulseTrigger: WritableSignal<boolean> = signal(false);\r\n\r\n public readonly $overflowHidden: InputSignal<boolean> = input(true);\r\n\r\n public readonly $shouldClose: ModelSignal<boolean> = model(false);\r\n\r\n public readonly $hasCloseButton: InputSignal<boolean> = input(false);\r\n\r\n public readonly $isEnableFadeAnimation: InputSignal<boolean> = input(true);\r\n\r\n protected readonly $iconClose: ModelSignal<AppIcon | undefined> = model();\r\n\r\n protected readonly $animationParams: WritableSignal<UiPopupAnimation> = signal<UiPopupAnimation>({\r\n startOrigin: 'center center',\r\n endOrigin: 'center center',\r\n start: 'transformY(0)',\r\n end: 'transformY(-20%)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n\r\n protected readonly destroyAnimationOrigin$: Subject<void> = new Subject();\r\n\r\n public constructor(\r\n @Inject(UiPopupInstance) protected popupInstance: UiPopupInstance,\r\n protected destroyRef: DestroyRef,\r\n protected popupService: UiPopupService,\r\n protected elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n effect((): void => {\r\n if (this.$shouldClose()) {\r\n untracked((): void => {\r\n this.close();\r\n });\r\n }\r\n });\r\n\r\n effect((): void => {\r\n const params: UiPopupAnimation = this.$animationParams();\r\n this.elementRef.nativeElement.style.setProperty('--start', params.start);\r\n this.elementRef.nativeElement.style.setProperty('--end', params.end);\r\n this.elementRef.nativeElement.style.setProperty('--start-origin', params.startOrigin);\r\n this.elementRef.nativeElement.style.setProperty('--end-origin', params.endOrigin);\r\n this.elementRef.nativeElement.style.setProperty('--left-start', params.leftStart);\r\n this.elementRef.nativeElement.style.setProperty('--left-end', params.leftEnd);\r\n this.elementRef.nativeElement.style.setProperty('--top-start', params.topStart);\r\n this.elementRef.nativeElement.style.setProperty('--top-end', params.topEnd);\r\n });\r\n }\r\n public ngOnInit(): void {\r\n this.popupInstance\r\n .onShouldClose()\r\n .pipe(\r\n tap((): void => {\r\n this.$isShow.set(false);\r\n }),\r\n\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n this.popupInstance.animationOrigin$\r\n .pipe(\r\n tap((e: string): void => {\r\n this.$animationParams.set({\r\n startOrigin: e,\r\n endOrigin: e,\r\n start: this.popupInstance.options.startTransition,\r\n end: this.popupInstance.options.endTransition,\r\n leftStart: `${this.popupInstance.options.positionX}px`,\r\n leftEnd: '0',\r\n topStart: `${this.popupInstance.options.positionY}px`,\r\n topEnd: '0',\r\n });\r\n\r\n this.$isShow.set(true);\r\n }),\r\n takeUntil(this.destroyAnimationOrigin$),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<KeyboardEvent>(window, 'keydown')\r\n .pipe(\r\n tap((e: KeyboardEvent): void => {\r\n if (e.key === 'Escape' || e.key === 'Esc') {\r\n this.close();\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n protected close(): void {\r\n if (this.popupInstance.id) {\r\n this.popupService.closeById(this.popupInstance.id);\r\n return;\r\n }\r\n\r\n this.popupService.close();\r\n }\r\n\r\n protected onAnimationDone(): void {\r\n if (!this.$isShow()) {\r\n this.popupInstance.detach();\r\n }\r\n }\r\n\r\n protected shouldClose(): void {\r\n this.$shouldClose.set(true);\r\n }\r\n}\r\n","import {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n OverlayRef,\r\n PositionStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject, Observable, switchMap, takeUntil, tap, timer } from 'rxjs';\r\n\r\nimport { DropdownParameters, DropdownPosition } from './ui-dropdown.interfaces';\r\nimport { UiPopupService } from '../ui-popup/ui-popup.service';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UiDropdownService extends UiPopupService {\r\n private tipContainerRef?: OverlayRef;\r\n private tipContainerPortal?: ComponentPortal<unknown>;\r\n\r\n public containerSize$: BehaviorSubject<{ width: number; height: number }> = new BehaviorSubject({\r\n width: 0,\r\n height: 0,\r\n });\r\n\r\n private connectedPositions: Record<\r\n DropdownPosition,\r\n { animationOrigin: string; connectedPosition: ConnectedPosition }\r\n > = {\r\n bottom: {\r\n animationOrigin: 'top center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n top: {\r\n animationOrigin: 'bottom center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n center: {\r\n animationOrigin: 'center center',\r\n connectedPosition: {\r\n originX: 'center',\r\n originY: 'center',\r\n overlayX: 'center',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n left: {\r\n animationOrigin: 'right center',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n right: {\r\n animationOrigin: 'left center',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'right-top': {\r\n animationOrigin: 'left bottom',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'right-bottom': {\r\n animationOrigin: 'left top',\r\n connectedPosition: {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'left-top': {\r\n animationOrigin: 'right bottom',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n 'left-bottom': {\r\n animationOrigin: 'right top',\r\n connectedPosition: {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetY: 0,\r\n offsetX: 0,\r\n },\r\n },\r\n };\r\n\r\n public override init(component: Type<unknown>, tipComponent?: Type<unknown>): void {\r\n super.init(component);\r\n\r\n if (tipComponent) {\r\n this.tipContainerPortal = new ComponentPortal(tipComponent);\r\n }\r\n }\r\n\r\n /**\r\n * Opens a tooltip (tip) component attached to a specific HTML element.\r\n * The tooltip displays text content with customizable position and offset.\r\n *\r\n * @param text - The text content to display in the tooltip.\r\n * @param attachedRef - The HTML element to which the tooltip is attached.\r\n * @param id - A unique identifier for the tooltip instance.\r\n * @param position - (Optional) The positioning of the tooltip relative to the attached element (default: 'top').\r\n * Available positions: 'top', 'bottom', 'left', 'right', 'center',\r\n * 'left-top', 'left-bottom', 'right-top', 'right-bottom'.\r\n * @param offsetY - (Optional) Vertical offset for tooltip positioning in pixels (default: 0).\r\n * @param offsetX - (Optional) Horizontal offset for tooltip positioning in pixels (default: 0).\r\n *\r\n */\r\n public openTip(\r\n text: string,\r\n attachedRef: HTMLElement,\r\n id: string,\r\n position: DropdownPosition = 'top',\r\n offsetY: number = 0,\r\n offsetX: number = 0,\r\n ): void {\r\n if (this.tipContainerRef) {\r\n return;\r\n }\r\n\r\n const tipComponent = this.tipContainerPortal?.component;\r\n\r\n if (tipComponent) {\r\n this.openAttached(\r\n tipComponent,\r\n attachedRef,\r\n id,\r\n {\r\n options: {\r\n inputs: {\r\n text: text,\r\n },\r\n },\r\n position: position,\r\n hasBackdrop: false,\r\n removePrevious: false,\r\n hasAttachedWidth: false,\r\n },\r\n offsetY,\r\n offsetX,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Opens a dropdown attached to a specific HTML element.\r\n *\r\n * @param component - The component to be displayed in the dropdown.\r\n * @param attachedRef - The HTML element to which the dropdown is attached.\r\n * @param id - A unique identifier for the dropdown instance.\r\n * @param parameters - (Optional) Configuration options for the dropdown.\r\n * @param offsetY - (Optional) Vertical offset for dropdown positioning.\r\n * @param offsetX - (Optional) Horizontal offset for dropdown positioning.\r\n */\r\n public openAttached<TComponent>(\r\n component: Type<TComponent>,\r\n attachedRef: HTMLElement,\r\n id: string,\r\n parameters: Partial<DropdownParameters<TComponent>> = {},\r\n offsetY: number = 0,\r\n offsetX: number = 0,\r\n ): void {\r\n const fetchedParameters: DropdownParameters<TComponent> = this.fetchDropDownParameters(parameters);\r\n\r\n let attachedWidth: number = 0;\r\n\r\n if (fetchedParameters.hasAttachedWidth) {\r\n attachedWidth = attachedRef.clientWidth;\r\n }\r\n\r\n // Reset old outside listeners before opening a new dropdown to avoid stale close callbacks.\r\n if (this.popupInstances.length) {\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n if (fetchedParameters.removePrevious && this.popupInstances.length) {\r\n this.close();\r\n }\r\n\r\n if (window.matchMedia('(max-width: 48rem)').matches) {\r\n this.showBackdrop();\r\n }\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: fetchedParameters.hasBackdrop,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.createPositionStrategy(attachedRef, fetchedParameters, offsetX, offsetY),\r\n });\r\n\r\n if (fetchedParameters.removePrevious) {\r\n this.subscribeToOutsideEvents(overlayRef);\r\n }\r\n\r\n this.createPopup<TComponent>(overlayRef, component, fetchedParameters.options ?? {}, id, { width: attachedWidth });\r\n\r\n this.popupInstances[this.popupInstances.length - 1].animationOrigin$.next(\r\n this.connectedPositions[parameters.position ?? 'bottom'].animationOrigin,\r\n );\r\n }\r\n\r\n /**\r\n * Opens a dropdown from the mouse position with intelligent border detection.\r\n * The dropdown grows from the mouse cursor, adjusting position and animation origin\r\n * based on available space near window boundaries.\r\n *\r\n * @param component - The component to be displayed in the dropdown.\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param id - A unique identifier for the dropdown instance.\r\n * @param parameters - (Optional) Configuration options for the dropdown.\r\n */\r\n public openAtMousePosition<TComponent>(\r\n component: Type<TComponent>,\r\n event: MouseEvent,\r\n id: string,\r\n parameters: Partial<DropdownParameters<TComponent>> = {},\r\n ): void {\r\n const fetchedParameters: DropdownParameters<TComponent> = this.fetchDropDownParameters(parameters);\r\n\r\n // Reset old outside listeners before opening a new dropdown to avoid stale close callbacks.\r\n if (this.popupInstances.length) {\r\n this.destroyOutsideClickSubscription$.next();\r\n }\r\n\r\n if (fetchedParameters.removePrevious && this.popupInstances.length) {\r\n this.close();\r\n }\r\n\r\n if (window.matchMedia('(max-width: 48rem)').matches) {\r\n this.showBackdrop();\r\n }\r\n\r\n const overlayRef: OverlayRef = this.overlay.create({\r\n hasBackdrop: fetchedParameters.hasBackdrop,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n positionStrategy: this.createMousePositionStrategy(event),\r\n });\r\n\r\n if (fetchedParameters.removePrevious) {\r\n this.subscribeToOutsideEvents(overlayRef);\r\n }\r\n\r\n this.createPopup<TComponent>(overlayRef, component, fetchedParameters.options ?? {}, id, {\r\n animationOptions: {\r\n positionX: 0,\r\n positionY: 0,\r\n startTransition: 'scale(0.4)',\r\n endTransition: 'scale(1)',\r\n },\r\n });\r\n\r\n this.containerSize$\r\n .pipe(\r\n tap((size: { width: number; height: number }): void => {\r\n if (size.width === 0 || size.height === 0) {\r\n return;\r\n }\r\n\r\n const animationOrigin = this.calculateMousePositionAnimationOrigin(event, size);\r\n const positionAdjustment = this.calculateMousePositionAdjustment(event, size);\r\n\r\n this.popupInstances[this.popupInstances.length - 1].animationOrigin$.next(animationOrigin);\r\n\r\n const positionStrategy = overlayRef.getConfig().positionStrategy;\r\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy && positionAdjustment) {\r\n positionStrategy.setOrigin({ x: positionAdjustment.left, y: positionAdjustment.top });\r\n overlayRef.updatePosition();\r\n }\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Calculates the animation origin based on mouse position relative to window boundaries.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param containerSize - The size of the dropdown container.\r\n * @returns The animation origin string (e.g., 'top left', 'bottom right').\r\n */\r\n private calculateMousePositionAnimationOrigin(\r\n event: MouseEvent,\r\n containerSize: { width: number; height: number },\r\n ): string {\r\n const EDGE_MARGIN = 20;\r\n const rightSpace = document.body.clientWidth - event.clientX;\r\n const bottomSpace = document.body.clientHeight - event.clientY;\r\n const hasRightSpace = rightSpace >= containerSize.width + EDGE_MARGIN;\r\n const hasBottomSpace = bottomSpace >= containerSize.height + EDGE_MARGIN;\r\n\r\n if (!hasRightSpace && !hasBottomSpace) {\r\n return 'bottom right';\r\n }\r\n if (!hasRightSpace) {\r\n return 'top right';\r\n }\r\n if (!hasBottomSpace) {\r\n return 'bottom left';\r\n }\r\n return 'top left';\r\n }\r\n\r\n /**\r\n * Calculates position adjustments for the dropdown when opened from mouse position.\r\n * Ensures the dropdown stays within boundaries and positions intelligently.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @param containerSize - The size of the dropdown container.\r\n * @returns An object with left and top position adjustments.\r\n */\r\n private calculateMousePositionAdjustment(\r\n event: MouseEvent,\r\n containerSize: { width: number; height: number },\r\n ): { left: number; top: number } {\r\n const EDGE_MARGIN = 20;\r\n const rightSpace = document.body.clientWidth - event.clientX;\r\n const bottomSpace = document.body.clientHeight - event.clientY;\r\n\r\n let left = event.clientX;\r\n let top = event.clientY;\r\n\r\n if (rightSpace < containerSize.width + EDGE_MARGIN && bottomSpace < containerSize.height + EDGE_MARGIN) {\r\n left = event.clientX - containerSize.width + (rightSpace - EDGE_MARGIN);\r\n top = event.clientY - containerSize.height + (bottomSpace - EDGE_MARGIN);\r\n } else if (rightSpace < containerSize.width + EDGE_MARGIN) {\r\n left = event.clientX - containerSize.width + (rightSpace - EDGE_MARGIN);\r\n } else if (bottomSpace < containerSize.height + EDGE_MARGIN) {\r\n top = event.clientY - containerSize.height + (bottomSpace - EDGE_MARGIN);\r\n }\r\n\r\n return { left, top };\r\n }\r\n\r\n /**\r\n * Creates a global position strategy for mouse-positioned dropdowns.\r\n *\r\n * @param event - The MouseEvent containing the cursor position.\r\n * @returns The configured PositionStrategy for the overlay.\r\n */\r\n private createMousePositionStrategy(event: MouseEvent): PositionStrategy {\r\n if (window.innerWidth <= 768) {\r\n return this.overlay.position().global().bottom();\r\n }\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo({ x: event.clientX, y: event.clientY })\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n ]);\r\n }\r\n\r\n protected override subscribeToOutsideEvents(overlayRef?: OverlayRef): void {\r\n super.subscribeToOutsideEvents();\r\n\r\n if (!overlayRef) {\r\n return;\r\n }\r\n\r\n timer(150)\r\n .pipe(\r\n switchMap((): Observable<MouseEvent> => overlayRef.outsidePointerEvents()),\r\n tap((): void => {\r\n this.closeAll();\r\n }),\r\n takeUntil(this.destroyOutsideClickSubscription$),\r\n )\r\n .subscribe();\r\n }\r\n\r\n /**\r\n * Fetches and normalizes dropdown parameters.\r\n *\r\n * @param parameters - Partial configuration options for the dropdown.\r\n * @returns A complete set of dropdown parameters with default values applied.\r\n */\r\n private fetchDropDownParameters<TComponent>(\r\n parameters: Partial<DropdownParameters<TComponent>>,\r\n ): DropdownParameters<TComponent> {\r\n return {\r\n hasBackdrop: parameters.hasBackdrop === undefined ? false : parameters.hasBackdrop,\r\n options: parameters.options === undefined ? {} : parameters.options,\r\n position: parameters.position === undefined ? 'bottom' : parameters.position,\r\n removePrevious: parameters.removePrevious === undefined ? true : parameters.removePrevious,\r\n hasAttachedWidth: parameters.hasAttachedWidth === undefined ? false : parameters.hasAttachedWidth,\r\n };\r\n }\r\n\r\n /**\r\n * Creates a position strategy for the dropdown overlay.\r\n *\r\n * @param attachedRef - The HTML element to which the dropdown is attached.\r\n * @param parameters - The normalized dropdown parameters, including position and options.\r\n * @param offsetX - Horizontal offset for dropdown positioning.\r\n * @param offsetY - Vertical offset for dropdown positioning.\r\n * @returns The configured PositionStrategy for the overlay.\r\n */\r\n private createPositionStrategy<TComponent>(\r\n attachedRef: HTMLElement,\r\n parameters: DropdownParameters<TComponent>,\r\n offsetX: number,\r\n offsetY: number,\r\n ): PositionStrategy {\r\n if (window.innerWidth <= 768) {\r\n return this.overlay.position().global().bottom();\r\n }\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(attachedRef)\r\n .withPositions([\r\n {\r\n ...this.connectedPositions[parameters.position ?? 'bottom'].connectedPosition,\r\n offsetX: offsetX,\r\n offsetY: offsetY,\r\n },\r\n ]);\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n OnInit,\r\n Renderer2,\r\n signal,\r\n Signal,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, tap } from 'rxjs';\r\n\r\nimport { UiDropdownService } from './ui-dropdown.service';\r\nimport { UiPopupContainerDirective } from '../ui-popup/ui-popup-container.directive';\r\nimport { UiPopupInstance } from '../ui-popup/ui-popup.instance';\r\nimport { UiPopupAnimation } from '../ui-popup/ui-popup.interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-drop-down-container',\r\n})\r\nexport abstract class UiDropdownContainerDirective extends UiPopupContainerDirective implements AfterViewInit, OnInit {\r\n protected readonly $width: WritableSignal<string> = signal<string>('');\r\n private readonly $contentWrapper: Signal<ElementRef<HTMLElement> | undefined> =\r\n viewChild<ElementRef<HTMLElement>>('contentWrapper');\r\n\r\n private readonly $swipeButton: Signal<ElementRef<HTMLButtonElement> | undefined> =\r\n viewChild<ElementRef<HTMLButtonElement>>('swipeButton');\r\n\r\n protected override $animationParams: WritableSignal<UiPopupAnimation> = signal<UiPopupAnimation>({\r\n startOrigin: 'center center',\r\n endOrigin: 'center center',\r\n start: 'scale(0)',\r\n end: 'scale(1)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n\r\n public constructor(\r\n private dropDownService: UiDropdownService,\r\n @Inject(UiPopupInstance) popupInstance: UiPopupInstance,\r\n destroyRef: DestroyRef,\r\n elementRef: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2,\r\n ) {\r\n super(popupInstance, destroyRef, dropDownService, elementRef);\r\n\r\n afterRenderEffect((): void => {\r\n this.initTouchEvents();\r\n });\r\n }\r\n\r\n public override ngOnInit(): void {\r\n super.ngOnInit();\r\n if (window.innerWidth <= 768) {\r\n this.destroyAnimationOrigin$.next();\r\n\r\n this.$animationParams.set({\r\n startOrigin: 'bottom center',\r\n endOrigin: 'bottom center',\r\n start: 'translateY(100%)',\r\n end: 'translateY(0%)',\r\n leftStart: '',\r\n leftEnd: '',\r\n topStart: '',\r\n topEnd: '',\r\n });\r\n }\r\n\r\n fromEvent(this.elementRef.nativeElement, 'wheel', { passive: true })\r\n .pipe(\r\n tap((e: Event): void => {\r\n e.stopPropagation();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.popupInstance.width) {\r\n this.$width.set(this.popupInstance.width + 'px');\r\n }\r\n const contentWrapper: ElementRef<HTMLElement> | undefined = this.$contentWrapper();\r\n if (contentWrapper) {\r\n this.dropDownService.containerSize$.next({\r\n width: contentWrapper.nativeElement.offsetWidth,\r\n height: contentWrapper.nativeElement.offsetHeight,\r\n });\r\n }\r\n }\r\n\r\n private initTouchEvents(): void {\r\n const swipeButton: ElementRef<HTMLButtonElement> | undefined = this.$swipeButton();\r\n const contentWrapper: ElementRef<HTMLElement> | undefined = this.$contentWrapper();\r\n\r\n if (contentWrapper && swipeButton) {\r\n let startY: number = 0;\r\n const elementHeight: number = contentWrapper.nativeElement.offsetHeight;\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchstart', { passive: false })\r\n .pipe(\r\n tap((event): void => {\r\n startY = event.touches[0].clientY;\r\n event.preventDefault();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchmove', { passive: false })\r\n .pipe(\r\n tap((event): void => {\r\n const currentY: number = event.touches[0].clientY;\r\n const heightChange: number = startY - currentY;\r\n if (heightChange > 0) {\r\n this.renderer.setStyle(\r\n contentWrapper.nativeElement,\r\n 'height',\r\n `${contentWrapper.nativeElement.offsetHeight + heightChange}px`,\r\n );\r\n } else {\r\n const newHeight: number = contentWrapper.nativeElement.offsetHeight + heightChange;\r\n if (newHeight > 50) {\r\n this.renderer.setStyle(contentWrapper.nativeElement, 'height', `${newHeight}px`);\r\n }\r\n }\r\n startY = currentY;\r\n event.preventDefault();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(swipeButton.nativeElement, 'touchend', { passive: false })\r\n .pipe(\r\n tap((): void => {\r\n if (contentWrapper.nativeElement.offsetHeight <= elementHeight / 2) {\r\n this.close();\r\n } else {\r\n this.renderer.setStyle(contentWrapper.nativeElement, 'height', `${elementHeight}px`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, input, InputSignal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { debounceTime, fromEvent, tap } from 'rxjs';\r\n\r\nimport { DropdownPosition } from './ui-dropdown.interfaces';\r\nimport { UiDropdownService } from './ui-dropdown.service';\r\n\r\n@Directive({\r\n selector: '[appHoverTip]',\r\n})\r\nexport class HoverTipDirective implements AfterViewInit {\r\n private static instanceCounter: number = 0;\r\n\r\n public readonly $text: InputSignal<string> = input.required({ alias: 'appHoverTip' });\r\n\r\n public readonly $debounceTime: InputSignal<number> = input(1000);\r\n\r\n public readonly $position: InputSignal<DropdownPosition> = input<DropdownPosition>('top', {\r\n alias: 'appHoverTipPosition',\r\n });\r\n\r\n public readonly $offsetX: InputSignal<number> = input<number>(0, {\r\n alias: 'appHoverTipOffsetX',\r\n });\r\n\r\n public readonly $offsetY: InputSignal<number> = input<number>(0, {\r\n alias: 'appHoverTipOffsetY',\r\n });\r\n\r\n private readonly tipId: string = `hover-tip-${HoverTipDirective.instanceCounter++}`;\r\n\r\n private isOpen: boolean = false;\r\n\r\n public constructor(\r\n private readonly hostRef: ElementRef<HTMLElement>,\r\n private readonly uiDropdownService: UiDropdownService,\r\n private readonly destroyRef: DestroyRef,\r\n ) {\r\n this.destroyRef.onDestroy((): void => {\r\n this.closeTip();\r\n });\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n const debounceTimeValue: number = this.$debounceTime();\r\n\r\n fromEvent(this.hostRef.nativeElement, 'mouseenter')\r\n .pipe(\r\n debounceTime(debounceTimeValue),\r\n tap((): void => {\r\n this.openTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent(this.hostRef.nativeElement, 'mouseleave')\r\n .pipe(\r\n tap((): void => {\r\n this.closeTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent(window, 'blur')\r\n .pipe(\r\n tap((): void => {\r\n this.closeTip();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n private openTip(): void {\r\n const text: string = this.$text().trim();\r\n const isHostHovered: boolean = this.hostRef.nativeElement.matches(':hover');\r\n\r\n if (!text || this.isOpen || !isHostHovered) {\r\n return;\r\n }\r\n\r\n this.uiDropdownService.openTip(\r\n text,\r\n this.hostRef.nativeElement,\r\n this.tipId,\r\n this.$position(),\r\n this.$offsetY(),\r\n this.$offsetX(),\r\n );\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n private closeTip(): void {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n\r\n this.uiDropdownService.closeById(this.tipId);\r\n this.isOpen = false;\r\n }\r\n}\r\n","import { Directive, input, InputSignal, OnInit, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\n\r\n@Directive({\r\n selector: 'app-ui-image',\r\n})\r\nexport class UiImageDirective implements OnInit {\r\n public readonly $src: InputSignal<string> = input.required();\r\n\r\n protected readonly $maxWidth: InputSignal<number> = input(320);\r\n protected readonly $maxHeight: InputSignal<number> = input(320);\r\n\r\n protected readonly $canShowImage: WritableSignal<boolean> = signal(true);\r\n\r\n protected readonly $imageWidth: WritableSignal<number> = signal(0);\r\n protected readonly $imageHeight: WritableSignal<number> = signal(0);\r\n\r\n public ngOnInit(): void {\r\n if (this.$src()) {\r\n const img: HTMLImageElement = new Image();\r\n img.src = this.$src();\r\n\r\n img.onload = (): void => {\r\n this.setSize(this.$maxWidth(), this.$maxHeight(), img.width, img.height);\r\n img.remove();\r\n };\r\n } else {\r\n this.setSize();\r\n }\r\n }\r\n\r\n private setSize(\r\n maxWidth: number = this.$maxWidth() / 2,\r\n maxHeight: number = this.$maxHeight() / 2,\r\n width: number = 20,\r\n height: number = 20,\r\n ): void {\r\n const result: {\r\n width: number;\r\n height: number;\r\n } = getAspectRatioFit(maxWidth, maxHeight, width, height);\r\n\r\n this.$imageWidth.set(result.width);\r\n this.$imageHeight.set(result.height);\r\n }\r\n}\r\n","import { Directive, input, InputSignal, output, OutputEmitterRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'app-ui-pagination',\r\n})\r\nexport abstract class UiPaginationDirective {\r\n public readonly $hasNext: InputSignal<boolean> = input.required<boolean>();\r\n public readonly $hasPrevious: InputSignal<boolean> = input.required<boolean>();\r\n\r\n public readonly $nextClicked: OutputEmitterRef<void> = output<void>();\r\n public readonly $previousClicked: OutputEmitterRef<void> = output<void>();\r\n}\r\n","import { Directive, Input, signal, ElementRef, viewChild, DestroyRef, OnInit, AfterViewInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, tap } from 'rxjs';\r\n\r\nimport { getAspectRatioFit } from '../../helpers/aspect-ratio.helper';\r\n\r\n@Directive({\r\n selector: 'app-ui-popup-image',\r\n})\r\nexport abstract class UiPopupImageDirective implements OnInit, AfterViewInit {\r\n @Input({ required: true }) public readonly src: string = '';\r\n @Input({ required: true }) public readonly width: number = 0;\r\n @Input({ required: true }) public readonly height: number = 0;\r\n\r\n protected readonly $imageWidth = signal(0);\r\n protected readonly $imageHeight = signal(0);\r\n\r\n protected readonly $imageStyleTransform = signal('');\r\n\r\n protected readonly $container = viewChild<ElementRef<HTMLDivElement>>('container');\r\n protected readonly $image = viewChild<ElementRef<HTMLDivElement>>('image');\r\n\r\n protected readonly $cursor = signal('auto');\r\n\r\n private isDragging = false;\r\n private isTouchDragging = false;\r\n private isPinching = false;\r\n\r\n private lastTouchX = 0;\r\n private lastTouchY = 0;\r\n\r\n private lastTouchDistance = 0;\r\n\r\n private size = { w: 0, h: 0 };\r\n private speed = 0.5;\r\n\r\n private readonly pos = { x: 0, y: 0 };\r\n private readonly target = { x: 0, y: 0 };\r\n private readonly pointer = { x: 0, y: 0 };\r\n\r\n private scale = 1;\r\n\r\n constructor(private destroyRef: DestroyRef) {}\r\n\r\n ngOnInit(): void {\r\n const result = getAspectRatioFit(\r\n window.innerWidth - window.innerWidth / 8,\r\n window.innerHeight - window.innerHeight / 8,\r\n this.width,\r\n this.height,\r\n );\r\n\r\n this.$imageWidth.set(result.width);\r\n this.$imageHeight.set(result.height);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const container = this.$container()?.nativeElement;\r\n if (!container) return;\r\n\r\n this.size = {\r\n w: container.offsetWidth,\r\n h: container.offsetHeight,\r\n };\r\n\r\n // -----------------------------\r\n // KEYBOARD CURSOR LOGIC\r\n // -----------------------------\r\n fromEvent<KeyboardEvent>(window, 'keydown')\r\n .pipe(\r\n tap((event) => {\r\n if (event.ctrlKey) this.$cursor.set('zoom-in');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<KeyboardEvent>(window, 'keyup')\r\n .pipe(\r\n tap((event) => {\r\n if (event.key === 'Control') {\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // MOUSE DRAG\r\n // -----------------------------\r\n fromEvent<MouseEvent>(window, 'mouseup')\r\n .pipe(\r\n tap((event) => {\r\n if (event.button === 0) {\r\n this.isDragging = false;\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<MouseEvent>(container, 'mousedown')\r\n .pipe(\r\n tap((event) => {\r\n if (event.button === 0) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n this.$cursor.set(this.scale > 1 ? 'grabbing' : 'auto');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<MouseEvent>(window, 'mousemove')\r\n .pipe(\r\n tap((e) => {\r\n if (this.isDragging && this.scale > 1) {\r\n this.pos.x += e.movementX;\r\n this.pos.y += e.movementY;\r\n\r\n this.setPosition();\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // MOUSE WHEEL ZOOM\r\n // -----------------------------\r\n fromEvent<WheelEvent>(window, 'wheel', { passive: false })\r\n .pipe(\r\n tap((event) => {\r\n event.preventDefault();\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n if (event.ctrlKey) {\r\n this.pointer.x = event.clientX - rect.left;\r\n this.pointer.y = event.clientY - rect.top;\r\n\r\n this.target.x = (this.pointer.x - this.pos.x) / this.scale;\r\n this.target.y = (this.pointer.y - this.pos.y) / this.scale;\r\n\r\n this.scale += -1 * Math.max(-1, Math.min(1, event.deltaY)) * this.speed * this.scale;\r\n\r\n const maxScale = 4;\r\n const minScale = 1;\r\n this.scale = Math.max(minScale, Math.min(maxScale, this.scale));\r\n\r\n this.pos.x = -this.target.x * this.scale + this.pointer.x;\r\n this.pos.y = -this.target.y * this.scale + this.pointer.y;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n } else {\r\n this.pos.x -= event.deltaX * 2;\r\n this.pos.y -= event.deltaY * 2;\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n // -----------------------------\r\n // TOUCH PINCH ZOOM\r\n // -----------------------------\r\n fromEvent<TouchEvent>(container, 'touchstart')\r\n .pipe(\r\n tap((event) => {\r\n if (event.touches.length === 2) {\r\n this.isPinching = true;\r\n\r\n const [t1, t2] = event.touches;\r\n this.lastTouchDistance = Math.hypot(t2.clientX - t1.clientX, t2.clientY - t1.clientY);\r\n }\r\n\r\n if (event.touches.length === 1 && this.scale > 1) {\r\n const t = event.touches[0];\r\n this.lastTouchX = t.clientX;\r\n this.lastTouchY = t.clientY;\r\n this.isTouchDragging = true;\r\n this.$cursor.set('grabbing');\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(container, 'touchmove')\r\n .pipe(\r\n tap((event) => {\r\n if (this.isPinching && event.touches.length === 2) {\r\n event.preventDefault();\r\n\r\n const [t1, t2] = event.touches;\r\n\r\n const newDistance = Math.hypot(t2.clientX - t1.clientX, t2.clientY - t1.clientY);\r\n\r\n const delta = newDistance - this.lastTouchDistance;\r\n this.lastTouchDistance = newDistance;\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n const centerX = (t1.clientX + t2.clientX) / 2 - rect.left;\r\n const centerY = (t1.clientY + t2.clientY) / 2 - rect.top;\r\n\r\n this.pointer.x = centerX;\r\n this.pointer.y = centerY;\r\n\r\n this.target.x = (this.pointer.x - this.pos.x) / this.scale;\r\n this.target.y = (this.pointer.y - this.pos.y) / this.scale;\r\n\r\n const pinchSpeed = 0.005;\r\n this.scale += delta * pinchSpeed * this.scale;\r\n\r\n const maxScale = 4;\r\n const minScale = 1;\r\n this.scale = Math.max(minScale, Math.min(maxScale, this.scale));\r\n\r\n this.pos.x = -this.target.x * this.scale + this.pointer.x;\r\n this.pos.y = -this.target.y * this.scale + this.pointer.y;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n\r\n if (this.isTouchDragging && event.touches.length === 1) {\r\n event.preventDefault();\r\n\r\n const t = event.touches[0];\r\n\r\n const dx = t.clientX - this.lastTouchX;\r\n const dy = t.clientY - this.lastTouchY;\r\n\r\n this.lastTouchX = t.clientX;\r\n this.lastTouchY = t.clientY;\r\n\r\n this.pos.x += dx;\r\n this.pos.y += dy;\r\n\r\n this.setPosition();\r\n\r\n this.$imageStyleTransform.set(`translate(${this.pos.x}px,${this.pos.y}px) scale(${this.scale})`);\r\n }\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n\r\n fromEvent<TouchEvent>(container, 'touchend')\r\n .pipe(\r\n tap(() => {\r\n this.isPinching = false;\r\n this.isTouchDragging = false;\r\n this.$cursor.set(this.scale > 1 ? 'grab' : 'auto');\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n\r\n private setPosition(): void {\r\n if (this.pos.x > 0) this.pos.x = 0;\r\n if (this.pos.x + this.size.w * this.scale < this.size.w) {\r\n this.pos.x = -this.size.w * (this.scale - 1);\r\n }\r\n\r\n if (this.pos.y > 0) this.pos.y = 0;\r\n if (this.pos.y + this.size.h * this.scale < this.size.h) {\r\n this.pos.y = -this.size.h * (this.scale - 1);\r\n }\r\n }\r\n}\r\n","import { OnInit, Input, ElementRef, DestroyRef, Directive } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent, tap } from 'rxjs';\r\nimport { UiPopupService } from './ui-popup.service';\r\n\r\n@Directive({ selector: 'app-ui-popup-backdrop' })\r\nexport class UiPopupBackdropDirective implements OnInit {\r\n @Input() public isStaticBackdrop: boolean = false;\r\n\r\n public constructor(\r\n private readonly elementRef: ElementRef,\r\n private readonly uiPopupService: UiPopupService,\r\n private readonly destroyRef: DestroyRef,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n fromEvent(this.elementRef.nativeElement, 'click')\r\n .pipe(\r\n tap((): void => {\r\n if (this.isStaticBackdrop) {\r\n return;\r\n }\r\n this.uiPopupService.closeAll();\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, input, InputSignal, Renderer2 } from '@angular/core';\r\n\r\nexport type ButtonColor =\r\n | 'primary'\r\n | 'secondary'\r\n | 'tertiary'\r\n | 'quaternary'\r\n | 'success'\r\n | 'warning'\r\n | 'info'\r\n | 'danger';\r\n\r\nconst buttonColors: ButtonColor[] = [\r\n 'primary',\r\n 'secondary',\r\n 'tertiary',\r\n 'quaternary',\r\n 'success',\r\n 'warning',\r\n 'info',\r\n 'danger',\r\n];\r\n\r\ntype SizeBehavior = 'block' | 'padding';\r\n\r\ntype ButtonSizes = 'medium' | 'small';\r\n\r\n@Directive({\r\n selector: 'app-ui-button',\r\n})\r\nexport abstract class UiButtonDirective {\r\n public readonly $color: InputSignal<ButtonColor> = input.required<ButtonColor>();\r\n\r\n public readonly $isOutlined: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $isRounded: InputSignal<boolean> = input<boolean>(false);\r\n\r\n public readonly $sizeBehavior: InputSignal<SizeBehavior> = input<SizeBehavior>('padding');\r\n\r\n public readonly $size: InputSignal<ButtonSizes> = input<ButtonSizes>('medium');\r\n public readonly $isDisabled: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $isLoading: InputSignal<boolean> = input<boolean>(false);\r\n\r\n public constructor(\r\n protected readonly elementRef: ElementRef<HTMLButtonElement>,\r\n protected readonly renderer: Renderer2,\r\n ) {\r\n effect((): void => {\r\n if (this.$sizeBehavior() === 'block') {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'block');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'block');\r\n }\r\n });\r\n\r\n effect(() => {\r\n const isOutlined = this.$isOutlined();\r\n if (isOutlined) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'outline');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'outline');\r\n }\r\n });\r\n effect(() => {\r\n const isRounded = this.$isRounded();\r\n if (isRounded) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'rounded');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'rounded');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$size() === 'small') {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'small');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'small');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$isDisabled()) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'disabled');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'disabled');\r\n }\r\n });\r\n\r\n effect((): void => {\r\n if (this.$isLoading()) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'loading');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'loading');\r\n }\r\n });\r\n effect((): void => {\r\n const color = this.$color();\r\n\r\n buttonColors.forEach((color): void => {\r\n this.renderer.removeClass(this.elementRef.nativeElement, color);\r\n });\r\n\r\n this.renderer.addClass(this.elementRef.nativeElement, color);\r\n });\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n input,\r\n InputSignal,\r\n OnInit,\r\n output,\r\n OutputEmitterRef,\r\n PLATFORM_ID,\r\n Renderer2,\r\n signal,\r\n WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport { UiSelectButton, OverflowMode } from './ui-select-interfaces';\r\n\r\n@Directive({\r\n selector: 'app-ui-select-buttons',\r\n})\r\nexport class UiSelectButtonsDirective implements OnInit, AfterViewInit {\r\n public readonly $buttons: InputSignal<UiSelectButton[]> = input.required<UiSelectButton[]>();\r\n public readonly $selectedButtonIndex: WritableSignal<number> = signal(0);\r\n\r\n public readonly $alignment: InputSignal<'justified' | 'vertical' | 'left'> = input<'justified' | 'vertical' | 'left'>(\r\n 'left',\r\n );\r\n\r\n public readonly $overflowMode: InputSignal<OverflowMode> = input<OverflowMode>('scroll');\r\n\r\n public readonly $buttonChanged: OutputEmitterRef<number> = output<number>();\r\n\r\n protected readonly $isScrollable: WritableSignal<boolean> = signal(false);\r\n\r\n public constructor(\r\n private readonly renderer: Renderer2,\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly destroyRef: DestroyRef,\r\n @Inject(PLATFORM_ID) private readonly platformId: object,\r\n ) {}\r\n\r\n public ngOnInit(): void {\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$alignment());\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$overflowMode());\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.checkScroll();\r\n if (isPlatformBrowser(this.platformId)) {\r\n const resizeObserver: ResizeObserver = new ResizeObserver((): void => {\r\n this.checkScroll();\r\n });\r\n resizeObserver.observe(this.elementRef.nativeElement);\r\n\r\n this.destroyRef.onDestroy((): void => {\r\n resizeObserver.disconnect();\r\n });\r\n }\r\n }\r\n\r\n protected select(index: number): void {\r\n this.$selectedButtonIndex.set(index);\r\n this.$buttonChanged.emit(index);\r\n }\r\n\r\n private checkScroll(): void {\r\n const el: HTMLElement = this.elementRef.nativeElement;\r\n const isScrollable: boolean = el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight;\r\n this.$isScrollable.set(isScrollable);\r\n if (isScrollable) {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'scrollable');\r\n } else {\r\n this.renderer.removeClass(this.elementRef.nativeElement, 'scrollable');\r\n }\r\n }\r\n}\r\n","import { DestroyRef, Directive, input, InputSignal, signal, WritableSignal } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { Subject, timer, tap, takeUntil } from \"rxjs\";\r\n\r\n@Directive({\r\n selector: 'app-ui-copy-button',\r\n})\r\nexport abstract class UiCopyButtonDirective { \r\n public readonly $text: InputSignal<string> = input.required();\r\n\r\n protected readonly $isCopied: WritableSignal<boolean> = signal(false);\r\n\r\n \r\n private readonly destroyTimer$: Subject<void> = new Subject();\r\n\r\n public constructor(private readonly destroyRef: DestroyRef) {}\r\n \r\n protected copy(): void {\r\n this.destroyTimer$.next();\r\n const text: string = this.$text();\r\n\r\n if (window.navigator.clipboard && window.navigator.clipboard.writeText) {\r\n window.navigator.clipboard\r\n .writeText(text)\r\n .then((): void => {\r\n this.$isCopied.set(true);\r\n timer(5000)\r\n .pipe(\r\n tap((): void => {\r\n this.$isCopied.set(false);\r\n }),\r\n takeUntil(this.destroyTimer$),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe();\r\n })\r\n .catch((err): void => {\r\n console.error('Error copying text:', err);\r\n });\r\n }\r\n }\r\n}","import {\r\n contentChild,\r\n contentChildren,\r\n Directive,\r\n effect,\r\n model,\r\n ModelSignal,\r\n Signal,\r\n TemplateRef,\r\n untracked,\r\n OnInit,\r\n Renderer2,\r\n ElementRef,\r\n input,\r\n InputSignal,\r\n} from '@angular/core';\r\nimport { UiTab, TabsAlignment } from './ui-tabs.interfaces';\r\n\r\n@Directive({\r\n selector: '[appUiTabs]',\r\n exportAs: 'uiTabs',\r\n})\r\nexport class UiTabsDirective implements OnInit {\r\n public readonly $tabs: ModelSignal<UiTab[]> = model.required<UiTab[]>();\r\n public readonly $alignment: InputSignal<TabsAlignment> = input<TabsAlignment>('left');\r\n\r\n public readonly $selectedTabIndex: ModelSignal<number> = model(0);\r\n\r\n protected readonly $templates: Signal<readonly TemplateRef<HTMLElement>[]> =\r\n contentChildren<TemplateRef<HTMLElement>>('tab');\r\n protected readonly $headContent: Signal<TemplateRef<HTMLElement> | undefined> =\r\n contentChild<TemplateRef<HTMLElement>>('head');\r\n\r\n public constructor(\r\n protected readonly renderer: Renderer2,\r\n protected readonly elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n effect((): void => {\r\n const tabs: UiTab[] = this.$tabs();\r\n this.$templates().forEach((f, i): void => {\r\n tabs[i].template = f;\r\n });\r\n untracked((): void => {\r\n this.$tabs.set(tabs);\r\n });\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.renderer.addClass(this.elementRef.nativeElement, this.$alignment());\r\n }\r\n}\r\n","import { Directive, input, InputSignal, model, ModelSignal, OnInit } from '@angular/core';\r\nimport { FormValueControl } from '@angular/forms/signals';\r\n\r\nimport { ValidationErrorsType } from './ui-validation-errors.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-field-base',\r\n})\r\nexport abstract class UiFieldBaseDirective<T> implements FormValueControl<T | null>, OnInit {\r\n public readonly value: ModelSignal<T | null> = model<T | null>(null);\r\n public readonly disabled: InputSignal<boolean> = input(false);\r\n public readonly invalid: InputSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly errors: InputSignal<readonly ValidationErrorsType[]> = input<readonly ValidationErrorsType[]>([]);\r\n\r\n public readonly touched: ModelSignal<boolean> = model(false);\r\n public readonly dirty: ModelSignal<boolean> = model(false);\r\n\r\n private initialValue: T | null = null;\r\n\r\n public ngOnInit(): void {\r\n this.initialValue = this.value();\r\n }\r\n\r\n protected onInput(value: T): void {\r\n this.value.set(value);\r\n\r\n if (this.initialValue !== null && value !== this.initialValue) {\r\n this.dirty.set(true);\r\n }\r\n }\r\n}\r\n","import { computed, Directive, input, InputSignal, model, ModelSignal, Signal } from '@angular/core';\r\nimport { FormCheckboxControl } from '@angular/forms/signals';\r\n\r\nimport { ValidationErrorsType } from './ui-validation-errors.directive';\r\n\r\nexport type CheckboxStyles = 'primary' | 'success' | 'warning' | 'info' | 'danger';\r\n\r\n@Directive({\r\n selector: 'app-ui-input',\r\n})\r\nexport abstract class UiInputCheckboxDirective implements FormCheckboxControl {\r\n public readonly checked: ModelSignal<boolean> = model<boolean>(false);\r\n public readonly invalid: InputSignal<boolean> = model<boolean>(false);\r\n\r\n public readonly disabled: InputSignal<boolean> = input(false);\r\n public readonly $style: InputSignal<CheckboxStyles> = input<CheckboxStyles>('primary');\r\n public readonly $label: InputSignal<string> = input<string>('');\r\n\r\n public readonly $hideValidatorErrors: InputSignal<boolean> = input(false);\r\n\r\n public readonly errors: InputSignal<readonly ValidationErrorsType[]> = input<readonly ValidationErrorsType[]>([]);\r\n\r\n public readonly touched: ModelSignal<boolean> = model(false);\r\n public readonly dirty: ModelSignal<boolean> = model(false);\r\n\r\n protected readonly $isError: Signal<boolean> = computed((): boolean => {\r\n return (this.touched() || (this.dirty() && this.touched())) && this.invalid();\r\n });\r\n\r\n public change(): void {\r\n this.checked.update((val): boolean => !val);\r\n }\r\n}\r\n","import { computed, Directive, input, InputSignal, Signal } from '@angular/core';\r\n\r\nimport { UiFieldBaseDirective } from './ui-field-base.directive';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\ninterface LayoutSize {\r\n padding: string;\r\n font: string;\r\n borderRadius: string;\r\n}\r\n\r\ntype Size = 'small' | 'medium';\r\n\r\nconst sizes: Record<Size, LayoutSize> = {\r\n small: {\r\n padding: 'padding-xs',\r\n font: 'paragraph-sm',\r\n borderRadius: 'border-radius-m',\r\n },\r\n medium: {\r\n padding: 'padding-sm',\r\n font: 'paragraph-l',\r\n borderRadius: 'border-radius-m',\r\n },\r\n};\r\n\r\n@Directive({\r\n selector: 'app-ui-input',\r\n})\r\nexport abstract class UiInputDirective extends UiFieldBaseDirective<string> {\r\n public readonly $size: InputSignal<Size> = input<Size>('medium');\r\n public readonly $placeholder: InputSignal<string> = input<string>('');\r\n public readonly $label: InputSignal<string> = input<string>('');\r\n public readonly $shouldFocusedAfterViewInit: InputSignal<boolean> = input(false);\r\n\r\n public readonly $hideValidatorErrors: InputSignal<boolean> = input(false);\r\n\r\n public readonly $icon: InputSignal<AppIcon | null> = input<AppIcon | null>(null);\r\n\r\n protected readonly $layoutSize: Signal<LayoutSize> = computed((): LayoutSize => {\r\n const size: Size = this.$size();\r\n return sizes[size];\r\n });\r\n\r\n protected readonly $isError: Signal<boolean> = computed((): boolean => {\r\n return (this.touched() || (this.dirty() && this.touched())) && this.invalid();\r\n });\r\n}\r\n","import { Directive, AfterViewInit, ElementRef, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { CountryData, CountryService, emptyCountry } from '../../services/country.service';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-country',\r\n})\r\nexport abstract class UiInputCountryDirective extends UiInputDirective implements AfterViewInit {\r\n protected $selectedCountry: WritableSignal<CountryData> = signal(emptyCountry);\r\n protected $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.autoSetCountry();\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pastedText: string = event.clipboardData?.getData('text') || '';\r\n\r\n const country: CountryData | undefined = this.searchCountry(pastedText);\r\n if (country) {\r\n this.setCountry(country);\r\n return;\r\n }\r\n this.onInput(this.value() + pastedText);\r\n }\r\n\r\n private searchCountry(temp: string): CountryData | undefined {\r\n const country: CountryData | undefined = CountryService.countries.find((c): boolean =>\r\n c.name.toLowerCase().includes(temp.toLowerCase()),\r\n );\r\n\r\n return country;\r\n }\r\n\r\n protected setCountry(country: CountryData): void {\r\n this.$selectedCountry.set(country);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n this.onInput(country.name);\r\n\r\n if (inputElement) {\r\n inputElement.focus();\r\n }\r\n }\r\n\r\n protected autoSetCountry(): void {\r\n const value: string | null = this.value();\r\n if (!value?.length) {\r\n this.$selectedCountry.set({\r\n code: '',\r\n name: '',\r\n iso: 'xx',\r\n phonePrefix: '',\r\n });\r\n return;\r\n }\r\n const country: CountryData | undefined = this.searchCountry(value);\r\n if (country) {\r\n this.$selectedCountry.set(country);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, input, InputSignal, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { DateUtils } from '../../date/date.utils';\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-date',\r\n})\r\nexport abstract class UIInputDateDirective extends UiInputDirective {\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n public readonly $isRangeSelection: InputSignal<boolean> = input(false);\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n protected setDate(date: Date): void {\r\n const newDate: string = this.formatDate(date);\r\n this.onInput(newDate);\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const day: string = date.getDate() < 10 ? '0' + date.getDate() : date.getDate().toString();\r\n const month: string = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1).toString();\r\n\r\n if (this.isUsaDateFormat()) {\r\n return month + '/' + day + '/' + date.getFullYear();\r\n }\r\n\r\n return day + '/' + month + '/' + date.getFullYear();\r\n }\r\n\r\n protected isUsaDateFormat(): boolean {\r\n return DateUtils.isUsaDateFormat();\r\n }\r\n\r\n protected setRangeDates(dates: { start: Date | null; end: Date | null }): void {\r\n if (!dates.start) {\r\n this.onInput('');\r\n return;\r\n }\r\n\r\n const startStr: string = this.formatDate(dates.start);\r\n const endStr: string = dates.end ? this.formatDate(dates.end) : '';\r\n const result: string = endStr ? `${startStr} - ${endStr}` : startStr;\r\n\r\n this.onInput(result);\r\n }\r\n\r\n public override onInput(value: string): void {\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n const start: number | null = inputElement.selectionStart;\r\n const end: number | null = inputElement.selectionEnd;\r\n\r\n const oldValue: string = value;\r\n const newValue: string = this.maskDate(oldValue);\r\n\r\n const oldSlashCount: number = (oldValue.match(/\\//g) || []).length;\r\n const newSlashCount: number = (newValue.match(/\\//g) || []).length;\r\n\r\n const oldDashCount: number = (oldValue.match(/-/g) || []).length;\r\n const newDashCount: number = (newValue.match(/-/g) || []).length;\r\n\r\n const slashAdded: boolean = newSlashCount > oldSlashCount;\r\n const dashAdded: boolean = newDashCount > oldDashCount;\r\n\r\n super.onInput(newValue);\r\n\r\n inputElement.value = newValue;\r\n\r\n if (slashAdded || dashAdded) {\r\n inputElement.setSelectionRange(newValue.length, newValue.length);\r\n } else {\r\n inputElement.setSelectionRange(start, end);\r\n }\r\n }\r\n }\r\n\r\n private maskDate(value: string): string {\r\n const digits: string = value.replace(/\\D/g, '');\r\n\r\n const limit: number = this.$isRangeSelection() ? 16 : 8;\r\n const limited: string = digits.substring(0, limit);\r\n\r\n const formatSingle: (str: string) => string = (str: string): string => {\r\n let res: string = '';\r\n if (str.length > 0) {\r\n res += str.substring(0, 2);\r\n }\r\n if (str.length >= 3) {\r\n res += '/' + str.substring(2, 4);\r\n }\r\n if (str.length >= 5) {\r\n res += '/' + str.substring(4, 8);\r\n }\r\n return res;\r\n };\r\n\r\n if (this.$isRangeSelection()) {\r\n const first: string = limited.substring(0, 8);\r\n const second: string = limited.substring(8, 16);\r\n\r\n const firstDate: string = formatSingle(first);\r\n const secondDate: string = formatSingle(second);\r\n\r\n return secondDate ? `${firstDate} - ${secondDate}` : firstDate;\r\n }\r\n\r\n return formatSingle(limited);\r\n }\r\n}\r\n","import { Directive, AfterViewInit, ElementRef, signal, Signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { CountryData, emptyCountry, CountryService } from '../../services/country.service';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-phone-number',\r\n})\r\nexport abstract class UIPhoneNumberDirective extends UiInputDirective implements AfterViewInit {\r\n protected $selectedCountry: WritableSignal<CountryData> = signal(emptyCountry);\r\n protected $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n protected $countryCode: WritableSignal<string> = signal('');\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n const selectedCountry: CountryData = CountryService.getCountryByCode('US') ?? emptyCountry;\r\n this.$selectedCountry.set(selectedCountry);\r\n this.$countryCode.set(selectedCountry.phonePrefix + ' ');\r\n }\r\n\r\n protected override onInput(value: string): void {\r\n const digitsOnly: string = value.replace(/\\D/g, '');\r\n\r\n const formattedValue: string = CountryService.formatPhoneNumber(digitsOnly, this.$selectedCountry().code);\r\n\r\n super.onInput(formattedValue);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n inputElement.value = formattedValue;\r\n }\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n const pastedText: string = event.clipboardData?.getData('text') || '';\r\n\r\n const country: CountryData | undefined = CountryService.countries.find((c): boolean =>\r\n pastedText.startsWith(c.phonePrefix),\r\n );\r\n if (country) {\r\n const localNumber: string = pastedText.slice(country.phonePrefix.length);\r\n\r\n this.setCountry(country);\r\n this.onInput(localNumber);\r\n } else {\r\n this.onInput(this.value() + pastedText);\r\n }\r\n }\r\n\r\n protected setCountry(country: CountryData): void {\r\n this.$selectedCountry.set(country);\r\n this.$countryCode.set(country.phonePrefix);\r\n\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n\r\n if (inputElement) {\r\n inputElement.focus();\r\n }\r\n }\r\n}\r\n","import { Directive, input, InputSignal, signal, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\nimport { AppIcon } from '../../icons/icon.type';\r\n\r\nexport interface InputSelectData {\r\n value: string;\r\n ico?: AppIcon;\r\n}\r\n\r\n@Directive({\r\n selector: 'app-ui-select',\r\n})\r\nexport abstract class UiInputSelectDirective extends UiInputDirective {\r\n public readonly $items: InputSignal<InputSelectData[]> = input.required();\r\n\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n protected readonly $selectedValue: WritableSignal<InputSelectData> = signal({ value: '' });\r\n}\r\n","import { Directive, InputSignal, input, Signal, computed, ViewChildren, QueryList, ElementRef } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-sequence',\r\n})\r\nexport abstract class UiInputSequenceDirective extends UiInputDirective {\r\n public $numberCells: InputSignal<number> = input(6);\r\n\r\n protected $inputs: Signal<string[]> = computed((): string[] => Array(this.$numberCells()).fill(''));\r\n\r\n @ViewChildren('input')\r\n private inputRefs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n protected onInputSequence(event: Event, index: number): void {\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n const value: string = input.value;\r\n\r\n if (!/^\\d+$/.test(value)) {\r\n input.value = '';\r\n return;\r\n }\r\n\r\n if (value.length > 1) {\r\n input.value = value.charAt(0);\r\n }\r\n\r\n if (value && index < this.$inputs().length - 1) {\r\n this.focusInput(index + 1);\r\n }\r\n this.setValue();\r\n }\r\n protected onClick(event: MouseEvent | FocusEvent): void {\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n input.setSelectionRange(1, 1);\r\n }\r\n\r\n protected onKeyDown(event: KeyboardEvent, index: number): void {\r\n const blocked: string[] = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\r\n\r\n if (blocked.includes(event.key)) {\r\n event.preventDefault();\r\n if (event.key === 'ArrowLeft') {\r\n this.focusInput(index - 1);\r\n }\r\n if (event.key === 'ArrowRight') {\r\n this.focusInput(index + 1);\r\n }\r\n return;\r\n }\r\n\r\n const input: HTMLInputElement = event.target as HTMLInputElement;\r\n\r\n if (event.key === 'Backspace' && !input.value && index > 0) {\r\n this.focusInput(index - 1);\r\n }\r\n }\r\n\r\n private focusInput(index: number): void {\r\n const el: HTMLInputElement = this.inputRefs.toArray()[index]?.nativeElement;\r\n if (el) el.focus();\r\n }\r\n\r\n protected onPaste(event: ClipboardEvent, index: number): void {\r\n event.preventDefault();\r\n\r\n const pasted: string = event.clipboardData?.getData('text') ?? '';\r\n if (!pasted) {\r\n return;\r\n }\r\n const digitsOnly: string = pasted.replace(/\\D/g, '');\r\n\r\n const inputsArray: ElementRef<HTMLInputElement>[] = this.inputRefs.toArray();\r\n\r\n const chars: string[] = digitsOnly.replace(/\\s+/g, '').split('');\r\n\r\n const inputLength: number = this.$inputs().length;\r\n\r\n chars.forEach((char, offset): void => {\r\n const targetIndex: number = index + offset;\r\n if (targetIndex < inputLength) {\r\n const input: HTMLInputElement = inputsArray[targetIndex].nativeElement;\r\n input.value = char;\r\n }\r\n });\r\n\r\n const nextEmpty: number = inputsArray.findIndex((el): boolean => el.nativeElement.value === '');\r\n\r\n if (nextEmpty !== -1) {\r\n this.focusInput(nextEmpty);\r\n } else {\r\n this.focusInput(inputLength - 1);\r\n }\r\n this.setValue();\r\n }\r\n\r\n private setValue(): void {\r\n const inputsArray: ElementRef<HTMLInputElement>[] = this.inputRefs.toArray();\r\n const value: string = inputsArray.map((el): string => el.nativeElement.value).join('');\r\n\r\n this.onInput(value);\r\n }\r\n}\r\n","import { Directive, ElementRef, Signal, signal, viewChild, WritableSignal } from '@angular/core';\r\n\r\nimport { UiInputDirective } from './ui-input.directive';\r\n\r\n@Directive({\r\n selector: 'app-ui-input-time',\r\n})\r\nexport abstract class UiInputTimeDirective extends UiInputDirective {\r\n protected readonly times: string[] = [\r\n '00:00',\r\n '00:30',\r\n '01:00',\r\n '01:30',\r\n '02:00',\r\n '02:30',\r\n '03:00',\r\n '03:30',\r\n '04:00',\r\n '04:30',\r\n '05:00',\r\n '05:30',\r\n '06:00',\r\n '06:30',\r\n '07:00',\r\n '07:30',\r\n '08:00',\r\n '08:30',\r\n '09:00',\r\n '09:30',\r\n '10:00',\r\n '10:30',\r\n '11:00',\r\n '11:30',\r\n '12:00',\r\n '12:30',\r\n '13:00',\r\n '13:30',\r\n '14:00',\r\n '14:30',\r\n '15:00',\r\n '15:30',\r\n '16:00',\r\n '16:30',\r\n '17:00',\r\n '17:30',\r\n '18:00',\r\n '18:30',\r\n '19:00',\r\n '19:30',\r\n '20:00',\r\n '20:30',\r\n '21:00',\r\n '21:30',\r\n '22:00',\r\n '22:30',\r\n '23:00',\r\n '23:30',\r\n ];\r\n\r\n private $inputElement: Signal<ElementRef<HTMLInputElement> | undefined> =\r\n viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n protected readonly $isOpen: WritableSignal<boolean> = signal(false);\r\n\r\n public override onInput(value: string): void {\r\n const inputElement: HTMLInputElement | undefined = this.$inputElement()?.nativeElement;\r\n if (!inputElement) return;\r\n\r\n const start: number | null = inputElement.selectionStart;\r\n const end: number | null = inputElement.selectionEnd;\r\n\r\n const oldValue: string = value;\r\n const newValue: string = this.maskTime(oldValue);\r\n\r\n const oldColonCount: number = (oldValue.match(/:/g) || []).length;\r\n const newColonCount: number = (newValue.match(/:/g) || []).length;\r\n const colonAdded: boolean = newColonCount > oldColonCount;\r\n\r\n super.onInput(newValue);\r\n inputElement.value = newValue;\r\n\r\n if (colonAdded) {\r\n inputElement.setSelectionRange(newValue.length, newValue.length);\r\n } else {\r\n inputElement.setSelectionRange(start, end);\r\n }\r\n }\r\n\r\n public maskTime(value: string): string {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n const digits: string = value.replace(/\\D/g, '').slice(0, 4);\r\n\r\n const len: number = digits.length;\r\n\r\n if (len === 1) {\r\n return digits;\r\n }\r\n\r\n if (len === 2) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n if (hh > 23) hh = 23;\r\n return hh.toString().padStart(2, '0');\r\n }\r\n\r\n if (len === 3) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n if (hh > 23) hh = 23;\r\n const m: string = digits[2];\r\n return `${hh.toString().padStart(2, '0')}:${m}`;\r\n }\r\n\r\n if (len === 4) {\r\n let hh: number = Number(digits.slice(0, 2));\r\n let mm: number = Number(digits.slice(2, 4));\r\n\r\n if (hh > 23) {\r\n hh = 23;\r\n }\r\n if (mm > 59) {\r\n mm = 59;\r\n }\r\n\r\n return `${hh.toString().padStart(2, '0')}:${mm.toString().padStart(2, '0')}`;\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","import { Directive, input, InputSignal } from '@angular/core';\r\nimport { WithOptionalField, ValidationError } from '@angular/forms/signals';\r\n\r\nexport type ValidationErrorsType = WithOptionalField<ValidationError>;\r\n\r\n@Directive({\r\n selector: 'app-ui-validation-errors',\r\n})\r\nexport abstract class UiValidationErrorsDirective {\r\n public readonly $isError: InputSignal<boolean> = input<boolean>(false);\r\n public readonly $errors: InputSignal<readonly ValidationErrorsType[]> =\r\n input.required<readonly ValidationErrorsType[]>();\r\n}\r\n","/*\r\n * Public API Surface of ui-forge-library\r\n */\r\nexport * from './date';\r\nexport * from './directives';\r\n\r\nexport * from './pipes';\r\nexport * from './helpers';\r\nexport * from './icons';\r\nexport * from './regex';\r\nexport * from './services';\r\nexport * from './types';\r\n\r\nexport * from './ui/ui-accordion';\r\nexport * from './ui/ui-alert-messages';\r\nexport * from './ui/ui-avatar';\r\nexport * from './ui/ui-calendar';\r\nexport * from './ui/ui-code';\r\nexport * from './ui/ui-dropdown';\r\nexport * from './ui/ui-image';\r\nexport * from './ui/ui-pagination';\r\nexport * from './ui/ui-popup';\r\nexport * from './ui/ui-buttons';\r\nexport * from './ui/ui-tabs';\r\nexport * from './ui/ui-forms';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LazyImageService","i1.AppIconsLibrary","i2","i1.UiPopupService","i1.UiDropdownService"],"mappings":"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"}