@vsn-ux/ngx-gaia 0.2.5 → 0.3.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,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,224 @@ 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, outputs: ["cdkMenuOpened", "gaMenuOpened", "cdkMenuClosed", "gaMenuClosed"] }], 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: [
1203
+ {
1204
+ directive: CdkMenuTrigger,
1205
+ outputs: ['cdkMenuOpened: gaMenuOpened', 'cdkMenuClosed: gaMenuClosed'],
1206
+ },
1207
+ ],
1208
+ }]
1209
+ }], ctorParameters: () => [] });
1210
+
1211
+ class GaMenuSeparatorComponent {
1212
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1213
+ 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 });
1214
+ }
1215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuSeparatorComponent, decorators: [{
1216
+ type: Component,
1217
+ args: [{
1218
+ selector: 'ga-menu-separator',
1219
+ template: `<ng-content />`,
1220
+ host: {
1221
+ class: 'ga-menu__separator',
1222
+ },
1223
+ }]
1224
+ }] });
1225
+
1226
+ class GaMenuTriggerIconComponent {
1227
+ menuTrigger = inject(GaMenuTriggerDirective);
1228
+ icon = computed(() => {
1229
+ return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;
1230
+ });
1231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1232
+ 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"] }] });
1233
+ }
1234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuTriggerIconComponent, decorators: [{
1235
+ type: Component,
1236
+ args: [{
1237
+ selector: 'ga-menu-trigger-icon',
1238
+ imports: [GaIconModule],
1239
+ template: `<ga-icon [icon]="icon()" />`,
1240
+ }]
1241
+ }] });
1242
+
1243
+ class GaMenuModule {
1244
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1245
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuComponent,
1246
+ GaMenuItemComponent,
1247
+ GaMenuTriggerDirective,
1248
+ GaMenuSeparatorComponent,
1249
+ GaMenuTitleComponent,
1250
+ GaMenuTriggerIconComponent], exports: [GaMenuComponent,
1251
+ GaMenuItemComponent,
1252
+ GaMenuTriggerDirective,
1253
+ GaMenuSeparatorComponent,
1254
+ GaMenuTitleComponent,
1255
+ GaMenuTriggerIconComponent] });
1256
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, imports: [GaMenuItemComponent,
1257
+ GaMenuTriggerIconComponent] });
1258
+ }
1259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaMenuModule, decorators: [{
1260
+ type: NgModule,
1261
+ args: [{
1262
+ imports: [
1263
+ GaMenuComponent,
1264
+ GaMenuItemComponent,
1265
+ GaMenuTriggerDirective,
1266
+ GaMenuSeparatorComponent,
1267
+ GaMenuTitleComponent,
1268
+ GaMenuTriggerIconComponent,
1269
+ ],
1270
+ exports: [
1271
+ GaMenuComponent,
1272
+ GaMenuItemComponent,
1273
+ GaMenuTriggerDirective,
1274
+ GaMenuSeparatorComponent,
1275
+ GaMenuTitleComponent,
1276
+ GaMenuTriggerIconComponent,
1277
+ ],
1278
+ }]
1279
+ }] });
1280
+
1277
1281
  /**
1278
1282
  * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.
1279
1283
  * This allows it to support [(ngModel)] and ngControl.
@@ -1462,7 +1466,7 @@ class GaOptionComponent {
1462
1466
  }
1463
1467
  }
1464
1468
  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"] }] });
1469
+ 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
1470
  }
1467
1471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaOptionComponent, decorators: [{
1468
1472
  type: Component,
@@ -1481,7 +1485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1481
1485
  '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',
1482
1486
  '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',
1483
1487
  '(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" }]
1488
+ }, 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
1489
  }], ctorParameters: () => [] });
1486
1490
 
1487
1491
  class GaSelectValueComponent {
@@ -1611,6 +1615,7 @@ class GaSelectComponent {
1611
1615
  return this.invalidInput() ?? this.implicitInvalid();
1612
1616
  });
1613
1617
  _formControlId = computed(() => this.id());
1618
+ _formControlDisabled = computed(() => this.disabled());
1614
1619
  constructor() {
1615
1620
  effect(() => {
1616
1621
  // if the select became disabled while open, close it