@vsn-ux/ngx-gaia 0.9.17 → 0.10.1

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":"vsn-ux-ngx-gaia.mjs","sources":["../../../projects/ngx-gaia/src/lib/utils/root-font-size.token.ts","../../../projects/ngx-gaia/src/lib/icon/icon.component.ts","../../../projects/ngx-gaia/src/lib/icon/icon.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-title.component.ts","../../../projects/ngx-gaia/src/lib/button/button-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.component.ts","../../../projects/ngx-gaia/src/lib/button/button.directive.ts","../../../projects/ngx-gaia/src/lib/button/icon-button.directive.ts","../../../projects/ngx-gaia/src/lib/button/button.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-i18n.service.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.html","../../../projects/ngx-gaia/src/lib/alert/alert-title-actions.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.module.ts","../../../projects/ngx-gaia/src/lib/badge/badge.component.ts","../../../projects/ngx-gaia/src/lib/badge/badge.module.ts","../../../projects/ngx-gaia/src/lib/card/card.component.ts","../../../projects/ngx-gaia/src/lib/card/card.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-control-errors.directive.ts","../../../projects/ngx-gaia/src/lib/utils/error-state.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.html","../../../projects/ngx-gaia/src/lib/checkbox/checkbox-required.validator.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.module.ts","../../../projects/ngx-gaia/src/lib/utils/class-checker.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-i18n.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-struct-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-field-connector.ts","../../../projects/ngx-gaia/src/lib/input/input.directive.ts","../../../projects/ngx-gaia/src/lib/input/input.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.html","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-parser-formatter.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-input.directive.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.module.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-iso-adapter.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-button.directive.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-icon-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-text-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.module.ts","../../../projects/ngx-gaia/src/lib/input/input.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-errors.provider.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.html","../../../projects/ngx-gaia/src/lib/form-field/field-info.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-error.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.di.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.module.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-control.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/labelled-by-form-field.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.module.ts","../../../projects/ngx-gaia/src/lib/menu/menu.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.html","../../../projects/ngx-gaia/src/lib/menu/menu-title.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/menu/menu-separator.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger-icon.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu.module.ts","../../../projects/ngx-gaia/src/lib/modal/modal-ref.ts","../../../projects/ngx-gaia/src/lib/modal/modal-data.token.ts","../../../projects/ngx-gaia/src/lib/modal/modal.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal.options.ts","../../../projects/ngx-gaia/src/lib/modal/modal.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.directives.ts","../../../projects/ngx-gaia/src/lib/modal/modal-description.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-content.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-actions.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-i18n.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal-header.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.module.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.html","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.html","../../../projects/ngx-gaia/src/lib/radio/radio.module.ts","../../../projects/ngx-gaia/src/lib/select/option.component.ts","../../../projects/ngx-gaia/src/lib/select/option.component.html","../../../projects/ngx-gaia/src/lib/select/select-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.html","../../../projects/ngx-gaia/src/lib/select/select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.module.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/select/select.component.ts","../../../projects/ngx-gaia/src/lib/select/select.component.html","../../../projects/ngx-gaia/src/lib/select/opt-group.component.ts","../../../projects/ngx-gaia/src/lib/select/select-required.validator.ts","../../../projects/ngx-gaia/src/lib/select/select.module.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-optgroup.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-option-label.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-optgroup-label.directive.ts","../../../projects/ngx-gaia/src/lib/utils/intersection-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-required.validator.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.module.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.html","../../../projects/ngx-gaia/src/lib/switch/switch.module.ts","../../../projects/ngx-gaia/src/lib/link/link.directive.ts","../../../projects/ngx-gaia/src/lib/link/link.module.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.directive.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.module.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.module.ts","../../../projects/ngx-gaia/src/public-api.ts","../../../projects/ngx-gaia/src/vsn-ux-ngx-gaia.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Injection token that provides the base root font size in pixels.\n * This token is used for accurate rem calculations when the default\n * browser font size (16px) has been overridden by application styles.\n * Default value is 16px if not explicitly provided.\n */\nexport const GA_BASE_FONT_SIZE = new InjectionToken<number>(\n 'ga-base-font-size',\n { providedIn: 'root', factory: () => 16 },\n);\n\nexport function provideGaBaseFontSize(fontSize: number) {\n return makeEnvironmentProviders([\n { provide: GA_BASE_FONT_SIZE, useValue: fontSize },\n ]);\n}\n","import {\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { GA_BASE_FONT_SIZE } from '../utils/root-font-size.token';\n\nexport type GaIconData = LucideIconData;\n\nexport const GA_ICON_DEFAULT_SIZE = 24;\n\n@Component({\n selector: 'ga-icon',\n imports: [LucideAngularModule],\n template: `<lucide-icon\n [name]=\"icon()\"\n [color]=\"color()\"\n [strokeWidth]=\"strokeWidth()\"\n />`,\n host: {\n class: 'ga-icon',\n role: 'img',\n '[style]': \"{ '--ga-icon-size': sizeWithDimension() }\",\n },\n styles: `\n .ga-icon {\n display: inline-block;\n vertical-align: middle;\n user-select: none;\n width: fit-content;\n height: fit-content;\n\n lucide-icon > svg {\n width: var(--ga-icon-size);\n height: var(--ga-icon-size);\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GaIconComponent {\n private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly baseFontSize = inject(GA_BASE_FONT_SIZE);\n private readonly ariaHiddenAttr = inject(\n new HostAttributeToken('aria-hidden'),\n {\n optional: true,\n },\n );\n\n readonly icon = input.required<GaIconData | string>();\n readonly size = input<string | number>(GA_ICON_DEFAULT_SIZE);\n readonly color = input<string>();\n readonly strokeWidth = input(undefined, { transform: numberAttribute });\n\n readonly sizeWithDimension = computed(() => {\n const size = this.size();\n if (\n typeof size === 'number' ||\n (typeof size === 'string' && size.match(/^\\d+$/))\n ) {\n const sizeNumber = Number(size);\n return `${sizeNumber / this.baseFontSize}rem`;\n }\n return size;\n });\n\n constructor() {\n if (!this.ariaHiddenAttr) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaIconComponent } from './icon.component';\n\n@NgModule({\n imports: [GaIconComponent],\n exports: [GaIconComponent],\n})\nexport class GaIconModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title',\n },\n})\nexport class GaAlertTitleComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_BUTTON_I18N_FACTORY() {\n return new GaButtonI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_BUTTON_I18N_FACTORY,\n})\nexport abstract class GaButtonI18n {\n abstract loadingLabel: string;\n}\n\n@Injectable()\nexport class GaButtonI18nDefault extends GaButtonI18n {\n /** A label for the default loading state */\n loadingLabel = 'Loading...';\n}\n\nexport function provideGaButtonI18n(\n value: GaButtonI18n | (() => GaButtonI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaButtonI18n, useFactory: value }\n : { provide: GaButtonI18n, useValue: value },\n ]);\n}\n","import {\n Component,\n computed,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-spinner',\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-secondary)\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n ></circle>\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-primary-70)\"\n [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"arcCircumference() + ' ' + circumference()\"\n style=\"transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;\"\n ></circle>\n </svg>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-spinner',\n role: 'progressbar',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.mode]': \"'indeterminate'\",\n tabindex: '-1',\n },\n styles: `\n .ga-spinner {\n display: inline-block;\n }\n\n @keyframes ga-spinner__animation {\n 0% {\n transform: rotate(0deg);\n }\n 31.82% {\n /* 350ms / 1100ms */\n transform: rotate(90deg);\n }\n 63.64% {\n /* (350ms + 350ms) / 1100ms */\n transform: rotate(180deg);\n }\n 81.82% {\n /* (350ms + 350ms + 200ms) / 1100ms */\n transform: rotate(270deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `,\n})\nexport class GaSpinnerComponent {\n readonly size = input(32, { transform: numberAttribute });\n\n readonly strokeWidth = computed(() => this.size() / 5);\n readonly center = computed(() => this.size() / 2);\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n readonly arcCircumference = computed(() => this.circumference() * 0.25);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaButtonType = 'primary' | 'secondary' | 'ghost' | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaButton], a[gaButton]',\n imports: [GaSpinnerComponent],\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__loading-label\">{{ loadingLabel() }}</span>\n } @else {\n <ng-content />\n }\n `,\n styles: `\n .ga-button__loading-label {\n color: var(--ga-color-text-body);\n font-weight: 400;\n font-size: calc(\n var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)\n );\n line-height: calc(\n var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)\n );\n letter-spacing: 0;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-button',\n '[class.ga-button--secondary]': `!variant() || variant() === 'secondary'`,\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly variant = input.required<GaButtonType | ''>({\n alias: 'gaButton',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaIconData } from '../icon/icon.component';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaIconButtonVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaIconButton], a[gaIconButton]',\n imports: [GaIconModule, GaSpinnerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './icon-button.directive.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__icon-label\">{{ loadingLabel() }}</span>\n } @else {\n <ga-icon [icon]=\"icon()\" />\n <span class=\"ga-button__icon-label\"><ng-content /></span>\n }\n `,\n host: {\n class: 'ga-button ga-button--icon-only',\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--secondary]': `variant() === 'secondary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaIconButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly icon = input.required<GaIconData>({\n alias: 'gaIconButton',\n });\n\n readonly variant = input<GaIconButtonVariant>('secondary', {\n alias: 'gaIconButtonVariant',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaIconButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaIconButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaButtonDirective } from './button.directive';\nimport { GaIconButtonDirective } from './icon-button.directive';\n\n@NgModule({\n imports: [GaButtonDirective, GaIconButtonDirective],\n exports: [GaButtonDirective, GaIconButtonDirective],\n})\nexport class GaButtonModule {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_ALERT_I18N_FACTORY() {\n return new GaAlertI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_ALERT_I18N_FACTORY,\n})\nexport abstract class GaAlertI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaAlertI18nDefault extends GaAlertI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaAlertI18n(value: GaAlertI18n | (() => GaAlertI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaAlertI18n, useFactory: value }\n : { provide: GaAlertI18n, useValue: value },\n ]);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport { GaAlertI18n } from './alert-i18n.service';\n\nlet nextUniqueId = 0;\n\nexport type GaAlertVariant =\n | 'brand'\n | 'information'\n | 'error'\n | 'warning'\n | 'success';\n\n@Component({\n selector: 'ga-alert',\n templateUrl: './alert.component.html',\n imports: [GaIconModule, GaButtonModule],\n host: {\n role: 'alert',\n '[class]': `variantClass()`,\n },\n})\nexport class GaAlertComponent {\n protected readonly i18n = inject(GaAlertI18n);\n\n readonly dismissIcon: typeof X = X;\n\n readonly variant = input<GaAlertVariant>('brand');\n readonly explicitIcon = input<GaIconData>(undefined, { alias: 'icon' });\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly progress = input<number | 'indeterminate'>();\n readonly progressLabel = input<string>();\n readonly progressLabelledBy = input<string>();\n\n readonly dismiss = output();\n\n readonly icon = computed(() => {\n if (this.explicitIcon() !== undefined) {\n return this.explicitIcon();\n }\n switch (this.variant()) {\n case 'information':\n return Info;\n case 'error':\n return OctagonAlert;\n case 'warning':\n return TriangleAlert;\n case 'success':\n return CircleCheck;\n }\n return null;\n });\n\n readonly title = contentChild(GaAlertTitleComponent);\n\n readonly progressId = `ga-alert-progress-${++nextUniqueId}`;\n\n readonly variantClass = computed(() => {\n return `ga-notification ga-notification--${this.variant()}`;\n });\n\n readonly hasProgress = computed(() => {\n return this.progress() !== undefined;\n });\n\n readonly progressValue = computed(() => {\n const progressValue = this.progress();\n if (progressValue === undefined || progressValue === 'indeterminate') {\n return undefined;\n }\n return Math.max(0, Math.min(100, progressValue));\n });\n\n readonly progressBarWidth = computed(() => {\n const progressValue = this.progressValue();\n if (progressValue === undefined) {\n return undefined;\n }\n return `${progressValue}%`;\n });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title-actions',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title-actions',\n },\n})\nexport class GaAlertTitleActionsComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { GaAlertComponent } from './alert.component';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport { GaAlertTitleActionsComponent } from './alert-title-actions.component';\n\n@NgModule({\n imports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n exports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n})\nexport class GaAlertModule {}\n","import { Component, computed, input } from '@angular/core';\n\nexport type GaBadgeVariant =\n | 'default'\n | 'default-inverted'\n | 'information'\n | 'error'\n | 'warning'\n | 'success'\n | 'muted'\n | 'disabled';\n\nexport type GaBadgeType = 'text' | 'dot';\n\n@Component({\n selector: 'ga-badge',\n template: `<ng-content />`,\n host: {\n '[class]': `variantClass()`,\n },\n})\nexport class GaBadgeComponent {\n readonly variant = input<GaBadgeVariant>('default');\n readonly type = input<GaBadgeType>('text');\n\n readonly variantClass = computed(() => {\n return `ga-badge ga-badge--${this.type()} ga-badge--${this.variant()}`;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [GaBadgeComponent],\n exports: [GaBadgeComponent],\n})\nexport class GaBadgeModule {}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-card',\n template: `<ng-content />`,\n host: {\n class: 'ga-card',\n '[class.ga-card--selectable]': 'selectable()',\n '[class.ga-card--selected]': 'selected()',\n '[class.ga-card--disabled]': 'disabled()',\n },\n})\nexport class GaCardComponent {\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaCardComponent } from './card.component';\n\n@NgModule({\n imports: [GaCardComponent],\n exports: [GaCardComponent],\n})\nexport class GaCardModule {}\n","import { computed, Directive, input } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\n@Directive({\n selector: '[gaFormControlErrors]',\n})\nexport class GaFormControlErrorsDirective {\n readonly customErrorsInput = input.required<ValidationErrors>({\n alias: 'gaFormControlErrors',\n });\n\n readonly customErrors = computed(() => {\n // for better API ergonomics, we ignore errors with null and undefined values\n // this lets to bind custom errors directly without nasty if checks\n // e.g. [gaFormControlErrors]=\"{ required: isEmpty ? true : null, noMatch: form.getError('noMatch') }\"\n return Object.entries(this.customErrorsInput()).reduce<ValidationErrors>(\n (acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n );\n });\n}\n","import {\n DestroyRef,\n effect,\n inject,\n InjectionToken,\n Injector,\n isSignal,\n linkedSignal,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n} from '@angular/forms';\nimport { GaFormControlErrorsDirective } from '../form-field/form-control-errors.directive';\nimport { Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface GaFormControlAdapter {\n readonly ngControlErrors: Signal<ValidationErrors | null | undefined>;\n readonly ngControlTouched: Signal<boolean>;\n readonly ngControlDisabled: Signal<boolean>;\n readonly ngControlName: Signal<string | number | null>;\n readonly ngFormSubmitted: Signal<boolean>;\n}\n\nexport const GA_FORM_CONTROL_ADAPTER = new InjectionToken<GaFormControlAdapter>(\n 'ga-form-control-adapter',\n);\n\n/**\n * @internal - This function is for internal library use only\n */\nexport function injectNgControlState({\n implicitChildNgControl,\n explicitNgControl,\n explicitNgForm,\n}: {\n implicitChildNgControl?: Signal<NgControl | undefined | null>;\n explicitNgControl?: NgControl | Signal<NgControl | undefined | null> | null;\n explicitNgForm?: FormGroupDirective | NgForm;\n} = {}) {\n const gaFormControlAdapter = inject(GA_FORM_CONTROL_ADAPTER, {\n optional: true,\n });\n\n let ngControlErrors: WritableSignal<ValidationErrors | null | undefined>;\n let ngControlTouched: WritableSignal<boolean>;\n let ngControlDisabled: WritableSignal<boolean>;\n let ngControlName: WritableSignal<string | number | null>;\n let ngFormSubmitted: WritableSignal<boolean>;\n\n if (gaFormControlAdapter) {\n ngControlErrors = linkedSignal(() =>\n gaFormControlAdapter.ngControlErrors(),\n );\n ngControlTouched = linkedSignal(() =>\n gaFormControlAdapter.ngControlTouched(),\n );\n ngControlDisabled = linkedSignal(() =>\n gaFormControlAdapter.ngControlDisabled(),\n );\n ngControlName = linkedSignal(() => gaFormControlAdapter.ngControlName());\n ngFormSubmitted = linkedSignal(() =>\n gaFormControlAdapter.ngFormSubmitted(),\n );\n } else {\n ngControlErrors = signal<ValidationErrors | null>(null);\n ngControlTouched = signal<boolean>(false);\n ngControlDisabled = signal<boolean>(false);\n ngControlName = signal<string | number | null>(null);\n ngFormSubmitted = signal<boolean>(false);\n\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const implicitNgForm = inject(NgForm, { optional: true });\n const implicitControlContainer = inject(ControlContainer, {\n optional: true,\n });\n const ngForm =\n explicitNgForm ??\n implicitNgForm ??\n (implicitControlContainer?.formDirective instanceof NgForm\n ? implicitControlContainer.formDirective\n : null);\n\n let ngControlSubscription: Subscription | null = null;\n effect(() => {\n if (ngControlSubscription) {\n ngControlSubscription.unsubscribe();\n ngControlSubscription = null;\n }\n if (isSignal(explicitNgControl)) {\n explicitNgControl = explicitNgControl();\n }\n\n const ngControl =\n explicitNgControl ??\n implicitChildNgControl?.() ??\n injector.get(NgControl, null, { optional: true });\n if (ngControl?.control) {\n const updateStatuses = () => {\n ngControlErrors.set(ngControl.errors);\n ngControlTouched.set(!!ngControl.touched);\n ngControlDisabled.set(!!ngControl.disabled);\n ngControlName.set(ngControl.name);\n };\n updateStatuses();\n ngControlSubscription = ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => updateStatuses());\n }\n });\n\n if (ngForm) {\n ngFormSubmitted.set(ngForm.submitted);\n ngForm.ngSubmit\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => ngFormSubmitted.set(ngForm.submitted));\n }\n }\n\n const customErrorsDirective = inject(GaFormControlErrorsDirective, {\n optional: true,\n });\n const inError = signal(false);\n const errors = signal<ValidationErrors>({});\n effect(() => {\n errors.set({\n ...ngControlErrors(),\n ...(customErrorsDirective?.customErrors() ?? {}),\n });\n const hasErrors = Object.keys(errors()).length > 0;\n inError.set(hasErrors && (ngControlTouched() || ngFormSubmitted()));\n });\n\n return {\n inError: inError.asReadonly(),\n errors: errors.asReadonly(),\n disabled: ngControlDisabled.asReadonly(),\n name: ngControlName.asReadonly(),\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check, LucideAngularModule, Minus } from 'lucide-angular';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaCheckboxComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for checkbox components.\n// Inspired by @angular/components\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-checkbox',\n templateUrl: './checkbox.component.html',\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-checkbox',\n '[class.ga-checkbox--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-invalid]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaCheckboxComponent implements ControlValueAccessor {\n /** @ignore */\n private readonly _uniqueId = `ga-checkbox-${++nextUniqueId}`;\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n readonly icons = { Minus, Check };\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly disabledInput = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n readonly checkedInput = input(false, {\n transform: booleanAttribute,\n alias: 'checked',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly required = input(false, { transform: booleanAttribute });\n\n readonly disabled = linkedSignal(() => this.disabledInput());\n readonly checked = linkedSignal(() => this.checkedInput());\n\n readonly change = output<boolean>();\n readonly indeterminateChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => (this.id() ? this.id() : this._uniqueId));\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.updateModel();\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n /** @ignore */\n writeValue(value: any) {\n this.checked.set(!!value);\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n /** @ignore */\n private updateModel() {\n this._onModelChanged?.(this.checked());\n this.change.emit(this.checked());\n }\n}\n","<input\n type=\"checkbox\"\n class=\"ga-checkbox__native\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.value]=\"value()\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-checkbox__marker\">\n <lucide-icon\n [img]=\"icons.Check\"\n class=\"ga-checkbox__marker__indicator-checked\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n <lucide-icon\n [img]=\"icons.Minus\"\n class=\"ga-checkbox__marker__indicator-indeterminate\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n</div>\n\n<label class=\"ga-checkbox__label\" [attr.for]=\"inputId()\"\n ><ng-content></ng-content\n></label>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\n\nexport const GA_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaCheckboxRequiredValidator),\n multi: true,\n};\n\n/**\n * Validator for Gaia checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `ga-checkbox`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-checkbox[required][formControlName], ga-checkbox[required][formControl], ga-checkbox[required][ngModel]`,\n providers: [GA_CHECKBOX_REQUIRED_VALIDATOR],\n})\nexport class GaCheckboxRequiredValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaCheckboxRequiredValidator } from './checkbox-required.validator';\nimport { GaCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n exports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n})\nexport class GaCheckboxModule {}\n","import { Type } from '@angular/core';\n\nexport function isClass<T>(value: any): value is Type<T> {\n return (\n typeof value === 'function' &&\n value.prototype &&\n value.prototype.constructor === value\n );\n}\n","import {\n Injectable,\n LOCALE_ID,\n Type,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_I18N_FACTORY() {\n return new GaDatepickerI18nDefault();\n}\n\nexport interface IGaDatepickerI18n {\n previousLabel: string;\n nextLabel: string;\n selectMonthLabel: string;\n selectYearLabel: string;\n openCalendarLabel: string;\n todayButtonLabel: string;\n\n monthNames?: string[];\n monthNamesShort?: string[];\n weekDays?: string[];\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_I18N_FACTORY,\n})\nexport abstract class GaDatepickerI18n implements IGaDatepickerI18n {\n abstract previousLabel: string;\n abstract nextLabel: string;\n abstract selectMonthLabel: string;\n abstract selectYearLabel: string;\n abstract openCalendarLabel: string;\n abstract todayButtonLabel: string;\n abstract monthNames: string[];\n abstract monthNamesShort: string[];\n abstract weekDays: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GaDatepickerI18nDefault extends GaDatepickerI18n {\n private readonly localeId = inject(LOCALE_ID);\n\n selectMonthLabel = 'Select month';\n selectYearLabel = 'Select year';\n previousLabel = 'Previous';\n nextLabel = 'Next';\n openCalendarLabel = 'Open calendar';\n todayButtonLabel = 'Today';\n\n monthNames: string[];\n monthNamesShort: string[];\n weekDays: string[];\n\n constructor() {\n super();\n\n // Generate month names using Intl API\n const monthFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'long',\n });\n const monthShortFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'short',\n });\n\n this.monthNames = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthFormatter.format(date);\n });\n\n this.monthNamesShort = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthShortFormatter.format(date);\n });\n\n // Generate weekday names using Intl API (starting from Monday)\n const weekdayFormatter = new Intl.DateTimeFormat(this.localeId, {\n weekday: 'short',\n });\n const weekDayDates = Array.from({ length: 7 }, (_, i) => {\n // January 2024 starts on Monday, so we can use dates 1-7\n return new Date(2024, 0, i + 1);\n });\n\n this.weekDays = weekDayDates.map((date) => {\n return weekdayFormatter.format(date);\n });\n }\n}\n\nexport function provideGaDatepickerI18n(\n value: IGaDatepickerI18n | Type<GaDatepickerI18n> | (() => IGaDatepickerI18n),\n) {\n if (isClass(value)) {\n return makeEnvironmentProviders([\n { provide: GaDatepickerI18n, useClass: value },\n ]);\n }\n return makeEnvironmentProviders([\n {\n provide: GaDatepickerI18n,\n useFactory: () => {\n const defaultI18n = inject(GaDatepickerI18nDefault);\n const i18n: Required<IGaDatepickerI18n> = {\n monthNames: defaultI18n.monthNames,\n monthNamesShort: defaultI18n.monthNamesShort,\n weekDays: defaultI18n.weekDays,\n ...(typeof value === 'function' ? value() : value),\n };\n return i18n;\n },\n },\n ]);\n}\n","import { Injectable, Provider, Type } from '@angular/core';\n\nexport interface GaDatepickerStruct {\n year: number;\n month: number; // 1-12 (January = 1, December = 12)\n day: number;\n}\n\nexport function GA_DATEPICKER_VALUE_ADAPTER_FACTORY() {\n return new GaDatepickerStructValueAdapter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_VALUE_ADAPTER_FACTORY,\n})\nexport abstract class GaDatepickerValueAdapter<T = any> {\n /**\n * Converts the external value to internal struct representation\n */\n abstract toStruct(value: T | null): GaDatepickerStruct | null;\n\n /**\n * Converts the internal struct to external value representation\n */\n abstract fromStruct(struct: GaDatepickerStruct | null): T | null;\n}\n\n@Injectable()\nexport class GaDatepickerStructValueAdapter extends GaDatepickerValueAdapter<GaDatepickerStruct> {\n /**\n * Checks if a value is a valid GaDatepickerStruct\n */\n protected isStruct(value: any): value is GaDatepickerStruct {\n return (\n value &&\n typeof value === 'object' &&\n typeof value.year === 'number' &&\n typeof value.month === 'number' &&\n typeof value.day === 'number'\n );\n }\n\n /**\n * Handles GaDatepickerStruct natively - pass through as-is\n */\n toStruct(value: GaDatepickerStruct | null): GaDatepickerStruct | null {\n if (!value) return null;\n if (this.isStruct(value)) return value;\n return null; // Invalid input\n }\n\n /**\n * Returns struct as-is (no conversion needed)\n */\n fromStruct(struct: GaDatepickerStruct | null): GaDatepickerStruct | null {\n return struct;\n }\n}\n\nexport function provideGaDatepickerValueAdapter<T = any>(\n value: Type<GaDatepickerValueAdapter<T>>,\n): Provider {\n return { provide: GaDatepickerValueAdapter, useClass: value };\n}\n\n/**\n * Compares two structs for equality\n */\nexport function compareStructs(\n structA: GaDatepickerStruct | null,\n structB: GaDatepickerStruct | null,\n): -1 | 0 | 1 {\n if (!structA && !structB) return 0;\n if (!structA) return -1;\n if (!structB) return 1;\n const dateA = new Date(\n Date.UTC(structA.year, structA.month - 1, structA.day),\n );\n const dateB = new Date(\n Date.UTC(structB.year, structB.month - 1, structB.day),\n );\n return dateA.getTime() - dateB.getTime() < 0\n ? -1\n : dateA.getTime() - dateB.getTime() > 0\n ? 1\n : 0;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n model,\n OnInit,\n signal,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\n\ninterface GaDatepickerViewStruct {\n year: number;\n month: number;\n}\nimport {\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n} from 'lucide-angular';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\ntype ViewMode = 'day' | 'month' | 'year';\n\n@Component({\n selector: 'ga-datepicker',\n templateUrl: './datepicker.component.html',\n styles: `\n :host {\n display: block;\n }\n `,\n imports: [GaIconModule],\n host: {\n class: 'ga-calendar',\n },\n})\nexport class GaDatepickerComponent implements OnInit {\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n protected readonly icons = {\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronDown,\n };\n\n readonly value = model<any | null>(null);\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n\n // Internal struct representation\n protected readonly internalValue = computed(() => {\n return this.valueAdapter.toStruct(this.value());\n });\n\n protected readonly internalMinDate = computed(() => {\n return this.valueAdapter.toStruct(this.min());\n });\n\n protected readonly internalMaxDate = computed(() => {\n return this.valueAdapter.toStruct(this.max());\n });\n\n protected readonly viewMode = signal<ViewMode>('day');\n protected readonly viewDate = signal<GaDatepickerViewStruct>(\n this.getInitialViewDate(),\n );\n\n ngOnInit() {\n // Initialize view date based on the initial value or today's date\n this.viewDate.set(this.getInitialViewDate());\n }\n\n private getInitialViewDate(): GaDatepickerViewStruct {\n // Try to use the initial value if available\n const initialValue = this.valueAdapter.toStruct(this.value());\n if (initialValue) {\n return {\n year: initialValue.year,\n month: initialValue.month,\n };\n }\n\n // Fallback to today's date, but respect min/max constraints\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n\n const minStruct = this.valueAdapter.toStruct(this.min());\n const maxStruct = this.valueAdapter.toStruct(this.max());\n\n let targetDate = todayStruct;\n\n // If today is before min date, use min date\n if (minStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (todayValue < minValue) {\n targetDate = minStruct;\n }\n }\n\n // If today is after max date, use max date\n if (maxStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (todayValue > maxValue) {\n targetDate = maxStruct;\n }\n }\n\n return {\n year: targetDate.year,\n month: targetDate.month,\n };\n }\n\n protected readonly weekDays = computed(() => this.i18n.weekDays);\n\n protected readonly calendarDays = computed(() => {\n const viewStruct = this.viewDate();\n const year = viewStruct.year;\n const month = viewStruct.month;\n\n const firstDay = new Date(year, month - 1, 1); // Convert from 1-12 to 0-11\n const lastDay = new Date(year, month, 0); // month is already 1-12, so this gives us last day of month-1\n const startDate = new Date(firstDay);\n const startDayOfWeek = (firstDay.getDay() + 6) % 7;\n startDate.setDate(startDate.getDate() - startDayOfWeek);\n\n const days: GaDatepickerStruct[] = [];\n const current = new Date(startDate);\n\n while (current <= lastDay || days.length % 7 !== 0) {\n days.push({\n year: current.getFullYear(),\n month: current.getMonth() + 1, // Convert from 0-11 to 1-12\n day: current.getDate(),\n });\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n protected readonly months = computed(() => {\n return Array.from({ length: 12 }, (_, i) => ({\n index: i + 1, // Use 1-12 indexing\n name: this.i18n.monthNames[i],\n shortName: this.i18n.monthNamesShort[i],\n }));\n });\n\n protected readonly years = computed(() => {\n const currentYear = this.viewDate().year;\n const startYear = Math.floor(currentYear / 10) * 10;\n return Array.from({ length: 25 }, (_, i) => startYear + i - 1);\n });\n\n protected selectDate(dateStruct: GaDatepickerStruct) {\n if (this.isDateDisabled(dateStruct) || this.isSelected(dateStruct)) {\n return;\n }\n const externalValue = this.valueAdapter.fromStruct(dateStruct);\n this.value.set(externalValue);\n }\n\n protected selectMonth(monthIndex: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year: currentView.year,\n month: monthIndex, // monthIndex is already 1-12 from months array\n };\n this.viewDate.set(newView);\n this.viewMode.set('day');\n }\n\n protected selectYear(year: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year,\n month: currentView.month,\n };\n this.viewDate.set(newView);\n this.viewMode.set('month');\n }\n\n protected navigatePrevious() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const prevMonth = currentView.month === 1 ? 12 : currentView.month - 1; // Handle 1-12 indexing\n const prevYear =\n currentView.month === 1 ? currentView.year - 1 : currentView.year;\n newView = {\n year: prevYear,\n month: prevMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year - 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year - 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected navigateNext() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const nextMonth = currentView.month === 12 ? 1 : currentView.month + 1; // Handle 1-12 indexing\n const nextYear =\n currentView.month === 12 ? currentView.year + 1 : currentView.year;\n newView = {\n year: nextYear,\n month: nextMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year + 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year + 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected toggleMonthView() {\n this.viewMode.set(this.viewMode() === 'month' ? 'day' : 'month');\n }\n\n protected toggleYearView() {\n this.viewMode.set(this.viewMode() === 'year' ? 'day' : 'year');\n }\n\n protected isToday(dateStruct: GaDatepickerStruct): boolean {\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n return compareStructs(dateStruct, todayStruct) === 0;\n }\n\n protected isSelected(dateStruct: GaDatepickerStruct): boolean {\n const selectedStruct = this.internalValue();\n return compareStructs(dateStruct, selectedStruct) === 0;\n }\n\n protected isCurrentMonth(dateStruct: GaDatepickerStruct): boolean {\n return dateStruct.month === this.viewDate().month;\n }\n\n protected isWeekend(dateStruct: GaDatepickerStruct): boolean {\n // Convert struct to Date to get day of week (convert month from 1-12 to 0-11)\n const date = new Date(\n dateStruct.year,\n dateStruct.month - 1,\n dateStruct.day,\n );\n const day = date.getDay();\n return day === 0 || day === 6;\n }\n\n protected isDateDisabled(dateStruct: GaDatepickerStruct): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (dateValue < minValue) {\n return true;\n }\n }\n\n if (maxStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (dateValue > maxValue) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isMonthDisabled(monthIndex: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n const year = this.viewDate().year;\n\n if (minStruct) {\n if (\n year < minStruct.year ||\n (year === minStruct.year && monthIndex < minStruct.month)\n ) {\n return true;\n }\n }\n\n if (maxStruct) {\n if (\n year > maxStruct.year ||\n (year === maxStruct.year && monthIndex > maxStruct.month)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isYearDisabled(year: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct && year < minStruct.year) {\n return true;\n }\n\n if (maxStruct && year > maxStruct.year) {\n return true;\n }\n\n return false;\n }\n\n protected isSelectedMonth(monthIndex: number): boolean {\n const selectedStruct = this.internalValue();\n if (!selectedStruct) return false;\n\n return (\n selectedStruct.month === monthIndex &&\n selectedStruct.year === this.viewDate().year\n );\n }\n\n protected isSelectedYear(year: number): boolean {\n const selectedStruct = this.internalValue();\n return selectedStruct ? selectedStruct.year === year : false;\n }\n\n protected getMonthName(monthIndex: number): string {\n return this.i18n.monthNames[monthIndex - 1]; // Convert from 1-12 to 0-11 for array access\n }\n}\n","<div class=\"ga-calendar__header\">\n <div class=\"ga-calendar__month-year\">\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleMonthView()\"\n [attr.aria-label]=\"i18n.selectMonthLabel\"\n >\n {{ getMonthName(viewDate().month) }}\n <ga-icon\n [icon]=\"viewMode() === 'month' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleYearView()\"\n [attr.aria-label]=\"i18n.selectYearLabel\"\n >\n {{ viewDate().year }}\n <ga-icon\n [icon]=\"viewMode() === 'year' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n </div>\n @if (viewMode() !== 'month') {\n <div class=\"ga-calendar__navigation\">\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigatePrevious()\"\n [attr.aria-label]=\"i18n.previousLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronLeft\" size=\"24\" />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigateNext()\"\n [attr.aria-label]=\"i18n.nextLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronRight\" size=\"24\" />\n </button>\n </div>\n }\n</div>\n\n@switch (viewMode()) {\n @case ('day') {\n <div class=\"ga-calendar__weekdays\">\n @for (day of weekDays(); track day) {\n <div class=\"ga-calendar__weekday\">{{ day }}</div>\n }\n </div>\n <div class=\"ga-calendar__selection ga-calendar__selection--day\">\n @for (\n dateStruct of calendarDays();\n track dateStruct.year + '-' + dateStruct.month + '-' + dateStruct.day\n ) {\n <button\n type=\"button\"\n class=\"ga-calendar__day\"\n [class.ga-calendar__day--selected]=\"isSelected(dateStruct)\"\n [class.ga-calendar__day--current]=\"isToday(dateStruct)\"\n [class.ga-calendar__day--disabled]=\"isDateDisabled(dateStruct)\"\n [class.ga-calendar__day--weekend]=\"isWeekend(dateStruct)\"\n [disabled]=\"isDateDisabled(dateStruct)\"\n (click)=\"selectDate(dateStruct)\"\n >\n {{ dateStruct.day }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"ga-calendar__selection ga-calendar__selection--month\">\n @for (month of months(); track month.index) {\n <button\n type=\"button\"\n class=\"ga-calendar__month\"\n [class.ga-calendar__month--selected]=\"isSelectedMonth(month.index)\"\n [class.ga-calendar__month--disabled]=\"isMonthDisabled(month.index)\"\n [disabled]=\"isMonthDisabled(month.index)\"\n (click)=\"selectMonth(month.index)\"\n >\n {{ month.shortName }}\n </button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"ga-calendar__selection ga-calendar__selection--year\">\n @for (year of years(); track year) {\n <button\n type=\"button\"\n class=\"ga-calendar__year\"\n [class.ga-calendar__year--selected]=\"isSelectedYear(year)\"\n [class.ga-calendar__year--disabled]=\"isYearDisabled(year)\"\n [disabled]=\"isYearDisabled(year)\"\n (click)=\"selectYear(year)\"\n >\n {{ year }}\n </button>\n }\n </div>\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport type { GaFormControlDirective } from './form-control.directive';\n\n/**\n * @internal - Internal service for form field coordination\n */\n@Injectable()\nexport class GaFormFieldConnector {\n readonly controlDisabled = signal(false);\n readonly controlId = signal<string | null>(null);\n readonly labelId = signal<string | null>(null);\n readonly control = signal<GaFormControlDirective | null>(null);\n}\n","import {\n Attribute,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaInputComponent } from './input.component';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaInput]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id()',\n '[class.ga-input]': '!hasWrapper',\n '[class.ga-input--invalid]': '!hasWrapper && invalid()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaInputDirective {\n readonly uniqueId = `ga-input-${++nextUniqueId}`;\n\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly hasWrapper = inject(GaInputComponent, { optional: true });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly implicitNgControlState = injectNgControlState();\n\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly idInput = input<string>(undefined, { alias: 'id' });\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.implicitNgControlState.disabled();\n });\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n} from '@angular/core';\nimport { GaInputDirective } from './input.directive';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'ga-input',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkOverlayOrigin],\n host: {\n class: 'ga-input',\n '[class.ga-input--invalid]': 'gaInput().invalid()',\n '(click)': 'gaInput().focus()',\n },\n})\nexport class GaInputComponent {\n protected readonly gaInput = contentChild.required(GaInputDirective);\n}\n","import {\n Component,\n inject,\n Injector,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { CalendarDays } from 'lucide-angular';\nimport { GaInputComponent } from '../input/input.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\nimport { GaDatepickerValueAdapter } from './adapters/date-struct-adapter';\n\n@Component({\n selector: 'ga-datepicker-toggle',\n templateUrl: './datepicker-toggle.component.html',\n imports: [GaIconModule, GaButtonModule, OverlayModule, GaDatepickerComponent],\n styles: `\n .ga-datepicker__footer {\n text-align: center;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.escape)': 'close()',\n },\n})\nexport class GaDatepickerToggleComponent {\n protected readonly icons = { CalendarDays };\n\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly gaInput = inject(GaInputComponent);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n private readonly injector = inject(Injector);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly _isOpen = signal(false);\n readonly isOpen = this._isOpen.asReadonly();\n\n readonly for = input.required<GaDatepickerInputDirective>();\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.for().disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n protected onDatepickerValueChange(value: any | null) {\n this.for().updateValue(value, { updateView: true, emitToNgModel: true });\n if (value) {\n this.close();\n }\n }\n\n protected setToday() {\n const today = new Date();\n const todayStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n day: today.getDate(),\n };\n const todayValue = this.valueAdapter.fromStruct(todayStruct);\n this.for().updateValue(todayValue, {\n updateView: true,\n emitToNgModel: true,\n });\n this.close();\n }\n}\n","<button\n type=\"button\"\n class=\"ga-datepicker-toggle\"\n [disabled]=\"for().disabled()\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-label]=\"i18n.openCalendarLabel\"\n tabindex=\"-1\"\n>\n <ga-icon [icon]=\"icons.CalendarDays\" size=\"24\" />\n</button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (overlayKeydown)=\"$event.code === 'Escape' && close()\"\n>\n <div class=\"ga-datepicker\">\n <ga-datepicker\n [value]=\"for().value()\"\n (valueChange)=\"onDatepickerValueChange($event)\"\n [min]=\"for().min()\"\n [max]=\"for().max()\"\n />\n <div class=\"ga-datepicker__footer\">\n <button type=\"button\" gaButton (click)=\"setToday()\">\n {{ i18n.todayButtonLabel }}\n </button>\n </div>\n </div>\n</ng-template>\n","import {\n LOCALE_ID,\n Injectable,\n inject,\n InjectionToken,\n Provider,\n Type,\n} from '@angular/core';\nimport { GaDatepickerStruct } from './adapters/date-struct-adapter';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new GaDatepickerParserFormatterDefault();\n}\n\n/**\n * Converts between the internal `GaDatepickerStruct` model presentation and a `string` that is displayed in the input element.\n */\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_PARSER_FORMATTER_FACTORY,\n})\nexport abstract class GaDatepickerParserFormatter {\n /**\n * When user types something in the input this method attempts to parse it into a `GaDatepickerStruct` object.\n * `null` must be returned if the value can't be parsed.\n */\n abstract parse(value: string): GaDatepickerStruct | null;\n\n /**\n * When users enters a valid date (either via keyboard or mouse click) this method reformats it into a preferred format.\n * An empty string must be returned if the given date is `null`.\n */\n abstract format(date: GaDatepickerStruct | null): string;\n}\n\nexport type GaDatepickerFormats = Record<\n string,\n { input: string[]; output: string }\n>;\n\nexport const GA_DEFAULT_DATEPICKER_FORMATS: GaDatepickerFormats = {\n 'en-US': {\n input: [\n 'yyyy-MM-dd',\n 'M d yy',\n 'M d yyyy',\n 'M/d/yy',\n 'M/d/yyyy',\n 'M.d.yy',\n 'M.d.yyyy',\n 'M-d-yy',\n 'M-d-yyyy',\n ],\n output: 'MM/dd/yyyy',\n },\n 'en-GB': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd/MM/yyyy',\n },\n 'da-dK': {\n input: [\n 'yyyy-MM-dd',\n 'd M yyyy',\n 'd M yy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'fi-FI': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nb-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nn-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'sv-SE': {\n input: [\n 'yyyy-MM-dd',\n 'yy M d',\n 'yyyy M d',\n 'yy-M-d',\n 'yyyy-M-d',\n 'yy/M/d',\n 'yyyy/M/d',\n 'yy.M.d',\n 'yyyy.M.d',\n 'yyMMdd',\n 'yyyyMMdd',\n ],\n output: 'yyyy-MM-dd',\n },\n};\n\nexport const GA_DATE_PARSER_FORMATTER_CONFIG = new InjectionToken(\n 'GA_DATE_PARSER_FORMATTER_CONFIG',\n { providedIn: 'root', factory: () => GA_DEFAULT_DATEPICKER_FORMATS },\n);\n\nexport function extendGaDateParserFormatter(\n formats: GaDatepickerFormats,\n): Provider {\n return {\n provide: GA_DATE_PARSER_FORMATTER_CONFIG,\n useValue: { ...GA_DEFAULT_DATEPICKER_FORMATS, ...formats },\n };\n}\n\n@Injectable()\nexport class GaDatepickerParserFormatterDefault extends GaDatepickerParserFormatter {\n /** @ignore */\n private readonly locale = inject(LOCALE_ID);\n /** @ignore */\n private readonly formats = inject(GA_DATE_PARSER_FORMATTER_CONFIG);\n\n parse(value: string): GaDatepickerStruct | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n let config = this.formats[this.locale];\n\n if (!config) {\n this.printUnknownLocaleWarning();\n config = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n\n for (const format of config.input) {\n const regexp = this.dateFormatToRegexp(format);\n\n const match = trimmedValue.match(regexp);\n if (match) {\n const yearIndex = format.indexOf('y');\n const monthIndex = format.indexOf('M');\n const dayIndex = format.indexOf('d');\n const sortedIndexes = [yearIndex, monthIndex, dayIndex].sort();\n const yearGroup = sortedIndexes.indexOf(yearIndex) + 1;\n const monthGroup = sortedIndexes.indexOf(monthIndex) + 1;\n const dayGroup = sortedIndexes.indexOf(dayIndex) + 1;\n const year = this.addYearPadding(+match[yearGroup]);\n const month = +match[monthGroup];\n const day = +match[dayGroup];\n\n if (month <= 0 || month > 12) {\n // invalid month\n return null;\n }\n\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day <= 0 || day > daysInMonth) {\n // invalid day\n return null;\n }\n\n return { year, month, day };\n }\n }\n return null;\n }\n\n format(date: GaDatepickerStruct): string {\n if (!date) {\n return '';\n }\n let format = this.formats[this.locale];\n if (!format) {\n this.printUnknownLocaleWarning();\n format = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n return this.formatDate(date, format.output);\n }\n\n private formatDate(date: GaDatepickerStruct, format: string): string {\n const year = date.year.toString();\n const month = date.month.toString().padStart(2, '0');\n const day = date.day.toString().padStart(2, '0');\n\n return format\n .replace(/yyyy/g, year)\n .replace(/MM/g, month)\n .replace(/dd/g, day);\n }\n\n private dateFormatToRegexp(format: string) {\n const pattern =\n '^' +\n format\n // / to \\/\n .replace(/\\//g, '\\\\/')\n // . to \\.\n .replace(/\\./g, '\\\\.')\n .replace(/(d+)/, '(\\\\d{1,2})')\n .replace(/(yyyy)/, '(\\\\d{4})')\n .replace(/(yy)/, '(\\\\d{2})')\n .replace(/(M+)/, '(\\\\d{1,2})') +\n '$';\n return new RegExp(pattern);\n }\n\n private addYearPadding(year: number) {\n if (year < 100) {\n return 2000 + year;\n }\n return year;\n }\n\n private printUnknownLocaleWarning() {\n console.warn(\n `Default datepicker parser-formatter does not have predefined formats for \"${this.locale}\" locale. Please provide custom 'GaDatepickerParserFormatter' class. Now defaults to \"en-GB\".`,\n );\n }\n}\n\nexport function provideGaDatepickerParserFormatter(\n value:\n | Type<GaDatepickerParserFormatter>\n | (() => GaDatepickerParserFormatter),\n): Provider {\n if (isClass(value)) {\n return { provide: GaDatepickerParserFormatter, useClass: value };\n }\n return typeof value === 'function'\n ? { provide: GaDatepickerParserFormatter, useFactory: value }\n : { provide: GaDatepickerParserFormatter, useValue: value };\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n output,\n computed,\n linkedSignal,\n booleanAttribute,\n forwardRef,\n effect,\n untracked,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { GaDatepickerParserFormatter } from './datepicker-parser-formatter.service';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\n@Directive({\n selector: 'input[gaDatepickerInput]',\n exportAs: 'gaDatepickerInput',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(input)': 'onInput($event)',\n },\n})\nexport class GaDatepickerInputDirective\n implements ControlValueAccessor, Validator\n{\n private readonly inputElRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef,\n { self: true },\n );\n\n private readonly parserFormatter = inject(GaDatepickerParserFormatter);\n private readonly valueAdapter = inject(GaDatepickerValueAdapter);\n\n // Native value control (alternative to Angular forms)\n readonly valueInput = input<any>(null, { alias: 'value' });\n readonly disabledInput = input(null, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n readonly dateInput = output<any>();\n readonly dateChange = output<any>();\n\n readonly value = linkedSignal<any>(() => this.valueInput());\n readonly dateStruct = computed(() =>\n this.valueAdapter.toStruct(this.value()),\n );\n readonly disabled = linkedSignal<boolean>(() => !!this.disabledInput());\n\n private readonly lastValueValid = signal(false);\n private readonly lastDateChangeEmittedValue =\n signal<GaDatepickerStruct | null>(null);\n\n private onNgChangeFn?: (value: GaDatepickerStruct | null) => void;\n private onNgTouchedFn?: () => void;\n\n constructor() {\n effect(() => {\n this.valueInput(); // explicit call to track value input changes\n this.lastValueValid.set(true);\n untracked(() => {\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n this.formatValue();\n });\n });\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n // Parse the input value\n const parsedStruct = this.parserFormatter.parse(target.value);\n const newValue = this.valueAdapter.fromStruct(parsedStruct);\n\n this.lastValueValid.set(!target.value || parsedStruct !== null);\n\n // Only update if the parsed value is different from current value\n if (compareStructs(parsedStruct, this.dateStruct()) !== 0) {\n this.value.set(newValue);\n this.dateInput.emit(newValue);\n }\n this.onNgChangeFn?.(newValue);\n }\n\n onBlur(): void {\n if (this.dateStruct()) {\n this.formatValue();\n }\n\n if (\n compareStructs(this.dateStruct(), this.lastDateChangeEmittedValue()) !== 0\n ) {\n this.dateChange.emit(this.value());\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n }\n\n this.onNgTouchedFn?.();\n }\n\n formatValue(): void {\n const value = this.dateStruct();\n const formattedValue = this.parserFormatter.format(value);\n this.inputElRef.nativeElement.value = formattedValue;\n }\n\n updateValue(\n value: any | null,\n {\n updateView,\n emitToNgModel,\n }: { updateView?: boolean; emitToNgModel?: boolean } = {},\n ): void {\n this.value.set(value);\n this.lastValueValid.set(true);\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n if (updateView) {\n this.formatValue();\n }\n if (emitToNgModel) {\n this.onNgChangeFn?.(value);\n // NOTE: ngTouched must be called after ngChange to work with `updateOn: 'blur'` strategy\n this.onNgTouchedFn?.();\n this.dateInput.emit(value);\n this.dateChange.emit(value);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any | null): void {\n this.updateValue(value, { updateView: true });\n }\n\n registerOnChange(fn: (value: GaDatepickerStruct | null) => void): void {\n this.onNgChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onNgTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const { value } = control;\n\n if (!this.lastValueValid()) {\n return { dateFormat: { actual: this.inputElRef.nativeElement.value } };\n }\n\n if (value === null) {\n return null;\n }\n\n const valueStruct = this.valueAdapter.toStruct(value);\n\n if (this.min()) {\n const minDateStruct = this.valueAdapter.toStruct(this.min());\n if (minDateStruct && compareStructs(valueStruct, minDateStruct) === -1) {\n return { minDate: { actual: value, min: this.min() } };\n }\n }\n\n if (this.max()) {\n const maxDateStruct = this.valueAdapter.toStruct(this.max());\n if (maxDateStruct && compareStructs(valueStruct, maxDateStruct) === 1) {\n return { maxDate: { actual: value, max: this.max() } };\n }\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { GaDatepickerToggleComponent } from './datepicker-toggle.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\n\n@NgModule({\n imports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n exports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n})\nexport class GaDatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcValueAdapter extends GaDatepickerValueAdapter<Date> {\n /**\n * Converts Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: Date | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n // Create UTC date at midnight to avoid timezone issues\n const utcDate = new Date(\n Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()),\n );\n\n return {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth() + 1, // Convert from 0-11 to 1-12\n day: utcDate.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): Date | null {\n if (!struct) return null;\n\n // Create UTC date at midnight (convert month from 1-12 to 0-11)\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcIsoValueAdapter extends GaDatepickerValueAdapter<string> {\n /**\n * Converts ISO Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: string | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n const date = new Date(value);\n\n if (isNaN(date.getTime())) {\n return null;\n }\n\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to ISO Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): string | null {\n if (!struct) return null;\n\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n ).toISOString();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n model,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-segmented-control',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'group',\n class: 'ga-segmented-control',\n },\n})\nexport class GaSegmentedControlComponent {\n readonly selected = model<string>();\n\n readonly change = output<string | undefined>();\n}\n","import {\n computed,\n Directive,\n HostListener,\n inject,\n input,\n} from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\n\n@Directive({\n selector: '[gaSegmentedControlButton]',\n host: {\n type: 'button',\n class: 'ga-segmented-control__button',\n '[class.ga-segmented-control__button--selected]': 'selected()',\n '[attr.aria-pressed]': 'selected()',\n },\n})\nexport class GaSegmentedControlButtonDirective {\n /** @ignore */\n private readonly group = inject(GaSegmentedControlComponent, {\n skipSelf: true,\n });\n\n readonly value = input<string>();\n\n readonly selected = computed(() => {\n return (\n this.value() !== undefined &&\n this.group.selected() !== undefined &&\n this.group.selected() === this.value()\n );\n });\n\n @HostListener('click')\n onClick(): void {\n this.group.selected.set(this.value());\n this.group.change.emit(this.value());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-icon-button',\n imports: [GaIconModule, GaSegmentedControlButtonDirective],\n template: `<button\n class=\"ga-segmented-control__button--icon-only\"\n gaSegmentedControlButton\n [value]=\"value()\"\n >\n <ga-icon [icon]=\"icon()\" size=\"16\" />\n <span class=\"ga-segmented-control__button-sr-label\"><ng-content /></span>\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlIconButtonComponent {\n readonly value = input.required<string>();\n readonly icon = input.required<GaIconData>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-text-button',\n imports: [GaSegmentedControlButtonDirective],\n template: `<button gaSegmentedControlButton [value]=\"value()\">\n <ng-content />\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlTextButtonComponent {\n readonly value = input.required<string>();\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\nimport { GaSegmentedControlIconButtonComponent } from './segmented-control-icon-button.component';\nimport { GaSegmentedControlTextButtonComponent } from './segmented-control-text-button.component';\n\n@NgModule({\n imports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n exports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n})\nexport class GaSegmentedControlModule {}\n","import { NgModule } from '@angular/core';\n\nimport { GaInputComponent } from './input.component';\nimport { GaInputDirective } from './input.directive';\n\n@NgModule({\n imports: [GaInputComponent, GaInputDirective],\n exports: [GaInputComponent, GaInputDirective],\n})\nexport class GaInputModule {}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nexport type GaFormErrorMessage = string | ((error: any) => string);\nexport type GaFormErrorsMap = Record<string, GaFormErrorMessage>;\nexport type GaFormErrorsConfig = GaFormErrorsMap | (() => GaFormErrorsMap);\n\nexport const GA_FORM_ERRORS = new InjectionToken<GaFormErrorsMap>(\n 'GA_FORM_ERRORS',\n { providedIn: 'root', factory: () => ({}) },\n);\n\n/**\n * Provides global form error messages that can be used across the application.\n * These errors will be displayed when a form control has validation errors\n * but no specific gaError directive template is provided.\n *\n * @param config - Either a static record of error messages or a factory function\n * @returns EnvironmentProviders for configuring global form errors\n *\n * @example\n * ```ts\n * // Static configuration\n * provideGaFormErrors({\n * required: 'This field is required',\n * email: 'Please enter a valid email address',\n * minlength: 'Input is too short'\n * })\n *\n * // Dynamic configuration with functions that access error data\n * provideGaFormErrors({\n * required: 'This field is required',\n * minlength: (error) => `Minimum ${error.requiredLength} characters required`,\n * pattern: (error) => `Input format is invalid. Expected pattern: ${error.requiredPattern}`\n * })\n *\n * // Factory function for lazy evaluation\n * provideGaFormErrors(() => ({\n * required: translateService.get('errors.required'),\n * email: translateService.get('errors.email')\n * }))\n * ```\n */\nexport function provideGaFormErrors(\n config: GaFormErrorsConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n typeof config === 'function'\n ? { provide: GA_FORM_ERRORS, useFactory: config }\n : { provide: GA_FORM_ERRORS, useValue: config },\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { OctagonAlert } from 'lucide-angular';\nimport { GA_FORM_ERRORS } from './form-errors.provider';\n\n@Component({\n selector: 'ga-field-callout',\n templateUrl: './field-callout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, GaIconModule],\n host: {\n class: 'ga-form-field__info',\n '[attr.id]': 'id',\n '[style.display]': 'hasCallout() ? null : \"none\"',\n },\n})\nexport class GaFieldCalloutComponent {\n protected readonly icons = { OctagonAlert };\n protected readonly formField = inject(GaFormFieldComponent);\n private readonly globalErrors = inject(GA_FORM_ERRORS);\n\n protected readonly id = this.formField.uniqueId + '-callout';\n\n protected readonly shouldShowError = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return false;\n }\n return formControl.inError() && this.overlappingErrors().length > 0;\n });\n\n protected readonly overlappingErrors = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return [];\n }\n const registeredErrors = this.formField\n .fieldErrors()\n .filter((err) => err.key());\n const controlErrorKeys = Object.keys(formControl.errors());\n const errors: {\n key: string;\n error: any;\n templateRef?: TemplateRef<any>;\n message?: string;\n }[] = [];\n\n // First, add errors that have matching gaError directives\n const registeredErrorKeys = new Set(\n registeredErrors.map((err) => err.key()),\n );\n registeredErrors\n .filter((err) => controlErrorKeys.includes(err.key()!))\n .forEach((err) => {\n const errorKey = err.key()!;\n errors.push({\n key: errorKey,\n templateRef: err.templateRef,\n error: formControl.errors()[errorKey],\n });\n });\n\n // Then, add global errors for keys that don't have gaError directives\n controlErrorKeys\n .filter((key) => !registeredErrorKeys.has(key))\n .forEach((key) => {\n const errorMessage = this.globalErrors[key];\n if (errorMessage) {\n const message =\n typeof errorMessage === 'function'\n ? errorMessage(formControl.errors()[key])\n : errorMessage;\n errors.push({\n key,\n error: formControl.errors()[key],\n message,\n });\n }\n });\n\n return errors;\n });\n\n protected readonly hasCallout = computed(\n () => !!this.formField.fieldInfo() || this.shouldShowError(),\n );\n}\n","@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n &nbsp;\n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-info',\n template: `<ng-template><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"none\"',\n },\n})\nexport class GaFieldInfoComponent {\n readonly templateRef = viewChild.required(TemplateRef);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaError]',\n})\nexport class GaFieldErrorDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n readonly key = input.required<string>({ alias: 'gaError' });\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_FORM_FIELD_ID = new InjectionToken<string>('ga-form-field-id');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n input,\n inject,\n computed,\n} from '@angular/core';\nimport { GaFieldCalloutComponent } from './field-callout.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-form-field',\n exportAs: 'gaFormField',\n templateUrl: './form-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GaFieldCalloutComponent],\n host: {\n class: 'ga-form-field',\n },\n providers: [\n {\n provide: GA_FORM_FIELD_ID,\n useFactory: () => `ga-form-field-${++nextUniqueId}`,\n },\n GaFormFieldConnector,\n ],\n})\nexport class GaFormFieldComponent {\n readonly uniqueId = inject(GA_FORM_FIELD_ID);\n readonly formFieldConnector = inject(GaFormFieldConnector);\n\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.formFieldConnector.controlDisabled();\n });\n\n readonly formControl = this.formFieldConnector.control.asReadonly();\n\n readonly fieldInfo = contentChild(GaFieldInfoComponent);\n readonly fieldErrors = contentChildren(GaFieldErrorDirective);\n}\n","<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type GaTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type GaTooltipDirection = 'start' | 'end' | 'center';\nexport type GaTooltipPlacement = `${GaTooltipPosition}-${GaTooltipDirection}`;\nexport type GaTooltipControlMode = 'hover' | 'click' | 'none';\n\nlet nextUniqueId = 0;\n\n/**\n * Internal tooltip component used by the gaTooltip directive.\n * This component is not intended for direct use in templates.\n * Use the [gaTooltip] directive instead.\n * @internal\n */\n@Component({\n selector: 'ga-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.style]': 'inlineStyle()',\n },\n})\nexport class GaTooltipComponent {\n readonly uniqueId = `ga-tooltip-${++nextUniqueId}`;\n\n private mouseLeaveSubject = new Subject<void>();\n readonly afterMouseLeave = () => this.mouseLeaveSubject.asObservable();\n\n readonly mouseOver = signal(false);\n\n readonly content = input.required<string | TemplateRef<any>>();\n\n readonly template = computed(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly text = computed(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n\n readonly position = input<GaTooltipPlacement>();\n readonly offset = input<number>(0);\n\n readonly hideTriggered = output();\n readonly triggerHide = () => this.hideTriggered.emit();\n\n readonly inlineStyle = computed(() => {\n if (!this.position() || !this.offset()) {\n return '';\n }\n\n return `--ga-tooltip-offset: ${this.offset()}px;`;\n });\n\n readonly cssClass = computed(() => {\n return ['ga-tooltip', `ga-tooltip--${this.position()}`].join(' ');\n });\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n this.mouseOver.set(true);\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.mouseOver.set(false);\n this.mouseLeaveSubject.next();\n }\n}\n","<div role=\"tooltip\" [attr.id]=\"uniqueId\" [class]=\"cssClass()\">\n @if (text()) {\n {{ text() }}\n } @else if (template()) {\n <ng-container\n [ngTemplateOutlet]=\"template()\"\n [ngTemplateOutletContext]=\"{ hide: triggerHide }\"\n />\n }\n</div>\n","import {\n Overlay,\n OverlayRef,\n FlexibleConnectedPositionStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OutputRefSubscription,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, Observable, takeUntil, map } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n GaTooltipComponent,\n GaTooltipControlMode,\n GaTooltipDirection,\n GaTooltipPlacement,\n GaTooltipPosition,\n} from './tooltip.component';\n\nexport const GA_TOOLTIP_DEFAULT_OFFSET = 5;\n\n@Directive({\n selector: '[gaTooltip]',\n exportAs: 'gaTooltip',\n})\nexport class GaTooltipDirective implements OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly ngZone = inject(NgZone);\n\n protected destroyed$ = new Subject<void>();\n private _content: string | TemplateRef<any> | null = null;\n private tooltipInstanceDestroyed$: Subject<void> | null = null;\n private outputSubscription: OutputRefSubscription | null = null;\n private overlayRef?: OverlayRef;\n private tooltipPortal?: ComponentPortal<GaTooltipComponent>;\n private tooltipRef?: ComponentRef<GaTooltipComponent>;\n private get tooltipInstance() {\n return this.tooltipRef ? this.tooltipRef.instance : null;\n }\n private currentPosition$?: Observable<GaTooltipPlacement>;\n private _placement: GaTooltipPlacement = 'right-center';\n private _offset: number = GA_TOOLTIP_DEFAULT_OFFSET;\n private mouseOver = false;\n private _showControlMode: GaTooltipControlMode | null = null;\n private _hideControlMode: GaTooltipControlMode | null = null;\n\n @Input('gaTooltip')\n set content(value: string | TemplateRef<any> | null) {\n if (value === this._content) {\n return;\n }\n\n this._content = value;\n\n // Hide tooltip with empty content\n if (!this._content && this.overlayRef?.hasAttached()) {\n this.hide();\n return;\n }\n\n // Update the content in case tooltip is already opened\n if (this.tooltipRef && this.overlayRef?.hasAttached()) {\n this.tooltipRef.setInput('content', this._content);\n }\n }\n get content() {\n return this._content;\n }\n\n @Input({ alias: 'gaTooltipDisabled', transform: booleanAttribute })\n disabled = false;\n\n @Input({ alias: 'gaTooltipControlMode' })\n controlMode: GaTooltipControlMode = 'hover';\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipShowControlMode' })\n set showControlMode(value: GaTooltipControlMode) {\n this._showControlMode = value;\n }\n get showControlMode(): GaTooltipControlMode {\n return this._showControlMode ?? this.controlMode;\n }\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipHideControlMode' })\n set hideControlMode(value: GaTooltipControlMode) {\n this._hideControlMode = value;\n }\n get hideControlMode(): GaTooltipControlMode {\n return this._hideControlMode ?? this.controlMode;\n }\n\n @Input({ alias: 'gaTooltipOffsetSize', transform: numberAttribute })\n set offset(value) {\n if (this._offset === value) {\n return;\n }\n\n this._offset = !isNaN(value) ? value : GA_TOOLTIP_DEFAULT_OFFSET;\n this.updateTooltipPlacement();\n }\n get offset() {\n return this._offset;\n }\n\n @Input({ alias: 'gaTooltipPlacement' })\n set placement(value: GaTooltipPlacement) {\n if (this._placement === value) {\n return;\n }\n\n this._placement = value;\n\n this.updateTooltipPlacement();\n }\n get placement() {\n return this._placement;\n }\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.tooltipInstance?.uniqueId ?? null;\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const overlayRef = this.createOverlay();\n this.tooltipPortal =\n this.tooltipPortal ?? new ComponentPortal(GaTooltipComponent);\n\n this.tooltipInstanceDestroyed$ = new Subject();\n\n this.tooltipRef = overlayRef.attach(this.tooltipPortal);\n this.tooltipRef.setInput('content', this.content);\n this.outputSubscription = this.tooltipInstance!.hideTriggered.subscribe(\n () => setTimeout(() => this.hide()),\n );\n\n if (this.hideControlMode === 'hover') {\n // Soft hide tooltip on mouse leave when control mode is set to 'hover'\n this.tooltipInstance!.afterMouseLeave()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe(() => setTimeout(() => this.softHide()));\n } else if (this.hideControlMode === 'click') {\n // Hide tooltip on outside click when control mode is set to 'click'\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe((event) => {\n const element = this.elementRef.nativeElement;\n if (event.target !== element && !element.contains(event.target)) {\n this.hide();\n }\n });\n }\n\n // Tell the instance current position (left, right, top, bottom)\n this.currentPosition$!.pipe(\n takeUntil(this.tooltipInstanceDestroyed$),\n ).subscribe((position) => {\n this.ngZone.run(() => {\n if (!this.tooltipRef) {\n return;\n }\n this.tooltipRef.setInput('position', position);\n this.tooltipRef.setInput('offset', this.offset);\n });\n });\n }\n\n hide(): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.detach();\n this.tooltipInstanceDestroyed$!.next();\n this.tooltipInstanceDestroyed$!.complete();\n this.outputSubscription?.unsubscribe();\n this.tooltipRef = undefined;\n }\n\n toggle(): void {\n if (!this.overlayRef?.hasAttached()) {\n this.show();\n return;\n }\n this.hide();\n }\n\n @HostListener('click')\n handleMouseClick(): void {\n if (this.showControlMode !== 'click' || this.disabled || !this._content) {\n return;\n }\n this.toggle();\n }\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n if (this.showControlMode !== 'hover' || this.disabled || !this._content) {\n return;\n }\n this.mouseOver = true;\n this.show();\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n if (this.hideControlMode !== 'hover' || this.disabled) {\n return;\n }\n this.mouseOver = false;\n setTimeout(() => this.softHide());\n }\n\n /**\n * hides only if mouse is not over the host element nor the tooltip itself\n */\n private softHide() {\n if (!this.mouseOver && !this.tooltipInstance?.mouseOver()) {\n this.hide();\n }\n }\n\n private createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef);\n this.currentPosition$ = positionStrategy.positionChanges.pipe(\n map((pos) => pos.connectionPair.panelClass as GaTooltipPlacement),\n );\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy });\n\n if (this.showControlMode !== 'none') {\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((event) => {\n if (\n this.overlayRef?.hasAttached() &&\n event.keyCode === ESCAPE &&\n !hasModifierKey(event)\n ) {\n this.hide();\n }\n });\n }\n\n this.updatePosition();\n\n return this.overlayRef;\n }\n\n private updateTooltipPlacement(): void {\n if (this.overlayRef) {\n this.updatePosition();\n this.overlayRef.updatePosition();\n }\n }\n\n private updatePosition(): void {\n const position = this.overlayRef!.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n const positions = this.getPositions(this._placement);\n position.withPositions(positions);\n }\n\n private getPositions(\n preferredPlacement: GaTooltipPlacement,\n ): ConnectedPosition[] {\n const [position, direction] = preferredPlacement.split('-') as [\n GaTooltipPosition,\n GaTooltipDirection,\n ];\n\n let positionedOverlayY: ConnectedPosition['overlayY'];\n let positionedOffsetY: number;\n if (direction === 'start') {\n positionedOverlayY = 'top';\n positionedOffsetY = -24;\n } else if (direction === 'end') {\n positionedOverlayY = 'bottom';\n positionedOffsetY = 24;\n } else {\n positionedOverlayY = 'center';\n positionedOffsetY = 0;\n }\n\n let positionedOffsetX: number;\n if (direction === 'start') {\n positionedOffsetX = -24;\n } else if (direction === 'end') {\n positionedOffsetX = 24;\n } else {\n positionedOffsetX = 0;\n }\n\n const right: ConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `right-${direction}`,\n };\n\n const left: ConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `left-${direction}`,\n };\n\n const top: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: direction,\n overlayY: 'bottom',\n offsetX: positionedOffsetX,\n panelClass: `top-${direction}`,\n };\n\n const bottom: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: direction,\n overlayY: 'top',\n offsetX: positionedOffsetX,\n panelClass: `bottom-${direction}`,\n };\n\n if (position === 'right') {\n return [right, left, bottom, top];\n } else if (position === 'left') {\n return [left, right, bottom, top];\n } else if (position === 'top') {\n return [top, bottom, right, left];\n } else {\n return [bottom, top, right, left];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [GaTooltipDirective],\n exports: [GaTooltipDirective],\n})\nexport class GaTooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n TemplateRef,\n DOCUMENT,\n effect,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaTooltipModule } from '../tooltip';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Component({\n selector: 'ga-label',\n templateUrl: './field-label.component.html',\n imports: [GaTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'null',\n },\n})\nexport class GaFieldLabelComponent {\n private readonly document = inject(DOCUMENT);\n readonly formField = inject(GaFormFieldComponent);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly uniqueId = this.formField.uniqueId + '-label';\n\n readonly for = input<string>();\n readonly definition = input<string | TemplateRef<any> | null>(null);\n readonly state = input<string>();\n readonly idInput = input<string>(undefined, { alias: 'id' });\n\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n\n protected readonly controlId = computed(() => {\n return this.for() ?? this.formFieldConnector?.controlId();\n });\n\n readonly controlElement = computed(() => {\n const controlId = this.controlId();\n if (!controlId) {\n return null;\n }\n const control = this.document.querySelector(`#${CSS.escape(controlId)}`);\n if (control instanceof HTMLElement) {\n return control;\n }\n return null;\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.labelId.set(this.id()));\n }\n }\n\n focusControl() {\n const control = this.controlElement();\n // only focus custom elements as native elements already\n // have support for connecting label and reacting to events\n if (control?.tagName.includes('-')) {\n control.focus();\n }\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n<label\n [attr.id]=\"id()\"\n [attr.for]=\"controlId()\"\n class=\"ga-form-field__label\"\n [class.ga-form-field__label--defined]=\"!!definition()\"\n [class.ga-form-field__label--disabled]=\"formField.disabled()\"\n (click)=\"focusControl()\"\n [attr.tabindex]=\"definition() ? 0 : -1\"\n>\n <span\n class=\"ga-form-field__label-text\"\n [gaTooltip]=\"definition()\"\n gaTooltipPlacement=\"top-start\"\n ><ng-content\n /></span>\n @if (state()) {\n <span class=\"ga-form-field__label-state\">{{ state() }}</span>\n }\n</label>\n","import {\n computed,\n Directive,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n exportAs: 'gaFormControl',\n selector: '[gaFormControl]',\n host: {\n '[attr.aria-invalid]': 'inError() ? \"true\" : null',\n '[attr.aria-errormessage]': 'ariaErrorMessageId()',\n },\n})\nexport class GaFormControlDirective implements OnInit, OnDestroy {\n private readonly formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ngControlInput = input<NgControl | string>(undefined, {\n alias: 'gaFormControl',\n });\n\n private readonly explicitNgControl = computed(() => {\n const ngControl = this.ngControlInput();\n if (ngControl instanceof NgControl) {\n return ngControl;\n }\n return null;\n });\n\n private readonly ngControlState = injectNgControlState({\n explicitNgControl: this.explicitNgControl,\n });\n\n readonly inError = this.ngControlState.inError;\n readonly errors = this.ngControlState.errors;\n\n readonly ariaErrorMessageId = computed(() => {\n if (!this.formFieldId || !this.inError()) {\n return null;\n }\n return `${this.formFieldId}-callout`;\n });\n\n ngOnInit(): void {\n this.formFieldConnector?.control.set(this);\n }\n\n ngOnDestroy(): void {\n this.formFieldConnector?.control.set(null);\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n selector: '[gaLabelledByFormField]',\n host: {\n '[attr.aria-labelledby]': 'labelledBy()',\n },\n})\nexport class GaLabelledByFormFieldDirective {\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ariaLabelledBy = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n protected readonly labelledBy = computed(() => {\n return this.ariaLabelledBy() ?? this.formFieldConnector?.labelId();\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaFieldLabelComponent } from './field-label.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFormControlDirective } from './form-control.directive';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GaFormControlErrorsDirective } from './form-control-errors.directive';\n\n@NgModule({\n imports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n exports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n})\nexport class GaFormFieldModule {}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu',\n template: `<ng-content />`,\n hostDirectives: [CdkMenu],\n host: {\n class: 'ga-menu',\n },\n styles: `\n :host {\n margin-top: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n margin-bottom: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n }\n `,\n})\nexport class GaMenuComponent {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { Component, input } from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon/';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaMenuItem]',\n templateUrl: './menu-item.component.html',\n imports: [GaIconModule],\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'ga-menu__item',\n },\n})\nexport class GaMenuItemComponent {\n readonly icon = input<GaIconData | string>(undefined, {\n alias: 'gaMenuItemIcon',\n });\n readonly description = input('', { alias: 'gaMenuItemDescription' });\n readonly shortcut = input('', { alias: 'gaMenuItemShortcut' });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-menu__item-icon\" size=\"16\" />\n}\n<div class=\"ga-menu__item-content\">\n <div class=\"ga-menu__item-title\">\n <div class=\"ga-menu__item-label\"><ng-content /></div>\n @if (shortcut()) {\n <span class=\"ga-menu__item-shortcut\">{{ shortcut() }}</span>\n }\n </div>\n @if (description()) {\n <div class=\"ga-menu__item-description\">{{ description() }}</div>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__title',\n },\n})\nexport class GaMenuTitleComponent {}\n","import { CdkMenuTrigger, MENU_SCROLL_STRATEGY } from '@angular/cdk/menu';\nimport { createRepositionScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Directive,\n effect,\n inject,\n Injector,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, merge } from 'rxjs';\n\n@Directive({\n selector: '[gaMenuTrigger]',\n exportAs: 'gaMenuTrigger',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n outputs: ['cdkMenuOpened: gaMenuOpened', 'cdkMenuClosed: gaMenuClosed'],\n },\n ],\n providers: [\n {\n provide: MENU_SCROLL_STRATEGY,\n useFactory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n ],\n})\nexport class GaMenuTriggerDirective {\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n\n readonly menuRef = input.required<TemplateRef<any>>({\n alias: 'gaMenuTrigger',\n });\n\n readonly isOpen = toSignal(\n merge(\n this.cdkMenuTrigger.opened.pipe(map(() => true)),\n this.cdkMenuTrigger.closed.pipe(map(() => false)),\n ),\n { initialValue: this.cdkMenuTrigger.isOpen() },\n );\n\n constructor() {\n effect(() => {\n this.cdkMenuTrigger.menuTemplateRef = this.menuRef();\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-separator',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__separator',\n },\n})\nexport class GaMenuSeparatorComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp } from 'lucide-angular';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaIconData } from '../icon/icon.component';\n\n@Component({\n selector: 'ga-menu-trigger-icon',\n imports: [GaIconModule],\n template: `<ga-icon [icon]=\"icon()\" />`,\n})\nexport class GaMenuTriggerIconComponent {\n protected readonly menuTrigger = inject(GaMenuTriggerDirective);\n\n protected readonly icon = computed<GaIconData>(() => {\n return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;\n });\n}\n","import { NgModule } from '@angular/core';\nimport { GaMenuComponent } from './menu.component';\nimport { GaMenuItemComponent } from './menu-item.component';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaMenuSeparatorComponent } from './menu-separator.component';\nimport { GaMenuTitleComponent } from './menu-title.component';\nimport { GaMenuTriggerIconComponent } from './menu-trigger-icon.component';\n\n@NgModule({\n imports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n exports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n})\nexport class GaMenuModule {}\n","import { GaModalComponent } from './modal.component';\n\nexport class GaModalRef<C extends GaModalComponent<any, any>> {\n instance!: C;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_MODAL_DATA = new InjectionToken<any>('GaModalData');\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n inject,\n Injectable,\n Injector,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalComponent } from './modal.component';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { ExtractInput } from './modal.utils';\n\n@Injectable({ providedIn: 'root' })\nexport class GaModalService {\n /** @ignore */\n private overlay = inject(Overlay);\n /** @ignore */\n private injector = inject(Injector);\n /** @ignore */\n private parentModalService = inject(GaModalService, {\n optional: true,\n skipSelf: true,\n });\n\n /** @ignore */\n private openModalsAtThisLevel = signal<GaModalComponent<any, any>[]>([]);\n\n get activeModals(): WritableSignal<GaModalComponent<any, any>[]> {\n if (this.parentModalService) {\n return this.parentModalService.activeModals;\n }\n return this.openModalsAtThisLevel;\n }\n\n open<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n ...args: ExtractInput<C> extends void\n ? [(undefined | null)?]\n : [ExtractInput<C>]\n ) {\n const [data] = args;\n\n const overlayRef = this.createOverlay();\n return this.attachContent<C>(component, data, overlayRef);\n }\n\n closeAll(): void {\n this.activeModals.update((modals) => {\n while (modals.length > 0) {\n modals.pop()?.close();\n }\n return modals;\n });\n }\n\n /** @ignore */\n private attachContent<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n data: ExtractInput<C> | undefined | null,\n overlayRef: OverlayRef,\n ) {\n const modalRef = new GaModalRef<C>();\n const injector = this.createInjector(\n this.injector,\n overlayRef,\n modalRef,\n data,\n );\n const modalPortal = new ComponentPortal(component, null, injector);\n const result = overlayRef.attach(modalPortal);\n modalRef.instance = result.instance;\n this.activeModals.update((modals) => {\n modals.push(modalRef.instance);\n return modals;\n });\n modalRef.instance\n .afterClosed({ closeOnUnsubscribe: false })\n .subscribe(() => {\n const index = this.activeModals().indexOf(modalRef.instance);\n if (index > -1) {\n this.activeModals.update((modals) => {\n modals.splice(index, 1);\n return modals;\n });\n }\n });\n\n return result.instance;\n }\n\n /** @ignore */\n private createOverlay(): OverlayRef {\n const modalStackIndex = this.activeModals().length;\n const positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .top(\n `calc(4rem * var(--ga-base-scaling-factor, 1) * ${modalStackIndex + 1})`,\n );\n const scrollStrategy = this.overlay.scrollStrategies.block();\n return this.overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: 'ga-modal__backdrop',\n // NOTE: handled manually inside the modal component\n disposeOnNavigation: false,\n height: 'auto',\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * (2 + ${modalStackIndex}))`,\n });\n }\n\n /** @ignore */\n private createInjector<C extends GaModalComponent>(\n parentInjector: Injector,\n overlayRef: OverlayRef,\n modalRef: GaModalRef<C>,\n data: any,\n ): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: GaModalRef, useValue: modalRef },\n { provide: GA_MODAL_DATA, useValue: data ?? null },\n ],\n });\n }\n}\n","import { Provider } from '@angular/core';\n\nexport type GaModalRole = 'dialog' | 'alertdialog';\n\nexport type GaModalSize = 'sm' | 'md' | 'lg';\n\nexport type GaModalType = 'none' | 'info' | 'danger' | 'warning' | 'success';\n\nexport class GaModalOptions {\n /**\n * Defines the predefined size of the modal.\n *\n * @default `md`\n */\n size?: GaModalSize;\n\n /**\n * Defines the type of the modal:\n * - `none` for no icon.\n * - `information` for info dialog.\n * - `danger` for danger dialog.\n * - `warning` for warning dialog.\n * - `success` for success dialog.\n */\n type?: GaModalType;\n\n /**\n * The ARIA role of the dialog element.\n *\n * @default `dialog`\n */\n role?: GaModalRole;\n\n /**\n * Defines if the modal should be closed when the escape key is pressed.\n *\n * @default `true`\n */\n closeOnEscape?: boolean;\n\n /**\n * Defines if the modal should be closed when the backdrop is clicked.\n *\n * @default `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Defines if the modal should be closed when the route changes.\n *\n * @default `true`\n */\n closeOnNavigation?: boolean;\n}\n\nexport const DEFAULT_MODAL_OPTIONS: Required<GaModalOptions> = {\n role: 'dialog',\n type: 'none',\n size: 'md',\n closeOnEscape: true,\n closeOnOutsideClick: true,\n closeOnNavigation: true,\n};\n\nexport function provideGaModalOptions(options: GaModalOptions): Provider {\n return { provide: GaModalOptions, useValue: options };\n}\n","import {\n afterNextRender,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { filter, isObservable, Observable, Subject } from 'rxjs';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { DEFAULT_MODAL_OPTIONS, GaModalOptions } from './modal.options';\nimport { ResolveStart, Router } from '@angular/router';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n template: '',\n host: {\n class: 'ga-modal',\n '[attr.role]': 'options.role',\n '[attr.aria-labelledby]': 'options.labelledBy ?? labelledBy()',\n '[attr.aria-describedby]': 'options.describedBy ?? describedBy()',\n '[class.ga-modal--small]': \"options.size === 'sm'\",\n '[class.ga-modal--medium]': \"options.size === 'md'\",\n '[class.ga-modal--large]': \"options.size === 'lg'\",\n '[class.ga-modal--information]': \"options.type === 'info'\",\n '[class.ga-modal--danger]': \"options.type === 'danger'\",\n '[class.ga-modal--warning]': \"options.type === 'warning'\",\n '[class.ga-modal--success]': \"options.type === 'success'\",\n },\n hostDirectives: [CdkTrapFocus],\n})\nexport abstract class GaModalComponent<I = void, O = void> {\n private readonly closeSubject = new Subject<O | undefined>();\n private readonly overlayRef = inject(OverlayRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router, { optional: true });\n private readonly globalOptions = inject(GaModalOptions, { optional: true });\n protected readonly options: GaModalOptions & {\n labelledBy?: string;\n describedBy?: string;\n } = this.createOptions();\n private readonly trapfocus = inject(CdkTrapFocus);\n\n protected readonly data: I = inject<I>(GA_MODAL_DATA);\n\n protected readonly labelledBy = signal<string | null>(null);\n protected readonly describedBy = signal<string | null>(null);\n\n constructor() {\n this.trapfocus.enabled = true;\n this.trapfocus.autoCapture = true;\n\n // Using next render to delay the initialization, so that there is more time\n // to set the modal options\n afterNextRender({\n read: () => {\n if (this.options.closeOnNavigation) {\n this.router?.events\n .pipe(\n /**\n * Listen for `ResolveStart` to be friendly with route-guards.\n * i.e. don't close the modal in case a guard prevents the route change,\n * beneficial for pending changes check.\n */\n filter((event) => event instanceof ResolveStart),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.close());\n }\n\n if (this.options.closeOnEscape) {\n this.overlayRef\n .keydownEvents()\n .pipe(\n filter(\n (event) => event.key === 'Escape' && !hasModifierKey(event),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((event) => {\n event.preventDefault();\n this.softClose();\n });\n }\n\n if (this.options.closeOnOutsideClick) {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.softClose());\n }\n },\n });\n }\n\n close(result?: O): void {\n if (!this.overlayRef.hasAttached()) {\n return;\n }\n this.overlayRef.dispose();\n this.closeSubject.next(result);\n this.closeSubject.complete();\n }\n\n afterClosed(\n { closeOnUnsubscribe } = { closeOnUnsubscribe: true },\n ): Observable<O | undefined> {\n return new Observable((observer) => {\n this.closeSubject.subscribe(observer);\n return () => closeOnUnsubscribe && this.close();\n });\n }\n\n /**\n * \"Soft close\" hook which is called whenever the modal is being closed\n * by \"Escape\" key or Backdrop click.\n * Return true to permit closing. False - to refuse.\n */\n protected onSoftClose(): boolean | Observable<boolean> {\n return true;\n }\n\n private softClose(): void {\n const shouldClose = this.onSoftClose();\n if (typeof shouldClose === 'boolean' && shouldClose) {\n this.close();\n }\n if (isObservable(shouldClose)) {\n shouldClose\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => result && this.close());\n }\n }\n\n protected createOptions(\n options?: GaModalOptions & { labelledBy?: string; describedBy?: string },\n ) {\n return {\n ...DEFAULT_MODAL_OPTIONS,\n ...this.globalOptions,\n ...options,\n };\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostAttributeToken,\n HostListener,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\n\n@Directive({\n selector: '[gaModalClose]',\n})\nexport class GaModalCloseDirective {\n private readonly modalRef = inject(GaModalRef);\n\n readonly modalResult = input<any>({ alias: 'gaModalClose' });\n\n @HostListener('click')\n onClick(): void {\n this.modalRef.instance.close(this.modalResult);\n }\n}\n\nlet nextUniqueModalTitleId = 0;\n@Directive({\n selector: '[gaModalTitle]',\n host: { class: 'ga-modal__title' },\n})\nexport class GaModalTitleDirective implements AfterViewInit {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalTitle${nextUniqueModalTitleId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.labelledBy.set(this.id);\n }\n}\n\nlet nextUniqueModalDescriptionId = 0;\n@Directive({\n selector: '[gaModalDescription]',\n host: { class: 'ga-modal__description' },\n})\nexport class GaModalDescriptionDirective implements AfterViewInit {\n readonly renderer = inject(Renderer2);\n readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalDescription${nextUniqueModalDescriptionId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.describedBy.set(this.id);\n }\n}\n\nlet nextUniqueModalLabelId = 0;\n@Directive({\n selector: '[gaModalLabel]',\n host: { class: 'ga-modal__label' },\n})\nexport class GaModalLabelDirective {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalLabel${nextUniqueModalLabelId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { GaModalDescriptionDirective } from './modal.directives';\n\n@Component({\n selector: 'ga-modal-description',\n template: `<ng-content />`,\n hostDirectives: [GaModalDescriptionDirective],\n host: {\n class: 'ga-modal__description',\n },\n})\nexport class GaModalDescriptionComponent {}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-content',\n template: `<ng-content />`,\n hostDirectives: [CdkScrollable],\n host: {\n class: 'ga-modal__content',\n },\n})\nexport class GaModalContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-actions',\n template: ` <ng-content />`,\n host: {\n class: 'ga-modal__actions',\n },\n})\nexport class GaModalActionsComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_MODAL_I18N_FACTORY() {\n return new GaModalI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_MODAL_I18N_FACTORY,\n})\nexport abstract class GaModalI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaModalI18nDefault extends GaModalI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaModalI18n(value: GaModalI18n | (() => GaModalI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaModalI18n, useFactory: value }\n : { provide: GaModalI18n, useValue: value },\n ]);\n}\n","import { Component, inject } from '@angular/core';\nimport { GaButtonModule } from '../button';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalI18n } from './modal-i18n.service';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaIconModule } from '../icon';\n\n@Component({\n selector: 'ga-modal-header',\n imports: [GaButtonModule, GaIconModule],\n template: `\n @if (modalRef.instance.options.type !== 'none') {\n <div class=\"ga-modal__icon\">\n @switch (modalRef.instance.options.type) {\n @case ('info') {\n <ga-icon [icon]=\"icons.Info\" size=\"48\" />\n }\n @case ('warning') {\n <ga-icon [icon]=\"icons.TriangleAlert\" size=\"48\" />\n }\n @case ('danger') {\n <ga-icon [icon]=\"icons.OctagonAlert\" size=\"48\" />\n }\n @case ('success') {\n <ga-icon [icon]=\"icons.CircleCheck\" size=\"48\" />\n }\n }\n </div>\n }\n <div class=\"ga-modal__heading\">\n <ng-content select=\"[gaModalLabel]\" />\n <ng-content select=\"[gaModalTitle]\" />\n <ng-content select=\"ga-modal-description\" />\n </div>\n <button\n type=\"button\"\n [gaIconButton]=\"icons.X\"\n gaIconButtonVariant=\"ghost\"\n class=\"ga-modal__close-icon\"\n (click)=\"modalRef.instance.close()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n `,\n host: {\n class: 'ga-modal__top-section',\n },\n})\nexport class GaModalHeaderComponent {\n protected readonly icons = {\n X,\n Info,\n CircleCheck,\n TriangleAlert,\n OctagonAlert,\n };\n\n protected readonly modalRef = inject(GaModalRef);\n protected readonly i18n = inject(GaModalI18n);\n}\n","import { NgModule } from '@angular/core';\nimport {\n GaModalCloseDirective,\n GaModalDescriptionDirective,\n GaModalLabelDirective,\n GaModalTitleDirective,\n} from './modal.directives';\nimport { GaModalDescriptionComponent } from './modal-description.component';\nimport { GaModalContentComponent } from './modal-content.component';\nimport { GaModalActionsComponent } from './modal-actions.component';\nimport { GaModalHeaderComponent } from './modal-header.component';\n\n@NgModule({\n imports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n exports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n})\nexport class GaModalModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and ngControl.\n */\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaRadioGroupComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'radiogroup',\n class: 'ga-radio-group',\n },\n})\nexport class GaRadioGroupComponent implements ControlValueAccessor {\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n readonly name = input<string>(`ga-radio-group-${nextUniqueId++}`);\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n readonly value = input<string | null>(null);\n /** Whether the radio group is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly valueModel = linkedSignal(() => this.value());\n readonly disabledModel = linkedSignal(() => this.disabled());\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n writeValue(value: any) {\n this.valueModel.set(value);\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledModel.set(isDisabled);\n }\n\n onValueChange(value: string | null) {\n if (this.valueModel() === value) {\n return;\n }\n this.valueModel.set(value);\n this.change.emit(value);\n if (this._onModelChanged) {\n this._onModelChanged(value);\n }\n }\n\n onBlur() {\n if (this._onTouched) {\n this._onTouched();\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaRadioGroupComponent } from './radio-group.component';\nimport { injectNgControlState } from '../utils/error-state';\n\n// Increasing integer for generating unique ids for radio button components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-button',\n templateUrl: './radio-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ga-radio-button',\n '[class.ga-radio-button--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaRadioButtonComponent {\n private readonly radioGroup = inject(GaRadioGroupComponent, {\n optional: true,\n });\n\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n private readonly implicitNgControlState = injectNgControlState();\n\n private _uniqueId = `ga-radio-button-${++nextUniqueId}`;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly inputId = input<string | null>(null, { alias: 'id' });\n readonly inputName = input<string | null>(null, { alias: 'name' });\n readonly inputChecked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inputDisabled = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly id = computed(() => this.inputId() ?? this._uniqueId);\n readonly name = computed(\n () => this.radioGroup?.name() ?? this.inputName() ?? this._uniqueId,\n );\n readonly disabled = computed(\n () => this.radioGroup?.disabledModel() || this.inputDisabled(),\n );\n\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n protected readonly checked = computed(\n () => this.radioGroup?.valueModel() === this.value() || this.inputChecked(),\n );\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.change.emit(this.value());\n this.radioGroup?.onValueChange(this.value());\n }\n\n onBlur() {\n this.radioGroup?.onBlur();\n }\n}\n","<input\n type=\"radio\"\n class=\"ga-radio-button__native\"\n [attr.id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n<div class=\"ga-radio-button__marker\"></div>\n<label class=\"ga-radio-button__label\" [attr.for]=\"id()\"\n ><ng-content></ng-content\n></label>\n","import { NgModule } from '@angular/core';\nimport { GaRadioButtonComponent } from './radio-button.component';\nimport { GaRadioGroupComponent } from './radio-group.component';\n\n@NgModule({\n imports: [GaRadioButtonComponent, GaRadioGroupComponent],\n exports: [GaRadioButtonComponent, GaRadioGroupComponent],\n})\nexport class GaRadioModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(click)': 'onClick()',\n '[attr.hidden]': `hidden() ? '' : null`,\n },\n})\nexport class GaOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly hidden = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (this.value() !== this.cdkOption && this.cdkOption.value === undefined) {\n this.cdkOption.value = this.value();\n }\n\n effect(() => {\n this.cdkOption.disabled = this.disabled() || this.hidden();\n });\n }\n\n onClick() {\n if (!this.cdkOption.disabled) {\n this.selectComponent.autoClose();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-select-value',\n template: `<ng-content />`,\n})\nexport class GaSelectValueComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { GaOptionComponent } from './option.component';\n\n@Component({\n selector: 'ga-select-default-value',\n templateUrl: './select-default-value.component.html',\n imports: [GaIconModule],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaSelectDefaultValueComponent {\n protected readonly selectComponent = inject(GaSelectComponent);\n\n protected readonly icons = { X };\n\n protected readonly singleViewValue = computed(() => {\n const options = this.selectComponent.selectedOptions();\n if (!options.length) {\n return '';\n }\n return options[0].cdkOption.getLabel();\n });\n\n protected deselectOption(option: GaOptionComponent): void {\n this.selectComponent.deselectValue(option.cdkOption.value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (option of selectComponent.selectedOptions(); track option) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{ option.cdkOption.getLabel() }}</span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"deselectOption(option); $event.stopPropagation()\"\n />\n }\n </div>\n }\n} @else {\n {{ singleViewValue() }}\n}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_SELECT_I18N_FACTORY() {\n return new GaSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaSelectI18n {\n abstract clearLabel: string;\n abstract defaultSearchInputLabel: string;\n}\n\n@Injectable()\nexport class GaSelectI18nDefault extends GaSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A default label for the search input */\n defaultSearchInputLabel = 'Search';\n}\n\nexport function provideGaSelectI18n(\n value: GaSelectI18n | (() => GaSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaSelectI18n, useFactory: value }\n : { provide: GaSelectI18n, useValue: value },\n ]);\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [GaSpinnerComponent],\n exports: [GaSpinnerComponent],\n})\nexport class GaSpinnerModule {}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-select-dropdown',\n templateUrl: './select-dropdown.component.html',\n imports: [GaSelectDropdownSpinnerComponent],\n hostDirectives: [CdkListbox],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n","import {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaOptionComponent } from './option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaSelectValueComponent } from './select-value.component';\nimport { GaSelectDefaultValueComponent } from './select-default-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaSelectI18n } from './select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-select',\n templateUrl: './select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaSelectDefaultValueComponent,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox().id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox().id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaSelectComponent\n implements ControlValueAccessor, AfterContentInit\n{\n private readonly _uniqueId = `ga-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly searchInputLabel = input<string | null>(null);\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly compareWith = input<(o1: any, o2: any) => boolean>();\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly textValue = model<string>('');\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n\n readonly opened = output();\n readonly closed = output();\n\n // TODO: if we rename this to options, it breaks, why?\n readonly gaOptions = contentChildren(GaOptionComponent, {\n descendants: true,\n read: GaOptionComponent,\n });\n protected readonly cdkListbox = contentChild.required(CdkListbox);\n protected readonly gaDropdown = contentChild.required(\n GaSelectDropdownComponent,\n );\n protected readonly customSelectValue = contentChild(GaSelectValueComponent);\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly content = viewChild('ngContent', { read: ElementRef });\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n protected readonly visibleOptions = computed(() => {\n return this.gaOptions().filter((option) => !option.hidden());\n });\n readonly selectedOptions = computed(() => {\n return this.gaOptions().filter((option) => option.selected());\n });\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n readonly hasValue = computed(() => {\n if (!this.customSelectValue()) {\n // When no custom value component exists, we determine if there's a value\n // by checking selected options (which provide the display labels).\n return this.gaOptions().some((option) => option.selected());\n }\n // With a custom value component, we can check the value directly\n // which is useful for asynchronous selects, e.g. to display selected value without options\n return this.value() !== null || this.canSelectNullable();\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n const options = this.visibleOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.textValue()) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n }\n\n ngAfterContentInit() {\n effect(\n () => {\n this.cdkListbox().multiple = this.multiple();\n this.cdkListbox().useActiveDescendant = this.searchable();\n this.cdkListbox().compareWith = this.compareWith();\n this.cdkListbox().value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n },\n { injector: this.injector },\n );\n\n // track value changes (pull)\n this.cdkListbox().valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n // this is needed because value could be also changed via keyboard\n this.autoClose();\n });\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox().focus();\n }\n\n setPreviousItemActive() {\n this.setItemActive(-1);\n }\n\n setNextItemActive() {\n this.setItemActive(1);\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox().toggle(cdkOption);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable() || !this.searchable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n this.setNextItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'ArrowUp':\n this.setPreviousItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Space':\n event.stopPropagation();\n break;\n case 'Enter':\n this.setActiveItemAsSelected();\n this.autoClose();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.textValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.scrollActiveOptionIntoView();\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.textValue.set('');\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n this.cdkListbox().deselectValue(value);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n\n private syncValue() {\n let { value } = this.cdkListbox();\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private setItemActive(direction: 1 | -1) {\n const options = this.gaOptions();\n const currentIndex = options.findIndex(({ cdkOption }) =>\n cdkOption.isActive(),\n );\n\n const findNextEnabled = (startIndex: number) => {\n let index = startIndex;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of options) {\n // calculate next index with wrapping (using modulo)\n index = (index + direction + options.length) % options.length;\n if (!options[index].cdkOption.disabled) {\n return index;\n }\n }\n return -1; // no enabled options found\n };\n\n const nextIndex = findNextEnabled(currentIndex);\n if (nextIndex !== -1) {\n this.cdkListbox()._setActiveOption(options[nextIndex].cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n // NOTE: since cdkListbox is not destroyed on close,\n // we need to reset the active option every time the overlay is opened\n const firstEnabledOption = this.visibleOptions().find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = this.visibleOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstEnabledOption) {\n this.cdkListbox()._setActiveOption(firstEnabledOption.cdkOption);\n }\n\n afterNextRender(\n {\n mixedReadWrite: () => {\n // NOTE: since dropdown is not destroyed on close,\n // we need to reset scroll position every time the overlay is opened\n // to ensure consistent scroll position when reopening\n this.gaDropdown().resetScroll();\n\n const activeOption = this.visibleOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n },\n },\n { injector: this.injector },\n );\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!textValue() || multiple())) {\n @if (customSelectValue()) {\n <div class=\"ga-select__value\">\n <ng-content select=\"ga-select-value\" />\n </div>\n } @else {\n <ga-select-default-value />\n }\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"textValue()\"\n (input)=\"open(); textValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox().id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"searchInputLabel() ?? i18n.defaultSearchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-optgroup',\n template: `\n @if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaOptgroupComponent {\n readonly label = input<string>();\n}\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-select required validation\n */\nexport const GA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-select[required][formControlName], ga-select[required][formControl], ga-select[required][ngModel]`,\n providers: [GA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaSelectComponent } from './select.component';\nimport { GaOptionComponent } from './option.component';\nimport { GaOptgroupComponent } from './opt-group.component';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\nimport { GaSelectRequiredValidator } from './select-required.validator';\nimport { GaSelectValueComponent } from './select-value.component';\n\n@NgModule({\n imports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n exports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n})\nexport class GaSelectModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-data-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './data-option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(keydown.enter)': 'autoClose($event);',\n '(keydown.space)': 'autoClose($event);',\n '(click)': 'autoClose();',\n },\n})\nexport class GaDataOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaDataSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (\n this.value() !== this.cdkOption.value &&\n this.cdkOption.value === undefined\n ) {\n this.cdkOption.value = this.value();\n }\n\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n }\n\n autoClose(event?: Event) {\n if (this.cdkOption.isSelected()) {\n // if already selected, auto close\n this.selectComponent.autoClose();\n event?.preventDefault();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_DATA_SELECT_I18N_FACTORY() {\n return new GaDataSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaDataSelectI18n {\n abstract clearLabel: string;\n abstract searchInputLabel: string;\n abstract noOptionsLabel: string;\n abstract displayLimitReachedLabel: (counter: number) => string;\n}\n\n@Injectable()\nexport class GaDataSelectI18nDefault extends GaDataSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A label for the search input */\n searchInputLabel = 'Search';\n\n /** A label shown when there are no options to display */\n noOptionsLabel = 'No options';\n\n /** A label shown when the display limit is reached in multi-select mode */\n displayLimitReachedLabel = (counter: number) => `+${counter} more`;\n}\n\nexport function provideGaDataSelectI18n(\n value: GaDataSelectI18n | (() => GaDataSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaDataSelectI18n, useFactory: value }\n : { provide: GaDataSelectI18n, useValue: value },\n ]);\n}\n","import { Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\n\n@Component({\n selector: 'ga-data-select-value',\n templateUrl: './data-select-value.component.html',\n imports: [GaIconModule, NgTemplateOutlet],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaDataSelectValueComponent {\n protected readonly selectComponent = inject(GaDataSelectComponent);\n protected readonly i18n = inject(GaDataSelectI18n);\n\n protected readonly icons = { X };\n\n readonly customValueTemplate = input<TemplateRef<any>>();\n\n protected readonly customValueTemplateContext = (item: any) => {\n if (!item) {\n return { $implicit: '', value: null, item: null };\n }\n return {\n $implicit: this.selectComponent.getItemLabel(item),\n value: this.selectComponent.getItemValue(item),\n item,\n };\n };\n\n protected readonly singleViewValue = computed(() => {\n if (!this.selectComponent.hasValue()) {\n return '';\n }\n const selectValue = this.selectComponent.value();\n if (!this.selectComponent.bindValue()) {\n return this.selectComponent.getItemLabel(selectValue);\n }\n const item = this.selectComponent\n .items()\n .find((item) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n selectValue,\n ),\n );\n return this.selectComponent.getItemLabel(item);\n });\n\n protected readonly selectedItems = computed(() => {\n const value = this.selectComponent.value();\n if (!this.selectComponent.hasValue() || !Array.isArray(value)) {\n return [];\n }\n if (!this.selectComponent.bindValue()) {\n return value;\n }\n return this.selectComponent\n .items()\n .filter((item) =>\n value.some((v) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n v,\n ),\n ),\n );\n });\n\n protected readonly visibleSelectedItems = computed(() => {\n const items = this.selectedItems();\n const limit = this.selectComponent.valueDisplayLimit();\n if (limit === null || limit >= items.length) {\n return items;\n }\n return items.slice(0, limit);\n });\n\n protected readonly hiddenItemsCount = computed(() => {\n return this.selectedItems().length - this.visibleSelectedItems().length;\n });\n\n protected deselectOption(value: any): void {\n this.selectComponent.deselectValue(value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (\n selectedItem of visibleSelectedItems();\n track selectComponent.getItemValue(selectedItem)\n ) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customValueTemplateContext(selectedItem)\"\n />\n } @else {\n {{ selectComponent.getItemLabel(selectedItem) }}\n }\n </span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"\n deselectOption(selectComponent.getItemValue(selectedItem));\n $event.stopPropagation()\n \"\n />\n }\n </div>\n }\n @if (hiddenItemsCount() > 0) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{\n i18n.displayLimitReachedLabel(hiddenItemsCount())\n }}</span>\n </div>\n }\n} @else {\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"\n customValueTemplateContext(selectComponent.selectedItem())\n \"\n />\n } @else {\n {{ singleViewValue() }}\n }\n}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-data-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaDataSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaDataSelectDropdownSpinnerComponent } from './data-select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-data-select-dropdown',\n templateUrl: './data-select-dropdown.component.html',\n imports: [GaDataSelectDropdownSpinnerComponent],\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxUseActiveDescendant: useActiveDescendant',\n 'cdkListboxNavigationWrapDisabled: navigationWrapDisabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaDataSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","<ng-content />\n\n@if (loading()) {\n <ga-data-select-dropdown-spinner />\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ga-data-optgroup',\n imports: [NgTemplateOutlet],\n template: `\n @if (customLabelTemplate(); as templateRef) {\n <div class=\"ga-dropdown__caption\">\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customLabelContext()\"\n />\n </div>\n } @else if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaDataOptgroupComponent {\n readonly label = input<string>();\n readonly customLabelTemplate = input<TemplateRef<any>>();\n readonly customLabelContext = input<any>();\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectValueTpl]',\n})\nexport class GaDataSelectValueDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptionTpl]',\n})\nexport class GaDataSelectOptionLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptgroupLabelTpl]',\n})\nexport class GaDataSelectOptgroupLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import {\n Component,\n ElementRef,\n OnDestroy,\n input,\n output,\n inject,\n booleanAttribute,\n computed,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-intersection-trigger',\n template: ``,\n styles: `\n :host {\n height: 0px;\n display: block;\n flex-shrink: 0;\n }\n `,\n})\nexport class GaIntersectionTriggerComponent implements OnDestroy {\n private observer?: IntersectionObserver;\n\n private readonly anchor = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly rootElement = input<ElementRef<HTMLElement>>();\n readonly rootMargin = input<string>('0px');\n readonly parentAsRoot = input(false, { transform: booleanAttribute });\n readonly trigger = output();\n\n protected root = computed(() => {\n return this.parentAsRoot()\n ? this.anchor.nativeElement.parentElement\n : this.rootElement()?.nativeElement;\n });\n\n constructor() {\n afterNextRender(() => {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.trigger.emit();\n }\n },\n {\n root: this.root(),\n rootMargin: this.rootMargin(),\n threshold: 0,\n },\n );\n this.observer.observe(this.anchor.nativeElement);\n });\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n numberAttribute,\n OnInit,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaDataOptionComponent } from './data-option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaDataSelectValueComponent } from './data-select-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaDataSelectDropdownComponent } from './data-select-dropdown.component';\nimport { GaDataOptgroupComponent } from './data-optgroup.component';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\nimport { IGaSelectOption } from './data-select-option.interface';\nimport { GaIntersectionTriggerComponent } from '../utils/intersection-trigger.directive';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-data-select',\n templateUrl: './data-select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaDataSelectValueComponent,\n GaDataSelectDropdownComponent,\n GaDataOptionComponent,\n GaDataOptgroupComponent,\n GaIntersectionTriggerComponent,\n NgTemplateOutlet,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDataSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox()?.id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox()?.id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaDataSelectComponent implements OnInit, ControlValueAccessor {\n private readonly _uniqueId = `ga-data-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaDataSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly searchValue = signal<string | null>(null);\n\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly customFilter = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly noOptionsLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n readonly items = input<IGaSelectOption[]>([]);\n readonly bindValue = input<string>();\n readonly bindLabel = input<string>();\n readonly groupBy = input<string | ((item: IGaSelectOption) => string)>();\n readonly loading = input(false, { transform: booleanAttribute });\n readonly withOptionInput = input(null, { transform: booleanAttribute });\n readonly valueDisplayLimit = input(null, { transform: numberAttribute });\n\n readonly searchValueChange = output<string | null>();\n readonly opened = output();\n readonly closed = output();\n readonly optionsEndReached = output();\n\n protected readonly dropdownElRef = viewChild<\n unknown,\n ElementRef<HTMLElement>\n >('selectDropdown', {\n read: ElementRef,\n });\n protected readonly gaOptions = viewChildren(GaDataOptionComponent);\n protected readonly cdkListbox = viewChild(CdkListbox);\n protected readonly gaDropdown = viewChild(GaDataSelectDropdownComponent);\n protected readonly customValueTemplate = contentChild(\n GaDataSelectValueDirective,\n );\n protected readonly customOptionLabelTemplate = contentChild(\n GaDataSelectOptionLabelDirective,\n );\n protected readonly customOptgroupLabelTemplate = contentChild(\n GaDataSelectOptgroupLabelDirective,\n );\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n readonly selectedItem = computed(() => {\n if (!this.bindValue()) {\n return this.value();\n }\n return this.items().find((item) =>\n this.compareFn()(this.getItemValue(item), this.value()),\n );\n });\n\n // Selected items for multi-select\n protected readonly selectedItems = computed(() => {\n const value = this.value();\n if (!this.hasValue() || !Array.isArray(value)) {\n return [];\n }\n return this.items().filter((item) =>\n value.some((v) => this.compareFn()(this.getItemValue(item), v)),\n );\n });\n\n // Template context factory for option labels\n protected getOptionLabelTemplateContext(item: IGaSelectOption) {\n return {\n $implicit: this.getItemLabel(item),\n value: this.getItemValue(item),\n item: item,\n };\n }\n\n // Template context factory for optgroup labels\n protected getOptgroupLabelTemplateContext(group: {\n label: string;\n items: IGaSelectOption[];\n }) {\n return {\n $implicit: group.label,\n label: group.label,\n items: group.items,\n };\n }\n\n protected readonly filteredItems = computed(() => {\n const searchText = this.searchValue()?.toLowerCase() ?? '';\n if (!searchText || !this.searchable() || this.customFilter()) {\n return this.items();\n }\n\n return this.items().filter((item) => {\n const label = this.getItemLabel(item);\n return label.toLowerCase().includes(searchText);\n });\n });\n\n // Returns selected values not in filtered items, ensuring cdkListbox maintains state during filtering\n protected readonly virtualItems = computed(() => {\n const value = this.value();\n if (this.bindValue() || !Array.isArray(value)) {\n return [];\n }\n\n return value.filter((val: any) => {\n return !this.filteredItems().some((item) =>\n this.compareFn()(this.getItemValue(item), val),\n );\n });\n });\n\n protected readonly groupedItems = computed(() => {\n const items = this.filteredItems();\n const groupByKey = this.groupBy();\n\n if (!groupByKey) {\n return [{ label: null, items }];\n }\n\n const groups = new Map<string, IGaSelectOption[]>();\n items.forEach((item) => {\n const groupLabel =\n typeof groupByKey === 'function'\n ? groupByKey(item)\n : this.getNestedValue(item, groupByKey);\n if (!groups.has(groupLabel)) {\n groups.set(groupLabel, []);\n }\n groups.get(groupLabel)!.push(item);\n });\n\n return Array.from(groups.entries()).map(([label, items]) => ({\n label,\n items,\n }));\n });\n\n protected readonly hasNoOptions = computed(() => {\n return this.filteredItems().length === 0;\n });\n\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n\n readonly hasValue = computed(() => {\n const value = this.value();\n if (!this.multiple() && (value === null || value === undefined)) {\n return this.canSelectNullable();\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n readonly listboxCompareWith = computed(() => {\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n // for some reason cdkListbox compareWith is sometimes called with null/undefined values\n // in that case, use strict equality to avoid null reference issues\n return o1 === o2;\n }\n return this.compareFn()(o1, o2);\n };\n });\n\n // Helper method to get the label for an item\n getItemLabel(item: IGaSelectOption): string {\n const bindLabel = this.bindLabel();\n if (!bindLabel) {\n return String(item);\n }\n return String(this.getNestedValue(item, bindLabel));\n }\n\n // Helper method to get the value for an item\n getItemValue(item: IGaSelectOption): any {\n const bindValue = this.bindValue();\n if (!bindValue) {\n return item;\n }\n if (this.searchable()) {\n return item;\n }\n return this.getNestedValue(item, bindValue);\n }\n\n // Helper method to check if an item is disabled\n getItemDisabled(item: IGaSelectOption): boolean {\n return item?.$disabled === true;\n }\n\n // Helper method to get the typeahead label for an item\n getItemTypeaheadLabel(item: IGaSelectOption): string | null {\n return item?.$typeaheadLabel;\n }\n\n // Helper method to get nested property value\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, prop) => current?.[prop], obj);\n }\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n if (isDevMode()) {\n effect(() => {\n if (this.bindValue() && this.searchable()) {\n console.warn(\n 'GaDataSelectComponent: `bindValue` is ignored with `searchable` mode, value and item must be of the same type. See docs for more details.',\n );\n }\n });\n }\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n // emit search value changes\n this.searchValueChange.emit(this.searchValue());\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n\n effect(() => {\n // sync cdkListbox inputs & value (push)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n cdkListbox.value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n }\n });\n\n effect(() => {\n // when options change, ensure there is an active option selected and correct overlay position\n const options = this.gaOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.searchValue()) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()?._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // sync cdkListbox value changes (pull)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n untracked(() => {\n cdkListbox.valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n });\n });\n }\n });\n }\n\n ngOnInit() {\n // initialize proper default value for multiple select\n if (this.multiple() && this.value() === null) {\n this.value.set([]);\n }\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox()!.focus();\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox()!.toggle(cdkOption);\n this.syncValue();\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter': {\n // redirect the event to the cdkListbox\n event.preventDefault();\n event.stopPropagation();\n const eventClone = new KeyboardEvent(event.type, event);\n this.dropdownElRef()?.nativeElement.dispatchEvent(eventClone);\n if (event.code === 'Enter' && this.isOpen()) {\n // if the value wasn't changed via cdkListbox valueChange, close the dropdown manually\n this.autoClose();\n }\n break;\n }\n case 'Space':\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.searchValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.searchValue.set('');\n afterNextRender(\n {\n mixedReadWrite: () => {\n if (!this.multiple()) {\n this.markSelectedOptionAsActive();\n }\n this.scrollActiveOptionIntoView();\n },\n },\n { injector: this.injector },\n );\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.searchValue.set(null);\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n const comboboxValue = this.value();\n if (Array.isArray(comboboxValue)) {\n this.value.update((v) =>\n v.filter((item: any) => !this.compareFn()(item, value)),\n );\n } else {\n this.value.set(null);\n }\n this._onModelChanged?.(this.value());\n }\n\n protected endReached() {\n const dropdownEl = this.dropdownElRef()?.nativeElement;\n if (!dropdownEl) {\n return;\n }\n if (dropdownEl.scrollHeight > dropdownEl.clientHeight) {\n this.optionsEndReached.emit();\n }\n }\n\n private syncValue() {\n let { value } = this.cdkListbox()!;\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private markSelectedOptionAsActive() {\n const selectedOption = this.gaOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n const activeOption = this.gaOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!searchValue() || multiple())) {\n <ga-data-select-value\n [customValueTemplate]=\"customValueTemplate()?.templateRef\"\n />\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"searchValue() ?? ''\"\n (input)=\"open(); searchValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox()?.id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"i18n.searchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ga-data-select-dropdown\n [multiple]=\"multiple()\"\n [useActiveDescendant]=\"searchable()\"\n [navigationWrapDisabled]=\"loading()\"\n [compareWith]=\"listboxCompareWith()\"\n [loading]=\"loading()\"\n #selectDropdown\n >\n @if (hasNoOptions() && !loading()) {\n <div class=\"ga-dropdown__caption\">\n {{ noOptionsLabel() ?? i18n.noOptionsLabel }}\n </div>\n }\n\n @for (group of groupedItems(); track group.label) {\n @if (group.label) {\n <ga-data-optgroup\n [label]=\"group.label\"\n [customLabelTemplate]=\"customOptgroupLabelTemplate()?.templateRef\"\n [customLabelContext]=\"getOptgroupLabelTemplateContext(group)\"\n >\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"\n getOptionLabelTemplateContext(item)\n \"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n </ga-data-optgroup>\n } @else {\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n }\n }\n\n <!--\n Virtual items: Render hidden disabled options for all selected values.\n This ensures cdkListbox maintains state when filtering occurs - even when\n selected values don't match the currently visible filtered options, they\n remain valid options in the listbox, preventing state loss.\n -->\n @for (item of virtualItems(); track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n disabled\n hidden\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n\n <ga-intersection-trigger\n parentAsRoot\n rootMargin=\"0% 0% 20px 0%\"\n (trigger)=\"endReached()\"\n />\n </ga-data-select-dropdown>\n</ng-template>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-data-select required validation\n */\nexport const GA_DATA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDataSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-data-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-data-select[required][formControlName], ga-data-select[required][formControl], ga-data-select[required][ngModel]`,\n providers: [GA_DATA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaDataSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaDataSelectRequiredValidator } from './data-select-required.validator';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\n\n@NgModule({\n imports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n exports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n})\nexport class GaDataSelectModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSwitchComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for switch components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-switch',\n templateUrl: './switch.component.html',\n imports: [GaIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-switch',\n '[class.ga-switch--checked]': 'checkedModel()',\n '[class.ga-switch--disabled]': 'disabledModel()',\n '[class.ga-switch--invalid]': 'invalidComputed()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.aria-invalid]': 'null',\n },\n})\nexport class GaSwitchComponent implements ControlValueAccessor {\n protected readonly icons = { Check };\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n readonly _uniqueId = `ga-switch-${++nextUniqueId}`;\n\n /** @ignore */\n readonly tabindex = input<string | number>(0, {\n alias: 'tabindex',\n });\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n readonly checked = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input(false, {\n transform: booleanAttribute,\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly label = input<string>('');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n\n readonly disabledModel = linkedSignal(() => this.disabled());\n readonly checkedModel = linkedSignal(() => this.checked());\n\n readonly checkedChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => this.id() ?? this._uniqueId);\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalidComputed = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const newValue = target.checked;\n\n this.checkedModel.set(newValue);\n this._onModelChanged?.(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any) {\n const newValue = !!value;\n this.checkedModel.set(newValue);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabledModel.set(disabled);\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"ga-switch__input\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checkedModel()\"\n [disabled]=\"disabledModel()\"\n [attr.tabindex]=\"tabindex()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n [attr.aria-invalid]=\"invalidComputed() ? 'true' : null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-switch__marker\">\n <ga-icon\n [icon]=\"icons.Check\"\n class=\"ga-switch__check-icon\"\n [size]=\"16\"\n aria-hidden=\"true\"\n />\n <span class=\"ga-switch__slider\"></span>\n</div>\n@if (label()) {\n <label [attr.for]=\"inputId()\" class=\"ga-switch__label\">{{ label() }}</label>\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [GaSwitchComponent],\n exports: [GaSwitchComponent],\n})\nexport class GaSwitchModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\n\nexport type GaLinkVariant = 'inline';\nexport type GaLinkSize = 'small' | 'medium' | 'large';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[gaLink], button[gaLink]',\n template: `\n @if (leadingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"leadingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n <ng-content />\n @if (trailingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"trailingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n `,\n host: {\n class: 'ga-link',\n '[class.ga-link--inline]': `variant() === 'inline'`,\n '[class.ga-link--small]': `size() === 'small'`,\n '[class.ga-link--large]': `size() === 'large'`,\n '[class.ga-link--disabled]': `disabled()`,\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': `elementRef.nativeElement.tagName.toLowerCase() === 'button' ? 'link' : null`,\n '(click)': 'onClick($event)',\n },\n imports: [GaIconModule],\n})\nexport class GaLinkDirective {\n readonly variant = input<GaLinkVariant | ''>('', { alias: 'gaLink' });\n readonly size = input<GaLinkSize>('medium', { alias: 'gaLinkSize' });\n readonly disabled = input(false, {\n alias: 'gaLinkDisabled',\n transform: booleanAttribute,\n });\n readonly leadingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkLeadingIcon',\n });\n readonly trailingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkTrailingIcon',\n });\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly iconSize = computed(() =>\n this.size() === 'large' ? 24 : 16,\n );\n\n protected onClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaLinkDirective } from './link.directive';\n\n@NgModule({\n imports: [GaLinkDirective],\n exports: [GaLinkDirective],\n})\nexport class GaLinkModule {}\n","import {\n Attribute,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[gaTextArea]',\n host: {\n class: 'ga-text-area',\n '[class.ga-text-area--invalid]': 'invalid()',\n '[attr.id]': 'id()',\n '[attr.disabled]': 'disabled() ? true : null',\n },\n})\nexport class GaTextAreaDirective {\n private readonly implicitNgControlState = injectNgControlState();\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = `ga-text-area-${++nextUniqueId}`;\n\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(undefined, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n\n private readonly disabled = computed(\n () => this.disabledInput() ?? this.implicitNgControlState.disabled(),\n );\n protected readonly invalid = computed(\n () => this.invalidInput() ?? this.implicitNgControlState.inError(),\n );\n protected readonly id = computed(() => this.idInput() ?? this.uniqueId);\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTextAreaDirective } from './text-area.directive';\n\n@NgModule({\n imports: [GaTextAreaDirective],\n exports: [GaTextAreaDirective],\n})\nexport class GaTextAreaModule {}\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type GaChipVariant = 'default' | 'transparent';\n\n@Component({\n selector: 'ga-chip-listbox',\n templateUrl: './chip-listbox.component.html',\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxValue: value',\n 'cdkListboxDisabled: disabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-chip-listbox',\n },\n})\nexport class GaChipListboxComponent<ValueT = any | readonly any[]> {\n protected readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly variant = input<GaChipVariant>('default');\n readonly valueChange = output<ValueT>();\n\n readonly disabled = computed(() => this.cdkListbox.disabled);\n\n constructor() {\n effect(() => {\n this.cdkListbox.orientation = this.orientation();\n });\n\n this.cdkListbox.valueChange\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n const value = !this.cdkListbox.multiple ? event.value[0] : event.value;\n this.valueChange.emit(value);\n });\n }\n\n focus() {\n this.cdkListbox.focus();\n }\n}\n","<ng-content />\n","import { CdkListboxModule, CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@Component({\n selector: 'ga-chip',\n templateUrl: './chip.component.html',\n imports: [CdkListboxModule],\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: ['cdkOption: value', 'cdkOptionDisabled: disabled'],\n },\n ],\n host: {\n class: 'ga-quick-filter-button',\n '[class.ga-quick-filter-button--transparent]':\n \"listbox.variant() === 'transparent'\",\n '[class.ga-quick-filter-button--disabled]':\n 'disabled() || listbox.disabled()',\n '[class.ga-quick-filter-button--selected]': 'selected()',\n },\n})\nexport class GaChipComponent {\n private readonly cdkOption = inject(CdkOption, { self: true });\n protected readonly listbox = inject(GaChipListboxComponent);\n\n protected readonly _isSelected = signal<boolean | null>(null);\n readonly selected = this._isSelected.asReadonly();\n\n readonly value = input.required<any>();\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n },\n });\n }\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { GaChipComponent } from './chip.component';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@NgModule({\n imports: [GaChipComponent, GaChipListboxComponent],\n exports: [GaChipComponent, GaChipListboxComponent],\n})\nexport class GaChipModule {}\n","/*\n * Public API Surface of ngx-gaia\n */\n\nexport * from './lib/alert/index';\nexport * from './lib/badge/index';\nexport * from './lib/button/index';\nexport * from './lib/card/index';\nexport * from './lib/checkbox/index';\nexport * from './lib/datepicker/index';\nexport * from './lib/segmented-control/index';\nexport * from './lib/icon/index';\nexport * from './lib/input/index';\nexport * from './lib/form-field/index';\nexport * from './lib/menu/index';\nexport * from './lib/modal/index';\nexport * from './lib/tooltip/index';\nexport * from './lib/select/index';\nexport * from './lib/data-select/index';\nexport * from './lib/spinner/index';\nexport * from './lib/radio/index';\nexport * from './lib/switch/index';\nexport * from './lib/utils/index';\nexport * from './lib/link/index';\nexport * from './lib/text-area/index';\nexport * from './lib/chip/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextUniqueId","i2.GaIconButtonDirective","i1.GaIconComponent","i1","i2.GaButtonDirective","i3","i1.GaTooltipDirective","i2.GaIconComponent","i3.GaRadioButtonComponent","i1.GaSpinnerComponent","i2.GaLabelledByFormFieldDirective","i3.GaIconComponent"],"mappings":"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"}
1
+ {"version":3,"file":"vsn-ux-ngx-gaia.mjs","sources":["../../../projects/ngx-gaia/src/lib/utils/root-font-size.token.ts","../../../projects/ngx-gaia/src/lib/icon/icon.component.ts","../../../projects/ngx-gaia/src/lib/icon/icon.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-title.component.ts","../../../projects/ngx-gaia/src/lib/button/button-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.component.ts","../../../projects/ngx-gaia/src/lib/button/button.directive.ts","../../../projects/ngx-gaia/src/lib/button/icon-button.directive.ts","../../../projects/ngx-gaia/src/lib/button/button.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-i18n.service.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.html","../../../projects/ngx-gaia/src/lib/alert/alert-title-actions.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.module.ts","../../../projects/ngx-gaia/src/lib/badge/badge.component.ts","../../../projects/ngx-gaia/src/lib/badge/badge.module.ts","../../../projects/ngx-gaia/src/lib/card/card.component.ts","../../../projects/ngx-gaia/src/lib/card/card.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-control-errors.directive.ts","../../../projects/ngx-gaia/src/lib/utils/error-state.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.html","../../../projects/ngx-gaia/src/lib/checkbox/checkbox-required.validator.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.module.ts","../../../projects/ngx-gaia/src/lib/utils/class-checker.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-i18n.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-struct-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-field-connector.ts","../../../projects/ngx-gaia/src/lib/input/input.directive.ts","../../../projects/ngx-gaia/src/lib/input/input.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.html","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-parser-formatter.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-input.directive.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.module.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-iso-adapter.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-button.directive.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-icon-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-text-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.module.ts","../../../projects/ngx-gaia/src/lib/input/input.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-errors.provider.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.html","../../../projects/ngx-gaia/src/lib/form-field/field-info.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-error.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.di.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.module.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-control.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/labelled-by-form-field.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.module.ts","../../../projects/ngx-gaia/src/lib/menu/menu.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.html","../../../projects/ngx-gaia/src/lib/menu/menu-title.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/menu/menu-separator.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger-icon.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu.module.ts","../../../projects/ngx-gaia/src/lib/modal/modal-ref.ts","../../../projects/ngx-gaia/src/lib/modal/modal-data.token.ts","../../../projects/ngx-gaia/src/lib/modal/modal.options.ts","../../../projects/ngx-gaia/src/lib/modal/modal.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.directives.ts","../../../projects/ngx-gaia/src/lib/modal/modal-description.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-content.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-actions.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-i18n.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal-header.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.module.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.html","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.html","../../../projects/ngx-gaia/src/lib/radio/radio.module.ts","../../../projects/ngx-gaia/src/lib/select/option.component.ts","../../../projects/ngx-gaia/src/lib/select/option.component.html","../../../projects/ngx-gaia/src/lib/select/select-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.html","../../../projects/ngx-gaia/src/lib/select/select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.module.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/select/select.component.ts","../../../projects/ngx-gaia/src/lib/select/select.component.html","../../../projects/ngx-gaia/src/lib/select/opt-group.component.ts","../../../projects/ngx-gaia/src/lib/select/select-required.validator.ts","../../../projects/ngx-gaia/src/lib/select/select.module.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-optgroup.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-option-label.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-optgroup-label.directive.ts","../../../projects/ngx-gaia/src/lib/utils/intersection-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-required.validator.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.module.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.html","../../../projects/ngx-gaia/src/lib/switch/switch.module.ts","../../../projects/ngx-gaia/src/lib/link/link.directive.ts","../../../projects/ngx-gaia/src/lib/link/link.module.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.module.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.directive.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.module.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.module.ts","../../../projects/ngx-gaia/src/public-api.ts","../../../projects/ngx-gaia/src/vsn-ux-ngx-gaia.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Injection token that provides the base root font size in pixels.\n * This token is used for accurate rem calculations when the default\n * browser font size (16px) has been overridden by application styles.\n * Default value is 16px if not explicitly provided.\n */\nexport const GA_BASE_FONT_SIZE = new InjectionToken<number>(\n 'ga-base-font-size',\n { providedIn: 'root', factory: () => 16 },\n);\n\nexport function provideGaBaseFontSize(fontSize: number) {\n return makeEnvironmentProviders([\n { provide: GA_BASE_FONT_SIZE, useValue: fontSize },\n ]);\n}\n","import {\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { GA_BASE_FONT_SIZE } from '../utils/root-font-size.token';\n\nexport type GaIconData = LucideIconData;\n\nexport const GA_ICON_DEFAULT_SIZE = 24;\n\n@Component({\n selector: 'ga-icon',\n imports: [LucideAngularModule],\n template: `<lucide-icon\n [name]=\"icon()\"\n [color]=\"color()\"\n [strokeWidth]=\"strokeWidth()\"\n />`,\n host: {\n class: 'ga-icon',\n role: 'img',\n '[style]': \"{ '--ga-icon-size': sizeWithDimension() }\",\n },\n styles: `\n .ga-icon {\n display: inline-block;\n vertical-align: middle;\n user-select: none;\n width: fit-content;\n height: fit-content;\n\n lucide-icon > svg {\n width: var(--ga-icon-size);\n height: var(--ga-icon-size);\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GaIconComponent {\n private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly baseFontSize = inject(GA_BASE_FONT_SIZE);\n private readonly ariaHiddenAttr = inject(\n new HostAttributeToken('aria-hidden'),\n {\n optional: true,\n },\n );\n\n readonly icon = input.required<GaIconData | string>();\n readonly size = input<string | number>(GA_ICON_DEFAULT_SIZE);\n readonly color = input<string>();\n readonly strokeWidth = input(undefined, { transform: numberAttribute });\n\n readonly sizeWithDimension = computed(() => {\n const size = this.size();\n if (\n typeof size === 'number' ||\n (typeof size === 'string' && size.match(/^\\d+$/))\n ) {\n const sizeNumber = Number(size);\n return `${sizeNumber / this.baseFontSize}rem`;\n }\n return size;\n });\n\n constructor() {\n if (!this.ariaHiddenAttr) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaIconComponent } from './icon.component';\n\n@NgModule({\n imports: [GaIconComponent],\n exports: [GaIconComponent],\n})\nexport class GaIconModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title',\n },\n})\nexport class GaAlertTitleComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_BUTTON_I18N_FACTORY() {\n return new GaButtonI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_BUTTON_I18N_FACTORY,\n})\nexport abstract class GaButtonI18n {\n abstract loadingLabel: string;\n}\n\n@Injectable()\nexport class GaButtonI18nDefault extends GaButtonI18n {\n /** A label for the default loading state */\n loadingLabel = 'Loading...';\n}\n\nexport function provideGaButtonI18n(\n value: GaButtonI18n | (() => GaButtonI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaButtonI18n, useFactory: value }\n : { provide: GaButtonI18n, useValue: value },\n ]);\n}\n","import {\n Component,\n computed,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-spinner',\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-secondary)\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n ></circle>\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-primary-70)\"\n [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"arcCircumference() + ' ' + circumference()\"\n style=\"transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;\"\n ></circle>\n </svg>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-spinner',\n role: 'progressbar',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.mode]': \"'indeterminate'\",\n tabindex: '-1',\n },\n styles: `\n .ga-spinner {\n display: inline-block;\n }\n\n @keyframes ga-spinner__animation {\n 0% {\n transform: rotate(0deg);\n }\n 31.82% {\n /* 350ms / 1100ms */\n transform: rotate(90deg);\n }\n 63.64% {\n /* (350ms + 350ms) / 1100ms */\n transform: rotate(180deg);\n }\n 81.82% {\n /* (350ms + 350ms + 200ms) / 1100ms */\n transform: rotate(270deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `,\n})\nexport class GaSpinnerComponent {\n readonly size = input(32, { transform: numberAttribute });\n\n readonly strokeWidth = computed(() => this.size() / 5);\n readonly center = computed(() => this.size() / 2);\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n readonly arcCircumference = computed(() => this.circumference() * 0.25);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaButtonType = 'primary' | 'secondary' | 'ghost' | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaButton], a[gaButton]',\n imports: [GaSpinnerComponent],\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__loading-label\">{{ loadingLabel() }}</span>\n } @else {\n <ng-content />\n }\n `,\n styles: `\n .ga-button__loading-label {\n color: var(--ga-color-text-body);\n font-weight: 400;\n font-size: calc(\n var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)\n );\n line-height: calc(\n var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)\n );\n letter-spacing: 0;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-button',\n '[class.ga-button--secondary]': `!variant() || variant() === 'secondary'`,\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly variant = input.required<GaButtonType | ''>({\n alias: 'gaButton',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaIconData } from '../icon/icon.component';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaIconButtonVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaIconButton], a[gaIconButton]',\n imports: [GaIconModule, GaSpinnerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './icon-button.directive.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__icon-label\">{{ loadingLabel() }}</span>\n } @else {\n <ga-icon [icon]=\"icon()\" />\n <span class=\"ga-button__icon-label\"><ng-content /></span>\n }\n `,\n host: {\n class: 'ga-button ga-button--icon-only',\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--secondary]': `variant() === 'secondary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaIconButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly icon = input.required<GaIconData>({\n alias: 'gaIconButton',\n });\n\n readonly variant = input<GaIconButtonVariant>('secondary', {\n alias: 'gaIconButtonVariant',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaIconButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaIconButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaButtonDirective } from './button.directive';\nimport { GaIconButtonDirective } from './icon-button.directive';\n\n@NgModule({\n imports: [GaButtonDirective, GaIconButtonDirective],\n exports: [GaButtonDirective, GaIconButtonDirective],\n})\nexport class GaButtonModule {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_ALERT_I18N_FACTORY() {\n return new GaAlertI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_ALERT_I18N_FACTORY,\n})\nexport abstract class GaAlertI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaAlertI18nDefault extends GaAlertI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaAlertI18n(value: GaAlertI18n | (() => GaAlertI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaAlertI18n, useFactory: value }\n : { provide: GaAlertI18n, useValue: value },\n ]);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport { GaAlertI18n } from './alert-i18n.service';\n\nlet nextUniqueId = 0;\n\nexport type GaAlertVariant =\n | 'brand'\n | 'information'\n | 'error'\n | 'warning'\n | 'success';\n\n@Component({\n selector: 'ga-alert',\n templateUrl: './alert.component.html',\n imports: [GaIconModule, GaButtonModule],\n host: {\n role: 'alert',\n '[class]': `variantClass()`,\n },\n})\nexport class GaAlertComponent {\n protected readonly i18n = inject(GaAlertI18n);\n\n readonly dismissIcon: typeof X = X;\n\n readonly variant = input<GaAlertVariant>('brand');\n readonly explicitIcon = input<GaIconData>(undefined, { alias: 'icon' });\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly progress = input<number | 'indeterminate'>();\n readonly progressLabel = input<string>();\n readonly progressLabelledBy = input<string>();\n\n readonly dismiss = output();\n\n readonly icon = computed(() => {\n if (this.explicitIcon() !== undefined) {\n return this.explicitIcon();\n }\n switch (this.variant()) {\n case 'information':\n return Info;\n case 'error':\n return OctagonAlert;\n case 'warning':\n return TriangleAlert;\n case 'success':\n return CircleCheck;\n }\n return null;\n });\n\n readonly title = contentChild(GaAlertTitleComponent);\n\n readonly progressId = `ga-alert-progress-${++nextUniqueId}`;\n\n readonly variantClass = computed(() => {\n return `ga-notification ga-notification--${this.variant()}`;\n });\n\n readonly hasProgress = computed(() => {\n return this.progress() !== undefined;\n });\n\n readonly progressValue = computed(() => {\n const progressValue = this.progress();\n if (progressValue === undefined || progressValue === 'indeterminate') {\n return undefined;\n }\n return Math.max(0, Math.min(100, progressValue));\n });\n\n readonly progressBarWidth = computed(() => {\n const progressValue = this.progressValue();\n if (progressValue === undefined) {\n return undefined;\n }\n return `${progressValue}%`;\n });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title-actions',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title-actions',\n },\n})\nexport class GaAlertTitleActionsComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { GaAlertComponent } from './alert.component';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport { GaAlertTitleActionsComponent } from './alert-title-actions.component';\n\n@NgModule({\n imports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n exports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n})\nexport class GaAlertModule {}\n","import { Component, computed, input } from '@angular/core';\n\nexport type GaBadgeVariant =\n | 'default'\n | 'default-inverted'\n | 'information'\n | 'error'\n | 'warning'\n | 'success'\n | 'muted'\n | 'disabled';\n\nexport type GaBadgeType = 'text' | 'dot';\n\n@Component({\n selector: 'ga-badge',\n template: `<ng-content />`,\n host: {\n '[class]': `variantClass()`,\n },\n})\nexport class GaBadgeComponent {\n readonly variant = input<GaBadgeVariant>('default');\n readonly type = input<GaBadgeType>('text');\n\n readonly variantClass = computed(() => {\n return `ga-badge ga-badge--${this.type()} ga-badge--${this.variant()}`;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [GaBadgeComponent],\n exports: [GaBadgeComponent],\n})\nexport class GaBadgeModule {}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-card',\n template: `<ng-content />`,\n host: {\n class: 'ga-card',\n '[class.ga-card--selectable]': 'selectable()',\n '[class.ga-card--selected]': 'selected()',\n '[class.ga-card--disabled]': 'disabled()',\n },\n})\nexport class GaCardComponent {\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaCardComponent } from './card.component';\n\n@NgModule({\n imports: [GaCardComponent],\n exports: [GaCardComponent],\n})\nexport class GaCardModule {}\n","import { computed, Directive, input } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\n@Directive({\n selector: '[gaFormControlErrors]',\n})\nexport class GaFormControlErrorsDirective {\n readonly customErrorsInput = input.required<ValidationErrors>({\n alias: 'gaFormControlErrors',\n });\n\n readonly customErrors = computed(() => {\n // for better API ergonomics, we ignore errors with null and undefined values\n // this lets to bind custom errors directly without nasty if checks\n // e.g. [gaFormControlErrors]=\"{ required: isEmpty ? true : null, noMatch: form.getError('noMatch') }\"\n return Object.entries(this.customErrorsInput()).reduce<ValidationErrors>(\n (acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n );\n });\n}\n","import {\n DestroyRef,\n effect,\n inject,\n InjectionToken,\n Injector,\n isSignal,\n linkedSignal,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n} from '@angular/forms';\nimport { GaFormControlErrorsDirective } from '../form-field/form-control-errors.directive';\nimport { Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface GaFormControlAdapter {\n readonly ngControlErrors: Signal<ValidationErrors | null | undefined>;\n readonly ngControlTouched: Signal<boolean>;\n readonly ngControlDisabled: Signal<boolean>;\n readonly ngControlName: Signal<string | number | null>;\n readonly ngFormSubmitted: Signal<boolean>;\n}\n\nexport const GA_FORM_CONTROL_ADAPTER = new InjectionToken<GaFormControlAdapter>(\n 'ga-form-control-adapter',\n);\n\n/**\n * @internal - This function is for internal library use only\n */\nexport function injectNgControlState({\n implicitChildNgControl,\n explicitNgControl,\n explicitNgForm,\n}: {\n implicitChildNgControl?: Signal<NgControl | undefined | null>;\n explicitNgControl?: NgControl | Signal<NgControl | undefined | null> | null;\n explicitNgForm?: FormGroupDirective | NgForm;\n} = {}) {\n const gaFormControlAdapter = inject(GA_FORM_CONTROL_ADAPTER, {\n optional: true,\n });\n\n let ngControlErrors: WritableSignal<ValidationErrors | null | undefined>;\n let ngControlTouched: WritableSignal<boolean>;\n let ngControlDisabled: WritableSignal<boolean>;\n let ngControlName: WritableSignal<string | number | null>;\n let ngFormSubmitted: WritableSignal<boolean>;\n\n if (gaFormControlAdapter) {\n ngControlErrors = linkedSignal(() =>\n gaFormControlAdapter.ngControlErrors(),\n );\n ngControlTouched = linkedSignal(() =>\n gaFormControlAdapter.ngControlTouched(),\n );\n ngControlDisabled = linkedSignal(() =>\n gaFormControlAdapter.ngControlDisabled(),\n );\n ngControlName = linkedSignal(() => gaFormControlAdapter.ngControlName());\n ngFormSubmitted = linkedSignal(() =>\n gaFormControlAdapter.ngFormSubmitted(),\n );\n } else {\n ngControlErrors = signal<ValidationErrors | null>(null);\n ngControlTouched = signal<boolean>(false);\n ngControlDisabled = signal<boolean>(false);\n ngControlName = signal<string | number | null>(null);\n ngFormSubmitted = signal<boolean>(false);\n\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const implicitNgForm = inject(NgForm, { optional: true });\n const implicitControlContainer = inject(ControlContainer, {\n optional: true,\n });\n const ngForm =\n explicitNgForm ??\n implicitNgForm ??\n (implicitControlContainer?.formDirective instanceof NgForm\n ? implicitControlContainer.formDirective\n : null);\n\n let ngControlSubscription: Subscription | null = null;\n effect(() => {\n if (ngControlSubscription) {\n ngControlSubscription.unsubscribe();\n ngControlSubscription = null;\n }\n if (isSignal(explicitNgControl)) {\n explicitNgControl = explicitNgControl();\n }\n\n const ngControl =\n explicitNgControl ??\n implicitChildNgControl?.() ??\n injector.get(NgControl, null, { optional: true });\n if (ngControl?.control) {\n const updateStatuses = () => {\n ngControlErrors.set(ngControl.errors);\n ngControlTouched.set(!!ngControl.touched);\n ngControlDisabled.set(!!ngControl.disabled);\n ngControlName.set(ngControl.name);\n };\n updateStatuses();\n ngControlSubscription = ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => updateStatuses());\n }\n });\n\n if (ngForm) {\n ngFormSubmitted.set(ngForm.submitted);\n ngForm.ngSubmit\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => ngFormSubmitted.set(ngForm.submitted));\n }\n }\n\n const customErrorsDirective = inject(GaFormControlErrorsDirective, {\n optional: true,\n });\n const inError = signal(false);\n const errors = signal<ValidationErrors>({});\n effect(() => {\n errors.set({\n ...ngControlErrors(),\n ...(customErrorsDirective?.customErrors() ?? {}),\n });\n const hasErrors = Object.keys(errors()).length > 0;\n inError.set(hasErrors && (ngControlTouched() || ngFormSubmitted()));\n });\n\n return {\n inError: inError.asReadonly(),\n errors: errors.asReadonly(),\n disabled: ngControlDisabled.asReadonly(),\n name: ngControlName.asReadonly(),\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check, LucideAngularModule, Minus } from 'lucide-angular';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaCheckboxComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for checkbox components.\n// Inspired by @angular/components\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-checkbox',\n templateUrl: './checkbox.component.html',\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-checkbox',\n '[class.ga-checkbox--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-invalid]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaCheckboxComponent implements ControlValueAccessor {\n /** @ignore */\n private readonly _uniqueId = `ga-checkbox-${++nextUniqueId}`;\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n readonly icons = { Minus, Check };\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly disabledInput = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n readonly checkedInput = input(false, {\n transform: booleanAttribute,\n alias: 'checked',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly required = input(false, { transform: booleanAttribute });\n\n readonly disabled = linkedSignal(() => this.disabledInput());\n readonly checked = linkedSignal(() => this.checkedInput());\n\n readonly change = output<boolean>();\n readonly indeterminateChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => (this.id() ? this.id() : this._uniqueId));\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.updateModel();\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n /** @ignore */\n writeValue(value: any) {\n this.checked.set(!!value);\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n /** @ignore */\n private updateModel() {\n this._onModelChanged?.(this.checked());\n this.change.emit(this.checked());\n }\n}\n","<input\n type=\"checkbox\"\n class=\"ga-checkbox__native\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.value]=\"value()\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-checkbox__marker\">\n <lucide-icon\n [img]=\"icons.Check\"\n class=\"ga-checkbox__marker__indicator-checked\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n <lucide-icon\n [img]=\"icons.Minus\"\n class=\"ga-checkbox__marker__indicator-indeterminate\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n</div>\n\n<label class=\"ga-checkbox__label\" [attr.for]=\"inputId()\"\n ><ng-content></ng-content\n></label>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\n\nexport const GA_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaCheckboxRequiredValidator),\n multi: true,\n};\n\n/**\n * Validator for Gaia checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `ga-checkbox`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-checkbox[required][formControlName], ga-checkbox[required][formControl], ga-checkbox[required][ngModel]`,\n providers: [GA_CHECKBOX_REQUIRED_VALIDATOR],\n})\nexport class GaCheckboxRequiredValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaCheckboxRequiredValidator } from './checkbox-required.validator';\nimport { GaCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n exports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n})\nexport class GaCheckboxModule {}\n","import { Type } from '@angular/core';\n\nexport function isClass<T>(value: any): value is Type<T> {\n return (\n typeof value === 'function' &&\n value.prototype &&\n value.prototype.constructor === value\n );\n}\n","import {\n Injectable,\n LOCALE_ID,\n Type,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_I18N_FACTORY() {\n return new GaDatepickerI18nDefault();\n}\n\nexport interface IGaDatepickerI18n {\n previousLabel: string;\n nextLabel: string;\n selectMonthLabel: string;\n selectYearLabel: string;\n openCalendarLabel: string;\n todayButtonLabel: string;\n\n monthNames?: string[];\n monthNamesShort?: string[];\n weekDays?: string[];\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_I18N_FACTORY,\n})\nexport abstract class GaDatepickerI18n implements IGaDatepickerI18n {\n abstract previousLabel: string;\n abstract nextLabel: string;\n abstract selectMonthLabel: string;\n abstract selectYearLabel: string;\n abstract openCalendarLabel: string;\n abstract todayButtonLabel: string;\n abstract monthNames: string[];\n abstract monthNamesShort: string[];\n abstract weekDays: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GaDatepickerI18nDefault extends GaDatepickerI18n {\n private readonly localeId = inject(LOCALE_ID);\n\n selectMonthLabel = 'Select month';\n selectYearLabel = 'Select year';\n previousLabel = 'Previous';\n nextLabel = 'Next';\n openCalendarLabel = 'Open calendar';\n todayButtonLabel = 'Today';\n\n monthNames: string[];\n monthNamesShort: string[];\n weekDays: string[];\n\n constructor() {\n super();\n\n // Generate month names using Intl API\n const monthFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'long',\n });\n const monthShortFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'short',\n });\n\n this.monthNames = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthFormatter.format(date);\n });\n\n this.monthNamesShort = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthShortFormatter.format(date);\n });\n\n // Generate weekday names using Intl API (starting from Monday)\n const weekdayFormatter = new Intl.DateTimeFormat(this.localeId, {\n weekday: 'short',\n });\n const weekDayDates = Array.from({ length: 7 }, (_, i) => {\n // January 2024 starts on Monday, so we can use dates 1-7\n return new Date(2024, 0, i + 1);\n });\n\n this.weekDays = weekDayDates.map((date) => {\n return weekdayFormatter.format(date);\n });\n }\n}\n\nexport function provideGaDatepickerI18n(\n value: IGaDatepickerI18n | Type<GaDatepickerI18n> | (() => IGaDatepickerI18n),\n) {\n if (isClass(value)) {\n return makeEnvironmentProviders([\n { provide: GaDatepickerI18n, useClass: value },\n ]);\n }\n return makeEnvironmentProviders([\n {\n provide: GaDatepickerI18n,\n useFactory: () => {\n const defaultI18n = inject(GaDatepickerI18nDefault);\n const i18n: Required<IGaDatepickerI18n> = {\n monthNames: defaultI18n.monthNames,\n monthNamesShort: defaultI18n.monthNamesShort,\n weekDays: defaultI18n.weekDays,\n ...(typeof value === 'function' ? value() : value),\n };\n return i18n;\n },\n },\n ]);\n}\n","import { Injectable, Provider, Type } from '@angular/core';\n\nexport interface GaDatepickerStruct {\n year: number;\n month: number; // 1-12 (January = 1, December = 12)\n day: number;\n}\n\nexport function GA_DATEPICKER_VALUE_ADAPTER_FACTORY() {\n return new GaDatepickerStructValueAdapter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_VALUE_ADAPTER_FACTORY,\n})\nexport abstract class GaDatepickerValueAdapter<T = any> {\n /**\n * Converts the external value to internal struct representation\n */\n abstract toStruct(value: T | null): GaDatepickerStruct | null;\n\n /**\n * Converts the internal struct to external value representation\n */\n abstract fromStruct(struct: GaDatepickerStruct | null): T | null;\n}\n\n@Injectable()\nexport class GaDatepickerStructValueAdapter extends GaDatepickerValueAdapter<GaDatepickerStruct> {\n /**\n * Checks if a value is a valid GaDatepickerStruct\n */\n protected isStruct(value: any): value is GaDatepickerStruct {\n return (\n value &&\n typeof value === 'object' &&\n typeof value.year === 'number' &&\n typeof value.month === 'number' &&\n typeof value.day === 'number'\n );\n }\n\n /**\n * Handles GaDatepickerStruct natively - pass through as-is\n */\n toStruct(value: GaDatepickerStruct | null): GaDatepickerStruct | null {\n if (!value) return null;\n if (this.isStruct(value)) return value;\n return null; // Invalid input\n }\n\n /**\n * Returns struct as-is (no conversion needed)\n */\n fromStruct(struct: GaDatepickerStruct | null): GaDatepickerStruct | null {\n return struct;\n }\n}\n\nexport function provideGaDatepickerValueAdapter<T = any>(\n value: Type<GaDatepickerValueAdapter<T>>,\n): Provider {\n return { provide: GaDatepickerValueAdapter, useClass: value };\n}\n\n/**\n * Compares two structs for equality\n */\nexport function compareStructs(\n structA: GaDatepickerStruct | null,\n structB: GaDatepickerStruct | null,\n): -1 | 0 | 1 {\n if (!structA && !structB) return 0;\n if (!structA) return -1;\n if (!structB) return 1;\n const dateA = new Date(\n Date.UTC(structA.year, structA.month - 1, structA.day),\n );\n const dateB = new Date(\n Date.UTC(structB.year, structB.month - 1, structB.day),\n );\n return dateA.getTime() - dateB.getTime() < 0\n ? -1\n : dateA.getTime() - dateB.getTime() > 0\n ? 1\n : 0;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n model,\n OnInit,\n signal,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\n\ninterface GaDatepickerViewStruct {\n year: number;\n month: number;\n}\nimport {\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n} from 'lucide-angular';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\ntype ViewMode = 'day' | 'month' | 'year';\n\n@Component({\n selector: 'ga-datepicker',\n templateUrl: './datepicker.component.html',\n styles: `\n :host {\n display: block;\n }\n `,\n imports: [GaIconModule],\n host: {\n class: 'ga-calendar',\n },\n})\nexport class GaDatepickerComponent implements OnInit {\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n protected readonly icons = {\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronDown,\n };\n\n readonly value = model<any | null>(null);\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n\n // Internal struct representation\n protected readonly internalValue = computed(() => {\n return this.valueAdapter.toStruct(this.value());\n });\n\n protected readonly internalMinDate = computed(() => {\n return this.valueAdapter.toStruct(this.min());\n });\n\n protected readonly internalMaxDate = computed(() => {\n return this.valueAdapter.toStruct(this.max());\n });\n\n protected readonly viewMode = signal<ViewMode>('day');\n protected readonly viewDate = signal<GaDatepickerViewStruct>(\n this.getInitialViewDate(),\n );\n\n ngOnInit() {\n // Initialize view date based on the initial value or today's date\n this.viewDate.set(this.getInitialViewDate());\n }\n\n private getInitialViewDate(): GaDatepickerViewStruct {\n // Try to use the initial value if available\n const initialValue = this.valueAdapter.toStruct(this.value());\n if (initialValue) {\n return {\n year: initialValue.year,\n month: initialValue.month,\n };\n }\n\n // Fallback to today's date, but respect min/max constraints\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n\n const minStruct = this.valueAdapter.toStruct(this.min());\n const maxStruct = this.valueAdapter.toStruct(this.max());\n\n let targetDate = todayStruct;\n\n // If today is before min date, use min date\n if (minStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (todayValue < minValue) {\n targetDate = minStruct;\n }\n }\n\n // If today is after max date, use max date\n if (maxStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (todayValue > maxValue) {\n targetDate = maxStruct;\n }\n }\n\n return {\n year: targetDate.year,\n month: targetDate.month,\n };\n }\n\n protected readonly weekDays = computed(() => this.i18n.weekDays);\n\n protected readonly calendarDays = computed(() => {\n const viewStruct = this.viewDate();\n const year = viewStruct.year;\n const month = viewStruct.month;\n\n const firstDay = new Date(year, month - 1, 1); // Convert from 1-12 to 0-11\n const lastDay = new Date(year, month, 0); // month is already 1-12, so this gives us last day of month-1\n const startDate = new Date(firstDay);\n const startDayOfWeek = (firstDay.getDay() + 6) % 7;\n startDate.setDate(startDate.getDate() - startDayOfWeek);\n\n const days: GaDatepickerStruct[] = [];\n const current = new Date(startDate);\n\n while (current <= lastDay || days.length % 7 !== 0) {\n days.push({\n year: current.getFullYear(),\n month: current.getMonth() + 1, // Convert from 0-11 to 1-12\n day: current.getDate(),\n });\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n protected readonly months = computed(() => {\n return Array.from({ length: 12 }, (_, i) => ({\n index: i + 1, // Use 1-12 indexing\n name: this.i18n.monthNames[i],\n shortName: this.i18n.monthNamesShort[i],\n }));\n });\n\n protected readonly years = computed(() => {\n const currentYear = this.viewDate().year;\n const startYear = Math.floor(currentYear / 10) * 10;\n return Array.from({ length: 25 }, (_, i) => startYear + i - 1);\n });\n\n protected selectDate(dateStruct: GaDatepickerStruct) {\n if (this.isDateDisabled(dateStruct) || this.isSelected(dateStruct)) {\n return;\n }\n const externalValue = this.valueAdapter.fromStruct(dateStruct);\n this.value.set(externalValue);\n }\n\n protected selectMonth(monthIndex: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year: currentView.year,\n month: monthIndex, // monthIndex is already 1-12 from months array\n };\n this.viewDate.set(newView);\n this.viewMode.set('day');\n }\n\n protected selectYear(year: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year,\n month: currentView.month,\n };\n this.viewDate.set(newView);\n this.viewMode.set('month');\n }\n\n protected navigatePrevious() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const prevMonth = currentView.month === 1 ? 12 : currentView.month - 1; // Handle 1-12 indexing\n const prevYear =\n currentView.month === 1 ? currentView.year - 1 : currentView.year;\n newView = {\n year: prevYear,\n month: prevMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year - 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year - 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected navigateNext() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const nextMonth = currentView.month === 12 ? 1 : currentView.month + 1; // Handle 1-12 indexing\n const nextYear =\n currentView.month === 12 ? currentView.year + 1 : currentView.year;\n newView = {\n year: nextYear,\n month: nextMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year + 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year + 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected toggleMonthView() {\n this.viewMode.set(this.viewMode() === 'month' ? 'day' : 'month');\n }\n\n protected toggleYearView() {\n this.viewMode.set(this.viewMode() === 'year' ? 'day' : 'year');\n }\n\n protected isToday(dateStruct: GaDatepickerStruct): boolean {\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n return compareStructs(dateStruct, todayStruct) === 0;\n }\n\n protected isSelected(dateStruct: GaDatepickerStruct): boolean {\n const selectedStruct = this.internalValue();\n return compareStructs(dateStruct, selectedStruct) === 0;\n }\n\n protected isCurrentMonth(dateStruct: GaDatepickerStruct): boolean {\n return dateStruct.month === this.viewDate().month;\n }\n\n protected isWeekend(dateStruct: GaDatepickerStruct): boolean {\n // Convert struct to Date to get day of week (convert month from 1-12 to 0-11)\n const date = new Date(\n dateStruct.year,\n dateStruct.month - 1,\n dateStruct.day,\n );\n const day = date.getDay();\n return day === 0 || day === 6;\n }\n\n protected isDateDisabled(dateStruct: GaDatepickerStruct): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (dateValue < minValue) {\n return true;\n }\n }\n\n if (maxStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (dateValue > maxValue) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isMonthDisabled(monthIndex: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n const year = this.viewDate().year;\n\n if (minStruct) {\n if (\n year < minStruct.year ||\n (year === minStruct.year && monthIndex < minStruct.month)\n ) {\n return true;\n }\n }\n\n if (maxStruct) {\n if (\n year > maxStruct.year ||\n (year === maxStruct.year && monthIndex > maxStruct.month)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isYearDisabled(year: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct && year < minStruct.year) {\n return true;\n }\n\n if (maxStruct && year > maxStruct.year) {\n return true;\n }\n\n return false;\n }\n\n protected isSelectedMonth(monthIndex: number): boolean {\n const selectedStruct = this.internalValue();\n if (!selectedStruct) return false;\n\n return (\n selectedStruct.month === monthIndex &&\n selectedStruct.year === this.viewDate().year\n );\n }\n\n protected isSelectedYear(year: number): boolean {\n const selectedStruct = this.internalValue();\n return selectedStruct ? selectedStruct.year === year : false;\n }\n\n protected getMonthName(monthIndex: number): string {\n return this.i18n.monthNames[monthIndex - 1]; // Convert from 1-12 to 0-11 for array access\n }\n}\n","<div class=\"ga-calendar__header\">\n <div class=\"ga-calendar__month-year\">\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleMonthView()\"\n [attr.aria-label]=\"i18n.selectMonthLabel\"\n >\n {{ getMonthName(viewDate().month) }}\n <ga-icon\n [icon]=\"viewMode() === 'month' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleYearView()\"\n [attr.aria-label]=\"i18n.selectYearLabel\"\n >\n {{ viewDate().year }}\n <ga-icon\n [icon]=\"viewMode() === 'year' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n </div>\n @if (viewMode() !== 'month') {\n <div class=\"ga-calendar__navigation\">\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigatePrevious()\"\n [attr.aria-label]=\"i18n.previousLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronLeft\" size=\"24\" />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigateNext()\"\n [attr.aria-label]=\"i18n.nextLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronRight\" size=\"24\" />\n </button>\n </div>\n }\n</div>\n\n@switch (viewMode()) {\n @case ('day') {\n <div class=\"ga-calendar__weekdays\">\n @for (day of weekDays(); track day) {\n <div class=\"ga-calendar__weekday\">{{ day }}</div>\n }\n </div>\n <div class=\"ga-calendar__selection ga-calendar__selection--day\">\n @for (\n dateStruct of calendarDays();\n track dateStruct.year + '-' + dateStruct.month + '-' + dateStruct.day\n ) {\n <button\n type=\"button\"\n class=\"ga-calendar__day\"\n [class.ga-calendar__day--selected]=\"isSelected(dateStruct)\"\n [class.ga-calendar__day--current]=\"isToday(dateStruct)\"\n [class.ga-calendar__day--disabled]=\"isDateDisabled(dateStruct)\"\n [class.ga-calendar__day--weekend]=\"isWeekend(dateStruct)\"\n [disabled]=\"isDateDisabled(dateStruct)\"\n (click)=\"selectDate(dateStruct)\"\n >\n {{ dateStruct.day }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"ga-calendar__selection ga-calendar__selection--month\">\n @for (month of months(); track month.index) {\n <button\n type=\"button\"\n class=\"ga-calendar__month\"\n [class.ga-calendar__month--selected]=\"isSelectedMonth(month.index)\"\n [class.ga-calendar__month--disabled]=\"isMonthDisabled(month.index)\"\n [disabled]=\"isMonthDisabled(month.index)\"\n (click)=\"selectMonth(month.index)\"\n >\n {{ month.shortName }}\n </button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"ga-calendar__selection ga-calendar__selection--year\">\n @for (year of years(); track year) {\n <button\n type=\"button\"\n class=\"ga-calendar__year\"\n [class.ga-calendar__year--selected]=\"isSelectedYear(year)\"\n [class.ga-calendar__year--disabled]=\"isYearDisabled(year)\"\n [disabled]=\"isYearDisabled(year)\"\n (click)=\"selectYear(year)\"\n >\n {{ year }}\n </button>\n }\n </div>\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport type { GaFormControlDirective } from './form-control.directive';\n\n/**\n * @internal - Internal service for form field coordination\n */\n@Injectable()\nexport class GaFormFieldConnector {\n readonly controlDisabled = signal(false);\n readonly controlId = signal<string | null>(null);\n readonly labelId = signal<string | null>(null);\n readonly control = signal<GaFormControlDirective | null>(null);\n}\n","import {\n Attribute,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaInputComponent } from './input.component';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaInput]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id()',\n '[class.ga-input]': '!hasWrapper',\n '[class.ga-input--invalid]': '!hasWrapper && invalid()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaInputDirective {\n readonly uniqueId = `ga-input-${++nextUniqueId}`;\n\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly hasWrapper = inject(GaInputComponent, { optional: true });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly implicitNgControlState = injectNgControlState();\n\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly idInput = input<string>(undefined, { alias: 'id' });\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.implicitNgControlState.disabled();\n });\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n} from '@angular/core';\nimport { GaInputDirective } from './input.directive';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'ga-input',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkOverlayOrigin],\n host: {\n class: 'ga-input',\n '[class.ga-input--invalid]': 'gaInput().invalid()',\n '(click)': 'gaInput().focus()',\n },\n})\nexport class GaInputComponent {\n protected readonly gaInput = contentChild.required(GaInputDirective);\n}\n","import {\n Component,\n inject,\n Injector,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { CalendarDays } from 'lucide-angular';\nimport { GaInputComponent } from '../input/input.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\nimport { GaDatepickerValueAdapter } from './adapters/date-struct-adapter';\n\n@Component({\n selector: 'ga-datepicker-toggle',\n templateUrl: './datepicker-toggle.component.html',\n imports: [GaIconModule, GaButtonModule, OverlayModule, GaDatepickerComponent],\n styles: `\n .ga-datepicker__footer {\n text-align: center;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.escape)': 'close()',\n },\n})\nexport class GaDatepickerToggleComponent {\n protected readonly icons = { CalendarDays };\n\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly gaInput = inject(GaInputComponent);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n private readonly injector = inject(Injector);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly _isOpen = signal(false);\n readonly isOpen = this._isOpen.asReadonly();\n\n readonly for = input.required<GaDatepickerInputDirective>();\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.for().disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n protected onDatepickerValueChange(value: any | null) {\n this.for().updateValue(value, { updateView: true, emitToNgModel: true });\n if (value) {\n this.close();\n }\n }\n\n protected setToday() {\n const today = new Date();\n const todayStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n day: today.getDate(),\n };\n const todayValue = this.valueAdapter.fromStruct(todayStruct);\n this.for().updateValue(todayValue, {\n updateView: true,\n emitToNgModel: true,\n });\n this.close();\n }\n}\n","<button\n type=\"button\"\n class=\"ga-datepicker-toggle\"\n [disabled]=\"for().disabled()\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-label]=\"i18n.openCalendarLabel\"\n tabindex=\"-1\"\n>\n <ga-icon [icon]=\"icons.CalendarDays\" size=\"24\" />\n</button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (overlayKeydown)=\"$event.code === 'Escape' && close()\"\n>\n <div class=\"ga-datepicker\">\n <ga-datepicker\n [value]=\"for().value()\"\n (valueChange)=\"onDatepickerValueChange($event)\"\n [min]=\"for().min()\"\n [max]=\"for().max()\"\n />\n <div class=\"ga-datepicker__footer\">\n <button type=\"button\" gaButton (click)=\"setToday()\">\n {{ i18n.todayButtonLabel }}\n </button>\n </div>\n </div>\n</ng-template>\n","import {\n LOCALE_ID,\n Injectable,\n inject,\n InjectionToken,\n Provider,\n Type,\n} from '@angular/core';\nimport { GaDatepickerStruct } from './adapters/date-struct-adapter';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new GaDatepickerParserFormatterDefault();\n}\n\n/**\n * Converts between the internal `GaDatepickerStruct` model presentation and a `string` that is displayed in the input element.\n */\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_PARSER_FORMATTER_FACTORY,\n})\nexport abstract class GaDatepickerParserFormatter {\n /**\n * When user types something in the input this method attempts to parse it into a `GaDatepickerStruct` object.\n * `null` must be returned if the value can't be parsed.\n */\n abstract parse(value: string): GaDatepickerStruct | null;\n\n /**\n * When users enters a valid date (either via keyboard or mouse click) this method reformats it into a preferred format.\n * An empty string must be returned if the given date is `null`.\n */\n abstract format(date: GaDatepickerStruct | null): string;\n}\n\nexport type GaDatepickerFormats = Record<\n string,\n { input: string[]; output: string }\n>;\n\nexport const GA_DEFAULT_DATEPICKER_FORMATS: GaDatepickerFormats = {\n 'en-US': {\n input: [\n 'yyyy-MM-dd',\n 'M d yy',\n 'M d yyyy',\n 'M/d/yy',\n 'M/d/yyyy',\n 'M.d.yy',\n 'M.d.yyyy',\n 'M-d-yy',\n 'M-d-yyyy',\n ],\n output: 'MM/dd/yyyy',\n },\n 'en-GB': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd/MM/yyyy',\n },\n 'da-dK': {\n input: [\n 'yyyy-MM-dd',\n 'd M yyyy',\n 'd M yy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'fi-FI': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nb-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nn-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'sv-SE': {\n input: [\n 'yyyy-MM-dd',\n 'yy M d',\n 'yyyy M d',\n 'yy-M-d',\n 'yyyy-M-d',\n 'yy/M/d',\n 'yyyy/M/d',\n 'yy.M.d',\n 'yyyy.M.d',\n 'yyMMdd',\n 'yyyyMMdd',\n ],\n output: 'yyyy-MM-dd',\n },\n};\n\nexport const GA_DATE_PARSER_FORMATTER_CONFIG = new InjectionToken(\n 'GA_DATE_PARSER_FORMATTER_CONFIG',\n { providedIn: 'root', factory: () => GA_DEFAULT_DATEPICKER_FORMATS },\n);\n\nexport function extendGaDateParserFormatter(\n formats: GaDatepickerFormats,\n): Provider {\n return {\n provide: GA_DATE_PARSER_FORMATTER_CONFIG,\n useValue: { ...GA_DEFAULT_DATEPICKER_FORMATS, ...formats },\n };\n}\n\n@Injectable()\nexport class GaDatepickerParserFormatterDefault extends GaDatepickerParserFormatter {\n /** @ignore */\n private readonly locale = inject(LOCALE_ID);\n /** @ignore */\n private readonly formats = inject(GA_DATE_PARSER_FORMATTER_CONFIG);\n\n parse(value: string): GaDatepickerStruct | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n let config = this.formats[this.locale];\n\n if (!config) {\n this.printUnknownLocaleWarning();\n config = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n\n for (const format of config.input) {\n const regexp = this.dateFormatToRegexp(format);\n\n const match = trimmedValue.match(regexp);\n if (match) {\n const yearIndex = format.indexOf('y');\n const monthIndex = format.indexOf('M');\n const dayIndex = format.indexOf('d');\n const sortedIndexes = [yearIndex, monthIndex, dayIndex].sort();\n const yearGroup = sortedIndexes.indexOf(yearIndex) + 1;\n const monthGroup = sortedIndexes.indexOf(monthIndex) + 1;\n const dayGroup = sortedIndexes.indexOf(dayIndex) + 1;\n const year = this.addYearPadding(+match[yearGroup]);\n const month = +match[monthGroup];\n const day = +match[dayGroup];\n\n if (month <= 0 || month > 12) {\n // invalid month\n return null;\n }\n\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day <= 0 || day > daysInMonth) {\n // invalid day\n return null;\n }\n\n return { year, month, day };\n }\n }\n return null;\n }\n\n format(date: GaDatepickerStruct): string {\n if (!date) {\n return '';\n }\n let format = this.formats[this.locale];\n if (!format) {\n this.printUnknownLocaleWarning();\n format = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n return this.formatDate(date, format.output);\n }\n\n private formatDate(date: GaDatepickerStruct, format: string): string {\n const year = date.year.toString();\n const month = date.month.toString().padStart(2, '0');\n const day = date.day.toString().padStart(2, '0');\n\n return format\n .replace(/yyyy/g, year)\n .replace(/MM/g, month)\n .replace(/dd/g, day);\n }\n\n private dateFormatToRegexp(format: string) {\n const pattern =\n '^' +\n format\n // / to \\/\n .replace(/\\//g, '\\\\/')\n // . to \\.\n .replace(/\\./g, '\\\\.')\n .replace(/(d+)/, '(\\\\d{1,2})')\n .replace(/(yyyy)/, '(\\\\d{4})')\n .replace(/(yy)/, '(\\\\d{2})')\n .replace(/(M+)/, '(\\\\d{1,2})') +\n '$';\n return new RegExp(pattern);\n }\n\n private addYearPadding(year: number) {\n if (year < 100) {\n return 2000 + year;\n }\n return year;\n }\n\n private printUnknownLocaleWarning() {\n console.warn(\n `Default datepicker parser-formatter does not have predefined formats for \"${this.locale}\" locale. Please provide custom 'GaDatepickerParserFormatter' class. Now defaults to \"en-GB\".`,\n );\n }\n}\n\nexport function provideGaDatepickerParserFormatter(\n value:\n | Type<GaDatepickerParserFormatter>\n | (() => GaDatepickerParserFormatter),\n): Provider {\n if (isClass(value)) {\n return { provide: GaDatepickerParserFormatter, useClass: value };\n }\n return typeof value === 'function'\n ? { provide: GaDatepickerParserFormatter, useFactory: value }\n : { provide: GaDatepickerParserFormatter, useValue: value };\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n output,\n computed,\n linkedSignal,\n booleanAttribute,\n forwardRef,\n effect,\n untracked,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { GaDatepickerParserFormatter } from './datepicker-parser-formatter.service';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\n@Directive({\n selector: 'input[gaDatepickerInput]',\n exportAs: 'gaDatepickerInput',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(input)': 'onInput($event)',\n },\n})\nexport class GaDatepickerInputDirective\n implements ControlValueAccessor, Validator\n{\n private readonly inputElRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef,\n { self: true },\n );\n\n private readonly parserFormatter = inject(GaDatepickerParserFormatter);\n private readonly valueAdapter = inject(GaDatepickerValueAdapter);\n\n // Native value control (alternative to Angular forms)\n readonly valueInput = input<any>(null, { alias: 'value' });\n readonly disabledInput = input(null, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n readonly dateInput = output<any>();\n readonly dateChange = output<any>();\n\n readonly value = linkedSignal<any>(() => this.valueInput());\n readonly dateStruct = computed(() =>\n this.valueAdapter.toStruct(this.value()),\n );\n readonly disabled = linkedSignal<boolean>(() => !!this.disabledInput());\n\n private readonly lastValueValid = signal(false);\n private readonly lastDateChangeEmittedValue =\n signal<GaDatepickerStruct | null>(null);\n\n private onNgChangeFn?: (value: GaDatepickerStruct | null) => void;\n private onNgTouchedFn?: () => void;\n\n constructor() {\n effect(() => {\n this.valueInput(); // explicit call to track value input changes\n this.lastValueValid.set(true);\n untracked(() => {\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n this.formatValue();\n });\n });\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n // Parse the input value\n const parsedStruct = this.parserFormatter.parse(target.value);\n const newValue = this.valueAdapter.fromStruct(parsedStruct);\n\n this.lastValueValid.set(!target.value || parsedStruct !== null);\n\n // Only update if the parsed value is different from current value\n if (compareStructs(parsedStruct, this.dateStruct()) !== 0) {\n this.value.set(newValue);\n this.dateInput.emit(newValue);\n }\n this.onNgChangeFn?.(newValue);\n }\n\n onBlur(): void {\n if (this.dateStruct()) {\n this.formatValue();\n }\n\n if (\n compareStructs(this.dateStruct(), this.lastDateChangeEmittedValue()) !== 0\n ) {\n this.dateChange.emit(this.value());\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n }\n\n this.onNgTouchedFn?.();\n }\n\n formatValue(): void {\n const value = this.dateStruct();\n const formattedValue = this.parserFormatter.format(value);\n this.inputElRef.nativeElement.value = formattedValue;\n }\n\n updateValue(\n value: any | null,\n {\n updateView,\n emitToNgModel,\n }: { updateView?: boolean; emitToNgModel?: boolean } = {},\n ): void {\n this.value.set(value);\n this.lastValueValid.set(true);\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n if (updateView) {\n this.formatValue();\n }\n if (emitToNgModel) {\n this.onNgChangeFn?.(value);\n // NOTE: ngTouched must be called after ngChange to work with `updateOn: 'blur'` strategy\n this.onNgTouchedFn?.();\n this.dateInput.emit(value);\n this.dateChange.emit(value);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any | null): void {\n this.updateValue(value, { updateView: true });\n }\n\n registerOnChange(fn: (value: GaDatepickerStruct | null) => void): void {\n this.onNgChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onNgTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const { value } = control;\n\n if (!this.lastValueValid()) {\n return { dateFormat: { actual: this.inputElRef.nativeElement.value } };\n }\n\n if (value === null) {\n return null;\n }\n\n const valueStruct = this.valueAdapter.toStruct(value);\n\n if (this.min()) {\n const minDateStruct = this.valueAdapter.toStruct(this.min());\n if (minDateStruct && compareStructs(valueStruct, minDateStruct) === -1) {\n return { minDate: { actual: value, min: this.min() } };\n }\n }\n\n if (this.max()) {\n const maxDateStruct = this.valueAdapter.toStruct(this.max());\n if (maxDateStruct && compareStructs(valueStruct, maxDateStruct) === 1) {\n return { maxDate: { actual: value, max: this.max() } };\n }\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { GaDatepickerToggleComponent } from './datepicker-toggle.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\n\n@NgModule({\n imports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n exports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n})\nexport class GaDatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcValueAdapter extends GaDatepickerValueAdapter<Date> {\n /**\n * Converts Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: Date | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n // Create UTC date at midnight to avoid timezone issues\n const utcDate = new Date(\n Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()),\n );\n\n return {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth() + 1, // Convert from 0-11 to 1-12\n day: utcDate.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): Date | null {\n if (!struct) return null;\n\n // Create UTC date at midnight (convert month from 1-12 to 0-11)\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcIsoValueAdapter extends GaDatepickerValueAdapter<string> {\n /**\n * Converts ISO Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: string | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n const date = new Date(value);\n\n if (isNaN(date.getTime())) {\n return null;\n }\n\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to ISO Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): string | null {\n if (!struct) return null;\n\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n ).toISOString();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n model,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-segmented-control',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'group',\n class: 'ga-segmented-control',\n },\n})\nexport class GaSegmentedControlComponent {\n readonly selected = model<string>();\n\n readonly change = output<string | undefined>();\n}\n","import {\n computed,\n Directive,\n HostListener,\n inject,\n input,\n} from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\n\n@Directive({\n selector: '[gaSegmentedControlButton]',\n host: {\n type: 'button',\n class: 'ga-segmented-control__button',\n '[class.ga-segmented-control__button--selected]': 'selected()',\n '[attr.aria-pressed]': 'selected()',\n },\n})\nexport class GaSegmentedControlButtonDirective {\n /** @ignore */\n private readonly group = inject(GaSegmentedControlComponent, {\n skipSelf: true,\n });\n\n readonly value = input<string>();\n\n readonly selected = computed(() => {\n return (\n this.value() !== undefined &&\n this.group.selected() !== undefined &&\n this.group.selected() === this.value()\n );\n });\n\n @HostListener('click')\n onClick(): void {\n this.group.selected.set(this.value());\n this.group.change.emit(this.value());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-icon-button',\n imports: [GaIconModule, GaSegmentedControlButtonDirective],\n template: `<button\n class=\"ga-segmented-control__button--icon-only\"\n gaSegmentedControlButton\n [value]=\"value()\"\n >\n <ga-icon [icon]=\"icon()\" size=\"16\" />\n <span class=\"ga-segmented-control__button-sr-label\"><ng-content /></span>\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlIconButtonComponent {\n readonly value = input.required<string>();\n readonly icon = input.required<GaIconData>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-text-button',\n imports: [GaSegmentedControlButtonDirective],\n template: `<button gaSegmentedControlButton [value]=\"value()\">\n <ng-content />\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlTextButtonComponent {\n readonly value = input.required<string>();\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\nimport { GaSegmentedControlIconButtonComponent } from './segmented-control-icon-button.component';\nimport { GaSegmentedControlTextButtonComponent } from './segmented-control-text-button.component';\n\n@NgModule({\n imports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n exports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n})\nexport class GaSegmentedControlModule {}\n","import { NgModule } from '@angular/core';\n\nimport { GaInputComponent } from './input.component';\nimport { GaInputDirective } from './input.directive';\n\n@NgModule({\n imports: [GaInputComponent, GaInputDirective],\n exports: [GaInputComponent, GaInputDirective],\n})\nexport class GaInputModule {}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nexport type GaFormErrorMessage = string | ((error: any) => string);\nexport type GaFormErrorsMap = Record<string, GaFormErrorMessage>;\nexport type GaFormErrorsConfig = GaFormErrorsMap | (() => GaFormErrorsMap);\n\nexport const GA_FORM_ERRORS = new InjectionToken<GaFormErrorsMap>(\n 'GA_FORM_ERRORS',\n { providedIn: 'root', factory: () => ({}) },\n);\n\n/**\n * Provides global form error messages that can be used across the application.\n * These errors will be displayed when a form control has validation errors\n * but no specific gaError directive template is provided.\n *\n * @param config - Either a static record of error messages or a factory function\n * @returns EnvironmentProviders for configuring global form errors\n *\n * @example\n * ```ts\n * // Static configuration\n * provideGaFormErrors({\n * required: 'This field is required',\n * email: 'Please enter a valid email address',\n * minlength: 'Input is too short'\n * })\n *\n * // Dynamic configuration with functions that access error data\n * provideGaFormErrors({\n * required: 'This field is required',\n * minlength: (error) => `Minimum ${error.requiredLength} characters required`,\n * pattern: (error) => `Input format is invalid. Expected pattern: ${error.requiredPattern}`\n * })\n *\n * // Factory function for lazy evaluation\n * provideGaFormErrors(() => ({\n * required: translateService.get('errors.required'),\n * email: translateService.get('errors.email')\n * }))\n * ```\n */\nexport function provideGaFormErrors(\n config: GaFormErrorsConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n typeof config === 'function'\n ? { provide: GA_FORM_ERRORS, useFactory: config }\n : { provide: GA_FORM_ERRORS, useValue: config },\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { OctagonAlert } from 'lucide-angular';\nimport { GA_FORM_ERRORS } from './form-errors.provider';\n\n@Component({\n selector: 'ga-field-callout',\n templateUrl: './field-callout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, GaIconModule],\n host: {\n class: 'ga-form-field__info',\n '[attr.id]': 'id',\n '[style.display]': 'hasCallout() ? null : \"none\"',\n },\n})\nexport class GaFieldCalloutComponent {\n protected readonly icons = { OctagonAlert };\n protected readonly formField = inject(GaFormFieldComponent);\n private readonly globalErrors = inject(GA_FORM_ERRORS);\n\n protected readonly id = this.formField.uniqueId + '-callout';\n\n protected readonly shouldShowError = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return false;\n }\n return formControl.inError() && this.overlappingErrors().length > 0;\n });\n\n protected readonly overlappingErrors = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return [];\n }\n const registeredErrors = this.formField\n .fieldErrors()\n .filter((err) => err.key());\n const controlErrorKeys = Object.keys(formControl.errors());\n const errors: {\n key: string;\n error: any;\n templateRef?: TemplateRef<any>;\n message?: string;\n }[] = [];\n\n // First, add errors that have matching gaError directives\n const registeredErrorKeys = new Set(\n registeredErrors.map((err) => err.key()),\n );\n registeredErrors\n .filter((err) => controlErrorKeys.includes(err.key()!))\n .forEach((err) => {\n const errorKey = err.key()!;\n errors.push({\n key: errorKey,\n templateRef: err.templateRef,\n error: formControl.errors()[errorKey],\n });\n });\n\n // Then, add global errors for keys that don't have gaError directives\n controlErrorKeys\n .filter((key) => !registeredErrorKeys.has(key))\n .forEach((key) => {\n const errorMessage = this.globalErrors[key];\n if (errorMessage) {\n const message =\n typeof errorMessage === 'function'\n ? errorMessage(formControl.errors()[key])\n : errorMessage;\n errors.push({\n key,\n error: formControl.errors()[key],\n message,\n });\n }\n });\n\n return errors;\n });\n\n protected readonly hasCallout = computed(\n () => !!this.formField.fieldInfo() || this.shouldShowError(),\n );\n}\n","@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n &nbsp;\n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-info',\n template: `<ng-template><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"none\"',\n },\n})\nexport class GaFieldInfoComponent {\n readonly templateRef = viewChild.required(TemplateRef);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaError]',\n})\nexport class GaFieldErrorDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n readonly key = input.required<string>({ alias: 'gaError' });\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_FORM_FIELD_ID = new InjectionToken<string>('ga-form-field-id');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n input,\n inject,\n computed,\n} from '@angular/core';\nimport { GaFieldCalloutComponent } from './field-callout.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-form-field',\n exportAs: 'gaFormField',\n templateUrl: './form-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GaFieldCalloutComponent],\n host: {\n class: 'ga-form-field',\n },\n providers: [\n {\n provide: GA_FORM_FIELD_ID,\n useFactory: () => `ga-form-field-${++nextUniqueId}`,\n },\n GaFormFieldConnector,\n ],\n})\nexport class GaFormFieldComponent {\n readonly uniqueId = inject(GA_FORM_FIELD_ID);\n readonly formFieldConnector = inject(GaFormFieldConnector);\n\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.formFieldConnector.controlDisabled();\n });\n\n readonly formControl = this.formFieldConnector.control.asReadonly();\n\n readonly fieldInfo = contentChild(GaFieldInfoComponent);\n readonly fieldErrors = contentChildren(GaFieldErrorDirective);\n}\n","<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type GaTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type GaTooltipDirection = 'start' | 'end' | 'center';\nexport type GaTooltipPlacement = `${GaTooltipPosition}-${GaTooltipDirection}`;\nexport type GaTooltipControlMode = 'hover' | 'click' | 'none';\n\nlet nextUniqueId = 0;\n\n/**\n * Internal tooltip component used by the gaTooltip directive.\n * This component is not intended for direct use in templates.\n * Use the [gaTooltip] directive instead.\n * @internal\n */\n@Component({\n selector: 'ga-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.style]': 'inlineStyle()',\n },\n})\nexport class GaTooltipComponent {\n readonly uniqueId = `ga-tooltip-${++nextUniqueId}`;\n\n private mouseLeaveSubject = new Subject<void>();\n readonly afterMouseLeave = () => this.mouseLeaveSubject.asObservable();\n\n readonly mouseOver = signal(false);\n\n readonly content = input.required<string | TemplateRef<any>>();\n\n readonly template = computed(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly text = computed(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n\n readonly position = input<GaTooltipPlacement>();\n readonly offset = input<number>(0);\n\n readonly hideTriggered = output();\n readonly triggerHide = () => this.hideTriggered.emit();\n\n readonly inlineStyle = computed(() => {\n if (!this.position() || !this.offset()) {\n return '';\n }\n\n return `--ga-tooltip-offset: ${this.offset()}px;`;\n });\n\n readonly cssClass = computed(() => {\n return ['ga-tooltip', `ga-tooltip--${this.position()}`].join(' ');\n });\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n this.mouseOver.set(true);\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.mouseOver.set(false);\n this.mouseLeaveSubject.next();\n }\n}\n","<div role=\"tooltip\" [attr.id]=\"uniqueId\" [class]=\"cssClass()\">\n @if (text()) {\n {{ text() }}\n } @else if (template()) {\n <ng-container\n [ngTemplateOutlet]=\"template()\"\n [ngTemplateOutletContext]=\"{ hide: triggerHide }\"\n />\n }\n</div>\n","import {\n Overlay,\n OverlayRef,\n FlexibleConnectedPositionStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OutputRefSubscription,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, Observable, takeUntil, map } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n GaTooltipComponent,\n GaTooltipControlMode,\n GaTooltipDirection,\n GaTooltipPlacement,\n GaTooltipPosition,\n} from './tooltip.component';\n\nexport const GA_TOOLTIP_DEFAULT_OFFSET = 5;\n\n@Directive({\n selector: '[gaTooltip]',\n exportAs: 'gaTooltip',\n})\nexport class GaTooltipDirective implements OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly ngZone = inject(NgZone);\n\n protected destroyed$ = new Subject<void>();\n private _content: string | TemplateRef<any> | null = null;\n private tooltipInstanceDestroyed$: Subject<void> | null = null;\n private outputSubscription: OutputRefSubscription | null = null;\n private overlayRef?: OverlayRef;\n private tooltipPortal?: ComponentPortal<GaTooltipComponent>;\n private tooltipRef?: ComponentRef<GaTooltipComponent>;\n private get tooltipInstance() {\n return this.tooltipRef ? this.tooltipRef.instance : null;\n }\n private currentPosition$?: Observable<GaTooltipPlacement>;\n private _placement: GaTooltipPlacement = 'right-center';\n private _offset: number = GA_TOOLTIP_DEFAULT_OFFSET;\n private mouseOver = false;\n private _showControlMode: GaTooltipControlMode | null = null;\n private _hideControlMode: GaTooltipControlMode | null = null;\n\n @Input('gaTooltip')\n set content(value: string | TemplateRef<any> | null) {\n if (value === this._content) {\n return;\n }\n\n this._content = value;\n\n // Hide tooltip with empty content\n if (!this._content && this.overlayRef?.hasAttached()) {\n this.hide();\n return;\n }\n\n // Update the content in case tooltip is already opened\n if (this.tooltipRef && this.overlayRef?.hasAttached()) {\n this.tooltipRef.setInput('content', this._content);\n }\n }\n get content() {\n return this._content;\n }\n\n @Input({ alias: 'gaTooltipDisabled', transform: booleanAttribute })\n disabled = false;\n\n @Input({ alias: 'gaTooltipControlMode' })\n controlMode: GaTooltipControlMode = 'hover';\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipShowControlMode' })\n set showControlMode(value: GaTooltipControlMode) {\n this._showControlMode = value;\n }\n get showControlMode(): GaTooltipControlMode {\n return this._showControlMode ?? this.controlMode;\n }\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipHideControlMode' })\n set hideControlMode(value: GaTooltipControlMode) {\n this._hideControlMode = value;\n }\n get hideControlMode(): GaTooltipControlMode {\n return this._hideControlMode ?? this.controlMode;\n }\n\n @Input({ alias: 'gaTooltipOffsetSize', transform: numberAttribute })\n set offset(value) {\n if (this._offset === value) {\n return;\n }\n\n this._offset = !isNaN(value) ? value : GA_TOOLTIP_DEFAULT_OFFSET;\n this.updateTooltipPlacement();\n }\n get offset() {\n return this._offset;\n }\n\n @Input({ alias: 'gaTooltipPlacement' })\n set placement(value: GaTooltipPlacement) {\n if (this._placement === value) {\n return;\n }\n\n this._placement = value;\n\n this.updateTooltipPlacement();\n }\n get placement() {\n return this._placement;\n }\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.tooltipInstance?.uniqueId ?? null;\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const overlayRef = this.createOverlay();\n this.tooltipPortal =\n this.tooltipPortal ?? new ComponentPortal(GaTooltipComponent);\n\n this.tooltipInstanceDestroyed$ = new Subject();\n\n this.tooltipRef = overlayRef.attach(this.tooltipPortal);\n this.tooltipRef.setInput('content', this.content);\n this.outputSubscription = this.tooltipInstance!.hideTriggered.subscribe(\n () => setTimeout(() => this.hide()),\n );\n\n if (this.hideControlMode === 'hover') {\n // Soft hide tooltip on mouse leave when control mode is set to 'hover'\n this.tooltipInstance!.afterMouseLeave()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe(() => setTimeout(() => this.softHide()));\n } else if (this.hideControlMode === 'click') {\n // Hide tooltip on outside click when control mode is set to 'click'\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe((event) => {\n const element = this.elementRef.nativeElement;\n if (event.target !== element && !element.contains(event.target)) {\n this.hide();\n }\n });\n }\n\n // Tell the instance current position (left, right, top, bottom)\n this.currentPosition$!.pipe(\n takeUntil(this.tooltipInstanceDestroyed$),\n ).subscribe((position) => {\n this.ngZone.run(() => {\n if (!this.tooltipRef) {\n return;\n }\n this.tooltipRef.setInput('position', position);\n this.tooltipRef.setInput('offset', this.offset);\n });\n });\n }\n\n hide(): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.detach();\n this.tooltipInstanceDestroyed$!.next();\n this.tooltipInstanceDestroyed$!.complete();\n this.outputSubscription?.unsubscribe();\n this.tooltipRef = undefined;\n }\n\n toggle(): void {\n if (!this.overlayRef?.hasAttached()) {\n this.show();\n return;\n }\n this.hide();\n }\n\n @HostListener('click')\n handleMouseClick(): void {\n if (this.showControlMode !== 'click' || this.disabled || !this._content) {\n return;\n }\n this.toggle();\n }\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n if (this.showControlMode !== 'hover' || this.disabled || !this._content) {\n return;\n }\n this.mouseOver = true;\n this.show();\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n if (this.hideControlMode !== 'hover' || this.disabled) {\n return;\n }\n this.mouseOver = false;\n setTimeout(() => this.softHide());\n }\n\n /**\n * hides only if mouse is not over the host element nor the tooltip itself\n */\n private softHide() {\n if (!this.mouseOver && !this.tooltipInstance?.mouseOver()) {\n this.hide();\n }\n }\n\n private createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef);\n this.currentPosition$ = positionStrategy.positionChanges.pipe(\n map((pos) => pos.connectionPair.panelClass as GaTooltipPlacement),\n );\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy });\n\n if (this.showControlMode !== 'none') {\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((event) => {\n if (\n this.overlayRef?.hasAttached() &&\n event.keyCode === ESCAPE &&\n !hasModifierKey(event)\n ) {\n this.hide();\n }\n });\n }\n\n this.updatePosition();\n\n return this.overlayRef;\n }\n\n private updateTooltipPlacement(): void {\n if (this.overlayRef) {\n this.updatePosition();\n this.overlayRef.updatePosition();\n }\n }\n\n private updatePosition(): void {\n const position = this.overlayRef!.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n const positions = this.getPositions(this._placement);\n position.withPositions(positions);\n }\n\n private getPositions(\n preferredPlacement: GaTooltipPlacement,\n ): ConnectedPosition[] {\n const [position, direction] = preferredPlacement.split('-') as [\n GaTooltipPosition,\n GaTooltipDirection,\n ];\n\n let positionedOverlayY: ConnectedPosition['overlayY'];\n let positionedOffsetY: number;\n if (direction === 'start') {\n positionedOverlayY = 'top';\n positionedOffsetY = -24;\n } else if (direction === 'end') {\n positionedOverlayY = 'bottom';\n positionedOffsetY = 24;\n } else {\n positionedOverlayY = 'center';\n positionedOffsetY = 0;\n }\n\n let positionedOffsetX: number;\n if (direction === 'start') {\n positionedOffsetX = -24;\n } else if (direction === 'end') {\n positionedOffsetX = 24;\n } else {\n positionedOffsetX = 0;\n }\n\n const right: ConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `right-${direction}`,\n };\n\n const left: ConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `left-${direction}`,\n };\n\n const top: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: direction,\n overlayY: 'bottom',\n offsetX: positionedOffsetX,\n panelClass: `top-${direction}`,\n };\n\n const bottom: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: direction,\n overlayY: 'top',\n offsetX: positionedOffsetX,\n panelClass: `bottom-${direction}`,\n };\n\n if (position === 'right') {\n return [right, left, bottom, top];\n } else if (position === 'left') {\n return [left, right, bottom, top];\n } else if (position === 'top') {\n return [top, bottom, right, left];\n } else {\n return [bottom, top, right, left];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [GaTooltipDirective],\n exports: [GaTooltipDirective],\n})\nexport class GaTooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n TemplateRef,\n DOCUMENT,\n effect,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaTooltipModule } from '../tooltip';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Component({\n selector: 'ga-label',\n templateUrl: './field-label.component.html',\n imports: [GaTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'null',\n },\n})\nexport class GaFieldLabelComponent {\n private readonly document = inject(DOCUMENT);\n readonly formField = inject(GaFormFieldComponent);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly uniqueId = this.formField.uniqueId + '-label';\n\n readonly for = input<string>();\n readonly definition = input<string | TemplateRef<any> | null>(null);\n readonly state = input<string>();\n readonly idInput = input<string>(undefined, { alias: 'id' });\n\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n\n protected readonly controlId = computed(() => {\n return this.for() ?? this.formFieldConnector?.controlId();\n });\n\n readonly controlElement = computed(() => {\n const controlId = this.controlId();\n if (!controlId) {\n return null;\n }\n const control = this.document.querySelector(`#${CSS.escape(controlId)}`);\n if (control instanceof HTMLElement) {\n return control;\n }\n return null;\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.labelId.set(this.id()));\n }\n }\n\n focusControl() {\n const control = this.controlElement();\n // only focus custom elements as native elements already\n // have support for connecting label and reacting to events\n if (control?.tagName.includes('-')) {\n control.focus();\n }\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n<label\n [attr.id]=\"id()\"\n [attr.for]=\"controlId()\"\n class=\"ga-form-field__label\"\n [class.ga-form-field__label--defined]=\"!!definition()\"\n [class.ga-form-field__label--disabled]=\"formField.disabled()\"\n (click)=\"focusControl()\"\n [attr.tabindex]=\"definition() ? 0 : -1\"\n>\n <span\n class=\"ga-form-field__label-text\"\n [gaTooltip]=\"definition()\"\n gaTooltipPlacement=\"top-start\"\n ><ng-content\n /></span>\n @if (state()) {\n <span class=\"ga-form-field__label-state\">{{ state() }}</span>\n }\n</label>\n","import {\n computed,\n Directive,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n exportAs: 'gaFormControl',\n selector: '[gaFormControl]',\n host: {\n '[attr.aria-invalid]': 'inError() ? \"true\" : null',\n '[attr.aria-errormessage]': 'ariaErrorMessageId()',\n },\n})\nexport class GaFormControlDirective implements OnInit, OnDestroy {\n private readonly formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ngControlInput = input<NgControl | string>(undefined, {\n alias: 'gaFormControl',\n });\n\n private readonly explicitNgControl = computed(() => {\n const ngControl = this.ngControlInput();\n if (ngControl instanceof NgControl) {\n return ngControl;\n }\n return null;\n });\n\n private readonly ngControlState = injectNgControlState({\n explicitNgControl: this.explicitNgControl,\n });\n\n readonly inError = this.ngControlState.inError;\n readonly errors = this.ngControlState.errors;\n\n readonly ariaErrorMessageId = computed(() => {\n if (!this.formFieldId || !this.inError()) {\n return null;\n }\n return `${this.formFieldId}-callout`;\n });\n\n ngOnInit(): void {\n this.formFieldConnector?.control.set(this);\n }\n\n ngOnDestroy(): void {\n this.formFieldConnector?.control.set(null);\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n selector: '[gaLabelledByFormField]',\n host: {\n '[attr.aria-labelledby]': 'labelledBy()',\n },\n})\nexport class GaLabelledByFormFieldDirective {\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ariaLabelledBy = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n protected readonly labelledBy = computed(() => {\n return this.ariaLabelledBy() ?? this.formFieldConnector?.labelId();\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaFieldLabelComponent } from './field-label.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFormControlDirective } from './form-control.directive';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GaFormControlErrorsDirective } from './form-control-errors.directive';\n\n@NgModule({\n imports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n exports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n})\nexport class GaFormFieldModule {}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu',\n template: `<ng-content />`,\n hostDirectives: [CdkMenu],\n host: {\n class: 'ga-menu',\n },\n styles: `\n :host {\n margin-top: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n margin-bottom: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n }\n `,\n})\nexport class GaMenuComponent {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { Component, input } from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon/';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaMenuItem]',\n templateUrl: './menu-item.component.html',\n imports: [GaIconModule],\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'ga-menu__item',\n },\n})\nexport class GaMenuItemComponent {\n readonly icon = input<GaIconData | string>(undefined, {\n alias: 'gaMenuItemIcon',\n });\n readonly description = input('', { alias: 'gaMenuItemDescription' });\n readonly shortcut = input('', { alias: 'gaMenuItemShortcut' });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-menu__item-icon\" size=\"16\" />\n}\n<div class=\"ga-menu__item-content\">\n <div class=\"ga-menu__item-title\">\n <div class=\"ga-menu__item-label\"><ng-content /></div>\n @if (shortcut()) {\n <span class=\"ga-menu__item-shortcut\">{{ shortcut() }}</span>\n }\n </div>\n @if (description()) {\n <div class=\"ga-menu__item-description\">{{ description() }}</div>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__title',\n },\n})\nexport class GaMenuTitleComponent {}\n","import { CdkMenuTrigger, MENU_SCROLL_STRATEGY } from '@angular/cdk/menu';\nimport { createRepositionScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Directive,\n effect,\n inject,\n Injector,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, merge } from 'rxjs';\n\n@Directive({\n selector: '[gaMenuTrigger]',\n exportAs: 'gaMenuTrigger',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n outputs: ['cdkMenuOpened: gaMenuOpened', 'cdkMenuClosed: gaMenuClosed'],\n },\n ],\n providers: [\n {\n provide: MENU_SCROLL_STRATEGY,\n useFactory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n ],\n})\nexport class GaMenuTriggerDirective {\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n\n readonly menuRef = input.required<TemplateRef<any>>({\n alias: 'gaMenuTrigger',\n });\n\n readonly isOpen = toSignal(\n merge(\n this.cdkMenuTrigger.opened.pipe(map(() => true)),\n this.cdkMenuTrigger.closed.pipe(map(() => false)),\n ),\n { initialValue: this.cdkMenuTrigger.isOpen() },\n );\n\n constructor() {\n effect(() => {\n this.cdkMenuTrigger.menuTemplateRef = this.menuRef();\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-separator',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__separator',\n },\n})\nexport class GaMenuSeparatorComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp } from 'lucide-angular';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaIconData } from '../icon/icon.component';\n\n@Component({\n selector: 'ga-menu-trigger-icon',\n imports: [GaIconModule],\n template: `<ga-icon [icon]=\"icon()\" />`,\n})\nexport class GaMenuTriggerIconComponent {\n protected readonly menuTrigger = inject(GaMenuTriggerDirective);\n\n protected readonly icon = computed<GaIconData>(() => {\n return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;\n });\n}\n","import { NgModule } from '@angular/core';\nimport { GaMenuComponent } from './menu.component';\nimport { GaMenuItemComponent } from './menu-item.component';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaMenuSeparatorComponent } from './menu-separator.component';\nimport { GaMenuTitleComponent } from './menu-title.component';\nimport { GaMenuTriggerIconComponent } from './menu-trigger-icon.component';\n\n@NgModule({\n imports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n exports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n})\nexport class GaMenuModule {}\n","import { GaModalComponent } from './modal.component';\n\nexport class GaModalRef<C extends GaModalComponent<any, any>> {\n instance!: C;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_MODAL_DATA = new InjectionToken<any>('GaModalData');\n","import { Provider } from '@angular/core';\n\nexport type GaModalRole = 'dialog' | 'alertdialog';\n\nexport type GaModalSize = 'sm' | 'md' | 'lg';\n\nexport type GaModalType = 'none' | 'info' | 'danger' | 'warning' | 'success';\n\nexport type GaModalVerticalPosition = 'top' | 'center';\n\nexport class GaModalOptions {\n /**\n * Defines the predefined size of the modal.\n *\n * @default `md`\n */\n size?: GaModalSize;\n\n /**\n * Defines the type of the modal:\n * - `none` for no icon.\n * - `information` for info dialog.\n * - `danger` for danger dialog.\n * - `warning` for warning dialog.\n * - `success` for success dialog.\n */\n type?: GaModalType;\n\n /**\n * The ARIA role of the dialog element.\n *\n * @default `dialog`\n */\n role?: GaModalRole;\n\n /**\n * Defines the vertical position of the modal.\n * - `center` centers the modal vertically in the viewport (default).\n * - `top` positions the modal at the top with a calculated offset.\n *\n * @default `center`\n */\n verticalPosition?: GaModalVerticalPosition;\n\n /**\n * Defines if the modal should be closed when the escape key is pressed.\n *\n * @default `true`\n */\n closeOnEscape?: boolean;\n\n /**\n * Defines if the modal should be closed when the backdrop is clicked.\n *\n * @default `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Defines if the modal should be closed when the route changes.\n *\n * @default `true`\n */\n closeOnNavigation?: boolean;\n}\n\nexport const DEFAULT_MODAL_OPTIONS: Required<GaModalOptions> = {\n role: 'dialog',\n type: 'none',\n size: 'md',\n verticalPosition: 'center',\n closeOnEscape: true,\n closeOnOutsideClick: true,\n closeOnNavigation: true,\n};\n\nexport function provideGaModalOptions(options: GaModalOptions): Provider {\n return { provide: GaModalOptions, useValue: options };\n}\n","import {\n GlobalPositionStrategy,\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n inject,\n Injectable,\n Injector,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalComponent } from './modal.component';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { ExtractInput } from './modal.utils';\nimport { DEFAULT_MODAL_OPTIONS } from './modal.options';\n\n@Injectable({ providedIn: 'root' })\nexport class GaModalService {\n /** @ignore */\n private overlay = inject(Overlay);\n /** @ignore */\n private injector = inject(Injector);\n /** @ignore */\n private parentModalService = inject(GaModalService, {\n optional: true,\n skipSelf: true,\n });\n\n /** @ignore */\n private openModalsAtThisLevel = signal<GaModalComponent<any, any>[]>([]);\n\n /** @ignore */\n private positionStrategy?: GlobalPositionStrategy;\n\n get activeModals(): WritableSignal<GaModalComponent<any, any>[]> {\n if (this.parentModalService) {\n return this.parentModalService.activeModals;\n }\n return this.openModalsAtThisLevel;\n }\n\n open<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n ...args: ExtractInput<C> extends void\n ? [(undefined | null)?]\n : [ExtractInput<C>]\n ) {\n const [data] = args;\n\n const overlayRef = this.createOverlay();\n return this.attachContent<C>(component, data, overlayRef);\n }\n\n closeAll(): void {\n this.activeModals.update((modals) => {\n while (modals.length > 0) {\n modals.pop()?.close();\n }\n return modals;\n });\n }\n\n /** @ignore */\n private attachContent<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n data: ExtractInput<C> | undefined | null,\n overlayRef: OverlayRef,\n ) {\n const modalRef = new GaModalRef<C>();\n const injector = this.createInjector(\n this.injector,\n overlayRef,\n modalRef,\n data,\n );\n const modalPortal = new ComponentPortal(component, null, injector);\n const { instance: modalComponent } = overlayRef.attach(modalPortal);\n modalRef.instance = modalComponent;\n\n // Update position and size if verticalPosition is 'top'\n const verticalPosition =\n modalComponent.options.verticalPosition ??\n DEFAULT_MODAL_OPTIONS.verticalPosition;\n if (verticalPosition === 'top') {\n const modalStackIndex = this.activeModals().length + 1;\n this.positionStrategy?.top(\n `calc(4rem * var(--ga-base-scaling-factor, 1) * ${modalStackIndex})`,\n );\n overlayRef.updateSize({\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * (2 + ${modalStackIndex}))`,\n });\n }\n\n this.activeModals.update((modals) => {\n modals.push(modalComponent);\n return modals;\n });\n modalComponent.afterClosed({ closeOnUnsubscribe: false }).subscribe(() => {\n const index = this.activeModals().indexOf(modalRef.instance);\n if (index > -1) {\n this.activeModals.update((modals) => {\n modals.splice(index, 1);\n return modals;\n });\n }\n });\n\n return modalComponent;\n }\n\n /** @ignore */\n private createOverlay(): OverlayRef {\n this.positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n const scrollStrategy = this.overlay.scrollStrategies.block();\n return this.overlay.create({\n positionStrategy: this.positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: 'ga-modal__backdrop',\n // NOTE: handled manually inside the modal component\n disposeOnNavigation: false,\n height: 'auto',\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * 2)`,\n });\n }\n\n /** @ignore */\n private createInjector<C extends GaModalComponent>(\n parentInjector: Injector,\n overlayRef: OverlayRef,\n modalRef: GaModalRef<C>,\n data: any,\n ): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: GaModalRef, useValue: modalRef },\n { provide: GA_MODAL_DATA, useValue: data ?? null },\n ],\n });\n }\n}\n","import {\n afterNextRender,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { filter, isObservable, Observable, Subject } from 'rxjs';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { DEFAULT_MODAL_OPTIONS, GaModalOptions } from './modal.options';\nimport { ResolveStart, Router } from '@angular/router';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n template: '',\n host: {\n class: 'ga-modal',\n '[attr.role]': 'options.role',\n '[attr.aria-labelledby]': 'options.labelledBy ?? labelledBy()',\n '[attr.aria-describedby]': 'options.describedBy ?? describedBy()',\n '[class.ga-modal--small]': \"options.size === 'sm'\",\n '[class.ga-modal--medium]': \"options.size === 'md'\",\n '[class.ga-modal--large]': \"options.size === 'lg'\",\n '[class.ga-modal--information]': \"options.type === 'info'\",\n '[class.ga-modal--danger]': \"options.type === 'danger'\",\n '[class.ga-modal--warning]': \"options.type === 'warning'\",\n '[class.ga-modal--success]': \"options.type === 'success'\",\n },\n hostDirectives: [CdkTrapFocus],\n})\nexport abstract class GaModalComponent<I = void, O = void> {\n private readonly closeSubject = new Subject<O | undefined>();\n private readonly overlayRef = inject(OverlayRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router, { optional: true });\n private readonly globalOptions = inject(GaModalOptions, { optional: true });\n readonly options: GaModalOptions & {\n labelledBy?: string;\n describedBy?: string;\n } = this.createOptions();\n private readonly trapfocus = inject(CdkTrapFocus);\n\n protected readonly data: I = inject<I>(GA_MODAL_DATA);\n\n protected readonly labelledBy = signal<string | null>(null);\n protected readonly describedBy = signal<string | null>(null);\n\n constructor() {\n this.trapfocus.enabled = true;\n this.trapfocus.autoCapture = true;\n\n // Using next render to delay the initialization, so that there is more time\n // to set the modal options\n afterNextRender({\n read: () => {\n if (this.options.closeOnNavigation) {\n this.router?.events\n .pipe(\n /**\n * Listen for `ResolveStart` to be friendly with route-guards.\n * i.e. don't close the modal in case a guard prevents the route change,\n * beneficial for pending changes check.\n */\n filter((event) => event instanceof ResolveStart),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.close());\n }\n\n if (this.options.closeOnEscape) {\n this.overlayRef\n .keydownEvents()\n .pipe(\n filter(\n (event) => event.key === 'Escape' && !hasModifierKey(event),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((event) => {\n event.preventDefault();\n this.softClose();\n });\n }\n\n if (this.options.closeOnOutsideClick) {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.softClose());\n }\n },\n });\n }\n\n close(result?: O): void {\n if (!this.overlayRef.hasAttached()) {\n return;\n }\n this.overlayRef.dispose();\n this.closeSubject.next(result);\n this.closeSubject.complete();\n }\n\n afterClosed(\n { closeOnUnsubscribe } = { closeOnUnsubscribe: true },\n ): Observable<O | undefined> {\n return new Observable((observer) => {\n this.closeSubject.subscribe(observer);\n return () => closeOnUnsubscribe && this.close();\n });\n }\n\n /**\n * \"Soft close\" hook which is called whenever the modal is being closed\n * by \"Escape\" key or Backdrop click.\n * Return true to permit closing. False - to refuse.\n */\n protected onSoftClose(): boolean | Observable<boolean> {\n return true;\n }\n\n private softClose(): void {\n const shouldClose = this.onSoftClose();\n if (typeof shouldClose === 'boolean' && shouldClose) {\n this.close();\n }\n if (isObservable(shouldClose)) {\n shouldClose\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => result && this.close());\n }\n }\n\n protected createOptions(\n options?: GaModalOptions & { labelledBy?: string; describedBy?: string },\n ) {\n return {\n ...DEFAULT_MODAL_OPTIONS,\n ...this.globalOptions,\n ...options,\n };\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostAttributeToken,\n HostListener,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\n\n@Directive({\n selector: '[gaModalClose]',\n})\nexport class GaModalCloseDirective {\n private readonly modalRef = inject(GaModalRef);\n\n readonly modalResult = input<any>({ alias: 'gaModalClose' });\n\n @HostListener('click')\n onClick(): void {\n this.modalRef.instance.close(this.modalResult);\n }\n}\n\nlet nextUniqueModalTitleId = 0;\n@Directive({\n selector: '[gaModalTitle]',\n host: { class: 'ga-modal__title' },\n})\nexport class GaModalTitleDirective implements AfterViewInit {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalTitle${nextUniqueModalTitleId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.labelledBy.set(this.id);\n }\n}\n\nlet nextUniqueModalDescriptionId = 0;\n@Directive({\n selector: '[gaModalDescription]',\n host: { class: 'ga-modal__description' },\n})\nexport class GaModalDescriptionDirective implements AfterViewInit {\n readonly renderer = inject(Renderer2);\n readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalDescription${nextUniqueModalDescriptionId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.describedBy.set(this.id);\n }\n}\n\nlet nextUniqueModalLabelId = 0;\n@Directive({\n selector: '[gaModalLabel]',\n host: { class: 'ga-modal__label' },\n})\nexport class GaModalLabelDirective {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalLabel${nextUniqueModalLabelId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { GaModalDescriptionDirective } from './modal.directives';\n\n@Component({\n selector: 'ga-modal-description',\n template: `<ng-content />`,\n hostDirectives: [GaModalDescriptionDirective],\n host: {\n class: 'ga-modal__description',\n },\n})\nexport class GaModalDescriptionComponent {}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-content',\n template: `<ng-content />`,\n hostDirectives: [CdkScrollable],\n host: {\n class: 'ga-modal__content',\n },\n})\nexport class GaModalContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-actions',\n template: ` <ng-content />`,\n host: {\n class: 'ga-modal__actions',\n },\n})\nexport class GaModalActionsComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_MODAL_I18N_FACTORY() {\n return new GaModalI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_MODAL_I18N_FACTORY,\n})\nexport abstract class GaModalI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaModalI18nDefault extends GaModalI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaModalI18n(value: GaModalI18n | (() => GaModalI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaModalI18n, useFactory: value }\n : { provide: GaModalI18n, useValue: value },\n ]);\n}\n","import { Component, inject } from '@angular/core';\nimport { GaButtonModule } from '../button';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalI18n } from './modal-i18n.service';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaIconModule } from '../icon';\n\n@Component({\n selector: 'ga-modal-header',\n imports: [GaButtonModule, GaIconModule],\n template: `\n @if (modalRef.instance.options.type !== 'none') {\n <div class=\"ga-modal__icon\">\n @switch (modalRef.instance.options.type) {\n @case ('info') {\n <ga-icon [icon]=\"icons.Info\" size=\"48\" />\n }\n @case ('warning') {\n <ga-icon [icon]=\"icons.TriangleAlert\" size=\"48\" />\n }\n @case ('danger') {\n <ga-icon [icon]=\"icons.OctagonAlert\" size=\"48\" />\n }\n @case ('success') {\n <ga-icon [icon]=\"icons.CircleCheck\" size=\"48\" />\n }\n }\n </div>\n }\n <div class=\"ga-modal__heading\">\n <ng-content select=\"[gaModalLabel]\" />\n <ng-content select=\"[gaModalTitle]\" />\n <ng-content select=\"ga-modal-description\" />\n </div>\n <button\n type=\"button\"\n [gaIconButton]=\"icons.X\"\n gaIconButtonVariant=\"ghost\"\n class=\"ga-modal__close-icon\"\n (click)=\"modalRef.instance.close()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n `,\n host: {\n class: 'ga-modal__top-section',\n },\n})\nexport class GaModalHeaderComponent {\n protected readonly icons = {\n X,\n Info,\n CircleCheck,\n TriangleAlert,\n OctagonAlert,\n };\n\n protected readonly modalRef = inject(GaModalRef);\n protected readonly i18n = inject(GaModalI18n);\n}\n","import { NgModule } from '@angular/core';\nimport {\n GaModalCloseDirective,\n GaModalDescriptionDirective,\n GaModalLabelDirective,\n GaModalTitleDirective,\n} from './modal.directives';\nimport { GaModalDescriptionComponent } from './modal-description.component';\nimport { GaModalContentComponent } from './modal-content.component';\nimport { GaModalActionsComponent } from './modal-actions.component';\nimport { GaModalHeaderComponent } from './modal-header.component';\n\n@NgModule({\n imports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n exports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n})\nexport class GaModalModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and ngControl.\n */\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaRadioGroupComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'radiogroup',\n class: 'ga-radio-group',\n },\n})\nexport class GaRadioGroupComponent implements ControlValueAccessor {\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n readonly name = input<string>(`ga-radio-group-${nextUniqueId++}`);\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n readonly value = input<string | null>(null);\n /** Whether the radio group is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly valueModel = linkedSignal(() => this.value());\n readonly disabledModel = linkedSignal(() => this.disabled());\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n writeValue(value: any) {\n this.valueModel.set(value);\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledModel.set(isDisabled);\n }\n\n onValueChange(value: string | null) {\n if (this.valueModel() === value) {\n return;\n }\n this.valueModel.set(value);\n this.change.emit(value);\n if (this._onModelChanged) {\n this._onModelChanged(value);\n }\n }\n\n onBlur() {\n if (this._onTouched) {\n this._onTouched();\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaRadioGroupComponent } from './radio-group.component';\nimport { injectNgControlState } from '../utils/error-state';\n\n// Increasing integer for generating unique ids for radio button components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-button',\n templateUrl: './radio-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ga-radio-button',\n '[class.ga-radio-button--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaRadioButtonComponent {\n private readonly radioGroup = inject(GaRadioGroupComponent, {\n optional: true,\n });\n\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n private readonly implicitNgControlState = injectNgControlState();\n\n private _uniqueId = `ga-radio-button-${++nextUniqueId}`;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly inputId = input<string | null>(null, { alias: 'id' });\n readonly inputName = input<string | null>(null, { alias: 'name' });\n readonly inputChecked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inputDisabled = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly id = computed(() => this.inputId() ?? this._uniqueId);\n readonly name = computed(\n () => this.radioGroup?.name() ?? this.inputName() ?? this._uniqueId,\n );\n readonly disabled = computed(\n () => this.radioGroup?.disabledModel() || this.inputDisabled(),\n );\n\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n protected readonly checked = computed(\n () => this.radioGroup?.valueModel() === this.value() || this.inputChecked(),\n );\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.change.emit(this.value());\n this.radioGroup?.onValueChange(this.value());\n }\n\n onBlur() {\n this.radioGroup?.onBlur();\n }\n}\n","<input\n type=\"radio\"\n class=\"ga-radio-button__native\"\n [attr.id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n<div class=\"ga-radio-button__marker\"></div>\n<label class=\"ga-radio-button__label\" [attr.for]=\"id()\"\n ><ng-content></ng-content\n></label>\n","import { NgModule } from '@angular/core';\nimport { GaRadioButtonComponent } from './radio-button.component';\nimport { GaRadioGroupComponent } from './radio-group.component';\n\n@NgModule({\n imports: [GaRadioButtonComponent, GaRadioGroupComponent],\n exports: [GaRadioButtonComponent, GaRadioGroupComponent],\n})\nexport class GaRadioModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(click)': 'onClick()',\n '[attr.hidden]': `hidden() ? '' : null`,\n },\n})\nexport class GaOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly hidden = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (this.value() !== this.cdkOption && this.cdkOption.value === undefined) {\n this.cdkOption.value = this.value();\n }\n\n effect(() => {\n this.cdkOption.disabled = this.disabled() || this.hidden();\n });\n }\n\n onClick() {\n if (!this.cdkOption.disabled) {\n this.selectComponent.autoClose();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-select-value',\n template: `<ng-content />`,\n})\nexport class GaSelectValueComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { GaOptionComponent } from './option.component';\n\n@Component({\n selector: 'ga-select-default-value',\n templateUrl: './select-default-value.component.html',\n imports: [GaIconModule],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaSelectDefaultValueComponent {\n protected readonly selectComponent = inject(GaSelectComponent);\n\n protected readonly icons = { X };\n\n protected readonly singleViewValue = computed(() => {\n const options = this.selectComponent.selectedOptions();\n if (!options.length) {\n return '';\n }\n return options[0].cdkOption.getLabel();\n });\n\n protected deselectOption(option: GaOptionComponent): void {\n this.selectComponent.deselectValue(option.cdkOption.value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (option of selectComponent.selectedOptions(); track option) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{ option.cdkOption.getLabel() }}</span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"deselectOption(option); $event.stopPropagation()\"\n />\n }\n </div>\n }\n} @else {\n {{ singleViewValue() }}\n}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_SELECT_I18N_FACTORY() {\n return new GaSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaSelectI18n {\n abstract clearLabel: string;\n abstract defaultSearchInputLabel: string;\n}\n\n@Injectable()\nexport class GaSelectI18nDefault extends GaSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A default label for the search input */\n defaultSearchInputLabel = 'Search';\n}\n\nexport function provideGaSelectI18n(\n value: GaSelectI18n | (() => GaSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaSelectI18n, useFactory: value }\n : { provide: GaSelectI18n, useValue: value },\n ]);\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [GaSpinnerComponent],\n exports: [GaSpinnerComponent],\n})\nexport class GaSpinnerModule {}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-select-dropdown',\n templateUrl: './select-dropdown.component.html',\n imports: [GaSelectDropdownSpinnerComponent],\n hostDirectives: [CdkListbox],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n","import {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaOptionComponent } from './option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaSelectValueComponent } from './select-value.component';\nimport { GaSelectDefaultValueComponent } from './select-default-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaSelectI18n } from './select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-select',\n templateUrl: './select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaSelectDefaultValueComponent,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox().id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox().id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaSelectComponent\n implements ControlValueAccessor, AfterContentInit\n{\n private readonly _uniqueId = `ga-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly searchInputLabel = input<string | null>(null);\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly compareWith = input<(o1: any, o2: any) => boolean>();\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly textValue = model<string>('');\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n\n readonly opened = output();\n readonly closed = output();\n\n // TODO: if we rename this to options, it breaks, why?\n readonly gaOptions = contentChildren(GaOptionComponent, {\n descendants: true,\n read: GaOptionComponent,\n });\n protected readonly cdkListbox = contentChild.required(CdkListbox);\n protected readonly gaDropdown = contentChild.required(\n GaSelectDropdownComponent,\n );\n protected readonly customSelectValue = contentChild(GaSelectValueComponent);\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly content = viewChild('ngContent', { read: ElementRef });\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n protected readonly visibleOptions = computed(() => {\n return this.gaOptions().filter((option) => !option.hidden());\n });\n readonly selectedOptions = computed(() => {\n return this.gaOptions().filter((option) => option.selected());\n });\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n readonly hasValue = computed(() => {\n if (!this.customSelectValue()) {\n // When no custom value component exists, we determine if there's a value\n // by checking selected options (which provide the display labels).\n return this.gaOptions().some((option) => option.selected());\n }\n // With a custom value component, we can check the value directly\n // which is useful for asynchronous selects, e.g. to display selected value without options\n return this.value() !== null || this.canSelectNullable();\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n const options = this.visibleOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.textValue()) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n }\n\n ngAfterContentInit() {\n effect(\n () => {\n this.cdkListbox().multiple = this.multiple();\n this.cdkListbox().useActiveDescendant = this.searchable();\n this.cdkListbox().compareWith = this.compareWith();\n this.cdkListbox().value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n },\n { injector: this.injector },\n );\n\n // track value changes (pull)\n this.cdkListbox().valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n // this is needed because value could be also changed via keyboard\n this.autoClose();\n });\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox().focus();\n }\n\n setPreviousItemActive() {\n this.setItemActive(-1);\n }\n\n setNextItemActive() {\n this.setItemActive(1);\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox().toggle(cdkOption);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable() || !this.searchable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n this.setNextItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'ArrowUp':\n this.setPreviousItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Space':\n event.stopPropagation();\n break;\n case 'Enter':\n this.setActiveItemAsSelected();\n this.autoClose();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.textValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.scrollActiveOptionIntoView();\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.textValue.set('');\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n this.cdkListbox().deselectValue(value);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n\n private syncValue() {\n let { value } = this.cdkListbox();\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private setItemActive(direction: 1 | -1) {\n const options = this.gaOptions();\n const currentIndex = options.findIndex(({ cdkOption }) =>\n cdkOption.isActive(),\n );\n\n const findNextEnabled = (startIndex: number) => {\n let index = startIndex;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of options) {\n // calculate next index with wrapping (using modulo)\n index = (index + direction + options.length) % options.length;\n if (!options[index].cdkOption.disabled) {\n return index;\n }\n }\n return -1; // no enabled options found\n };\n\n const nextIndex = findNextEnabled(currentIndex);\n if (nextIndex !== -1) {\n this.cdkListbox()._setActiveOption(options[nextIndex].cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n // NOTE: since cdkListbox is not destroyed on close,\n // we need to reset the active option every time the overlay is opened\n const firstEnabledOption = this.visibleOptions().find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = this.visibleOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstEnabledOption) {\n this.cdkListbox()._setActiveOption(firstEnabledOption.cdkOption);\n }\n\n afterNextRender(\n {\n mixedReadWrite: () => {\n // NOTE: since dropdown is not destroyed on close,\n // we need to reset scroll position every time the overlay is opened\n // to ensure consistent scroll position when reopening\n this.gaDropdown().resetScroll();\n\n const activeOption = this.visibleOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n },\n },\n { injector: this.injector },\n );\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!textValue() || multiple())) {\n @if (customSelectValue()) {\n <div class=\"ga-select__value\">\n <ng-content select=\"ga-select-value\" />\n </div>\n } @else {\n <ga-select-default-value />\n }\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"textValue()\"\n (input)=\"open(); textValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox().id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"searchInputLabel() ?? i18n.defaultSearchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-optgroup',\n template: `\n @if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaOptgroupComponent {\n readonly label = input<string>();\n}\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-select required validation\n */\nexport const GA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-select[required][formControlName], ga-select[required][formControl], ga-select[required][ngModel]`,\n providers: [GA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaSelectComponent } from './select.component';\nimport { GaOptionComponent } from './option.component';\nimport { GaOptgroupComponent } from './opt-group.component';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\nimport { GaSelectRequiredValidator } from './select-required.validator';\nimport { GaSelectValueComponent } from './select-value.component';\n\n@NgModule({\n imports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n exports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n})\nexport class GaSelectModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-data-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './data-option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(keydown.enter)': 'autoClose($event);',\n '(keydown.space)': 'autoClose($event);',\n '(click)': 'autoClose();',\n },\n})\nexport class GaDataOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaDataSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (\n this.value() !== this.cdkOption.value &&\n this.cdkOption.value === undefined\n ) {\n this.cdkOption.value = this.value();\n }\n\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n }\n\n autoClose(event?: Event) {\n if (this.cdkOption.isSelected()) {\n // if already selected, auto close\n this.selectComponent.autoClose();\n event?.preventDefault();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_DATA_SELECT_I18N_FACTORY() {\n return new GaDataSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaDataSelectI18n {\n abstract clearLabel: string;\n abstract searchInputLabel: string;\n abstract noOptionsLabel: string;\n abstract displayLimitReachedLabel: (counter: number) => string;\n}\n\n@Injectable()\nexport class GaDataSelectI18nDefault extends GaDataSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A label for the search input */\n searchInputLabel = 'Search';\n\n /** A label shown when there are no options to display */\n noOptionsLabel = 'No options';\n\n /** A label shown when the display limit is reached in multi-select mode */\n displayLimitReachedLabel = (counter: number) => `+${counter} more`;\n}\n\nexport function provideGaDataSelectI18n(\n value: GaDataSelectI18n | (() => GaDataSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaDataSelectI18n, useFactory: value }\n : { provide: GaDataSelectI18n, useValue: value },\n ]);\n}\n","import { Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\n\n@Component({\n selector: 'ga-data-select-value',\n templateUrl: './data-select-value.component.html',\n imports: [GaIconModule, NgTemplateOutlet],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaDataSelectValueComponent {\n protected readonly selectComponent = inject(GaDataSelectComponent);\n protected readonly i18n = inject(GaDataSelectI18n);\n\n protected readonly icons = { X };\n\n readonly customValueTemplate = input<TemplateRef<any>>();\n\n protected readonly customValueTemplateContext = (item: any) => {\n if (!item) {\n return { $implicit: '', value: null, item: null };\n }\n return {\n $implicit: this.selectComponent.getItemLabel(item),\n value: this.selectComponent.getItemValue(item),\n item,\n };\n };\n\n protected readonly singleViewValue = computed(() => {\n if (!this.selectComponent.hasValue()) {\n return '';\n }\n const selectValue = this.selectComponent.value();\n if (!this.selectComponent.bindValue()) {\n return this.selectComponent.getItemLabel(selectValue);\n }\n const item = this.selectComponent\n .items()\n .find((item) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n selectValue,\n ),\n );\n return this.selectComponent.getItemLabel(item);\n });\n\n protected readonly selectedItems = computed(() => {\n const value = this.selectComponent.value();\n if (!this.selectComponent.hasValue() || !Array.isArray(value)) {\n return [];\n }\n if (!this.selectComponent.bindValue()) {\n return value;\n }\n return this.selectComponent\n .items()\n .filter((item) =>\n value.some((v) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n v,\n ),\n ),\n );\n });\n\n protected readonly visibleSelectedItems = computed(() => {\n const items = this.selectedItems();\n const limit = this.selectComponent.valueDisplayLimit();\n if (limit === null || limit >= items.length) {\n return items;\n }\n return items.slice(0, limit);\n });\n\n protected readonly hiddenItemsCount = computed(() => {\n return this.selectedItems().length - this.visibleSelectedItems().length;\n });\n\n protected deselectOption(value: any): void {\n this.selectComponent.deselectValue(value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (\n selectedItem of visibleSelectedItems();\n track selectComponent.getItemValue(selectedItem)\n ) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customValueTemplateContext(selectedItem)\"\n />\n } @else {\n {{ selectComponent.getItemLabel(selectedItem) }}\n }\n </span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"\n deselectOption(selectComponent.getItemValue(selectedItem));\n $event.stopPropagation()\n \"\n />\n }\n </div>\n }\n @if (hiddenItemsCount() > 0) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{\n i18n.displayLimitReachedLabel(hiddenItemsCount())\n }}</span>\n </div>\n }\n} @else {\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"\n customValueTemplateContext(selectComponent.selectedItem())\n \"\n />\n } @else {\n {{ singleViewValue() }}\n }\n}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-data-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaDataSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaDataSelectDropdownSpinnerComponent } from './data-select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-data-select-dropdown',\n templateUrl: './data-select-dropdown.component.html',\n imports: [GaDataSelectDropdownSpinnerComponent],\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxUseActiveDescendant: useActiveDescendant',\n 'cdkListboxNavigationWrapDisabled: navigationWrapDisabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaDataSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","<ng-content />\n\n@if (loading()) {\n <ga-data-select-dropdown-spinner />\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ga-data-optgroup',\n imports: [NgTemplateOutlet],\n template: `\n @if (customLabelTemplate(); as templateRef) {\n <div class=\"ga-dropdown__caption\">\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customLabelContext()\"\n />\n </div>\n } @else if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaDataOptgroupComponent {\n readonly label = input<string>();\n readonly customLabelTemplate = input<TemplateRef<any>>();\n readonly customLabelContext = input<any>();\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectValueTpl]',\n})\nexport class GaDataSelectValueDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptionTpl]',\n})\nexport class GaDataSelectOptionLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptgroupLabelTpl]',\n})\nexport class GaDataSelectOptgroupLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import {\n Component,\n ElementRef,\n OnDestroy,\n input,\n output,\n inject,\n booleanAttribute,\n computed,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-intersection-trigger',\n template: ``,\n styles: `\n :host {\n height: 0px;\n display: block;\n flex-shrink: 0;\n }\n `,\n})\nexport class GaIntersectionTriggerComponent implements OnDestroy {\n private observer?: IntersectionObserver;\n\n private readonly anchor = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly rootElement = input<ElementRef<HTMLElement>>();\n readonly rootMargin = input<string>('0px');\n readonly parentAsRoot = input(false, { transform: booleanAttribute });\n readonly trigger = output();\n\n protected root = computed(() => {\n return this.parentAsRoot()\n ? this.anchor.nativeElement.parentElement\n : this.rootElement()?.nativeElement;\n });\n\n constructor() {\n afterNextRender(() => {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.trigger.emit();\n }\n },\n {\n root: this.root(),\n rootMargin: this.rootMargin(),\n threshold: 0,\n },\n );\n this.observer.observe(this.anchor.nativeElement);\n });\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n numberAttribute,\n OnInit,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaDataOptionComponent } from './data-option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaDataSelectValueComponent } from './data-select-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaDataSelectDropdownComponent } from './data-select-dropdown.component';\nimport { GaDataOptgroupComponent } from './data-optgroup.component';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\nimport { IGaSelectOption } from './data-select-option.interface';\nimport { GaIntersectionTriggerComponent } from '../utils/intersection-trigger.directive';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-data-select',\n templateUrl: './data-select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaDataSelectValueComponent,\n GaDataSelectDropdownComponent,\n GaDataOptionComponent,\n GaDataOptgroupComponent,\n GaIntersectionTriggerComponent,\n NgTemplateOutlet,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDataSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox()?.id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox()?.id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaDataSelectComponent implements OnInit, ControlValueAccessor {\n private readonly _uniqueId = `ga-data-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaDataSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly searchValue = signal<string | null>(null);\n\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly customFilter = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly noOptionsLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n readonly items = input<IGaSelectOption[]>([]);\n readonly bindValue = input<string>();\n readonly bindLabel = input<string>();\n readonly groupBy = input<string | ((item: IGaSelectOption) => string)>();\n readonly loading = input(false, { transform: booleanAttribute });\n readonly withOptionInput = input(null, { transform: booleanAttribute });\n readonly valueDisplayLimit = input(null, { transform: numberAttribute });\n\n readonly searchValueChange = output<string | null>();\n readonly opened = output();\n readonly closed = output();\n readonly optionsEndReached = output();\n\n protected readonly dropdownElRef = viewChild<\n unknown,\n ElementRef<HTMLElement>\n >('selectDropdown', {\n read: ElementRef,\n });\n protected readonly gaOptions = viewChildren(GaDataOptionComponent);\n protected readonly cdkListbox = viewChild(CdkListbox);\n protected readonly gaDropdown = viewChild(GaDataSelectDropdownComponent);\n protected readonly customValueTemplate = contentChild(\n GaDataSelectValueDirective,\n );\n protected readonly customOptionLabelTemplate = contentChild(\n GaDataSelectOptionLabelDirective,\n );\n protected readonly customOptgroupLabelTemplate = contentChild(\n GaDataSelectOptgroupLabelDirective,\n );\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n readonly selectedItem = computed(() => {\n if (!this.bindValue()) {\n return this.value();\n }\n return this.items().find((item) =>\n this.compareFn()(this.getItemValue(item), this.value()),\n );\n });\n\n // Selected items for multi-select\n protected readonly selectedItems = computed(() => {\n const value = this.value();\n if (!this.hasValue() || !Array.isArray(value)) {\n return [];\n }\n return this.items().filter((item) =>\n value.some((v) => this.compareFn()(this.getItemValue(item), v)),\n );\n });\n\n // Template context factory for option labels\n protected getOptionLabelTemplateContext(item: IGaSelectOption) {\n return {\n $implicit: this.getItemLabel(item),\n value: this.getItemValue(item),\n item: item,\n };\n }\n\n // Template context factory for optgroup labels\n protected getOptgroupLabelTemplateContext(group: {\n label: string;\n items: IGaSelectOption[];\n }) {\n return {\n $implicit: group.label,\n label: group.label,\n items: group.items,\n };\n }\n\n protected readonly filteredItems = computed(() => {\n const searchText = this.searchValue()?.toLowerCase() ?? '';\n if (!searchText || !this.searchable() || this.customFilter()) {\n return this.items();\n }\n\n return this.items().filter((item) => {\n const label = this.getItemLabel(item);\n return label.toLowerCase().includes(searchText);\n });\n });\n\n // Returns selected values not in filtered items, ensuring cdkListbox maintains state during filtering\n protected readonly virtualItems = computed(() => {\n const value = this.value();\n if (this.bindValue() || !Array.isArray(value)) {\n return [];\n }\n\n return value.filter((val: any) => {\n return !this.filteredItems().some((item) =>\n this.compareFn()(this.getItemValue(item), val),\n );\n });\n });\n\n protected readonly groupedItems = computed(() => {\n const items = this.filteredItems();\n const groupByKey = this.groupBy();\n\n if (!groupByKey) {\n return [{ label: null, items }];\n }\n\n const groups = new Map<string, IGaSelectOption[]>();\n items.forEach((item) => {\n const groupLabel =\n typeof groupByKey === 'function'\n ? groupByKey(item)\n : this.getNestedValue(item, groupByKey);\n if (!groups.has(groupLabel)) {\n groups.set(groupLabel, []);\n }\n groups.get(groupLabel)!.push(item);\n });\n\n return Array.from(groups.entries()).map(([label, items]) => ({\n label,\n items,\n }));\n });\n\n protected readonly hasNoOptions = computed(() => {\n return this.filteredItems().length === 0;\n });\n\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n\n readonly hasValue = computed(() => {\n const value = this.value();\n if (!this.multiple() && (value === null || value === undefined)) {\n return this.canSelectNullable();\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n readonly listboxCompareWith = computed(() => {\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n // for some reason cdkListbox compareWith is sometimes called with null/undefined values\n // in that case, use strict equality to avoid null reference issues\n return o1 === o2;\n }\n return this.compareFn()(o1, o2);\n };\n });\n\n // Helper method to get the label for an item\n getItemLabel(item: IGaSelectOption): string {\n const bindLabel = this.bindLabel();\n if (!bindLabel) {\n return String(item);\n }\n return String(this.getNestedValue(item, bindLabel));\n }\n\n // Helper method to get the value for an item\n getItemValue(item: IGaSelectOption): any {\n const bindValue = this.bindValue();\n if (!bindValue) {\n return item;\n }\n if (this.searchable()) {\n return item;\n }\n return this.getNestedValue(item, bindValue);\n }\n\n // Helper method to check if an item is disabled\n getItemDisabled(item: IGaSelectOption): boolean {\n return item?.$disabled === true;\n }\n\n // Helper method to get the typeahead label for an item\n getItemTypeaheadLabel(item: IGaSelectOption): string | null {\n return item?.$typeaheadLabel;\n }\n\n // Helper method to get nested property value\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, prop) => current?.[prop], obj);\n }\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n if (isDevMode()) {\n effect(() => {\n if (this.bindValue() && this.searchable()) {\n console.warn(\n 'GaDataSelectComponent: `bindValue` is ignored with `searchable` mode, value and item must be of the same type. See docs for more details.',\n );\n }\n });\n }\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n // emit search value changes\n this.searchValueChange.emit(this.searchValue());\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n\n effect(() => {\n // sync cdkListbox inputs & value (push)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n cdkListbox.value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n }\n });\n\n effect(() => {\n // when options change, ensure there is an active option selected and correct overlay position\n const options = this.gaOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.searchValue()) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()?._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // sync cdkListbox value changes (pull)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n untracked(() => {\n cdkListbox.valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n });\n });\n }\n });\n }\n\n ngOnInit() {\n // initialize proper default value for multiple select\n if (this.multiple() && this.value() === null) {\n this.value.set([]);\n }\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox()!.focus();\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox()!.toggle(cdkOption);\n this.syncValue();\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter': {\n // redirect the event to the cdkListbox\n event.preventDefault();\n event.stopPropagation();\n const eventClone = new KeyboardEvent(event.type, event);\n this.dropdownElRef()?.nativeElement.dispatchEvent(eventClone);\n if (event.code === 'Enter' && this.isOpen()) {\n // if the value wasn't changed via cdkListbox valueChange, close the dropdown manually\n this.autoClose();\n }\n break;\n }\n case 'Space':\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.searchValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.searchValue.set('');\n afterNextRender(\n {\n mixedReadWrite: () => {\n if (!this.multiple()) {\n this.markSelectedOptionAsActive();\n }\n this.scrollActiveOptionIntoView();\n },\n },\n { injector: this.injector },\n );\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.searchValue.set(null);\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n const comboboxValue = this.value();\n if (Array.isArray(comboboxValue)) {\n this.value.update((v) =>\n v.filter((item: any) => !this.compareFn()(item, value)),\n );\n } else {\n this.value.set(null);\n }\n this._onModelChanged?.(this.value());\n }\n\n protected endReached() {\n const dropdownEl = this.dropdownElRef()?.nativeElement;\n if (!dropdownEl) {\n return;\n }\n if (dropdownEl.scrollHeight > dropdownEl.clientHeight) {\n this.optionsEndReached.emit();\n }\n }\n\n private syncValue() {\n let { value } = this.cdkListbox()!;\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private markSelectedOptionAsActive() {\n const selectedOption = this.gaOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n const activeOption = this.gaOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!searchValue() || multiple())) {\n <ga-data-select-value\n [customValueTemplate]=\"customValueTemplate()?.templateRef\"\n />\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"searchValue() ?? ''\"\n (input)=\"open(); searchValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox()?.id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"i18n.searchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ga-data-select-dropdown\n [multiple]=\"multiple()\"\n [useActiveDescendant]=\"searchable()\"\n [navigationWrapDisabled]=\"loading()\"\n [compareWith]=\"listboxCompareWith()\"\n [loading]=\"loading()\"\n #selectDropdown\n >\n @if (hasNoOptions() && !loading()) {\n <div class=\"ga-dropdown__caption\">\n {{ noOptionsLabel() ?? i18n.noOptionsLabel }}\n </div>\n }\n\n @for (group of groupedItems(); track group.label) {\n @if (group.label) {\n <ga-data-optgroup\n [label]=\"group.label\"\n [customLabelTemplate]=\"customOptgroupLabelTemplate()?.templateRef\"\n [customLabelContext]=\"getOptgroupLabelTemplateContext(group)\"\n >\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"\n getOptionLabelTemplateContext(item)\n \"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n </ga-data-optgroup>\n } @else {\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n }\n }\n\n <!--\n Virtual items: Render hidden disabled options for all selected values.\n This ensures cdkListbox maintains state when filtering occurs - even when\n selected values don't match the currently visible filtered options, they\n remain valid options in the listbox, preventing state loss.\n -->\n @for (item of virtualItems(); track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n disabled\n hidden\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n\n <ga-intersection-trigger\n parentAsRoot\n rootMargin=\"0% 0% 20px 0%\"\n (trigger)=\"endReached()\"\n />\n </ga-data-select-dropdown>\n</ng-template>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-data-select required validation\n */\nexport const GA_DATA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDataSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-data-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-data-select[required][formControlName], ga-data-select[required][formControl], ga-data-select[required][ngModel]`,\n providers: [GA_DATA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaDataSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaDataSelectRequiredValidator } from './data-select-required.validator';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\n\n@NgModule({\n imports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n exports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n})\nexport class GaDataSelectModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSwitchComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for switch components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-switch',\n templateUrl: './switch.component.html',\n imports: [GaIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-switch',\n '[class.ga-switch--checked]': 'checkedModel()',\n '[class.ga-switch--disabled]': 'disabledModel()',\n '[class.ga-switch--invalid]': 'invalidComputed()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.aria-invalid]': 'null',\n },\n})\nexport class GaSwitchComponent implements ControlValueAccessor {\n protected readonly icons = { Check };\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n readonly _uniqueId = `ga-switch-${++nextUniqueId}`;\n\n /** @ignore */\n readonly tabindex = input<string | number>(0, {\n alias: 'tabindex',\n });\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n readonly checked = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input(false, {\n transform: booleanAttribute,\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly label = input<string>('');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n\n readonly disabledModel = linkedSignal(() => this.disabled());\n readonly checkedModel = linkedSignal(() => this.checked());\n\n readonly checkedChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => this.id() ?? this._uniqueId);\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalidComputed = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const newValue = target.checked;\n\n this.checkedModel.set(newValue);\n this._onModelChanged?.(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any) {\n const newValue = !!value;\n this.checkedModel.set(newValue);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabledModel.set(disabled);\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"ga-switch__input\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checkedModel()\"\n [disabled]=\"disabledModel()\"\n [attr.tabindex]=\"tabindex()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n [attr.aria-invalid]=\"invalidComputed() ? 'true' : null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-switch__marker\">\n <ga-icon\n [icon]=\"icons.Check\"\n class=\"ga-switch__check-icon\"\n [size]=\"16\"\n aria-hidden=\"true\"\n />\n <span class=\"ga-switch__slider\"></span>\n</div>\n@if (label()) {\n <label [attr.for]=\"inputId()\" class=\"ga-switch__label\">{{ label() }}</label>\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [GaSwitchComponent],\n exports: [GaSwitchComponent],\n})\nexport class GaSwitchModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\n\nexport type GaLinkVariant = 'inline';\nexport type GaLinkSize = 'small' | 'medium' | 'large';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[gaLink], button[gaLink]',\n template: `\n @if (leadingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"leadingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n <ng-content />\n @if (trailingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"trailingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n `,\n host: {\n class: 'ga-link',\n '[class.ga-link--inline]': `variant() === 'inline'`,\n '[class.ga-link--small]': `size() === 'small'`,\n '[class.ga-link--large]': `size() === 'large'`,\n '[class.ga-link--disabled]': `disabled()`,\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': `elementRef.nativeElement.tagName.toLowerCase() === 'button' ? 'link' : null`,\n '(click)': 'onClick($event)',\n },\n imports: [GaIconModule],\n})\nexport class GaLinkDirective {\n readonly variant = input<GaLinkVariant | ''>('', { alias: 'gaLink' });\n readonly size = input<GaLinkSize>('medium', { alias: 'gaLinkSize' });\n readonly disabled = input(false, {\n alias: 'gaLinkDisabled',\n transform: booleanAttribute,\n });\n readonly leadingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkLeadingIcon',\n });\n readonly trailingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkTrailingIcon',\n });\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly iconSize = computed(() =>\n this.size() === 'large' ? 24 : 16,\n );\n\n protected onClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaLinkDirective } from './link.directive';\n\n@NgModule({\n imports: [GaLinkDirective],\n exports: [GaLinkDirective],\n})\nexport class GaLinkModule {}\n","import {\n Component,\n Directive,\n TemplateRef,\n booleanAttribute,\n input,\n contentChild,\n viewChild,\n computed,\n} from '@angular/core';\nimport { GaIconData } from '../icon/icon.component';\n\n@Directive({\n selector: 'ng-template[gaTabContent]',\n})\nexport class GaTabContentDirective {}\n\n@Component({\n selector: 'ga-tab',\n templateUrl: './tab.component.html',\n})\nexport class GaTabComponent {\n readonly title = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly rightIcon = input<GaIconData>();\n readonly rightIconColor = input<string>();\n\n /** @ignore */\n readonly explicitContent = contentChild(GaTabContentDirective, {\n read: TemplateRef,\n });\n\n /** @ignore */\n readonly implicitContent = viewChild.required(TemplateRef);\n\n /** @ignore */\n readonly contentTpl = computed(() => {\n return this.explicitContent() ?? this.implicitContent();\n });\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import {\n Component,\n booleanAttribute,\n numberAttribute,\n input,\n contentChildren,\n effect,\n untracked,\n signal,\n output,\n linkedSignal,\n} from '@angular/core';\n\nimport { GaTabComponent } from './tab.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconComponent } from '../icon';\n\nexport interface GaTabChangeEvent {\n index: number;\n tab: GaTabComponent;\n}\n\nexport type GaTabsOrientation = 'horizontal' | 'vertical';\n\nexport interface GaBeforeTabChangeEvent {\n newIndex: number;\n oldIndex: number;\n preventChange: () => void;\n}\n\n// Increasing integer for generating unique id for tabpanels.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-tabs',\n imports: [NgTemplateOutlet, GaIconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.ga-tabs-container--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ga-tabs-container--vertical]': \"orientation() === 'vertical'\",\n },\n})\nexport class GaTabsComponent {\n /** @ignore */\n readonly uniqueId = `ga-tabs-${nextUniqueId++}`;\n\n /** @ignore */\n readonly selectedTab = signal<GaTabComponent | null>(null);\n\n /** @ignore */\n readonly tabs = contentChildren(GaTabComponent);\n\n readonly withKeyline = input(false, { transform: booleanAttribute });\n readonly orientation = input<GaTabsOrientation>('horizontal');\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string>(undefined, {\n alias: 'aria-labelledby',\n });\n readonly selectedIndexInput = input(0, {\n transform: numberAttribute,\n alias: 'selectedIndex',\n });\n readonly selectedIndex = linkedSignal(() => this.selectedIndexInput());\n\n readonly beforeTabChange = output<GaBeforeTabChangeEvent>();\n readonly selectedIndexChange = output<number>();\n readonly selectedTabChange = output<GaTabChangeEvent>();\n\n constructor() {\n effect(() => {\n const selectedIndex = this.selectedIndex();\n untracked(() => this.selectTab(selectedIndex, false));\n });\n\n effect(() => {\n const selectedTab = this.selectedTab();\n const tabs = this.tabs();\n if (selectedTab && !tabs.includes(selectedTab)) {\n untracked(() => this.selectTab(this.selectedIndex(), true));\n }\n });\n }\n\n /** @ignore */\n onTabClick(index: number) {\n let canChange = true;\n this.beforeTabChange.emit({\n newIndex: index,\n oldIndex: this.selectedIndex(),\n preventChange: () => {\n canChange = false;\n },\n });\n if (canChange) {\n this.selectTab(index, true);\n }\n }\n\n protected selectTab(index: number, broadcastEvent: boolean) {\n const tabs = this.tabs();\n if (!tabs?.length) {\n return;\n }\n\n const clampedTabIndex = Math.min(tabs!.length - 1, Math.max(index || 0, 0));\n const tabAtIndex = tabs.find((_, i) => i === clampedTabIndex)!;\n\n if (tabAtIndex.disabled()) {\n return;\n }\n\n if (clampedTabIndex !== this.selectedIndex()) {\n this.selectedIndex.set(clampedTabIndex);\n if (broadcastEvent) {\n this.selectedIndexChange.emit(clampedTabIndex);\n }\n }\n\n if (tabAtIndex !== this.selectedTab()) {\n this.selectedTab.set(tabAtIndex);\n if (broadcastEvent) {\n this.selectedTabChange.emit({\n index: clampedTabIndex,\n tab: tabAtIndex,\n });\n }\n }\n }\n}\n","<ul\n role=\"tablist\"\n [attr.id]=\"uniqueId\"\n class=\"ga-tabs\"\n [class.ga-tabs--horizontal]=\"orientation() === 'horizontal'\"\n [class.ga-tabs--vertical]=\"orientation() === 'vertical'\"\n [class.ga-tabs--keyline]=\"withKeyline()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-orientation]=\"orientation()\"\n>\n @for (tab of tabs(); track tab; let i = $index) {\n <li\n [attr.id]=\"uniqueId + '-tablabel-' + i\"\n class=\"ga-tabs__tab\"\n [class.ga-tabs__tab--selected]=\"i === selectedIndex()\"\n [class.ga-tabs__tab--disabled]=\"tab.disabled()\"\n role=\"tab\"\n [tabindex]=\"tab.disabled() ? -1 : undefined\"\n (click)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.enter)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.space)=\"onTabClick(i); $event.preventDefault()\"\n [attr.aria-selected]=\"i === selectedIndex()\"\n [attr.aria-disabled]=\"tab.disabled()\"\n [attr.aria-controls]=\"uniqueId + '-tabpanel-' + i\"\n >\n {{ tab.title() }}\n @let tabTitleIcon = tab.rightIcon();\n @if (tabTitleIcon) {\n <ga-icon\n [icon]=\"tabTitleIcon\"\n size=\"16\"\n class=\"ga-tabs__tab-icon\"\n [color]=\"tab.rightIconColor()\"\n />\n }\n </li>\n }\n</ul>\n\n@for (tab of tabs(); track tab; let i = $index) {\n @if (tab === selectedTab()) {\n <div\n role=\"tabpanel\"\n [attr.id]=\"uniqueId + '-tabpanel-' + i\"\n [attr.aria-labelledby]=\"uniqueId + '-tablabel-' + i\"\n >\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl()\"></ng-template>\n </div>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTabComponent, GaTabContentDirective } from './tab.component';\nimport { GaTabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n exports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n})\nexport class GaTabsModule {}\n","import {\n Attribute,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[gaTextArea]',\n host: {\n class: 'ga-text-area',\n '[class.ga-text-area--invalid]': 'invalid()',\n '[attr.id]': 'id()',\n '[attr.disabled]': 'disabled() ? true : null',\n },\n})\nexport class GaTextAreaDirective {\n private readonly implicitNgControlState = injectNgControlState();\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = `ga-text-area-${++nextUniqueId}`;\n\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(undefined, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n\n private readonly disabled = computed(\n () => this.disabledInput() ?? this.implicitNgControlState.disabled(),\n );\n protected readonly invalid = computed(\n () => this.invalidInput() ?? this.implicitNgControlState.inError(),\n );\n protected readonly id = computed(() => this.idInput() ?? this.uniqueId);\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTextAreaDirective } from './text-area.directive';\n\n@NgModule({\n imports: [GaTextAreaDirective],\n exports: [GaTextAreaDirective],\n})\nexport class GaTextAreaModule {}\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type GaChipVariant = 'default' | 'transparent';\n\n@Component({\n selector: 'ga-chip-listbox',\n templateUrl: './chip-listbox.component.html',\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxValue: value',\n 'cdkListboxDisabled: disabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-chip-listbox',\n },\n})\nexport class GaChipListboxComponent<ValueT = any | readonly any[]> {\n protected readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly variant = input<GaChipVariant>('default');\n readonly valueChange = output<ValueT>();\n\n readonly disabled = computed(() => this.cdkListbox.disabled);\n\n constructor() {\n effect(() => {\n this.cdkListbox.orientation = this.orientation();\n });\n\n this.cdkListbox.valueChange\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n const value = !this.cdkListbox.multiple ? event.value[0] : event.value;\n this.valueChange.emit(value);\n });\n }\n\n focus() {\n this.cdkListbox.focus();\n }\n}\n","<ng-content />\n","import { CdkListboxModule, CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@Component({\n selector: 'ga-chip',\n templateUrl: './chip.component.html',\n imports: [CdkListboxModule],\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: ['cdkOption: value', 'cdkOptionDisabled: disabled'],\n },\n ],\n host: {\n class: 'ga-quick-filter-button',\n '[class.ga-quick-filter-button--transparent]':\n \"listbox.variant() === 'transparent'\",\n '[class.ga-quick-filter-button--disabled]':\n 'disabled() || listbox.disabled()',\n '[class.ga-quick-filter-button--selected]': 'selected()',\n },\n})\nexport class GaChipComponent {\n private readonly cdkOption = inject(CdkOption, { self: true });\n protected readonly listbox = inject(GaChipListboxComponent);\n\n protected readonly _isSelected = signal<boolean | null>(null);\n readonly selected = this._isSelected.asReadonly();\n\n readonly value = input.required<any>();\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n },\n });\n }\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { GaChipComponent } from './chip.component';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@NgModule({\n imports: [GaChipComponent, GaChipListboxComponent],\n exports: [GaChipComponent, GaChipListboxComponent],\n})\nexport class GaChipModule {}\n","/*\n * Public API Surface of ngx-gaia\n */\n\nexport * from './lib/alert/index';\nexport * from './lib/badge/index';\nexport * from './lib/button/index';\nexport * from './lib/card/index';\nexport * from './lib/checkbox/index';\nexport * from './lib/datepicker/index';\nexport * from './lib/segmented-control/index';\nexport * from './lib/icon/index';\nexport * from './lib/input/index';\nexport * from './lib/form-field/index';\nexport * from './lib/menu/index';\nexport * from './lib/modal/index';\nexport * from './lib/tooltip/index';\nexport * from './lib/select/index';\nexport * from './lib/data-select/index';\nexport * from './lib/spinner/index';\nexport * from './lib/radio/index';\nexport * from './lib/switch/index';\nexport * from './lib/utils/index';\nexport * from './lib/link/index';\nexport * from './lib/tabs/index';\nexport * from './lib/text-area/index';\nexport * from './lib/chip/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextUniqueId","i2.GaIconButtonDirective","i1.GaIconComponent","i1","i2.GaButtonDirective","i3","i1.GaTooltipDirective","i2.GaIconComponent","i3.GaRadioButtonComponent","i1.GaSpinnerComponent","i2.GaLabelledByFormFieldDirective","i3.GaIconComponent"],"mappings":"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"}