@vsn-ux/ngx-gaia 0.6.2 → 0.7.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,5 +1,5 @@
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, HostBinding, effect, DestroyRef, afterNextRender, Renderer2, afterRender, contentChildren, viewChild } from '@angular/core';
2
+ import { InjectionToken, makeEnvironmentProviders, inject, ElementRef, input, numberAttribute, computed, Component, ViewEncapsulation, Attribute, NgModule, Injectable, booleanAttribute, ChangeDetectionStrategy, 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';
@@ -104,52 +104,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
104
104
  }]
105
105
  }] });
106
106
 
107
+ function GA_BUTTON_I18N_FACTORY() {
108
+ return new GaButtonI18nDefault();
109
+ }
110
+ class GaButtonI18n {
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
112
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18n, providedIn: 'root', useFactory: GA_BUTTON_I18N_FACTORY });
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18n, decorators: [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root',
118
+ useFactory: GA_BUTTON_I18N_FACTORY,
119
+ }]
120
+ }] });
121
+ class GaButtonI18nDefault extends GaButtonI18n {
122
+ /** A label for the default loading state */
123
+ loadingLabel = 'Loading...';
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18nDefault, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
125
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18nDefault });
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonI18nDefault, decorators: [{
128
+ type: Injectable
129
+ }] });
130
+ function provideGaButtonI18n(value) {
131
+ return makeEnvironmentProviders([
132
+ typeof value === 'function'
133
+ ? { provide: GaButtonI18n, useFactory: value }
134
+ : { provide: GaButtonI18n, useValue: value },
135
+ ]);
136
+ }
137
+
138
+ class GaSpinnerComponent {
139
+ size = input(32, { transform: numberAttribute });
140
+ strokeWidth = computed(() => this.size() / 5);
141
+ center = computed(() => this.size() / 2);
142
+ radius = computed(() => (this.size() - this.strokeWidth()) / 2);
143
+ circumference = computed(() => 2 * Math.PI * this.radius());
144
+ arcCircumference = computed(() => this.circumference() * 0.25);
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
146
+ 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: `
147
+ <svg
148
+ [attr.width]="size()"
149
+ [attr.height]="size()"
150
+ [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
151
+ xmlns="http://www.w3.org/2000/svg"
152
+ >
153
+ <circle
154
+ [attr.cx]="center()"
155
+ [attr.cy]="center()"
156
+ [attr.r]="radius()"
157
+ stroke="var(--ga-color-secondary)"
158
+ [attr.stroke-width]="strokeWidth()"
159
+ fill="none"
160
+ ></circle>
161
+ <circle
162
+ [attr.cx]="center()"
163
+ [attr.cy]="center()"
164
+ [attr.r]="radius()"
165
+ stroke="var(--ga-color-primary-70)"
166
+ [attr.stroke-width]="strokeWidth()"
167
+ stroke-linecap="round"
168
+ fill="none"
169
+ [attr.stroke-dasharray]="arcCircumference() + ' ' + circumference()"
170
+ style="transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;"
171
+ ></circle>
172
+ </svg>
173
+ `, isInline: true, 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"], encapsulation: i0.ViewEncapsulation.None });
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerComponent, decorators: [{
176
+ type: Component,
177
+ args: [{ selector: 'ga-spinner', template: `
178
+ <svg
179
+ [attr.width]="size()"
180
+ [attr.height]="size()"
181
+ [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
182
+ xmlns="http://www.w3.org/2000/svg"
183
+ >
184
+ <circle
185
+ [attr.cx]="center()"
186
+ [attr.cy]="center()"
187
+ [attr.r]="radius()"
188
+ stroke="var(--ga-color-secondary)"
189
+ [attr.stroke-width]="strokeWidth()"
190
+ fill="none"
191
+ ></circle>
192
+ <circle
193
+ [attr.cx]="center()"
194
+ [attr.cy]="center()"
195
+ [attr.r]="radius()"
196
+ stroke="var(--ga-color-primary-70)"
197
+ [attr.stroke-width]="strokeWidth()"
198
+ stroke-linecap="round"
199
+ fill="none"
200
+ [attr.stroke-dasharray]="arcCircumference() + ' ' + circumference()"
201
+ style="transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;"
202
+ ></circle>
203
+ </svg>
204
+ `, encapsulation: ViewEncapsulation.None, host: {
205
+ class: 'ga-spinner',
206
+ role: 'progressbar',
207
+ '[attr.aria-valuemin]': '0',
208
+ '[attr.aria-valuemax]': '100',
209
+ '[attr.mode]': "'indeterminate'",
210
+ tabindex: '-1',
211
+ }, 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"] }]
212
+ }] });
213
+
107
214
  class GaButtonDirective {
215
+ i18n = inject(GaButtonI18n);
216
+ el = inject(ElementRef);
108
217
  variant = input.required({
109
218
  alias: 'gaButton',
110
219
  });
220
+ isLoading = input(false, {
221
+ alias: 'gaButtonLoading',
222
+ transform: booleanAttribute,
223
+ });
224
+ loadingLabel = input(this.i18n.loadingLabel, {
225
+ alias: 'gaButtonLoadingLabel',
226
+ });
227
+ disabledImplicit = input(false, {
228
+ alias: 'disabled',
229
+ transform: booleanAttribute,
230
+ });
231
+ disabled = computed(() => {
232
+ if (this.el.nativeElement.tagName === 'A') {
233
+ return null;
234
+ }
235
+ return this.isLoading() || this.disabledImplicit() ? '' : null;
236
+ });
111
237
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaButtonDirective, isStandalone: true, selector: "button[gaButton], a[gaButton]", inputs: { variant: { classPropertyName: "variant", publicName: "gaButton", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.ga-button--secondary": "!variant() || variant() === 'secondary'", "class.ga-button--primary": "variant() === 'primary'", "class.ga-button--ghost": "variant() === 'ghost'", "class.ga-button--transparent": "variant() === 'transparent'" }, classAttribute: "ga-button" }, ngImport: i0, template: `<ng-content />`, isInline: true });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaButtonDirective, isStandalone: true, selector: "button[gaButton], a[gaButton]", inputs: { variant: { classPropertyName: "variant", publicName: "gaButton", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "gaButtonLoading", isSignal: true, isRequired: false, transformFunction: null }, loadingLabel: { classPropertyName: "loadingLabel", publicName: "gaButtonLoadingLabel", isSignal: true, isRequired: false, transformFunction: null }, disabledImplicit: { classPropertyName: "disabledImplicit", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ga-button--secondary": "!variant() || variant() === 'secondary'", "class.ga-button--primary": "variant() === 'primary'", "class.ga-button--ghost": "variant() === 'ghost'", "class.ga-button--transparent": "variant() === 'transparent'", "attr.disabled": "disabled()", "attr.aria-busy": "isLoading() ? \"true\" : null" }, classAttribute: "ga-button" }, ngImport: i0, template: `
239
+ @if (isLoading()) {
240
+ <ga-spinner size="16" />
241
+ <span class="ga-button__loading-label">{{ loadingLabel() }}</span>
242
+ } @else {
243
+ <ng-content />
244
+ }
245
+ `, isInline: true, styles: [".ga-button__loading-label{color:var(--ga-color-text-body);font-weight:400;font-size:calc(var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1));line-height:calc(var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1));letter-spacing:0}\n"], dependencies: [{ kind: "component", type: GaSpinnerComponent, selector: "ga-spinner", inputs: ["size"] }], encapsulation: i0.ViewEncapsulation.None });
113
246
  }
