@vsn-ux/ngx-gaia 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, numberAttribute, Component, ViewEncapsulation, Attribute, NgModule, ChangeDetectionStrategy, Injectable, makeEnvironmentProviders, booleanAttribute, output, computed, contentChild, forwardRef, Injector, signal, linkedSignal, Directive, model, HostListener, InjectionToken, effect, TemplateRef, NgZone, Input, afterRender, contentChildren, viewChild } from '@angular/core';
2
+ import { inject, ElementRef, input, numberAttribute, Component, ViewEncapsulation, Attribute, NgModule, ChangeDetectionStrategy, Injectable, makeEnvironmentProviders, booleanAttribute, output, computed, contentChild, forwardRef, Injector, signal, linkedSignal, Directive, model, HostListener, InjectionToken, TemplateRef, NgZone, Input, effect, afterRender, contentChildren, viewChild } from '@angular/core';
3
3
  import * as i1 from 'lucide-angular';
4
4
  import { LucideAngularModule, X, CircleCheck, TriangleAlert, OctagonAlert, Info, Minus, Check, ChevronUp, ChevronDown } from 'lucide-angular';
5
5
  import { NG_VALUE_ACCESSOR, NgControl, NG_VALIDATORS, CheckboxRequiredValidator, RequiredValidator } from '@angular/forms';
6
- import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
7
- import * as i1$1 from '@angular/cdk/menu';
8
- import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';
9
- import { toSignal } from '@angular/core/rxjs-interop';
10
- import { merge, map, Subject, takeUntil } from 'rxjs';
6
+ import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
11
7
  import * as i1$3 from '@angular/cdk/overlay';
12
8
  import { Overlay, CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
13
9
  import { ComponentPortal } from '@angular/cdk/portal';
10
+ import { Subject, takeUntil, map, merge } from 'rxjs';
14
11
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
12
+ import * as i1$1 from '@angular/cdk/menu';
13
+ import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';
14
+ import { toSignal } from '@angular/core/rxjs-interop';
15
15
  import * as i1$2 from '@angular/cdk/listbox';
16
16
  import { CdkOption, CdkListbox } from '@angular/cdk/listbox';
17
17
 
@@ -573,8 +573,11 @@ class GaFormControlDirective {
573
573
  _formControlId = input(undefined, {
574
574
  alias: 'gaFormControl',
575
575
  });
576
+ _formControlDisabled = input(undefined, {
577
+ alias: 'gaFormControlDisabled',
578
+ });
576
579
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
577
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.5", type: GaFormControlDirective, isStandalone: true, selector: "[gaFormControl]", inputs: { _formControlId: { classPropertyName: "_formControlId", publicName: "gaFormControl", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
580
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.5", type: GaFormControlDirective, isStandalone: true, selector: "[gaFormControl]", inputs: { _formControlId: { classPropertyName: "_formControlId", publicName: "gaFormControl", isSignal: true, isRequired: false, transformFunction: null }, _formControlDisabled: { classPropertyName: "_formControlDisabled", publicName: "gaFormControlDisabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
578
581
  { provide: GA_FORM_CONTROL, useExisting: GaFormControlDirective },
579
582
  ], ngImport: i0 });
580
583
  }
@@ -603,14 +606,20 @@ class GaInputDirective {
603
606
  transform: booleanAttribute,
604
607
  });
605
608
  idInput = input(undefined, { alias: 'id' });
609
+ disabledInput = input(false, {
610
+ alias: 'disabled',
611
+ transform: booleanAttribute,
612
+ });
606
613
  invalid = computed(() => {
607
614
  return this.invalidInput() ?? this.implicitInvalid();
608
615
  });
609
616
  id = computed(() => {
610
617
  return this.idInput() ?? this.uniqueId;
611
618
  });
619
+ disabled = linkedSignal(() => this.disabledInput());
612
620
  errors = this.implicitErrors.asReadonly();
613
621
  _formControlId = this.id;
