@vsn-ux/ngx-gaia 0.6.0 → 0.6.2

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,18 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, makeEnvironmentProviders, inject, ElementRef, input, numberAttribute, computed, Component, ViewEncapsulation, Attribute, NgModule, ChangeDetectionStrategy, Injectable, booleanAttribute, output, contentChild, forwardRef, Injector, signal, linkedSignal, Directive, model, HostListener, TemplateRef, NgZone, Input, effect, afterRender, contentChildren, viewChild } from '@angular/core';
2
+ import { InjectionToken, makeEnvironmentProviders, inject, ElementRef, input, numberAttribute, computed, Component, ViewEncapsulation, Attribute, NgModule, ChangeDetectionStrategy, Injectable, booleanAttribute, output, contentChild, forwardRef, Injector, signal, linkedSignal, Directive, model, HostListener, TemplateRef, NgZone, Input, HostBinding, effect, DestroyRef, afterNextRender, Renderer2, 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
6
  import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
7
- import * as i1$3 from '@angular/cdk/overlay';
8
- import { Overlay, CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
7
+ import * as i1$4 from '@angular/cdk/overlay';
8
+ import { Overlay, OverlayRef, CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
9
9
  import { ComponentPortal } from '@angular/cdk/portal';
10
- import { Subject, takeUntil, map, merge } from 'rxjs';
10
+ import { Subject, takeUntil, map, merge, filter, Observable, isObservable } from 'rxjs';
11
11
  import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
12
12
  import * as i1$1 from '@angular/cdk/menu';
13
13
  import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';
14
- import { toSignal } from '@angular/core/rxjs-interop';
15
- import * as i1$2 from '@angular/cdk/listbox';
14
+ import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
+ import { Router, ResolveStart } from '@angular/router';
16
+ import * as i1$2 from '@angular/cdk/a11y';
17
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
18
+ import * as i1$3 from '@angular/cdk/listbox';
16
19
  import { CdkOption, CdkListbox } from '@angular/cdk/listbox';
17
20
 
18
21
  /**
@@ -344,11 +347,11 @@ const CHECKBOX_CONTROL_VALUE_ACCESSOR = {
344
347
  };
345
348
  // Increasing integer for generating unique ids for checkbox components.
346
349
  // Inspired by @angular/components
347
- let nextUniqueId$6 = 0;
350
+ let nextUniqueId$7 = 0;
348
351
  class GaCheckboxComponent {
349
352
  tabindex;
350
353
  /** @ignore */
351
- _uniqueId = `ga-checkbox-${++nextUniqueId$6}`;
354
+ _uniqueId = `ga-checkbox-${++nextUniqueId$7}`;
352
355
  /** @ignore */
353
356
  injector = inject(Injector);
354
357
  icons = { Minus, Check };
@@ -683,9 +686,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
683
686
  }]
684
687
  }] });
685
688
 
686
- let nextUniqueId$5 = 0;
689
+ let nextUniqueId$6 = 0;
687
690
  class GaInputDirective {
688
- uniqueId = `ga-input-${++nextUniqueId$5}`;
691
+ uniqueId = `ga-input-${++nextUniqueId$6}`;
689
692
  implicitNgControl = inject(NgControl, {
690
693
  optional: true,
691
694
  self: true,
@@ -754,9 +757,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
754
757
  }]
755
758
  }] });
756
759
 
757
- let nextUniqueId$4 = 0;
760
+ let nextUniqueId$5 = 0;
758
761
  class GaFormFieldComponent {
759
- uniqueId = `ga-form-field-${++nextUniqueId$4}`;
762
+ uniqueId = `ga-form-field-${++nextUniqueId$5}`;
760
763
  formControl = contentChild(GA_FORM_CONTROL, { descendants: true });
761
764
  controlId = computed(() => {
762
765
  return this.formControl()?._formControlId() ?? this.uniqueId;
@@ -771,7 +774,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
771
774
  }, template: "<ng-content />\n" }]
772
775
  }] });
773
776
 
777
+ let nextUniqueId$4 = 0;
774
778
  class GaTooltipComponent {
779
+ uniqueId = `ga-tooltip-${++nextUniqueId$4}`;
775
780
  mouseLeaveSubject = new Subject();
776
781
  afterMouseLeave = () => this.mouseLeaveSubject.asObservable();
777
782
  mouseOver = signal(false);
@@ -805,13 +810,13 @@ class GaTooltipComponent {
805
810
  this.mouseLeaveSubject.next();
806
811
  }
807
812
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
808
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaTooltipComponent, isStandalone: true, selector: "ga-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hideTriggered: "hideTriggered" }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" }, properties: { "attr.style": "inlineStyle()" } }, ngImport: i0, template: "<div [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", styles: [".top-start :host,.top-center :host,.top-end :host{padding-bottom:var(--ga-tooltip-offset)}.bottom-start :host,.bottom-center :host,.bottom-end :host{padding-top:var(--ga-tooltip-offset)}.left-start :host,.left-center :host,.left-end :host{padding-right:var(--ga-tooltip-offset)}.right-start :host,.right-center :host,.right-end :host{padding-left:var(--ga-tooltip-offset)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
813
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaTooltipComponent, isStandalone: true, selector: "ga-tooltip", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hideTriggered: "hideTriggered" }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" }, properties: { "attr.style": "inlineStyle()" } }, ngImport: i0, template: "<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", styles: [".top-start :host,.top-center :host,.top-end :host{padding-bottom:var(--ga-tooltip-offset)}.bottom-start :host,.bottom-center :host,.bottom-end :host{padding-top:var(--ga-tooltip-offset)}.left-start :host,.left-center :host,.left-end :host{padding-right:var(--ga-tooltip-offset)}.right-start :host,.right-center :host,.right-end :host{padding-left:var(--ga-tooltip-offset)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
809
814
  }