114
247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaButtonDirective, decorators: [{
115
248
  type: Component,
116
- args: [{
117
- selector: 'button[gaButton], a[gaButton]',
118
- host: {
249
+ args: [{ selector: 'button[gaButton], a[gaButton]', imports: [GaSpinnerComponent], template: `
250
+ @if (isLoading()) {
251
+ <ga-spinner size="16" />
252
+ <span class="ga-button__loading-label">{{ loadingLabel() }}</span>
253
+ } @else {
254
+ <ng-content />
255
+ }
256
+ `, encapsulation: ViewEncapsulation.None, host: {
119
257
  class: 'ga-button',
120
258
  '[class.ga-button--secondary]': `!variant() || variant() === 'secondary'`,
121
259
  '[class.ga-button--primary]': `variant() === 'primary'`,
122
260
  '[class.ga-button--ghost]': `variant() === 'ghost'`,
123
261
  '[class.ga-button--transparent]': `variant() === 'transparent'`,
124
- },
125
- template: `<ng-content />`,
126
- }]
262
+ '[attr.disabled]': 'disabled()',
263
+ '[attr.aria-busy]': 'isLoading() ? "true" : null',
264
+ }, styles: [".ga-button__loading-label{color:var(--ga-color-text-body);font-weight:400;font-size:calc(var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1));line-height:calc(var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1));letter-spacing:0}\n"] }]
127
265
  }] });