622
+ _formControlDisabled = computed(() => this.disabled());
614
623
  ngDoCheck() {
615
624
  if (this.hasWrapper)
616
625
  return;
@@ -619,10 +628,11 @@ class GaInputDirective {
619
628
  if (implicitNgControl) {
620
629
  this.implicitInvalid.set(!!implicitNgControl.invalid && !!implicitNgControl.dirty);
621
630
  this.implicitErrors.set(implicitNgControl.errors);
631
+ this.disabled.set(!!implicitNgControl.disabled);
622
632
  }
623
633
  }
624
634
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
625
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaInputDirective, isStandalone: true, selector: "[gaInput]", inputs: { invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "id()", "class.ga-input": "!hasWrapper", "class.ga-input--invalid": "!hasWrapper && invalid()" } }, providers: [{ provide: GA_FORM_CONTROL, useExisting: GaInputDirective }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
635
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaInputDirective, isStandalone: true, selector: "[gaInput]", inputs: { invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "id()", "class.ga-input": "!hasWrapper", "class.ga-input--invalid": "!hasWrapper && invalid()" } }, providers: [{ provide: GA_FORM_CONTROL, useExisting: GaInputDirective }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
626
636
  }
627
637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaInputDirective, decorators: [{
628
638
  type: Component,
@@ -669,230 +679,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
669
679
  }, template: "<ng-content />\n" }]
670
680
  }] });
671
681
 