810
815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaTooltipComponent, decorators: [{
811
816
  type: Component,
812
817
  args: [{ selector: 'ga-tooltip', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, host: {
813
818
  '[attr.style]': 'inlineStyle()',
814
- }, template: "<div [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", styles: [".top-start :host,.top-center :host,.top-end :host{padding-bottom:var(--ga-tooltip-offset)}.bottom-start :host,.bottom-center :host,.bottom-end :host{padding-top:var(--ga-tooltip-offset)}.left-start :host,.left-center :host,.left-end :host{padding-right:var(--ga-tooltip-offset)}.right-start :host,.right-center :host,.right-end :host{padding-left:var(--ga-tooltip-offset)}\n"] }]
819
+ }, template: "<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", styles: [".top-start :host,.top-center :host,.top-end :host{padding-bottom:var(--ga-tooltip-offset)}.bottom-start :host,.bottom-center :host,.bottom-end :host{padding-top:var(--ga-tooltip-offset)}.left-start :host,.left-center :host,.left-end :host{padding-right:var(--ga-tooltip-offset)}.right-start :host,.right-center :host,.right-end :host{padding-left:var(--ga-tooltip-offset)}\n"] }]
815
820
  }], propDecorators: { handleMouseEnter: [{
816
821
  type: HostListener,
817
822
  args: ['mouseenter']
@@ -899,6 +904,9 @@ class GaTooltipDirective {
899
904
  get placement() {
900
905
  return this._placement;
901
906
  }
907
+ get ariaDescribedBy() {
908
+ return this.tooltipInstance?.uniqueId ?? null;
909
+ }
902
910
  ngOnDestroy() {
903
911
  this.destroyed$.next();
904
912
  this.destroyed$.complete();
@@ -1099,7 +1107,7 @@ class GaTooltipDirective {
1099
1107
  }
1100
1108
  }
1101
1109
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1102
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.1.5", type: GaTooltipDirective, isStandalone: true, selector: "[gaTooltip]", inputs: { content: ["gaTooltip", "content"], disabled: ["gaTooltipDisabled", "disabled", booleanAttribute], controlMode: ["gaTooltipControlMode", "controlMode"], showControlMode: ["gaTooltipShowControlMode", "showControlMode"], hideControlMode: ["gaTooltipHideControlMode", "hideControlMode"], offset: ["gaTooltipOffsetSize", "offset", numberAttribute], placement: ["gaTooltipPlacement", "placement"] }, host: { listeners: { "click": "handleMouseClick()", "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" } }, exportAs: ["gaTooltip"], ngImport: i0 });
1110
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.1.5", type: GaTooltipDirective, isStandalone: true, selector: "[gaTooltip]", inputs: { content: ["gaTooltip", "content"], disabled: ["gaTooltipDisabled", "disabled", booleanAttribute], controlMode: ["gaTooltipControlMode", "controlMode"], showControlMode: ["gaTooltipShowControlMode", "showControlMode"], hideControlMode: ["gaTooltipHideControlMode", "hideControlMode"], offset: ["gaTooltipOffsetSize", "offset", numberAttribute], placement: ["gaTooltipPlacement", "placement"] }, host: { listeners: { "click": "handleMouseClick()", "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" }, properties: { "attr.aria-describedby": "this.ariaDescribedBy" } }, exportAs: ["gaTooltip"], ngImport: i0 });
1103
1111
  }
1104
1112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaTooltipDirective, decorators: [{
1105
1113
  type: Directive,
@@ -1128,6 +1136,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1128
1136
  }], placement: [{
1129
1137
  type: Input,
1130
1138
  args: [{ alias: 'gaTooltipPlacement' }]
1139
+ }], ariaDescribedBy: [{
1140
+ type: HostBinding,
1141
+ args: ['attr.aria-describedby']
1131
1142
  }], handleMouseClick: [{
1132
1143
  type: HostListener,
1133
1144
  args: ['click']
@@ -1370,6 +1381,559 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1370
1381
  }]
1371
1382
  }] });
1372
1383
 