128
266
 
129
267
  class GaIconButtonDirective {
268
+ i18n = inject(GaButtonI18n);
269
+ el = inject(ElementRef);
130
270
  icon = input.required({
131
271
  alias: 'gaIconButton',
132
272
  });
133
273
  variant = input('secondary', {
134
274
  alias: 'gaIconButtonVariant',
135
275
  });
276
+ isLoading = input(false, {
277
+ alias: 'gaIconButtonLoading',
278
+ transform: booleanAttribute,
279
+ });
280
+ loadingLabel = input(this.i18n.loadingLabel, {
281
+ alias: 'gaIconButtonLoadingLabel',
282
+ });
283
+ disabledImplicit = input(false, {
284
+ alias: 'disabled',
285
+ transform: booleanAttribute,
286
+ });
287
+ disabled = computed(() => {
288
+ if (this.el.nativeElement.tagName === 'A') {
289
+ return null;
290
+ }
291
+ return this.isLoading() || this.disabledImplicit() ? '' : null;
292
+ });
136
293
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaIconButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaIconButtonDirective, isStandalone: true, selector: "button[gaIconButton], a[gaIconButton]", inputs: { icon: { classPropertyName: "icon", publicName: "gaIconButton", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "gaIconButtonVariant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ga-button--primary": "variant() === 'primary'", "class.ga-button--secondary": "variant() === 'secondary'", "class.ga-button--ghost": "variant() === 'ghost'", "class.ga-button--transparent": "variant() === 'transparent'" }, classAttribute: "ga-button ga-button--icon-only" }, ngImport: i0, template: `
138
- <ga-icon [icon]="icon()" />
139
- <span class="ga-button__icon-label"><ng-content /></span>
140
- `, isInline: true, styles: [".ga-button__icon-label{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important}\n"], dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
294
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaIconButtonDirective, isStandalone: true, selector: "button[gaIconButton], a[gaIconButton]", inputs: { icon: { classPropertyName: "icon", publicName: "gaIconButton", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "gaIconButtonVariant", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "gaIconButtonLoading", isSignal: true, isRequired: false, transformFunction: null }, loadingLabel: { classPropertyName: "loadingLabel", publicName: "gaIconButtonLoadingLabel", isSignal: true, isRequired: false, transformFunction: null }, disabledImplicit: { classPropertyName: "disabledImplicit", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ga-button--primary": "variant() === 'primary'", "class.ga-button--secondary": "variant() === 'secondary'", "class.ga-button--ghost": "variant() === 'ghost'", "class.ga-button--transparent": "variant() === 'transparent'", "attr.disabled": "disabled()", "attr.aria-busy": "isLoading() ? \"true\" : null" }, classAttribute: "ga-button ga-button--icon-only" }, ngImport: i0, template: `
295
+ @if (isLoading()) {
296
+ <ga-spinner size="16" />
297
+ <span class="ga-button__icon-label">{{ loadingLabel() }}</span>
298
+ } @else {
299
+ <ga-icon [icon]="icon()" />
300
+ <span class="ga-button__icon-label"><ng-content /></span>
301
+ }
302
+ `, isInline: true, styles: [".ga-button__icon-label{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important}\n"], dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }, { kind: "component", type: GaSpinnerComponent, selector: "ga-spinner", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
141
303
  }