672
- class GaFieldLabelComponent {
673
- document = inject(DOCUMENT);
674
- formField = inject(GaFormFieldComponent);
675
- for = input();
676
- controlId = computed(() => {
677
- return this.for() ?? this.formField.controlId();
678
- });
679
- controlElement = computed(() => {
680
- const control = this.document.querySelector(`#${this.controlId()}`);
681
- if (control instanceof HTMLElement) {
682
- return control;
683
- }
684
- return null;
685
- });
686
- focusControl() {
687
- const control = this.controlElement();
688
- // only focus custom elements as native elements already
689
- // have support for connecting label and reacting to events
690
- if (control?.tagName.includes('-')) {
691
- control.focus();
692
- }
693
- }
694
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
695
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaFieldLabelComponent, isStandalone: true, selector: "ga-label", inputs: { for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<label
696
- [attr.for]="controlId()"
697
- class="ga-form-field__label"
698
- (click)="focusControl()"
699
- ><ng-content
700
- /></label>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
701
- }
702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldLabelComponent, decorators: [{
703
- type: Component,
704
- args: [{
705
- selector: 'ga-label',
706
- template: `<label
707
- [attr.for]="controlId()"
708
- class="ga-form-field__label"
709
- (click)="focusControl()"
710
- ><ng-content
711
- /></label>`,
712
- changeDetection: ChangeDetectionStrategy.OnPush,
713
- }]
714
- }] });
715
-
716
- class GaFieldInfoComponent {
717
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
718
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaFieldInfoComponent, isStandalone: true, selector: "ga-info", host: { classAttribute: "ga-form-field__info" }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
719
- }
720
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldInfoComponent, decorators: [{
721
- type: Component,
722
- args: [{
723
- selector: 'ga-info',
724
- template: `<ng-content />`,
725
- changeDetection: ChangeDetectionStrategy.OnPush,
726
- host: {
727
- class: 'ga-form-field__info',
728
- },
729
- }]
730
- }] });
731
-
732
- class GaFormFieldModule {
733
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
734
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, imports: [GaFormFieldComponent,
735
- GaFieldLabelComponent,
736
- GaFieldInfoComponent,
737
- GaFormControlDirective], exports: [GaFormFieldComponent,
738
- GaFieldLabelComponent,
739
- GaFieldInfoComponent,
740
- GaFormControlDirective] });
741
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule });
742
- }
743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, decorators: [{
744
- type: NgModule,
745
- args: [{
746
- imports: [
747
- GaFormFieldComponent,
748
- GaFieldLabelComponent,
749
- GaFieldInfoComponent,
750
- GaFormControlDirective,
751
- ],
752
- exports: [
753
- GaFormFieldComponent,
754
- GaFieldLabelComponent,
755
- GaFieldInfoComponent,
756
- GaFormControlDirective,
757
- ],
758
- }]
759
- }] });
760
-
761
- class GaMenuComponent {
762
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
763
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuComponent, isStandalone: true, selector: "ga-menu", host: { classAttribute: "ga-menu" }, hostDirectives: [{ directive: i1$1.CdkMenu }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{margin-top:var(--ga-size-8);margin-bottom:var(--ga-size-8)}\n"] });
764
- }
765
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuComponent, decorators: [{
766
- type: Component,
767
- args: [{ selector: 'ga-menu', template: `<ng-content />`, hostDirectives: [CdkMenu], host: {
768
- class: 'ga-menu',
769
- }, styles: [":host{margin-top:var(--ga-size-8);margin-bottom:var(--ga-size-8)}\n"] }]
770
- }] });
771
-
772
- class GaMenuItemComponent {
773
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
774
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuItemComponent, isStandalone: true, selector: "[gaMenuItem]", host: { classAttribute: "ga-menu__item" }, hostDirectives: [{ directive: i1$1.CdkMenuItem }], ngImport: i0, template: `<ng-content />`, isInline: true });
775
- }
776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuItemComponent, decorators: [{
777
- type: Component,
778
- args: [{
779
- selector: '[gaMenuItem]',
780
- template: `<ng-content />`,
781
- hostDirectives: [CdkMenuItem],
782
- host: {
783
- class: 'ga-menu__item',
784
- },
785
- }]
786
- }] });
787
-
788
- class GaMenuTitleComponent {
789
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
790
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuTitleComponent, isStandalone: true, selector: "ga-menu-title", host: { classAttribute: "ga-menu__title" }, ngImport: i0, template: `<ng-content />`, isInline: true });
791
- }
792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTitleComponent, decorators: [{
793
- type: Component,
794
- args: [{
795
- selector: 'ga-menu-title',
796
- template: `<ng-content />`,
797
- host: {
798
- class: 'ga-menu__title',
799
- },
800
- }]
801
- }] });
802
-
803
- class GaMenuTriggerDirective {
804
- cdkMenuTrigger = inject(CdkMenuTrigger);
805
- menuRef = input.required({
806
- alias: 'gaMenuTrigger',
807
- });
808
- isOpen = toSignal(merge(this.cdkMenuTrigger.opened.pipe(map(() => true)), this.cdkMenuTrigger.closed.pipe(map(() => false))), { initialValue: this.cdkMenuTrigger.isOpen() });
809
- constructor() {
810
- effect(() => {
811
- this.cdkMenuTrigger.menuTemplateRef = this.menuRef();
812
- });
813
- }
814
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
815
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.5", type: GaMenuTriggerDirective, isStandalone: true, selector: "[gaMenuTrigger]", inputs: { menuRef: { classPropertyName: "menuRef", publicName: "gaMenuTrigger", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["gaMenuTrigger"], hostDirectives: [{ directive: i1$1.CdkMenuTrigger }], ngImport: i0 });
816
- }
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerDirective, decorators: [{
818
- type: Directive,
819
- args: [{
820
- selector: '[gaMenuTrigger]',
821
- exportAs: 'gaMenuTrigger',
822
- standalone: true,
823
- hostDirectives: [CdkMenuTrigger],
824
- }]
825
- }], ctorParameters: () => [] });
826
-
827
- class GaMenuSeparatorComponent {
828
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
829
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuSeparatorComponent, isStandalone: true, selector: "ga-menu-separator", host: { classAttribute: "ga-menu__separator" }, ngImport: i0, template: `<ng-content />`, isInline: true });
830
- }
831
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, decorators: [{
832
- type: Component,
833
- args: [{
834
- selector: 'ga-menu-separator',
835
- template: `<ng-content />`,
836
- host: {
837
- class: 'ga-menu__separator',
838
- },
839
- }]
840
- }] });
841
-
842
- class GaMenuTriggerIconComponent {
843
- menuTrigger = inject(GaMenuTriggerDirective);
844
- icon = computed(() => {
845
- return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;
846
- });
847
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
848
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuTriggerIconComponent, isStandalone: true, selector: "ga-menu-trigger-icon", ngImport: i0, template: `<ga-icon [icon]="icon()" />`, isInline: true, dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }] });
849
- }
850
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, decorators: [{
851
- type: Component,
852
- args: [{
853
- selector: 'ga-menu-trigger-icon',
854
- imports: [GaIconModule],
855
- template: `<ga-icon [icon]="icon()" />`,
856
- }]
857
- }] });
858
-
859
- class GaMenuModule {
860
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
861
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuComponent,
862
- GaMenuItemComponent,
863
- GaMenuTriggerDirective,
864
- GaMenuSeparatorComponent,
865
- GaMenuTitleComponent,
866
- GaMenuTriggerIconComponent], exports: [GaMenuComponent,
867
- GaMenuItemComponent,
868
- GaMenuTriggerDirective,
869
- GaMenuSeparatorComponent,
870
- GaMenuTitleComponent,
871
- GaMenuTriggerIconComponent] });
872
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuTriggerIconComponent] });
873
- }
874
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, decorators: [{
875
- type: NgModule,
876
- args: [{
877
- imports: [
878
- GaMenuComponent,
879
- GaMenuItemComponent,
880
- GaMenuTriggerDirective,
881
- GaMenuSeparatorComponent,
882
- GaMenuTitleComponent,
883
- GaMenuTriggerIconComponent,
884
- ],
885
- exports: [
886
- GaMenuComponent,
887
- GaMenuItemComponent,
888
- GaMenuTriggerDirective,
889
- GaMenuSeparatorComponent,
890
- GaMenuTitleComponent,
891
- GaMenuTriggerIconComponent,
892
- ],
893
- }]
894
- }] });
895
-
896
682
  class GaTooltipComponent {
897
683
  mouseLeaveSubject = new Subject();
898
684
  afterMouseLeave = () => this.mouseLeaveSubject.asObservable();
@@ -1274,6 +1060,219 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1274
1060
  }]