1384
+ class GaModalRef {
1385
+ instance;
1386
+ }
1387
+
1388
+ const GA_MODAL_DATA = new InjectionToken('GaModalData');
1389
+
1390
+ class GaModalService {
1391
+ /** @ignore */
1392
+ overlay = inject(Overlay);
1393
+ /** @ignore */
1394
+ injector = inject(Injector);
1395
+ /** @ignore */
1396
+ parentModalService = inject(GaModalService, {
1397
+ optional: true,
1398
+ skipSelf: true,
1399
+ });
1400
+ /** @ignore */
1401
+ openModalsAtThisLevel = signal([]);
1402
+ get activeModals() {
1403
+ if (this.parentModalService) {
1404
+ return this.parentModalService.activeModals;
1405
+ }
1406
+ return this.openModalsAtThisLevel;
1407
+ }
1408
+ open(component, ...args) {
1409
+ let [data] = args;
1410
+ const overlayRef = this.createOverlay();
1411
+ return this.attachContent(component, data, overlayRef);
1412
+ }
1413
+ closeAll() {
1414
+ this.activeModals.update((modals) => {
1415
+ while (modals.length > 0) {
1416
+ modals.pop()?.close();
1417
+ }
1418
+ return modals;
1419
+ });
1420
+ }
1421
+ /** @ignore */
1422
+ attachContent(component, data, overlayRef) {
1423
+ const modalRef = new GaModalRef();
1424
+ const injector = this.createInjector(this.injector, overlayRef, modalRef, data);
1425
+ const modalPortal = new ComponentPortal(component, null, injector);
1426
+ const result = overlayRef.attach(modalPortal);
1427
+ modalRef.instance = result.instance;
1428
+ this.activeModals.update((modals) => {
1429
+ modals.push(modalRef.instance);
1430
+ return modals;
1431
+ });
1432
+ modalRef.instance
1433
+ .afterClosed({ closeOnUnsubscribe: false })
1434
+ .subscribe(() => {
1435
+ const index = this.activeModals().indexOf(modalRef.instance);
1436
+ if (index > -1) {
1437
+ this.activeModals.update((modals) => {
1438
+ modals.splice(index, 1);
1439
+ return modals;
1440
+ });
1441
+ }
1442
+ });
1443
+ return result.instance;
1444
+ }
1445
+ /** @ignore */
1446
+ createOverlay() {
1447
+ const positionStrategy = this.overlay
1448
+ .position()
1449
+ .global()
1450
+ .centerHorizontally()
1451
+ .top('calc(4rem*var(--ga-base-scaling-factor,1))');
1452
+ const scrollStrategy = this.overlay.scrollStrategies.block();
1453
+ return this.overlay.create({
1454
+ positionStrategy,
1455
+ scrollStrategy,
1456
+ hasBackdrop: true,
1457
+ backdropClass: 'ga-modal__backdrop',
1458
+ // NOTE: handled manually inside the modal component
1459
+ disposeOnNavigation: false,
1460
+ height: 'auto',
1461
+ });
1462
+ }
1463
+ /** @ignore */
1464
+ createInjector(parentInjector, overlayRef, modalRef, data) {
1465
+ return Injector.create({
1466
+ parent: parentInjector,
1467
+ providers: [
1468
+ { provide: OverlayRef, useValue: overlayRef },
1469
+ { provide: GaModalRef, useValue: modalRef },
1470
+ { provide: GA_MODAL_DATA, useValue: data ?? null },
1471
+ ],
1472
+ });
1473
+ }
1474
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1475
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalService, providedIn: 'root' });
1476
+ }
1477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalService, decorators: [{
1478
+ type: Injectable,
1479
+ args: [{ providedIn: 'root' }]
1480
+ }] });
1481
+
1482
+ class GaModalOptions {
1483
+ /**
1484
+ * Defines the predefined size of the modal.
1485
+ *
1486
+ * @default `md`
1487
+ */
1488
+ size;
1489
+ /**
1490
+ * Defines the type of the modal:
1491
+ * - `none` for no icon.
1492
+ * - `information` for info dialog.
1493
+ * - `danger` for danger dialog.
1494
+ * - `warning` for warning dialog.
1495
+ * - `success` for success dialog.
1496
+ */
1497
+ type;
1498
+ /**
1499
+ * The ARIA role of the dialog element.
1500
+ *
1501
+ * @default `dialog`
1502
+ */
1503
+ role;
1504
+ /**
1505
+ * Defines if the modal should be closed when the escape key is pressed.
1506
+ *
1507
+ * @default `true`
1508
+ */
1509
+ closeOnEscape;
1510
+ /**
1511
+ * Defines if the modal should be closed when the backdrop is clicked.
1512
+ *
1513
+ * @default `true`
1514
+ */
1515
+ closeOnOutsideClick;
1516
+ /**
1517
+ * Defines if the modal should be closed when the route changes.
1518
+ *
1519
+ * @default `true`
1520
+ */
1521
+ closeOnNavigation;
1522
+ }
1523
+ const DEFAULT_MODAL_OPTIONS = {
1524
+ role: 'dialog',
1525
+ type: 'none',
1526
+ size: 'md',
1527
+ closeOnEscape: true,
1528
+ closeOnOutsideClick: true,
1529
+ closeOnNavigation: true,
1530
+ };
1531
+ function provideGaModalOptions(options) {
1532
+ return { provide: GaModalOptions, useValue: options };
1533
+ }
1534
+
1535
+ class GaModalComponent {
1536
+ closeSubject = new Subject();
1537
+ overlayRef = inject(OverlayRef);
1538
+ destroyRef = inject(DestroyRef);
1539
+ _modalService = inject(GaModalService);
1540
+ router = inject(Router, { optional: true });
1541
+ globalOptions = inject(GaModalOptions, { optional: true });
1542
+ options = this.createOptions();
1543
+ trapfocus = inject(CdkTrapFocus);
1544
+ data = inject(GA_MODAL_DATA);
1545
+ labelledBy = signal(null);
1546
+ describedBy = signal(null);
1547
+ modalStackIndex = computed(() => this._modalService.activeModals().length - 1);
1548
+ constructor() {
1549
+ this.trapfocus.enabled = true;
1550
+ this.trapfocus.autoCapture = true;
1551
+ // Using next render to delay the initialization, so that there is more time
1552
+ // to set the modal options
1553
+ afterNextRender({
1554
+ read: () => {
1555
+ if (this.options.closeOnNavigation) {
1556
+ this.router?.events
1557
+ .pipe(
1558
+ /**
1559
+ * Listen for `ResolveStart` to be friendly with route-guards.
1560
+ * i.e. don't close the modal in case a guard prevents the route change,
1561
+ * beneficial for pending changes check.
1562
+ */
1563
+ filter((event) => event instanceof ResolveStart), takeUntilDestroyed(this.destroyRef))
1564
+ .subscribe(() => this.close());
1565
+ }
1566
+ if (this.options.closeOnEscape) {
1567
+ this.overlayRef
1568
+ .keydownEvents()
1569
+ .pipe(filter((event) => event.key === 'Escape' && !hasModifierKey(event)), takeUntilDestroyed(this.destroyRef))
1570
+ .subscribe((event) => {
1571
+ event.preventDefault();
1572
+ this.softClose();
1573
+ });
1574
+ }
1575
+ if (this.options.closeOnOutsideClick) {
1576
+ this.overlayRef
1577
+ .backdropClick()
1578
+ .pipe(takeUntilDestroyed(this.destroyRef))
1579
+ .subscribe(() => this.softClose());
1580
+ }
1581
+ },
1582
+ });
1583
+ }
1584
+ close(result) {
1585
+ if (!this.overlayRef.hasAttached()) {
1586
+ return;
1587
+ }
1588
+ this.overlayRef.dispose();
1589
+ this.closeSubject.next(result);
1590
+ this.closeSubject.complete();
1591
+ }
1592
+ afterClosed({ closeOnUnsubscribe } = { closeOnUnsubscribe: true }) {
1593
+ return new Observable((observer) => {
1594
+ this.closeSubject.subscribe(observer);
1595
+ return () => closeOnUnsubscribe && this.close();
1596
+ });
1597
+ }
1598
+ /**
1599
+ * "Soft close" hook which is called whenever the modal is being closed
1600
+ * by "Escape" key or Backdrop click.
1601
+ * Return true to permit closing. False - to refuse.
1602
+ */
1603
+ onSoftClose() {
1604
+ return true;
1605
+ }
1606
+ softClose() {
1607
+ const shouldClose = this.onSoftClose();
1608
+ if (typeof shouldClose === 'boolean' && shouldClose) {
1609
+ this.close();
1610
+ }
1611
+ if (isObservable(shouldClose)) {
1612
+ shouldClose
1613
+ .pipe(takeUntilDestroyed(this.destroyRef))
1614
+ .subscribe((result) => result && this.close());
1615
+ }
1616
+ }
1617
+ createOptions(options) {
1618
+ return {
1619
+ ...DEFAULT_MODAL_OPTIONS,
1620
+ ...this.globalOptions,
1621
+ ...options,
1622
+ };
1623
+ }
1624
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1625
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaModalComponent, isStandalone: true, selector: "ng-component", host: { properties: { "attr.role": "options.role", "attr.aria-labelledby": "options.labelledBy ?? labelledBy()", "attr.aria-describedby": "options.describedBy ?? describedBy()", "class.ga-modal--small": "options.size === 'sm'", "class.ga-modal--medium": "options.size === 'md'", "class.ga-modal--large": "options.size === 'lg'", "class.ga-modal--information": "options.type === 'info'", "class.ga-modal--danger": "options.type === 'danger'", "class.ga-modal--warning": "options.type === 'warning'", "class.ga-modal--success": "options.type === 'success'", "style.margin-top": "'calc(var(--ga-base-scaling-factor, 1)*4rem*'+modalStackIndex()+')'" }, classAttribute: "ga-modal" }, hostDirectives: [{ directive: i1$2.CdkTrapFocus }], ngImport: i0, template: '', isInline: true });
1626
+ }
1627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalComponent, decorators: [{
1628
+ type: Component,
1629
+ args: [{
1630
+ template: '',
1631
+ host: {
1632
+ class: 'ga-modal',
1633
+ '[attr.role]': 'options.role',
1634
+ '[attr.aria-labelledby]': 'options.labelledBy ?? labelledBy()',
1635
+ '[attr.aria-describedby]': 'options.describedBy ?? describedBy()',
1636
+ '[class.ga-modal--small]': "options.size === 'sm'",
1637
+ '[class.ga-modal--medium]': "options.size === 'md'",
1638
+ '[class.ga-modal--large]': "options.size === 'lg'",
1639
+ '[class.ga-modal--information]': "options.type === 'info'",
1640
+ '[class.ga-modal--danger]': "options.type === 'danger'",
1641
+ '[class.ga-modal--warning]': "options.type === 'warning'",
1642
+ '[class.ga-modal--success]': "options.type === 'success'",
1643
+ '[style.margin-top]': `'calc(var(--ga-base-scaling-factor, 1)*4rem*'+modalStackIndex()+')'`,
1644
+ },
1645
+ hostDirectives: [CdkTrapFocus],
1646
+ }]
1647
+ }], ctorParameters: () => [] });
1648
+
1649
+ class GaModalCloseDirective {
1650
+ modalRef = inject(GaModalRef);
1651
+ modalResult = input({ alias: 'gaModalClose' });
1652
+ onClick() {
1653
+ this.modalRef.instance.close(this.modalResult);
1654
+ }
1655
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1656
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.5", type: GaModalCloseDirective, isStandalone: true, selector: "[gaModalClose]", inputs: { modalResult: { classPropertyName: "modalResult", publicName: "modalResult", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
1657
+ }
1658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalCloseDirective, decorators: [{
1659
+ type: Directive,
1660
+ args: [{
1661
+ selector: '[gaModalClose]',
1662
+ }]
1663
+ }], propDecorators: { onClick: [{
1664
+ type: HostListener,
1665
+ args: ['click']
1666
+ }] } });
1667
+ let nextUniqueModalTitleId = 0;
1668
+ class GaModalTitleDirective {
1669
+ renderer = inject(Renderer2);
1670
+ elementRef = inject(ElementRef);
1671
+ modalRef = inject(GaModalRef);
1672
+ id;
1673
+ constructor(id) {
1674
+ if (id) {
1675
+ this.id = id;
1676
+ }
1677
+ else {
1678
+ this.id = `gaModalTitle${nextUniqueModalTitleId++}`;
1679
+ this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);
1680
+ }
1681
+ }
1682
+ ngAfterViewInit() {
1683
+ this.modalRef.instance.labelledBy.set(this.id);
1684
+ }
1685
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalTitleDirective, deps: [{ token: 'id', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
1686
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: GaModalTitleDirective, isStandalone: true, selector: "[gaModalTitle]", host: { classAttribute: "ga-modal__title" }, ngImport: i0 });
1687
+ }
1688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalTitleDirective, decorators: [{
1689
+ type: Directive,
1690
+ args: [{
1691
+ selector: '[gaModalTitle]',
1692
+ host: { class: 'ga-modal__title' },
1693
+ }]
1694
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1695
+ type: Attribute,
1696
+ args: ['id']
1697
+ }] }] });
1698
+ let nextUniqueModalDescriptionId = 0;
1699
+ class GaModalDescriptionDirective {
1700
+ renderer = inject(Renderer2);
1701
+ elementRef = inject(ElementRef);
1702
+ modalRef = inject(GaModalRef);
1703
+ id;
1704
+ constructor(id) {
1705
+ if (id) {
1706
+ this.id = id;
1707
+ }
1708
+ else {
1709
+ this.id = `gaModalDescription${nextUniqueModalDescriptionId++}`;
1710
+ this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);
1711
+ }
1712
+ }
1713
+ ngAfterViewInit() {
1714
+ this.modalRef.instance.describedBy.set(this.id);
1715
+ }
1716
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalDescriptionDirective, deps: [{ token: 'id', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
1717
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: GaModalDescriptionDirective, isStandalone: true, selector: "[gaModalDescription]", host: { classAttribute: "ga-modal__description" }, ngImport: i0 });
1718
+ }
1719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalDescriptionDirective, decorators: [{
1720
+ type: Directive,
1721
+ args: [{
1722
+ selector: '[gaModalDescription]',
1723
+ host: { class: 'ga-modal__description' },
1724
+ }]
1725
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1726
+ type: Attribute,
1727
+ args: ['id']
1728
+ }] }] });
1729
+
1730
+ class GaModalDescriptionComponent {
1731
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1732
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaModalDescriptionComponent, isStandalone: true, selector: "ga-modal-description", host: { classAttribute: "ga-modal__description" }, hostDirectives: [{ directive: GaModalDescriptionDirective }], ngImport: i0, template: `<ng-content />`, isInline: true });
1733
+ }
1734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalDescriptionComponent, decorators: [{
1735
+ type: Component,
1736
+ args: [{
1737
+ selector: 'ga-modal-description',
1738
+ template: `<ng-content />`,
1739
+ hostDirectives: [GaModalDescriptionDirective],
1740
+ host: {
1741
+ class: 'ga-modal__description',
1742
+ },
1743
+ }]
1744
+ }] });
1745
+
1746
+ class GaModalContentComponent {
1747
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1748
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaModalContentComponent, isStandalone: true, selector: "ga-modal-content", host: { classAttribute: "ga-modal__content" }, ngImport: i0, template: `<ng-content />`, isInline: true });
1749
+ }
1750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalContentComponent, decorators: [{
1751
+ type: Component,
1752
+ args: [{
1753
+ selector: 'ga-modal-content',
1754
+ template: `<ng-content />`,
1755
+ host: {
1756
+ class: 'ga-modal__content',
1757
+ },
1758
+ }]
1759
+ }] });
1760
+
1761
+ class GaModalActionsComponent {
1762
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1763
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: GaModalActionsComponent, isStandalone: true, selector: "ga-modal-actions", host: { classAttribute: "ga-modal__actions" }, ngImport: i0, template: ` <ng-content />`, isInline: true });
1764
+ }
1765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalActionsComponent, decorators: [{
1766
+ type: Component,
1767
+ args: [{
1768
+ selector: 'ga-modal-actions',
1769
+ template: ` <ng-content />`,
1770
+ host: {
1771
+ class: 'ga-modal__actions',
1772
+ },
1773
+ }]
1774
+ }] });
1775
+
1776
+ function GA_MODAL_I18N_FACTORY() {
1777
+ return new GaModalI18nDefault();
1778
+ }
1779
+ class GaModalI18n {
1780
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1781
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18n, providedIn: 'root', useFactory: GA_MODAL_I18N_FACTORY });
1782
+ }
1783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18n, decorators: [{
1784
+ type: Injectable,
1785
+ args: [{
1786
+ providedIn: 'root',
1787
+ useFactory: GA_MODAL_I18N_FACTORY,
1788
+ }]
1789
+ }] });
1790
+ class GaModalI18nDefault extends GaModalI18n {
1791
+ /** A label for the dismiss button */
1792
+ dismissLabel = 'Dismiss';
1793
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18nDefault, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1794
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18nDefault });
1795
+ }
1796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalI18nDefault, decorators: [{
1797
+ type: Injectable
1798
+ }] });
1799
+ function provideGaModalI18n(value) {
1800
+ return makeEnvironmentProviders([
1801
+ typeof value === 'function'
1802
+ ? { provide: GaModalI18n, useFactory: value }
1803
+ : { provide: GaModalI18n, useValue: value },
1804
+ ]);
1805
+ }
1806
+
1807
+ class GaModalHeaderComponent {
1808
+ icons = {
1809
+ X,
1810
+ Info,
1811
+ CircleCheck,
1812
+ TriangleAlert,
1813
+ OctagonAlert,
1814
+ };
1815
+ modalRef = inject(GaModalRef);
1816
+ i18n = inject(GaModalI18n);
1817
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1818
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaModalHeaderComponent, isStandalone: true, selector: "ga-modal-header", host: { classAttribute: "ga-modal__top-section" }, ngImport: i0, template: `
1819
+ @if (modalRef.instance.options.type !== 'none') {
1820
+ <div class="ga-modal__icon">
1821
+ @switch (modalRef.instance.options.type) {
1822
+ @case ('info') {
1823
+ <ga-icon [icon]="icons.Info" size="48" />
1824
+ }
1825
+ @case ('warning') {
1826
+ <ga-icon [icon]="icons.TriangleAlert" size="48" />
1827
+ }
1828
+ @case ('danger') {
1829
+ <ga-icon [icon]="icons.OctagonAlert" size="48" />
1830
+ }
1831
+ @case ('success') {
1832
+ <ga-icon [icon]="icons.CircleCheck" size="48" />
1833
+ }
1834
+ }
1835
+ </div>
1836
+ }
1837
+ <div class="ga-modal__heading">
1838
+ <ng-content select="[gaModalTitle]" />
1839
+ <ng-content select="ga-modal-description" />
1840
+ </div>
1841
+ <button
1842
+ type="button"
1843
+ [gaIconButton]="icons.X"
1844
+ gaIconButtonVariant="ghost"
1845
+ class="ga-modal__close-icon"
1846
+ (click)="modalRef.instance.close()"
1847
+ >
1848
+ {{ i18n.dismissLabel }}
1849
+ </button>
1850
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: GaButtonModule }, { kind: "component", type: GaIconButtonDirective, selector: "button[gaIconButton], a[gaIconButton]", inputs: ["gaIconButton", "gaIconButtonVariant"] }, { kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }] });
1851
+ }
1852
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalHeaderComponent, decorators: [{
1853
+ type: Component,
1854
+ args: [{
1855
+ selector: 'ga-modal-header',
1856
+ imports: [GaButtonModule, GaIconModule],
1857
+ template: `
1858
+ @if (modalRef.instance.options.type !== 'none') {
1859
+ <div class="ga-modal__icon">
1860
+ @switch (modalRef.instance.options.type) {
1861
+ @case ('info') {
1862
+ <ga-icon [icon]="icons.Info" size="48" />
1863
+ }
1864
+ @case ('warning') {
1865
+ <ga-icon [icon]="icons.TriangleAlert" size="48" />
1866
+ }
1867
+ @case ('danger') {
1868
+ <ga-icon [icon]="icons.OctagonAlert" size="48" />
1869
+ }
1870
+ @case ('success') {
1871
+ <ga-icon [icon]="icons.CircleCheck" size="48" />
1872
+ }
1873
+ }
1874
+ </div>
1875
+ }
1876
+ <div class="ga-modal__heading">
1877
+ <ng-content select="[gaModalTitle]" />
1878
+ <ng-content select="ga-modal-description" />
1879
+ </div>
1880
+ <button
1881
+ type="button"
1882
+ [gaIconButton]="icons.X"
1883
+ gaIconButtonVariant="ghost"
1884
+ class="ga-modal__close-icon"
1885
+ (click)="modalRef.instance.close()"
1886
+ >
1887
+ {{ i18n.dismissLabel }}
1888
+ </button>
1889
+ `,
1890
+ host: {
1891
+ class: 'ga-modal__top-section',
1892
+ },
1893
+ }]
1894
+ }] });
1895
+
1896
+ class GaModalModule {
1897
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1898
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaModalModule, imports: [GaModalCloseDirective,
1899
+ GaModalTitleDirective,
1900
+ GaModalDescriptionDirective,
1901
+ GaModalDescriptionComponent,
1902
+ GaModalContentComponent,
1903
+ GaModalActionsComponent,
1904
+ GaModalHeaderComponent], exports: [GaModalCloseDirective,
1905
+ GaModalTitleDirective,
1906
+ GaModalDescriptionDirective,
1907
+ GaModalDescriptionComponent,
1908
+ GaModalContentComponent,
1909
+ GaModalActionsComponent,
1910
+ GaModalHeaderComponent] });
1911
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalModule, imports: [GaModalHeaderComponent] });
1912
+ }
1913
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalModule, decorators: [{
1914
+ type: NgModule,
1915
+ args: [{
1916
+ imports: [
1917
+ GaModalCloseDirective,
1918
+ GaModalTitleDirective,
1919
+ GaModalDescriptionDirective,
1920
+ GaModalDescriptionComponent,
1921
+ GaModalContentComponent,
1922
+ GaModalActionsComponent,
1923
+ GaModalHeaderComponent,
1924
+ ],
1925
+ exports: [
1926
+ GaModalCloseDirective,
1927
+ GaModalTitleDirective,
1928
+ GaModalDescriptionDirective,
1929
+ GaModalDescriptionComponent,
1930
+ GaModalContentComponent,
1931
+ GaModalActionsComponent,
1932
+ GaModalHeaderComponent,
1933
+ ],
1934
+ }]
1935
+ }] });
1936
+
1373
1937
  /**
1374
1938
  * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.
1375
1939
  * This allows it to support [(ngModel)] and ngControl.
@@ -1562,7 +2126,7 @@ class GaOptionComponent {
1562
2126
  }
1563
2127
  }
1564
2128
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1565
- 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"] }] });
2129
+ 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$3.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"] }] });
1566
2130
  }
1567
2131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaOptionComponent, decorators: [{
1568
2132
  type: Component,
@@ -1893,7 +2457,7 @@ class GaSelectComponent {
1893
2457
  provide: GA_FORM_CONTROL,
1894
2458
  useExisting: forwardRef(() => GaSelectComponent),
1895
2459
  },
1896
- ], queries: [{ propertyName: "gaOptions", predicate: GaOptionComponent, descendants: true, read: GaOptionComponent, isSignal: true }, { propertyName: "cdkListbox", first: true, predicate: CdkListbox, descendants: true, isSignal: true }, { propertyName: "customSelectValue", first: true, predicate: GaSelectValueComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputSearch", first: true, predicate: ["inputSearch"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["ngContent"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1$3.CdkOverlayOrigin }], ngImport: i0, template: "@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-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"cdkListbox().id\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }, { kind: "ngmodule", type: GaButtonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: GaSelectDefaultValueComponent, selector: "ga-select-default-value" }] });
2460
+ ], queries: [{ propertyName: "gaOptions", predicate: GaOptionComponent, descendants: true, read: GaOptionComponent, isSignal: true }, { propertyName: "cdkListbox", first: true, predicate: CdkListbox, descendants: true, isSignal: true }, { propertyName: "customSelectValue", first: true, predicate: GaSelectValueComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputSearch", first: true, predicate: ["inputSearch"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["ngContent"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1$4.CdkOverlayOrigin }], ngImport: i0, template: "@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-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"cdkListbox().id\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }, { kind: "ngmodule", type: GaButtonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$4.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: GaSelectDefaultValueComponent, selector: "ga-select-default-value" }] });
1897
2461
  }
1898
2462
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSelectComponent, decorators: [{
1899
2463
  type: Component,
@@ -1970,7 +2534,7 @@ class GaSpinnerComponent {
1970
2534
  circumference = computed(() => 2 * Math.PI * this.radius());
1971
2535
  arcCircumference = computed(() => this.circumference() * 0.25);
1972
2536
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1973
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaSpinnerComponent, isStandalone: true, selector: "ga-spinner", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ga-spinner" }, ngImport: i0, template: `
2537
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaSpinnerComponent, isStandalone: true, selector: "ga-spinner", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.mode": "'indeterminate'" }, classAttribute: "ga-spinner" }, ngImport: i0, template: `
1974
2538
  <svg
1975
2539
  [attr.width]="size()"
1976
2540
  [attr.height]="size()"
@@ -2030,6 +2594,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2030
2594
  </svg>
2031
2595
  `, encapsulation: ViewEncapsulation.None, host: {
2032
2596
  class: 'ga-spinner',
2597
+ role: 'progressbar',
2598
+ '[attr.aria-valuemin]': '0',
2599
+ '[attr.aria-valuemax]': '100',
2600
+ '[attr.mode]': "'indeterminate'",
2601
+ tabindex: '-1',
2033
2602
  }, styles: [".ga-spinner{display:inline-block}@keyframes ga-spinner__animation{0%{transform:rotate(0)}31.82%{transform:rotate(90deg)}63.64%{transform:rotate(180deg)}81.82%{transform:rotate(270deg)}to{transform:rotate(360deg)}}\n"] }]
2034
2603
  }] });
2035
2604
 
@@ -2065,7 +2634,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2065
2634
  class GaSelectDropdownComponent {
2066
2635
  loading = input(false, { transform: booleanAttribute });
2067
2636
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSelectDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2068
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaSelectDropdownComponent, isStandalone: true, selector: "ga-select-dropdown", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ga-dropdown ga-dropdown__content" }, hostDirectives: [{ directive: i1$2.CdkListbox }], ngImport: i0, template: "@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "component", type: GaSelectDropdownSpinnerComponent, selector: "ga-select-dropdown-spinner" }] });
2637
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaSelectDropdownComponent, isStandalone: true, selector: "ga-select-dropdown", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "ga-dropdown ga-dropdown__content" }, hostDirectives: [{ directive: i1$3.CdkListbox }], ngImport: i0, template: "@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "component", type: GaSelectDropdownSpinnerComponent, selector: "ga-select-dropdown-spinner" }] });
2069
2638
  }
2070
2639
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSelectDropdownComponent, decorators: [{
2071
2640
  type: Component,
@@ -2277,5 +2846,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2277
2846
  * Generated bundle index. Do not edit.
2278
2847
  */
2279
2848
 
2280
- export { CHECKBOX_CONTROL_VALUE_ACCESSOR, GA_ALERT_I18N_FACTORY, GA_BASE_FONT_SIZE, GA_CHECKBOX_REQUIRED_VALIDATOR, GA_FORM_CONTROL, GA_ICON_DEFAULT_SIZE, GA_SELECT_REQUIRED_VALIDATOR, GA_TOOLTIP_DEFAULT_OFFSET, GaAlertComponent, GaAlertI18n, GaAlertI18nDefault, GaAlertModule, GaAlertTitleActionsComponent, GaAlertTitleComponent, GaBadgeComponent, GaBadgeModule, GaButtonDirective, GaButtonModule, GaCardComponent, GaCardModule, GaCheckboxComponent, GaCheckboxModule, GaCheckboxRequiredValidator, GaFieldInfoComponent, GaFieldLabelComponent, GaFormControlDirective, GaFormFieldComponent, GaFormFieldModule, GaIconButtonDirective, GaIconComponent, GaIconModule, GaInputComponent, GaInputDirective, GaInputModule, GaLinkDirective, GaLinkModule, GaMenuComponent, GaMenuItemComponent, GaMenuModule, GaMenuSeparatorComponent, GaMenuTitleComponent, GaMenuTriggerDirective, GaMenuTriggerIconComponent, GaOptgroupComponent, GaOptionComponent, GaRadioButtonComponent, GaRadioGroupComponent, GaRadioModule, GaSegmentedControlButtonDirective, GaSegmentedControlComponent, GaSegmentedControlIconButtonComponent, GaSegmentedControlModule, GaSegmentedControlTextButtonComponent, GaSelectComponent, GaSelectDropdownComponent, GaSelectDropdownSpinnerComponent, GaSelectModule, GaSelectRequiredValidator, GaSelectValueComponent, GaSpinnerComponent, GaSpinnerModule, GaTextAreaDirective, GaTextAreaModule, GaTooltipComponent, GaTooltipDirective, GaTooltipModule, RADIO_CONTROL_VALUE_ACCESSOR, provideGaAlertI18n, provideGaBaseFontSize };
2849
+ export { CHECKBOX_CONTROL_VALUE_ACCESSOR, DEFAULT_MODAL_OPTIONS, GA_ALERT_I18N_FACTORY, GA_BASE_FONT_SIZE, GA_CHECKBOX_REQUIRED_VALIDATOR, GA_FORM_CONTROL, GA_ICON_DEFAULT_SIZE, GA_MODAL_DATA, GA_MODAL_I18N_FACTORY, GA_SELECT_REQUIRED_VALIDATOR, GA_TOOLTIP_DEFAULT_OFFSET, GaAlertComponent, GaAlertI18n, GaAlertI18nDefault, GaAlertModule, GaAlertTitleActionsComponent, GaAlertTitleComponent, GaBadgeComponent, GaBadgeModule, GaButtonDirective, GaButtonModule, GaCardComponent, GaCardModule, GaCheckboxComponent, GaCheckboxModule, GaCheckboxRequiredValidator, GaFieldInfoComponent, GaFieldLabelComponent, GaFormControlDirective, GaFormFieldComponent, GaFormFieldModule, GaIconButtonDirective, GaIconComponent, GaIconModule, GaInputComponent, GaInputDirective, GaInputModule, GaLinkDirective, GaLinkModule, GaMenuComponent, GaMenuItemComponent, GaMenuModule, GaMenuSeparatorComponent, GaMenuTitleComponent, GaMenuTriggerDirective, GaMenuTriggerIconComponent, GaModalActionsComponent, GaModalCloseDirective, GaModalComponent, GaModalContentComponent, GaModalDescriptionComponent, GaModalDescriptionDirective, GaModalHeaderComponent, GaModalI18n, GaModalI18nDefault, GaModalModule, GaModalOptions, GaModalRef, GaModalService, GaModalTitleDirective, GaOptgroupComponent, GaOptionComponent, GaRadioButtonComponent, GaRadioGroupComponent, GaRadioModule, GaSegmentedControlButtonDirective, GaSegmentedControlComponent, GaSegmentedControlIconButtonComponent, GaSegmentedControlModule, GaSegmentedControlTextButtonComponent, GaSelectComponent, GaSelectDropdownComponent, GaSelectDropdownSpinnerComponent, GaSelectModule, GaSelectRequiredValidator, GaSelectValueComponent, GaSpinnerComponent, GaSpinnerModule, GaTextAreaDirective, GaTextAreaModule, GaTooltipComponent, GaTooltipDirective, GaTooltipModule, RADIO_CONTROL_VALUE_ACCESSOR, provideGaAlertI18n, provideGaBaseFontSize, provideGaModalI18n, provideGaModalOptions };
2281
2850
  //# sourceMappingURL=vsn-ux-ngx-gaia.mjs.map