142
304
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaIconButtonDirective, decorators: [{
143
305
  type: Component,
144
- args: [{ selector: 'button[gaIconButton], a[gaIconButton]', imports: [GaIconModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
145
- <ga-icon [icon]="icon()" />
146
- <span class="ga-button__icon-label"><ng-content /></span>
306
+ args: [{ selector: 'button[gaIconButton], a[gaIconButton]', imports: [GaIconModule, GaSpinnerComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
307
+ @if (isLoading()) {
308
+ <ga-spinner size="16" />
309
+ <span class="ga-button__icon-label">{{ loadingLabel() }}</span>
310
+ } @else {
311
+ <ga-icon [icon]="icon()" />
312
+ <span class="ga-button__icon-label"><ng-content /></span>
313
+ }
147
314
  `, host: {
148
315
  class: 'ga-button ga-button--icon-only',
149
316
  '[class.ga-button--primary]': `variant() === 'primary'`,
150
317
  '[class.ga-button--secondary]': `variant() === 'secondary'`,
151
318
  '[class.ga-button--ghost]': `variant() === 'ghost'`,
152
319
  '[class.ga-button--transparent]': `variant() === 'transparent'`,
320
+ '[attr.disabled]': 'disabled()',
321
+ '[attr.aria-busy]': 'isLoading() ? "true" : null',
153
322
  }, styles: [".ga-button__icon-label{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important}\n"] }]
154
323
  }] });
155
324
 
@@ -197,12 +366,16 @@ function provideGaAlertI18n(value) {
197
366
  ]);
198
367
  }
199
368
 
369
+ let nextUniqueId$8 = 0;
200
370
  class GaAlertComponent {
201
371
  i18n = inject(GaAlertI18n);
202
372
  dismissIcon = X;
203
373
  variant = input('brand');
204
374
  explicitIcon = input(undefined, { alias: 'icon' });
205
375
  dismissible = input(false, { transform: booleanAttribute });
376
+ progress = input();
377
+ progressLabel = input();
378
+ progressLabelledBy = input();
206
379
  dismiss = output();
207
380
  icon = computed(() => {
208
381
  if (this.explicitIcon() !== undefined) {
@@ -221,18 +394,36 @@ class GaAlertComponent {
221
394
  return null;
222
395
  });
223
396
  title = contentChild(GaAlertTitleComponent);
397
+ progressId = `ga-alert-progress-${++nextUniqueId$8}`;
224
398
  variantClass = computed(() => {
225
399
  return `ga-notification ga-notification--${this.variant()}`;
226
400
  });
401
+ hasProgress = computed(() => {
402
+ return this.progress() !== undefined;
403
+ });
404
+ progressValue = computed(() => {
405
+ const progressValue = this.progress();
406
+ if (progressValue === undefined || progressValue === 'indeterminate') {
407
+ return undefined;
408
+ }
409
+ return Math.max(0, Math.min(100, progressValue));
410
+ });
411
+ progressBarWidth = computed(() => {
412
+ const progressValue = this.progressValue();
413
+ if (progressValue === undefined) {
414
+ return undefined;
415
+ }
416
+ return `${progressValue}%`;
417
+ });
227
418
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
228
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaAlertComponent, isStandalone: true, selector: "ga-alert", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, explicitIcon: { classPropertyName: "explicitIcon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismiss: "dismiss" }, host: { attributes: { "role": "alert" }, properties: { "class": "variantClass()" } }, queries: [{ propertyName: "title", first: true, predicate: GaAlertTitleComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n", dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }, { kind: "ngmodule", type: GaButtonModule }, { kind: "component", type: GaIconButtonDirective, selector: "button[gaIconButton], a[gaIconButton]", inputs: ["gaIconButton", "gaIconButtonVariant"] }] });
419
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: GaAlertComponent, isStandalone: true, selector: "ga-alert", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, explicitIcon: { classPropertyName: "explicitIcon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, progressLabel: { classPropertyName: "progressLabel", publicName: "progressLabel", isSignal: true, isRequired: false, transformFunction: null }, progressLabelledBy: { classPropertyName: "progressLabelledBy", publicName: "progressLabelledBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismiss: "dismiss" }, host: { attributes: { "role": "alert" }, properties: { "class": "variantClass()" } }, queries: [{ propertyName: "title", first: true, predicate: GaAlertTitleComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n", dependencies: [{ kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }, { kind: "ngmodule", type: GaButtonModule }, { kind: "component", type: GaIconButtonDirective, selector: "button[gaIconButton], a[gaIconButton]", inputs: ["gaIconButton", "gaIconButtonVariant", "gaIconButtonLoading", "gaIconButtonLoadingLabel", "disabled"] }] });
229
420
  }
230
421
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaAlertComponent, decorators: [{
231
422
  type: Component,
232
423
  args: [{ selector: 'ga-alert', imports: [GaIconModule, GaButtonModule], host: {
233
424
  role: 'alert',
234
425
  '[class]': `variantClass()`,
235
- }, template: "@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n" }]
426
+ }, template: "@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n" }]
236
427
  }] });
237
428
 
238
429
  class GaAlertTitleActionsComponent {
@@ -310,9 +501,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
310
501
 
311
502
  class GaCardComponent {
312
503
  selectable = input(false, { transform: booleanAttribute });
504
+ selected = input(false, { transform: booleanAttribute });
313
505
  disabled = input(false, { transform: booleanAttribute });
314
506
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaCardComponent, isStandalone: true, selector: "ga-card", inputs: { selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ga-card--selectable": "selectable()", "class.ga-card--disabled": "disabled()" }, classAttribute: "ga-card" }, ngImport: i0, template: `<ng-content />`, isInline: true });
507
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.5", type: GaCardComponent, isStandalone: true, selector: "ga-card", inputs: { selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ga-card--selectable": "selectable()", "class.ga-card--selected": "selected()", "class.ga-card--disabled": "disabled()" }, classAttribute: "ga-card" }, ngImport: i0, template: `<ng-content />`, isInline: true });
316
508
  }
317
509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaCardComponent, decorators: [{
318
510
  type: Component,
@@ -322,6 +514,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
322
514
  host: {
323
515
  class: 'ga-card',
324
516
  '[class.ga-card--selectable]': 'selectable()',
517
+ '[class.ga-card--selected]': 'selected()',
325
518
  '[class.ga-card--disabled]': 'disabled()',
326
519
  },
327
520
  }]
@@ -1847,7 +2040,7 @@ class GaModalHeaderComponent {
1847
2040
  >
1848
2041
  {{ i18n.dismissLabel }}
1849
2042
  </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"] }] });
2043
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: GaButtonModule }, { kind: "component", type: GaIconButtonDirective, selector: "button[gaIconButton], a[gaIconButton]", inputs: ["gaIconButton", "gaIconButtonVariant", "gaIconButtonLoading", "gaIconButtonLoadingLabel", "disabled"] }, { kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }] });
1851
2044
  }
1852
2045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaModalHeaderComponent, decorators: [{
1853
2046
  type: Component,
@@ -2526,82 +2719,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2526
2719
  }]
2527
2720
  }] });
2528
2721
 
2529
- class GaSpinnerComponent {
2530
- size = input(32, { transform: numberAttribute });
2531
- strokeWidth = computed(() => this.size() / 5);
2532
- center = computed(() => this.size() / 2);
2533
- radius = computed(() => (this.size() - this.strokeWidth()) / 2);
2534
- circumference = computed(() => 2 * Math.PI * this.radius());
2535
- arcCircumference = computed(() => this.circumference() * 0.25);
2536
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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: `
2538
- <svg
2539
- [attr.width]="size()"
2540
- [attr.height]="size()"
2541
- [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
2542
- xmlns="http://www.w3.org/2000/svg"
2543
- >
2544
- <circle
2545
- [attr.cx]="center()"
2546
- [attr.cy]="center()"
2547
- [attr.r]="radius()"
2548
- stroke="var(--ga-color-secondary)"
2549
- [attr.stroke-width]="strokeWidth()"
2550
- fill="none"
2551
- ></circle>
2552
- <circle
2553
- [attr.cx]="center()"
2554
- [attr.cy]="center()"
2555
- [attr.r]="radius()"
2556
- stroke="var(--ga-color-primary-70)"
2557
- [attr.stroke-width]="strokeWidth()"
2558
- stroke-linecap="round"
2559
- fill="none"
2560
- [attr.stroke-dasharray]="arcCircumference() + ' ' + circumference()"
2561
- style="transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;"
2562
- ></circle>
2563
- </svg>
2564
- `, isInline: true, 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"], encapsulation: i0.ViewEncapsulation.None });
2565
- }
2566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerComponent, decorators: [{
2567
- type: Component,
2568
- args: [{ selector: 'ga-spinner', template: `
2569
- <svg
2570
- [attr.width]="size()"
2571
- [attr.height]="size()"
2572
- [attr.viewBox]="'0 0 ' + size() + ' ' + size()"
2573
- xmlns="http://www.w3.org/2000/svg"
2574
- >
2575
- <circle
2576
- [attr.cx]="center()"
2577
- [attr.cy]="center()"
2578
- [attr.r]="radius()"
2579
- stroke="var(--ga-color-secondary)"
2580
- [attr.stroke-width]="strokeWidth()"
2581
- fill="none"
2582
- ></circle>
2583
- <circle
2584
- [attr.cx]="center()"
2585
- [attr.cy]="center()"
2586
- [attr.r]="radius()"
2587
- stroke="var(--ga-color-primary-70)"
2588
- [attr.stroke-width]="strokeWidth()"
2589
- stroke-linecap="round"
2590
- fill="none"
2591
- [attr.stroke-dasharray]="arcCircumference() + ' ' + circumference()"
2592
- style="transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;"
2593
- ></circle>
2594
- </svg>
2595
- `, encapsulation: ViewEncapsulation.None, host: {
2596
- class: 'ga-spinner',
2597
- role: 'progressbar',
2598
- '[attr.aria-valuemin]': '0',
2599
- '[attr.aria-valuemax]': '100',
2600
- '[attr.mode]': "'indeterminate'",
2601
- tabindex: '-1',
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"] }]
2603
- }] });
2604
-
2605
2722
  class GaSpinnerModule {
2606
2723
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2607
2724
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: GaSpinnerModule, imports: [GaSpinnerComponent], exports: [GaSpinnerComponent] });
@@ -2846,5 +2963,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2846
2963
  * Generated bundle index. Do not edit.
2847
2964
  */
2848
2965
 
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 };
2966
+ export { CHECKBOX_CONTROL_VALUE_ACCESSOR, DEFAULT_MODAL_OPTIONS, GA_ALERT_I18N_FACTORY, GA_BASE_FONT_SIZE, GA_BUTTON_I18N_FACTORY, 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, GaButtonI18n, GaButtonI18nDefault, 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, provideGaButtonI18n, provideGaModalI18n, provideGaModalOptions };
2850
2967
  //# sourceMappingURL=vsn-ux-ngx-gaia.mjs.map