1275
1061
  }] });
1276
1062
 
1063
+ class GaFieldLabelComponent {
1064
+ document = inject(DOCUMENT);
1065
+ formField = inject(GaFormFieldComponent);
1066
+ for = input();
1067
+ definition = input(null);
1068
+ state = input();
1069
+ controlId = computed(() => {
1070
+ return this.for() ?? this.formField.controlId();
1071
+ });
1072
+ controlElement = computed(() => {
1073
+ const control = this.document.querySelector(`#${this.controlId()}`);
1074
+ if (control instanceof HTMLElement) {
1075
+ return control;
1076
+ }
1077
+ return null;
1078
+ });
1079
+ focusControl() {
1080
+ const control = this.controlElement();
1081
+ // only focus custom elements as native elements already
1082
+ // have support for connecting label and reacting to events
1083
+ if (control?.tagName.includes('-')) {
1084
+ control.focus();
1085
+ }
1086
+ }
1087
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1088
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaFieldLabelComponent, isStandalone: true, selector: "ga-label", inputs: { for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "definition", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<label\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]=\"\n !!formField.formControl()?._formControlDisabled()\n \"\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", dependencies: [{ kind: "ngmodule", type: GaTooltipModule }, { kind: "directive", type: GaTooltipDirective, selector: "[gaTooltip]", inputs: ["gaTooltip", "gaTooltipDisabled", "gaTooltipControlMode", "gaTooltipShowControlMode", "gaTooltipHideControlMode", "gaTooltipOffsetSize", "gaTooltipPlacement"], exportAs: ["gaTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1089
+ }
1090
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldLabelComponent, decorators: [{
1091
+ type: Component,
1092
+ args: [{ selector: 'ga-label', imports: [GaTooltipModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\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]=\"\n !!formField.formControl()?._formControlDisabled()\n \"\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" }]
1093
+ }] });
1094
+
1095
+ class GaFieldInfoComponent {
1096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1097
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaFieldInfoComponent, isStandalone: true, selector: "ga-info", host: { classAttribute: "ga-form-field__info" }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1098
+ }
1099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFieldInfoComponent, decorators: [{
1100
+ type: Component,
1101
+ args: [{
1102
+ selector: 'ga-info',
1103
+ template: `<ng-content />`,
1104
+ changeDetection: ChangeDetectionStrategy.OnPush,
1105
+ host: {
1106
+ class: 'ga-form-field__info',
1107
+ },
1108
+ }]
1109
+ }] });
1110
+
1111
+ class GaFormFieldModule {
1112
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1113
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, imports: [GaFormFieldComponent,
1114
+ GaFieldLabelComponent,
1115
+ GaFieldInfoComponent,
1116
+ GaFormControlDirective], exports: [GaFormFieldComponent,
1117
+ GaFieldLabelComponent,
1118
+ GaFieldInfoComponent,
1119
+ GaFormControlDirective] });
1120
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule });
1121
+ }
1122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaFormFieldModule, decorators: [{
1123
+ type: NgModule,
1124
+ args: [{
1125
+ imports: [
1126
+ GaFormFieldComponent,
1127
+ GaFieldLabelComponent,
1128
+ GaFieldInfoComponent,
1129
+ GaFormControlDirective,
1130
+ ],
1131
+ exports: [
1132
+ GaFormFieldComponent,
1133
+ GaFieldLabelComponent,
1134
+ GaFieldInfoComponent,
1135
+ GaFormControlDirective,
1136
+ ],
1137
+ }]
1138
+ }] });
1139
+
1140
+ class GaMenuComponent {
1141
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuComponent, isStandalone: true, selector: "ga-menu", host: { classAttribute: "ga-menu" }, hostDirectives: [{ directive: i1$1.CdkMenu }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [":host{margin-top:var(--ga-size-8);margin-bottom:var(--ga-size-8)}\n"] });
1143
+ }
1144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuComponent, decorators: [{
1145
+ type: Component,
1146
+ args: [{ selector: 'ga-menu', template: `<ng-content />`, hostDirectives: [CdkMenu], host: {
1147
+ class: 'ga-menu',
1148
+ }, styles: [":host{margin-top:var(--ga-size-8);margin-bottom:var(--ga-size-8)}\n"] }]
1149
+ }] });
1150
+
1151
+ class GaMenuItemComponent {
1152
+ icon = input(undefined, {
1153
+ alias: 'gaMenuItemIcon',
1154
+ });
1155
+ description = input('', { alias: 'gaMenuItemDescription' });
1156
+ shortcut = input('', { alias: 'gaMenuItemShortcut' });
1157
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1158
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaMenuItemComponent, isStandalone: true, selector: "[gaMenuItem]", inputs: { icon: { classPropertyName: "icon", publicName: "gaMenuItemIcon", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "gaMenuItemDescription", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "gaMenuItemShortcut", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ga-menu__item" }, hostDirectives: [{ directive: i1$1.CdkMenuItem }], ngImport: i0, template: "@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", dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }] });
1159
+ }
1160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuItemComponent, decorators: [{
1161
+ type: Component,
1162
+ args: [{ selector: '[gaMenuItem]', imports: [GaIconModule], hostDirectives: [CdkMenuItem], host: {
1163
+ class: 'ga-menu__item',
1164
+ }, template: "@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" }]
1165
+ }] });
1166
+
1167
+ class GaMenuTitleComponent {
1168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuTitleComponent, isStandalone: true, selector: "ga-menu-title", host: { classAttribute: "ga-menu__title" }, ngImport: i0, template: `<ng-content />`, isInline: true });
1170
+ }
1171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTitleComponent, decorators: [{
1172
+ type: Component,
1173
+ args: [{
1174
+ selector: 'ga-menu-title',
1175
+ template: `<ng-content />`,
1176
+ host: {
1177
+ class: 'ga-menu__title',
1178
+ },
1179
+ }]
1180
+ }] });
1181
+
1182
+ class GaMenuTriggerDirective {
1183
+ cdkMenuTrigger = inject(CdkMenuTrigger);
1184
+ menuRef = input.required({
1185
+ alias: 'gaMenuTrigger',
1186
+ });
1187
+ isOpen = toSignal(merge(this.cdkMenuTrigger.opened.pipe(map(() => true)), this.cdkMenuTrigger.closed.pipe(map(() => false))), { initialValue: this.cdkMenuTrigger.isOpen() });
1188
+ constructor() {
1189
+ effect(() => {
1190
+ this.cdkMenuTrigger.menuTemplateRef = this.menuRef();
1191
+ });
1192
+ }
1193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1194
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.5", type: GaMenuTriggerDirective, isStandalone: true, selector: "[gaMenuTrigger]", inputs: { menuRef: { classPropertyName: "menuRef", publicName: "gaMenuTrigger", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["gaMenuTrigger"], hostDirectives: [{ directive: i1$1.CdkMenuTrigger }], ngImport: i0 });
1195
+ }
1196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerDirective, decorators: [{
1197
+ type: Directive,
1198
+ args: [{
1199
+ selector: '[gaMenuTrigger]',
1200
+ exportAs: 'gaMenuTrigger',
1201
+ standalone: true,
1202
+ hostDirectives: [CdkMenuTrigger],
1203
+ }]
1204
+ }], ctorParameters: () => [] });
1205
+
1206
+ class GaMenuSeparatorComponent {
1207
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1208
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuSeparatorComponent, isStandalone: true, selector: "ga-menu-separator", host: { classAttribute: "ga-menu__separator" }, ngImport: i0, template: `<ng-content />`, isInline: true });
1209
+ }
1210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, decorators: [{
1211
+ type: Component,
1212
+ args: [{
1213
+ selector: 'ga-menu-separator',
1214
+ template: `<ng-content />`,
1215
+ host: {
1216
+ class: 'ga-menu__separator',
1217
+ },
1218
+ }]
1219
+ }] });
1220
+
1221
+ class GaMenuTriggerIconComponent {
1222
+ menuTrigger = inject(GaMenuTriggerDirective);
1223
+ icon = computed(() => {
1224
+ return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;
1225
+ });
1226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1227
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaMenuTriggerIconComponent, isStandalone: true, selector: "ga-menu-trigger-icon", ngImport: i0, template: `<ga-icon [icon]="icon()" />`, isInline: true, dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }] });
1228
+ }
1229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, decorators: [{
1230
+ type: Component,
1231
+ args: [{
1232
+ selector: 'ga-menu-trigger-icon',
1233
+ imports: [GaIconModule],
1234
+ template: `<ga-icon [icon]="icon()" />`,
1235
+ }]
1236
+ }] });
1237
+
1238
+ class GaMenuModule {
1239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1240
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuComponent,
1241
+ GaMenuItemComponent,
1242
+ GaMenuTriggerDirective,
1243
+ GaMenuSeparatorComponent,
1244
+ GaMenuTitleComponent,
1245
+ GaMenuTriggerIconComponent], exports: [GaMenuComponent,
1246
+ GaMenuItemComponent,
1247
+ GaMenuTriggerDirective,
1248
+ GaMenuSeparatorComponent,
1249
+ GaMenuTitleComponent,
1250
+ GaMenuTriggerIconComponent] });
1251
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuItemComponent,
1252
+ GaMenuTriggerIconComponent] });
1253
+ }
1254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, decorators: [{
1255
+ type: NgModule,
1256
+ args: [{
1257
+ imports: [
1258
+ GaMenuComponent,
1259
+ GaMenuItemComponent,
1260
+ GaMenuTriggerDirective,
1261
+ GaMenuSeparatorComponent,
1262
+ GaMenuTitleComponent,
1263
+ GaMenuTriggerIconComponent,
1264
+ ],
1265
+ exports: [
1266
+ GaMenuComponent,
1267
+ GaMenuItemComponent,
1268
+ GaMenuTriggerDirective,
1269
+ GaMenuSeparatorComponent,
1270
+ GaMenuTitleComponent,
1271
+ GaMenuTriggerIconComponent,
1272
+ ],
1273
+ }]
1274
+ }] });
1275
+
1277
1276
  /**
1278
1277
  * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.
1279
1278
  * This allows it to support [(ngModel)] and ngControl.
@@ -1462,7 +1461,7 @@ class GaOptionComponent {
1462
1461
  }
1463
1462
  }
1464
1463
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1465
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaOptionComponent, isStandalone: true, selector: "ga-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, withInput: { classPropertyName: "withInput", publicName: "withInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class.ga-dropdown__item--selected": "selected()", "class.ga-dropdown__item--disabled": "cdkOption.disabled", "class.ga-dropdown__item--active": "active() && !cdkOption.disabled" }, classAttribute: "ga-dropdown__item" }, hostDirectives: [{ directive: i1$2.CdkOption, inputs: ["cdkOption", "value", "cdkOptionDisabled", "disabled", "cdkOptionTypeaheadLabel", "typeaheadLabel"] }], ngImport: i0, template: "@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<ng-content />\n", dependencies: [{ kind: "ngmodule", type: GaCheckboxModule }, { kind: "component", type: GaCheckboxComponent, selector: "ga-checkbox", inputs: ["value", "disabled", "checked", "name", "id", "indeterminate", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid", "aria-errormessage", "required"], outputs: ["change", "indeterminateChange"] }, { kind: "ngmodule", type: GaRadioModule }, { kind: "component", type: GaRadioButtonComponent, selector: "ga-radio-button", inputs: ["value", "id", "name", "checked", "disabled", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid", "aria-errormessage"], outputs: ["change"] }] });
1464
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaOptionComponent, isStandalone: true, selector: "ga-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, withInput: { classPropertyName: "withInput", publicName: "withInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class.ga-dropdown__item--selected": "selected()", "class.ga-dropdown__item--disabled": "cdkOption.disabled", "class.ga-dropdown__item--active": "active() && !cdkOption.disabled" }, classAttribute: "ga-dropdown__item" }, hostDirectives: [{ directive: i1$2.CdkOption, inputs: ["cdkOption", "value", "cdkOptionDisabled", "disabled", "cdkOptionTypeaheadLabel", "typeaheadLabel"] }], ngImport: i0, template: "@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", dependencies: [{ kind: "ngmodule", type: GaCheckboxModule }, { kind: "component", type: GaCheckboxComponent, selector: "ga-checkbox", inputs: ["value", "disabled", "checked", "name", "id", "indeterminate", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid", "aria-errormessage", "required"], outputs: ["change", "indeterminateChange"] }, { kind: "ngmodule", type: GaRadioModule }, { kind: "component", type: GaRadioButtonComponent, selector: "ga-radio-button", inputs: ["value", "id", "name", "checked", "disabled", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid", "aria-errormessage"], outputs: ["change"] }] });
1466
1465
  }
1467
1466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaOptionComponent, decorators: [{
1468
1467
  type: Component,
@@ -1481,7 +1480,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1481
1480
  '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',
1482
1481
  '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',
1483
1482
  '(click)': 'onClick()',
1484
- }, template: "@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<ng-content />\n" }]
1483
+ }, template: "@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" }]
1485
1484
  }], ctorParameters: () => [] });
1486
1485
 
1487
1486
  class GaSelectValueComponent {
@@ -1611,6 +1610,7 @@ class GaSelectComponent {
1611
1610
  return this.invalidInput() ?? this.implicitInvalid();
1612
1611
  });
1613
1612
  _formControlId = computed(() => this.id());
1613
+ _formControlDisabled = computed(() => this.disabled());
1614
1614
  constructor() {
1615
1615
  effect(() => {
1616
1616
  // if the select became disabled while open, close it