@a2ui/angular 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -1
- package/README.md +9 -9
- package/fesm2022/a2ui-angular-src-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-src-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-src-v0_9.mjs +333 -533
- package/fesm2022/a2ui-angular-src-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_9.mjs +333 -533
- package/fesm2022/a2ui-angular-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular.mjs +65 -59
- package/fesm2022/a2ui-angular.mjs.map +1 -1
- package/package.json +3 -3
- package/types/a2ui-angular-src-v0_8.d.ts +159 -106
- package/types/a2ui-angular-src-v0_9.d.ts +299 -372
- package/types/a2ui-angular-v0_8.d.ts +159 -106
- package/types/a2ui-angular-v0_9.d.ts +299 -372
- package/types/a2ui-angular.d.ts +159 -106
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Inject, Injectable, signal, inject, DestroyRef, NgZone, input, ChangeDetectorRef,
|
|
2
|
+
import { InjectionToken, Inject, Injectable, signal, inject, DestroyRef, NgZone, input, ChangeDetectorRef, effect as effect$1, ChangeDetectionStrategy, Component, Directive, computed as computed$1, HostBinding } from '@angular/core';
|
|
3
3
|
import { MessageProcessor, effect, computed, ComponentContext, Catalog, DataContext } from '@a2ui/web_core/v0_9';
|
|
4
4
|
export { signal as preactSignal } from '@a2ui/web_core/v0_9';
|
|
5
5
|
import { NgComponentOutlet } from '@angular/common';
|
|
@@ -164,6 +164,7 @@ class ComponentBinder {
|
|
|
164
164
|
bind(context) {
|
|
165
165
|
const props = context.componentModel.properties;
|
|
166
166
|
const bound = {};
|
|
167
|
+
let template = undefined;
|
|
167
168
|
for (const key of Object.keys(props)) {
|
|
168
169
|
const value = props[key];
|
|
169
170
|
let preactSig;
|
|
@@ -198,6 +199,11 @@ class ComponentBinder {
|
|
|
198
199
|
}
|
|
199
200
|
else if (key === 'children') {
|
|
200
201
|
const originalSig = preactSig;
|
|
202
|
+
const id = value.componentId;
|
|
203
|
+
const path = value.path;
|
|
204
|
+
if (id && path) {
|
|
205
|
+
template = { id, path };
|
|
206
|
+
}
|
|
201
207
|
preactSig = computed(() => {
|
|
202
208
|
const val = originalSig.value;
|
|
203
209
|
const arr = Array.isArray(val) ? val : [];
|
|
@@ -213,6 +219,7 @@ class ComponentBinder {
|
|
|
213
219
|
bound[key] = {
|
|
214
220
|
value: angSig,
|
|
215
221
|
raw: value,
|
|
222
|
+
template,
|
|
216
223
|
onUpdate: isBoundPath
|
|
217
224
|
? (newValue) => context.dataContext.set(value.path, newValue)
|
|
218
225
|
: () => { }, // No-op for non-bound values
|
|
@@ -229,9 +236,7 @@ class ComponentBinder {
|
|
|
229
236
|
return ruleResults.every((r) => !!r.conditionSig.value);
|
|
230
237
|
});
|
|
231
238
|
const validationErrorsPreactSig = computed(() => {
|
|
232
|
-
return ruleResults
|
|
233
|
-
.filter((r) => !r.conditionSig.value)
|
|
234
|
-
.map((r) => r.message);
|
|
239
|
+
return ruleResults.filter((r) => !r.conditionSig.value).map((r) => r.message);
|
|
235
240
|
});
|
|
236
241
|
bound['isValid'] = {
|
|
237
242
|
value: toAngularSignal(isValidPreactSig, this.destroyRef, this.ngZone),
|
|
@@ -294,21 +299,28 @@ class ComponentHostComponent {
|
|
|
294
299
|
componentType = null;
|
|
295
300
|
props = {};
|
|
296
301
|
context;
|
|
297
|
-
weight = signal(null, ...(ngDevMode ? [{ debugName: "weight" }] : /* istanbul ignore next */ []));
|
|
298
|
-
// TODO(#1199): Move weight handling to the catalog specification.
|
|
299
|
-
get flexStyle() {
|
|
300
|
-
const w = this.weight();
|
|
301
|
-
return w ? `${w}` : '';
|
|
302
|
-
}
|
|
303
302
|
resolvedComponentId = '';
|
|
304
303
|
resolvedDataContextPath = '/';
|
|
305
|
-
|
|
306
|
-
|
|
304
|
+
propsSub;
|
|
305
|
+
createSub;
|
|
306
|
+
constructor() {
|
|
307
|
+
effect$1(() => {
|
|
308
|
+
const key = this.componentKey();
|
|
309
|
+
const surfaceId = this.surfaceId();
|
|
310
|
+
this.setupComponent(key, surfaceId);
|
|
311
|
+
});
|
|
312
|
+
this.destroyRef.onDestroy(() => {
|
|
313
|
+
this.propsSub?.unsubscribe();
|
|
314
|
+
this.createSub?.unsubscribe();
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
setupComponent(key, surfaceId) {
|
|
318
|
+
this.resetState();
|
|
319
|
+
const surface = this.rendererService.surfaceGroup?.getSurface(surfaceId);
|
|
307
320
|
if (!surface) {
|
|
308
|
-
console.warn(`Surface ${
|
|
321
|
+
console.warn(`Surface ${surfaceId} not found`);
|
|
309
322
|
return;
|
|
310
323
|
}
|
|
311
|
-
const key = this.componentKey();
|
|
312
324
|
let id;
|
|
313
325
|
let basePath;
|
|
314
326
|
if (typeof key === 'object' && key !== null && 'id' in key) {
|
|
@@ -322,15 +334,14 @@ class ComponentHostComponent {
|
|
|
322
334
|
this.resolvedComponentId = id;
|
|
323
335
|
const componentModel = surface.componentsModel.get(id);
|
|
324
336
|
if (!componentModel) {
|
|
325
|
-
console.warn(`Component ${id} not found in surface ${
|
|
326
|
-
const sub = surface.componentsModel.onCreated.subscribe(
|
|
337
|
+
console.warn(`Component ${id} not found in surface ${surfaceId}. Waiting for it...`);
|
|
338
|
+
const sub = surface.componentsModel.onCreated.subscribe(comp => {
|
|
327
339
|
if (comp.id === id) {
|
|
328
340
|
this.initializeComponent(surface, comp, id, basePath);
|
|
329
|
-
this.cdr.markForCheck();
|
|
330
341
|
sub.unsubscribe();
|
|
331
342
|
}
|
|
332
343
|
});
|
|
333
|
-
this.
|
|
344
|
+
this.createSub = sub;
|
|
334
345
|
return;
|
|
335
346
|
}
|
|
336
347
|
this.initializeComponent(surface, componentModel, id, basePath);
|
|
@@ -350,22 +361,27 @@ class ComponentHostComponent {
|
|
|
350
361
|
this.resolvedDataContextPath = this.context.dataContext.path;
|
|
351
362
|
// Subscribes to updates to the component model properties, to get the
|
|
352
363
|
// component to react when a new prop is added after creation.
|
|
353
|
-
|
|
364
|
+
this.propsSub = componentModel.onUpdated.subscribe(() => {
|
|
354
365
|
this.props = this.binder.bind(this.context);
|
|
355
|
-
// TODO(#1199): Move weight handling to the catalog specification.
|
|
356
|
-
this.weight.set(componentModel.properties['weight'] || null);
|
|
357
366
|
this.cdr.markForCheck();
|
|
358
367
|
});
|
|
359
|
-
this.
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
368
|
+
this.cdr.markForCheck();
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Resets the component host state, unsubscribing from active subscriptions
|
|
372
|
+
* and clearing component properties to avoid rendering stale data while
|
|
373
|
+
* a new component is being loaded.
|
|
374
|
+
*/
|
|
375
|
+
resetState() {
|
|
376
|
+
this.propsSub?.unsubscribe();
|
|
377
|
+
this.createSub?.unsubscribe();
|
|
378
|
+
this.componentType = null;
|
|
379
|
+
this.props = {};
|
|
380
|
+
this.resolvedDataContextPath = '/';
|
|
365
381
|
this.cdr.markForCheck();
|
|
366
382
|
}
|
|
367
383
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ComponentHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
368
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ComponentHostComponent, isStandalone: true, selector: "a2ui-v09-component-host", inputs: { componentKey: { classPropertyName: "componentKey", publicName: "componentKey", isSignal: true, isRequired: false, transformFunction: null }, surfaceId: { classPropertyName: "surfaceId", publicName: "surfaceId", isSignal: true, isRequired: true, transformFunction: null } }, host: {
|
|
384
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ComponentHostComponent, isStandalone: true, selector: "a2ui-v09-component-host", inputs: { componentKey: { classPropertyName: "componentKey", publicName: "componentKey", isSignal: true, isRequired: false, transformFunction: null }, surfaceId: { classPropertyName: "surfaceId", publicName: "surfaceId", isSignal: true, isRequired: true, transformFunction: null } }, host: { styleAttribute: "display: contents;" }, ngImport: i0, template: `
|
|
369
385
|
@if (componentType) {
|
|
370
386
|
<ng-container
|
|
371
387
|
*ngComponentOutlet="
|
|
@@ -387,7 +403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
387
403
|
selector: 'a2ui-v09-component-host',
|
|
388
404
|
imports: [NgComponentOutlet],
|
|
389
405
|
host: {
|
|
390
|
-
|
|
406
|
+
style: 'display: contents;',
|
|
391
407
|
},
|
|
392
408
|
template: `
|
|
393
409
|
@if (componentType) {
|
|
@@ -406,10 +422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
406
422
|
`,
|
|
407
423
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
408
424
|
}]
|
|
409
|
-
}], propDecorators: { componentKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentKey", required: false }] }], surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: true }] }]
|
|
410
|
-
type: HostBinding,
|
|
411
|
-
args: ['style.flex']
|
|
412
|
-
}] } });
|
|
425
|
+
}], ctorParameters: () => [], propDecorators: { componentKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentKey", required: false }] }], surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: true }] }] } });
|
|
413
426
|
|
|
414
427
|
/**
|
|
415
428
|
* Copyright 2026 Google LLC
|
|
@@ -444,7 +457,7 @@ class SurfaceComponent {
|
|
|
444
457
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SurfaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
445
458
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: SurfaceComponent, isStandalone: true, selector: "a2ui-v09-surface", inputs: { surfaceId: { classPropertyName: "surfaceId", publicName: "surfaceId", isSignal: true, isRequired: true, transformFunction: null }, dataContextPath: { classPropertyName: "dataContextPath", publicName: "dataContextPath", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: contents;" }, ngImport: i0, template: `
|
|
446
459
|
<a2ui-v09-component-host
|
|
447
|
-
[componentKey]="{
|
|
460
|
+
[componentKey]="{id: 'root', basePath: dataContextPath()}"
|
|
448
461
|
[surfaceId]="surfaceId()"
|
|
449
462
|
>
|
|
450
463
|
</a2ui-v09-component-host>
|
|
@@ -457,11 +470,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
457
470
|
standalone: true,
|
|
458
471
|
imports: [ComponentHostComponent],
|
|
459
472
|
host: {
|
|
460
|
-
|
|
473
|
+
style: 'display: contents;',
|
|
461
474
|
},
|
|
462
475
|
template: `
|
|
463
476
|
<a2ui-v09-component-host
|
|
464
|
-
[componentKey]="{
|
|
477
|
+
[componentKey]="{id: 'root', basePath: dataContextPath()}"
|
|
465
478
|
[surfaceId]="surfaceId()"
|
|
466
479
|
>
|
|
467
480
|
</a2ui-v09-component-host>
|
|
@@ -470,6 +483,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
470
483
|
}]
|
|
471
484
|
}], propDecorators: { surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: true }] }], dataContextPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataContextPath", required: false }] }] } });
|
|
472
485
|
|
|
486
|
+
/**
|
|
487
|
+
* Base class for A2UI catalog component in Angular.
|
|
488
|
+
*
|
|
489
|
+
* All Angular catalog components should extend this base class,
|
|
490
|
+
* which provides type safe access to props() and other common
|
|
491
|
+
* fields.
|
|
492
|
+
*/
|
|
493
|
+
class CatalogComponent {
|
|
494
|
+
/**
|
|
495
|
+
* Reactive properties resolved from the A2UI ComponentModel.
|
|
496
|
+
*/
|
|
497
|
+
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
498
|
+
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
499
|
+
componentId = input.required(...(ngDevMode ? [{ debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
500
|
+
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
501
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
502
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: CatalogComponent, isStandalone: true, inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, surfaceId: { classPropertyName: "surfaceId", publicName: "surfaceId", isSignal: true, isRequired: true, transformFunction: null }, componentId: { classPropertyName: "componentId", publicName: "componentId", isSignal: true, isRequired: true, transformFunction: null }, dataContextPath: { classPropertyName: "dataContextPath", publicName: "dataContextPath", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
503
|
+
}
|
|
504
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CatalogComponent, decorators: [{
|
|
505
|
+
type: Directive
|
|
506
|
+
}], propDecorators: { props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: true }] }], componentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentId", required: true }] }], dataContextPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataContextPath", required: false }] }] } });
|
|
507
|
+
|
|
473
508
|
/**
|
|
474
509
|
* Copyright 2026 Google LLC
|
|
475
510
|
*
|
|
@@ -513,7 +548,7 @@ class DefaultMarkdownRenderer extends MarkdownRenderer {
|
|
|
513
548
|
}
|
|
514
549
|
catch (e) {
|
|
515
550
|
if (!DefaultMarkdownRenderer.warningLogged) {
|
|
516
|
-
console.warn(
|
|
551
|
+
console.warn('[DefaultMarkdownRenderer] Failed to load optional `@a2ui/markdown-it` renderer. Using fallback.');
|
|
517
552
|
DefaultMarkdownRenderer.warningLogged = true;
|
|
518
553
|
}
|
|
519
554
|
return markdown;
|
|
@@ -585,12 +620,46 @@ class AngularCatalog extends Catalog {
|
|
|
585
620
|
* Base class for A2UI basic catalog components in Angular.
|
|
586
621
|
*
|
|
587
622
|
* Automatically injects the basic catalog styles when the component is instantiated.
|
|
623
|
+
* Also binds the primary brand color to the host element.
|
|
588
624
|
*/
|
|
589
|
-
class BasicCatalogComponent {
|
|
625
|
+
class BasicCatalogComponent extends CatalogComponent {
|
|
626
|
+
rendererService = inject(A2uiRendererService);
|
|
627
|
+
surface = computed$1(() => {
|
|
628
|
+
return this.rendererService.surfaceGroup.getSurface(this.surfaceId());
|
|
629
|
+
}, ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
|
|
630
|
+
theme = computed$1(() => {
|
|
631
|
+
return this.surface()?.theme;
|
|
632
|
+
}, ...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
|
|
633
|
+
primaryColor = computed$1(() => {
|
|
634
|
+
return this.theme()?.primaryColor;
|
|
635
|
+
}, ...(ngDevMode ? [{ debugName: "primaryColor" }] : /* istanbul ignore next */ []));
|
|
636
|
+
/** Weight is applied as flex css property on the component host HTML element. */
|
|
637
|
+
weight = computed$1(() => this.props()['weight']?.value() ?? null, ...(ngDevMode ? [{ debugName: "weight" }] : /* istanbul ignore next */ []));
|
|
590
638
|
constructor() {
|
|
639
|
+
super();
|
|
591
640
|
injectBasicCatalogStyles();
|
|
592
641
|
}
|
|
642
|
+
/**
|
|
643
|
+
* Binds the flex style to the host element based on the weight.
|
|
644
|
+
*/
|
|
645
|
+
get flexStyle() {
|
|
646
|
+
return this.weight() !== null ? `${this.weight()}` : null;
|
|
647
|
+
}
|
|
648
|
+
get primaryColorStyle() {
|
|
649
|
+
return this.primaryColor() || null;
|
|
650
|
+
}
|
|
651
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BasicCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
652
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: BasicCatalogComponent, isStandalone: true, host: { properties: { "style.flex": "this.flexStyle", "style.--a2ui-color-primary": "this.primaryColorStyle" } }, usesInheritance: true, ngImport: i0 });
|
|
593
653
|
}
|
|
654
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BasicCatalogComponent, decorators: [{
|
|
655
|
+
type: Directive
|
|
656
|
+
}], ctorParameters: () => [], propDecorators: { flexStyle: [{
|
|
657
|
+
type: HostBinding,
|
|
658
|
+
args: ['style.flex']
|
|
659
|
+
}], primaryColorStyle: [{
|
|
660
|
+
type: HostBinding,
|
|
661
|
+
args: ['style.--a2ui-color-primary']
|
|
662
|
+
}] } });
|
|
594
663
|
|
|
595
664
|
/**
|
|
596
665
|
* Copyright 2026 Google LLC
|
|
@@ -624,17 +693,6 @@ class BasicCatalogComponent {
|
|
|
624
693
|
* - Font sizes: `--a2ui-font-size-2xl`, `--a2ui-font-size-xl`, `--a2ui-font-size-l`, `--a2ui-font-size-m`, `--a2ui-font-size-s`, `--a2ui-font-size-xs`.
|
|
625
694
|
*/
|
|
626
695
|
class TextComponent extends BasicCatalogComponent {
|
|
627
|
-
/**
|
|
628
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
629
|
-
*
|
|
630
|
-
* Expected properties:
|
|
631
|
-
* - `text`: The string content to display.
|
|
632
|
-
* - `variant`: A hint for the base text style ('h1', 'h2', 'h3', 'h4', 'h5', 'caption', 'body').
|
|
633
|
-
*/
|
|
634
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
635
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
636
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
637
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
638
696
|
markdownRenderer = inject(MarkdownRenderer);
|
|
639
697
|
variant = computed$1(() => this.props()['variant']?.value() || 'body', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
640
698
|
text = computed$1(() => this.props()['text']?.value() || '', ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
|
|
@@ -675,18 +733,12 @@ class TextComponent extends BasicCatalogComponent {
|
|
|
675
733
|
});
|
|
676
734
|
}
|
|
677
735
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
678
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
679
|
-
<span [class]="'a2ui-text ' + variant()" [innerHTML]="resolvedText()">
|
|
680
|
-
</span>
|
|
681
|
-
`, isInline: true, styles: [":host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6,:host ::ng-deep .a2ui-text ol,:host ::ng-deep .a2ui-text ul,:host ::ng-deep .a2ui-text li,:host ::ng-deep .a2ui-text blockquote,:host ::ng-deep .a2ui-text pre{margin:var(--_a2ui-text-margin, 0)}:host ::ng-deep .a2ui-text{color:var(--_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)))}:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6{font-family:var(--a2ui-font-family-title, inherit);line-height:var(--a2ui-line-height-headings, 1.2)}:host ::ng-deep .a2ui-text h1{font-size:var(--a2ui-font-size-2xl)}:host ::ng-deep .a2ui-text h2{font-size:var(--a2ui-font-size-xl)}:host ::ng-deep .a2ui-text h3{font-size:var(--a2ui-font-size-l)}:host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h4{font-size:var(--a2ui-font-size-m)}:host ::ng-deep .a2ui-text h5{font-size:var(--a2ui-font-size-s)}:host ::ng-deep .a2ui-text p{line-height:var(--a2ui-line-height-body, 1.5)}:host ::ng-deep .a2ui-text.caption{font-size:var(--a2ui-font-size-xs);color:var(--a2ui-text-caption-color, light-dark(#666, #aaa))}:host ::ng-deep .a2ui-text a{color:var(--a2ui-text-a-color, inherit);font-weight:var(--a2ui-text-a-font-weight, inherit)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
736
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: TextComponent, isStandalone: true, selector: "a2ui-v09-text", usesInheritance: true, ngImport: i0, template: ` <span [class]="'a2ui-text ' + variant()" [innerHTML]="resolvedText()"> </span> `, isInline: true, styles: [":host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6,:host ::ng-deep .a2ui-text ol,:host ::ng-deep .a2ui-text ul,:host ::ng-deep .a2ui-text li,:host ::ng-deep .a2ui-text blockquote,:host ::ng-deep .a2ui-text pre{margin:var(--_a2ui-text-margin, 0)}:host ::ng-deep .a2ui-text{color:var( --_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)) )}:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6{font-family:var(--a2ui-font-family-title, inherit);line-height:var(--a2ui-line-height-headings, 1.2)}:host ::ng-deep .a2ui-text h1{font-size:var(--a2ui-font-size-2xl)}:host ::ng-deep .a2ui-text h2{font-size:var(--a2ui-font-size-xl)}:host ::ng-deep .a2ui-text h3{font-size:var(--a2ui-font-size-l)}:host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h4{font-size:var(--a2ui-font-size-m)}:host ::ng-deep .a2ui-text h5{font-size:var(--a2ui-font-size-s)}:host ::ng-deep .a2ui-text p{line-height:var(--a2ui-line-height-body, 1.5)}:host ::ng-deep .a2ui-text.caption{font-size:var(--a2ui-font-size-xs);color:var(--a2ui-text-caption-color, light-dark(#666, #aaa))}:host ::ng-deep .a2ui-text a{color:var(--a2ui-text-a-color, inherit);font-weight:var(--a2ui-text-a-font-weight, inherit)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
682
737
|
}
|
|
683
738
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TextComponent, decorators: [{
|
|
684
739
|
type: Component,
|
|
685
|
-
args: [{ selector: 'a2ui-v09-text', standalone: true, template: `
|
|
686
|
-
|
|
687
|
-
</span>
|
|
688
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6,:host ::ng-deep .a2ui-text ol,:host ::ng-deep .a2ui-text ul,:host ::ng-deep .a2ui-text li,:host ::ng-deep .a2ui-text blockquote,:host ::ng-deep .a2ui-text pre{margin:var(--_a2ui-text-margin, 0)}:host ::ng-deep .a2ui-text{color:var(--_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)))}:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6{font-family:var(--a2ui-font-family-title, inherit);line-height:var(--a2ui-line-height-headings, 1.2)}:host ::ng-deep .a2ui-text h1{font-size:var(--a2ui-font-size-2xl)}:host ::ng-deep .a2ui-text h2{font-size:var(--a2ui-font-size-xl)}:host ::ng-deep .a2ui-text h3{font-size:var(--a2ui-font-size-l)}:host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h4{font-size:var(--a2ui-font-size-m)}:host ::ng-deep .a2ui-text h5{font-size:var(--a2ui-font-size-s)}:host ::ng-deep .a2ui-text p{line-height:var(--a2ui-line-height-body, 1.5)}:host ::ng-deep .a2ui-text.caption{font-size:var(--a2ui-font-size-xs);color:var(--a2ui-text-caption-color, light-dark(#666, #aaa))}:host ::ng-deep .a2ui-text a{color:var(--a2ui-text-a-color, inherit);font-weight:var(--a2ui-text-a-font-weight, inherit)}\n"] }]
|
|
689
|
-
}], ctorParameters: () => [], propDecorators: { props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: true }] }], componentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentId", required: false }] }], dataContextPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataContextPath", required: false }] }] } });
|
|
740
|
+
args: [{ selector: 'a2ui-v09-text', standalone: true, template: ` <span [class]="'a2ui-text ' + variant()" [innerHTML]="resolvedText()"> </span> `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6,:host ::ng-deep .a2ui-text ol,:host ::ng-deep .a2ui-text ul,:host ::ng-deep .a2ui-text li,:host ::ng-deep .a2ui-text blockquote,:host ::ng-deep .a2ui-text pre{margin:var(--_a2ui-text-margin, 0)}:host ::ng-deep .a2ui-text{color:var( --_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)) )}:host ::ng-deep .a2ui-text h1,:host ::ng-deep .a2ui-text h2,:host ::ng-deep .a2ui-text h3,:host ::ng-deep .a2ui-text h4,:host ::ng-deep .a2ui-text h5,:host ::ng-deep .a2ui-text h6{font-family:var(--a2ui-font-family-title, inherit);line-height:var(--a2ui-line-height-headings, 1.2)}:host ::ng-deep .a2ui-text h1{font-size:var(--a2ui-font-size-2xl)}:host ::ng-deep .a2ui-text h2{font-size:var(--a2ui-font-size-xl)}:host ::ng-deep .a2ui-text h3{font-size:var(--a2ui-font-size-l)}:host ::ng-deep .a2ui-text p,:host ::ng-deep .a2ui-text h4{font-size:var(--a2ui-font-size-m)}:host ::ng-deep .a2ui-text h5{font-size:var(--a2ui-font-size-s)}:host ::ng-deep .a2ui-text p{line-height:var(--a2ui-line-height-body, 1.5)}:host ::ng-deep .a2ui-text.caption{font-size:var(--a2ui-font-size-xs);color:var(--a2ui-text-caption-color, light-dark(#666, #aaa))}:host ::ng-deep .a2ui-text a{color:var(--a2ui-text-a-color, inherit);font-weight:var(--a2ui-text-a-font-weight, inherit)}\n"] }]
|
|
741
|
+
}], ctorParameters: () => [] });
|
|
690
742
|
|
|
691
743
|
/**
|
|
692
744
|
* Copyright 2026 Google LLC
|
|
@@ -751,35 +803,20 @@ const ALIGN_MAP = {
|
|
|
751
803
|
* - `--a2ui-row-gap`: Controls the gap between items in the row. Defaults to `--a2ui-spacing-m` (16px).
|
|
752
804
|
*/
|
|
753
805
|
class RowComponent extends BasicCatalogComponent {
|
|
754
|
-
/**
|
|
755
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
756
|
-
*
|
|
757
|
-
* Expected properties:
|
|
758
|
-
* - `children`: A list of component IDs OR a repeating collection definition.
|
|
759
|
-
* - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').
|
|
760
|
-
* - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').
|
|
761
|
-
*/
|
|
762
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
763
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
764
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
765
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
766
806
|
justify = computed$1(() => {
|
|
767
807
|
const val = this.props()['justify']?.value();
|
|
768
|
-
return val ?
|
|
808
|
+
return val ? JUSTIFY_MAP[val] || val : undefined;
|
|
769
809
|
}, ...(ngDevMode ? [{ debugName: "justify" }] : /* istanbul ignore next */ []));
|
|
770
810
|
align = computed$1(() => {
|
|
771
811
|
const val = this.props()['align']?.value();
|
|
772
|
-
return val ?
|
|
812
|
+
return val ? ALIGN_MAP[val] || val : undefined;
|
|
773
813
|
}, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
774
|
-
children = computed$1(() => {
|
|
775
|
-
const raw = this.props()['children']?.value() || [];
|
|
776
|
-
return Array.isArray(raw) ? raw : [];
|
|
777
|
-
}, ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
814
|
+
children = computed$1(() => this.props()['children'].value() || [], ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
778
815
|
isRepeating = computed$1(() => {
|
|
779
|
-
return !!this.props()['children']
|
|
816
|
+
return !!this.props()['children'].template;
|
|
780
817
|
}, ...(ngDevMode ? [{ debugName: "isRepeating" }] : /* istanbul ignore next */ []));
|
|
781
818
|
templateId = computed$1(() => {
|
|
782
|
-
return this.props()['children']?.
|
|
819
|
+
return this.props()['children'].template?.id;
|
|
783
820
|
}, ...(ngDevMode ? [{ debugName: "templateId" }] : /* istanbul ignore next */ []));
|
|
784
821
|
normalizedChildren = computed$1(() => {
|
|
785
822
|
if (this.isRepeating())
|
|
@@ -792,29 +829,26 @@ class RowComponent extends BasicCatalogComponent {
|
|
|
792
829
|
});
|
|
793
830
|
}, ...(ngDevMode ? [{ debugName: "normalizedChildren" }] : /* istanbul ignore next */ []));
|
|
794
831
|
getNormalizedPath(index) {
|
|
795
|
-
return getNormalizedPath(this.props()['children']?.
|
|
832
|
+
return getNormalizedPath(this.props()['children'].template?.path, this.dataContextPath(), index);
|
|
796
833
|
}
|
|
797
834
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
798
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: RowComponent, isStandalone: true, selector: "a2ui-v09-row",
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
[surfaceId]="surfaceId()"
|
|
804
|
-
>
|
|
805
|
-
</a2ui-v09-component-host>
|
|
806
|
-
}
|
|
835
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: RowComponent, isStandalone: true, selector: "a2ui-v09-row", host: { properties: { "style.display": "\"flex\"", "style.flex-direction": "\"row\"", "style.gap": "\"var(--a2ui-row-gap, var(--a2ui-spacing-m, 16px))\"", "style.justify-content": "justify()", "style.align-items": "align()" } }, usesInheritance: true, ngImport: i0, template: `
|
|
836
|
+
@if (!isRepeating()) {
|
|
837
|
+
@for (child of normalizedChildren(); track child.id) {
|
|
838
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
839
|
+
</a2ui-v09-component-host>
|
|
807
840
|
}
|
|
841
|
+
}
|
|
808
842
|
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
}
|
|
843
|
+
@if (isRepeating()) {
|
|
844
|
+
@for (item of children(); track item; let i = $index) {
|
|
845
|
+
<a2ui-v09-component-host
|
|
846
|
+
[componentKey]="{id: templateId()!, basePath: getNormalizedPath(i)}"
|
|
847
|
+
[surfaceId]="surfaceId()"
|
|
848
|
+
>
|
|
849
|
+
</a2ui-v09-component-host>
|
|
817
850
|
}
|
|
851
|
+
}
|
|
818
852
|
`, isInline: true, dependencies: [{ kind: "component", type: ComponentHostComponent, selector: "a2ui-v09-component-host", inputs: ["componentKey", "surfaceId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
819
853
|
}
|
|
820
854
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: RowComponent, decorators: [{
|
|
@@ -828,32 +862,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
828
862
|
'[style.flex-direction]': '"row"',
|
|
829
863
|
'[style.gap]': '"var(--a2ui-row-gap, var(--a2ui-spacing-m, 16px))"',
|
|
830
864
|
'[style.justify-content]': 'justify()',
|
|
831
|
-
'[style.align-items]': 'align()'
|
|
865
|
+
'[style.align-items]': 'align()',
|
|
832
866
|
},
|
|
833
867
|
template: `
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
[surfaceId]="surfaceId()"
|
|
839
|
-
>
|
|
840
|
-
</a2ui-v09-component-host>
|
|
841
|
-
}
|
|
868
|
+
@if (!isRepeating()) {
|
|
869
|
+
@for (child of normalizedChildren(); track child.id) {
|
|
870
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
871
|
+
</a2ui-v09-component-host>
|
|
842
872
|
}
|
|
873
|
+
}
|
|
843
874
|
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
}
|
|
875
|
+
@if (isRepeating()) {
|
|
876
|
+
@for (item of children(); track item; let i = $index) {
|
|
877
|
+
<a2ui-v09-component-host
|
|
878
|
+
[componentKey]="{id: templateId()!, basePath: getNormalizedPath(i)}"
|
|
879
|
+
[surfaceId]="surfaceId()"
|
|
880
|
+
>
|
|
881
|
+
</a2ui-v09-component-host>
|
|
852
882
|
}
|
|
883
|
+
}
|
|
853
884
|
`,
|
|
854
885
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
855
886
|
}]
|
|
856
|
-
}]
|
|
887
|
+
}] });
|
|
857
888
|
|
|
858
889
|
/**
|
|
859
890
|
* Copyright 2026 Google LLC
|
|
@@ -880,35 +911,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
880
911
|
* - `--a2ui-column-gap`: Controls the gap between items in the column. Defaults to `--a2ui-spacing-m` (16px).
|
|
881
912
|
*/
|
|
882
913
|
class ColumnComponent extends BasicCatalogComponent {
|
|
883
|
-
/**
|
|
884
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
885
|
-
*
|
|
886
|
-
* Expected properties:
|
|
887
|
-
* - `children`: A list of component IDs OR a repeating collection definition.
|
|
888
|
-
* - `justify`: Flexbox justify-content value (e.g., 'flex-start', 'center').
|
|
889
|
-
* - `align`: Flexbox align-items value (e.g., 'flex-start', 'center').
|
|
890
|
-
*/
|
|
891
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
892
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
893
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
894
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
895
914
|
justify = computed$1(() => {
|
|
896
915
|
const val = this.props()['justify']?.value();
|
|
897
|
-
return val ?
|
|
916
|
+
return val ? JUSTIFY_MAP[val] || val : undefined;
|
|
898
917
|
}, ...(ngDevMode ? [{ debugName: "justify" }] : /* istanbul ignore next */ []));
|
|
899
918
|
align = computed$1(() => {
|
|
900
919
|
const val = this.props()['align']?.value();
|
|
901
|
-
return val ?
|
|
920
|
+
return val ? ALIGN_MAP[val] || val : undefined;
|
|
902
921
|
}, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
903
|
-
children = computed$1(() => {
|
|
904
|
-
const raw = this.props()['children']?.value() || [];
|
|
905
|
-
return Array.isArray(raw) ? raw : [];
|
|
906
|
-
}, ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
922
|
+
children = computed$1(() => this.props()['children'].value() || [], ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
907
923
|
isRepeating = computed$1(() => {
|
|
908
|
-
return !!this.props()['children']
|
|
924
|
+
return !!this.props()['children'].template;
|
|
909
925
|
}, ...(ngDevMode ? [{ debugName: "isRepeating" }] : /* istanbul ignore next */ []));
|
|
910
926
|
templateId = computed$1(() => {
|
|
911
|
-
return this.props()['children']?.
|
|
927
|
+
return this.props()['children'].template?.id;
|
|
912
928
|
}, ...(ngDevMode ? [{ debugName: "templateId" }] : /* istanbul ignore next */ []));
|
|
913
929
|
normalizedChildren = computed$1(() => {
|
|
914
930
|
if (this.isRepeating())
|
|
@@ -921,29 +937,26 @@ class ColumnComponent extends BasicCatalogComponent {
|
|
|
921
937
|
});
|
|
922
938
|
}, ...(ngDevMode ? [{ debugName: "normalizedChildren" }] : /* istanbul ignore next */ []));
|
|
923
939
|
getNormalizedPath(index) {
|
|
924
|
-
return getNormalizedPath(this.props()['children']?.
|
|
940
|
+
return getNormalizedPath(this.props()['children'].template?.path, this.dataContextPath(), index);
|
|
925
941
|
}
|
|
926
942
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
927
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ColumnComponent, isStandalone: true, selector: "a2ui-v09-column",
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
[surfaceId]="surfaceId()"
|
|
933
|
-
>
|
|
934
|
-
</a2ui-v09-component-host>
|
|
935
|
-
}
|
|
943
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ColumnComponent, isStandalone: true, selector: "a2ui-v09-column", host: { properties: { "style.display": "\"flex\"", "style.flex-direction": "\"column\"", "style.width": "\"100%\"", "style.gap": "\"var(--a2ui-column-gap, var(--a2ui-spacing-m, 16px))\"", "style.justify-content": "justify()", "style.align-items": "align()" } }, usesInheritance: true, ngImport: i0, template: `
|
|
944
|
+
@if (!isRepeating()) {
|
|
945
|
+
@for (child of normalizedChildren(); track child.id) {
|
|
946
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
947
|
+
</a2ui-v09-component-host>
|
|
936
948
|
}
|
|
949
|
+
}
|
|
937
950
|
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
}
|
|
951
|
+
@if (isRepeating()) {
|
|
952
|
+
@for (item of children(); track item; let i = $index) {
|
|
953
|
+
<a2ui-v09-component-host
|
|
954
|
+
[componentKey]="{id: templateId()!, basePath: getNormalizedPath(i)}"
|
|
955
|
+
[surfaceId]="surfaceId()"
|
|
956
|
+
>
|
|
957
|
+
</a2ui-v09-component-host>
|
|
946
958
|
}
|
|
959
|
+
}
|
|
947
960
|
`, isInline: true, dependencies: [{ kind: "component", type: ComponentHostComponent, selector: "a2ui-v09-component-host", inputs: ["componentKey", "surfaceId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
948
961
|
}
|
|
949
962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ColumnComponent, decorators: [{
|
|
@@ -958,32 +971,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
958
971
|
'[style.width]': '"100%"',
|
|
959
972
|
'[style.gap]': '"var(--a2ui-column-gap, var(--a2ui-spacing-m, 16px))"',
|
|
960
973
|
'[style.justify-content]': 'justify()',
|
|
961
|
-
'[style.align-items]': 'align()'
|
|
974
|
+
'[style.align-items]': 'align()',
|
|
962
975
|
},
|
|
963
976
|
template: `
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
[surfaceId]="surfaceId()"
|
|
969
|
-
>
|
|
970
|
-
</a2ui-v09-component-host>
|
|
971
|
-
}
|
|
977
|
+
@if (!isRepeating()) {
|
|
978
|
+
@for (child of normalizedChildren(); track child.id) {
|
|
979
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
980
|
+
</a2ui-v09-component-host>
|
|
972
981
|
}
|
|
982
|
+
}
|
|
973
983
|
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
}
|
|
984
|
+
@if (isRepeating()) {
|
|
985
|
+
@for (item of children(); track item; let i = $index) {
|
|
986
|
+
<a2ui-v09-component-host
|
|
987
|
+
[componentKey]="{id: templateId()!, basePath: getNormalizedPath(i)}"
|
|
988
|
+
[surfaceId]="surfaceId()"
|
|
989
|
+
>
|
|
990
|
+
</a2ui-v09-component-host>
|
|
982
991
|
}
|
|
992
|
+
}
|
|
983
993
|
`,
|
|
984
994
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
985
995
|
}]
|
|
986
|
-
}]
|
|
996
|
+
}] });
|
|
987
997
|
|
|
988
998
|
/**
|
|
989
999
|
* Copyright 2026 Google LLC
|
|
@@ -1016,27 +1026,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1016
1026
|
* - `--a2ui-button-font-weight`: Controls the font weight.
|
|
1017
1027
|
*/
|
|
1018
1028
|
class ButtonComponent extends BasicCatalogComponent {
|
|
1019
|
-
/**
|
|
1020
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1021
|
-
*
|
|
1022
|
-
* Expected properties:
|
|
1023
|
-
* - `child`: The ID of the component to render inside the button.
|
|
1024
|
-
* - `variant`: Button style variant ('default', 'primary', 'borderless').
|
|
1025
|
-
* - `action`: The A2UI action to dispatch on click.
|
|
1026
|
-
* - `checks`: Optional validation rules.
|
|
1027
|
-
*/
|
|
1028
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1029
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1030
|
-
componentId = input.required(...(ngDevMode ? [{ debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1031
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1032
|
-
rendererService = inject(A2uiRendererService);
|
|
1033
1029
|
variant = computed$1(() => this.props()['variant']?.value() ?? 'default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
1034
1030
|
child = computed$1(() => this.props()['child']?.value(), ...(ngDevMode ? [{ debugName: "child" }] : /* istanbul ignore next */ []));
|
|
1035
1031
|
action = computed$1(() => this.props()['action']?.value(), ...(ngDevMode ? [{ debugName: "action" }] : /* istanbul ignore next */ []));
|
|
1036
1032
|
handleClick() {
|
|
1037
1033
|
const action = this.action();
|
|
1038
1034
|
if (action) {
|
|
1039
|
-
const surface = this.
|
|
1035
|
+
const surface = this.surface();
|
|
1040
1036
|
if (surface) {
|
|
1041
1037
|
const dataContext = new DataContext(surface, this.dataContextPath());
|
|
1042
1038
|
const resolvedAction = dataContext.resolveAction(action);
|
|
@@ -1045,7 +1041,7 @@ class ButtonComponent extends BasicCatalogComponent {
|
|
|
1045
1041
|
}
|
|
1046
1042
|
}
|
|
1047
1043
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1048
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ButtonComponent, isStandalone: true, selector: "a2ui-v09-button",
|
|
1044
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ButtonComponent, isStandalone: true, selector: "a2ui-v09-button", usesInheritance: true, ngImport: i0, template: `
|
|
1049
1045
|
<button
|
|
1050
1046
|
[type]="variant() === 'primary' ? 'submit' : 'button'"
|
|
1051
1047
|
[class]="'a2ui-button ' + variant()"
|
|
@@ -1053,14 +1049,11 @@ class ButtonComponent extends BasicCatalogComponent {
|
|
|
1053
1049
|
[disabled]="props()['isValid']?.value() === false"
|
|
1054
1050
|
>
|
|
1055
1051
|
@if (child()) {
|
|
1056
|
-
<a2ui-v09-component-host
|
|
1057
|
-
[componentKey]="child()!"
|
|
1058
|
-
[surfaceId]="surfaceId()"
|
|
1059
|
-
>
|
|
1052
|
+
<a2ui-v09-component-host [componentKey]="child()!" [surfaceId]="surfaceId()">
|
|
1060
1053
|
</a2ui-v09-component-host>
|
|
1061
1054
|
}
|
|
1062
1055
|
</button>
|
|
1063
|
-
`, isInline: true, styles: [".a2ui-button{padding:var(--a2ui-button-padding, var(--a2ui-spacing-m, .5rem) var(--a2ui-spacing-l, 1rem));border-radius:var(--a2ui-button-border-radius, var(--a2ui-spacing-s, .25rem));border:var(--a2ui-button-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));cursor:pointer;margin:var(--a2ui-button-margin, var(--a2ui-spacing-m, .5rem));background:var(--a2ui-button-background, var(--a2ui-color-surface, #fff));box-shadow:var(--a2ui-button-box-shadow, none);font-weight:var(--a2ui-button-font-weight, normal);--_a2ui-text-margin: 0;--_a2ui-text-color: var(--a2ui-color-on-secondary, #333);color:var(--_a2ui-text-color)}.a2ui-button.primary{background
|
|
1056
|
+
`, isInline: true, styles: [".a2ui-button{padding:var( --a2ui-button-padding, var(--a2ui-spacing-m, .5rem) var(--a2ui-spacing-l, 1rem) );border-radius:var(--a2ui-button-border-radius, var(--a2ui-spacing-s, .25rem));border:var( --a2ui-button-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );cursor:pointer;margin:var(--a2ui-button-margin, var(--a2ui-spacing-m, .5rem));background:var(--a2ui-button-background, var(--a2ui-color-surface, #fff));box-shadow:var(--a2ui-button-box-shadow, none);font-weight:var(--a2ui-button-font-weight, normal);--_a2ui-text-margin: 0;--_a2ui-text-color: var(--a2ui-color-on-secondary, #333);color:var(--_a2ui-text-color)}.a2ui-button.primary{background:var(--a2ui-color-primary, #17e);--_a2ui-text-color: var(--a2ui-color-on-primary, #fff);color:var(--_a2ui-text-color);border:none}.a2ui-button.borderless{background:none;border:none;padding:0;color:var(--a2ui-color-primary, #17e)}.a2ui-button:disabled{background-color:#e9ecef;color:#6c757d;border-color:#ced4da;cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: ComponentHostComponent, selector: "a2ui-v09-component-host", inputs: ["componentKey", "surfaceId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1064
1057
|
}
|
|
1065
1058
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
1066
1059
|
type: Component,
|
|
@@ -1072,15 +1065,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1072
1065
|
[disabled]="props()['isValid']?.value() === false"
|
|
1073
1066
|
>
|
|
1074
1067
|
@if (child()) {
|
|
1075
|
-
<a2ui-v09-component-host
|
|
1076
|
-
[componentKey]="child()!"
|
|
1077
|
-
[surfaceId]="surfaceId()"
|
|
1078
|
-
>
|
|
1068
|
+
<a2ui-v09-component-host [componentKey]="child()!" [surfaceId]="surfaceId()">
|
|
1079
1069
|
</a2ui-v09-component-host>
|
|
1080
1070
|
}
|
|
1081
1071
|
</button>
|
|
1082
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-button{padding:var(--a2ui-button-padding, var(--a2ui-spacing-m, .5rem) var(--a2ui-spacing-l, 1rem));border-radius:var(--a2ui-button-border-radius, var(--a2ui-spacing-s, .25rem));border:var(--a2ui-button-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));cursor:pointer;margin:var(--a2ui-button-margin, var(--a2ui-spacing-m, .5rem));background:var(--a2ui-button-background, var(--a2ui-color-surface, #fff));box-shadow:var(--a2ui-button-box-shadow, none);font-weight:var(--a2ui-button-font-weight, normal);--_a2ui-text-margin: 0;--_a2ui-text-color: var(--a2ui-color-on-secondary, #333);color:var(--_a2ui-text-color)}.a2ui-button.primary{background
|
|
1083
|
-
}]
|
|
1072
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-button{padding:var( --a2ui-button-padding, var(--a2ui-spacing-m, .5rem) var(--a2ui-spacing-l, 1rem) );border-radius:var(--a2ui-button-border-radius, var(--a2ui-spacing-s, .25rem));border:var( --a2ui-button-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );cursor:pointer;margin:var(--a2ui-button-margin, var(--a2ui-spacing-m, .5rem));background:var(--a2ui-button-background, var(--a2ui-color-surface, #fff));box-shadow:var(--a2ui-button-box-shadow, none);font-weight:var(--a2ui-button-font-weight, normal);--_a2ui-text-margin: 0;--_a2ui-text-color: var(--a2ui-color-on-secondary, #333);color:var(--_a2ui-text-color)}.a2ui-button.primary{background:var(--a2ui-color-primary, #17e);--_a2ui-text-color: var(--a2ui-color-on-primary, #fff);color:var(--_a2ui-text-color);border:none}.a2ui-button.borderless{background:none;border:none;padding:0;color:var(--a2ui-color-primary, #17e)}.a2ui-button:disabled{background-color:#e9ecef;color:#6c757d;border-color:#ced4da;cursor:not-allowed}\n"] }]
|
|
1073
|
+
}] });
|
|
1084
1074
|
|
|
1085
1075
|
/**
|
|
1086
1076
|
* Copyright 2026 Google LLC
|
|
@@ -1115,20 +1105,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1115
1105
|
* - `--a2ui-textfield-label-font-weight`: Controls the font weight of the label.
|
|
1116
1106
|
*/
|
|
1117
1107
|
class TextFieldComponent extends BasicCatalogComponent {
|
|
1118
|
-
/**
|
|
1119
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1120
|
-
*
|
|
1121
|
-
* Expected properties:
|
|
1122
|
-
* - `value`: The current string value of the input.
|
|
1123
|
-
* - `label`: Optional label text to display above the input.
|
|
1124
|
-
* - `placeholder`: Hint text shown when the input is empty.
|
|
1125
|
-
* - `variant`: Input type variant ('default', 'obscured' (password), 'number').
|
|
1126
|
-
* - `checks`: Optional validation rules.
|
|
1127
|
-
*/
|
|
1128
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1129
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1130
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1131
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1132
1108
|
label = computed$1(() => this.props()['label']?.value(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
1133
1109
|
value = computed$1(() => this.props()['value']?.value() || '', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
1134
1110
|
placeholder = computed$1(() => this.props()['placeholder']?.value() || '', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
@@ -1150,7 +1126,7 @@ class TextFieldComponent extends BasicCatalogComponent {
|
|
|
1150
1126
|
this.props()['value']?.onUpdate(value);
|
|
1151
1127
|
}
|
|
1152
1128
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1153
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TextFieldComponent, isStandalone: true, selector: "a2ui-v09-text-field",
|
|
1129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TextFieldComponent, isStandalone: true, selector: "a2ui-v09-text-field", usesInheritance: true, ngImport: i0, template: `
|
|
1154
1130
|
<div class="a2ui-text-field-container">
|
|
1155
1131
|
@if (label()) {
|
|
1156
1132
|
<label>{{ label() }}</label>
|
|
@@ -1166,7 +1142,7 @@ class TextFieldComponent extends BasicCatalogComponent {
|
|
|
1166
1142
|
<div class="a2ui-error-message">{{ message }}</div>
|
|
1167
1143
|
}
|
|
1168
1144
|
</div>
|
|
1169
|
-
`, isInline: true, styles: [".a2ui-text-field-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-spacing-xs, 4px)}label{font-size:var(--a2ui-textfield-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-textfield-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}input{padding:var(--a2ui-textfield-padding, 8px);border:var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));border-radius:var(--a2ui-textfield-border-radius, 4px);background-color:var(--a2ui-color-input, #fff);color:var(--a2ui-color-on-input, #333)}input:focus{border-color:var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));outline:none}input.invalid{border-color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red))}.a2ui-error-message{color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));font-size:var(--a2ui-font-size-xs, 12px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1145
|
+
`, isInline: true, styles: [".a2ui-text-field-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-spacing-xs, 4px)}label{font-size:var( --a2ui-textfield-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-textfield-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}input{padding:var(--a2ui-textfield-padding, 8px);border:var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));border-radius:var(--a2ui-textfield-border-radius, 4px);background-color:var(--a2ui-color-input, #fff);color:var(--a2ui-color-on-input, #333)}input:focus{border-color:var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));outline:none}input.invalid{border-color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red))}.a2ui-error-message{color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));font-size:var(--a2ui-font-size-xs, 12px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1170
1146
|
}
|
|
1171
1147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TextFieldComponent, decorators: [{
|
|
1172
1148
|
type: Component,
|
|
@@ -1186,8 +1162,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1186
1162
|
<div class="a2ui-error-message">{{ message }}</div>
|
|
1187
1163
|
}
|
|
1188
1164
|
</div>
|
|
1189
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-text-field-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-spacing-xs, 4px)}label{font-size:var(--a2ui-textfield-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-textfield-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}input{padding:var(--a2ui-textfield-padding, 8px);border:var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));border-radius:var(--a2ui-textfield-border-radius, 4px);background-color:var(--a2ui-color-input, #fff);color:var(--a2ui-color-on-input, #333)}input:focus{border-color:var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));outline:none}input.invalid{border-color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red))}.a2ui-error-message{color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));font-size:var(--a2ui-font-size-xs, 12px)}\n"] }]
|
|
1190
|
-
}]
|
|
1165
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-text-field-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-spacing-xs, 4px)}label{font-size:var( --a2ui-textfield-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-textfield-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}input{padding:var(--a2ui-textfield-padding, 8px);border:var(--a2ui-textfield-border, 1px solid var(--a2ui-color-border, #ccc));border-radius:var(--a2ui-textfield-border-radius, 4px);background-color:var(--a2ui-color-input, #fff);color:var(--a2ui-color-on-input, #333)}input:focus{border-color:var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));outline:none}input.invalid{border-color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red))}.a2ui-error-message{color:var(--a2ui-textfield-color-error, var(--a2ui-color-error, red));font-size:var(--a2ui-font-size-xs, 12px)}\n"] }]
|
|
1166
|
+
}] });
|
|
1191
1167
|
|
|
1192
1168
|
/**
|
|
1193
1169
|
* Copyright 2026 Google LLC
|
|
@@ -1218,32 +1194,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1218
1194
|
* - `--a2ui-image-header-size`: Height of header variant.
|
|
1219
1195
|
*/
|
|
1220
1196
|
class ImageComponent extends BasicCatalogComponent {
|
|
1221
|
-
/**
|
|
1222
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1223
|
-
*
|
|
1224
|
-
* Expected properties:
|
|
1225
|
-
* - `url`: The absolute URL of the image.
|
|
1226
|
-
* - `description`: Accessibility text for the image.
|
|
1227
|
-
* - `fit`: Object-fit mode ('cover', 'contain', 'fill', 'none', 'scale-down').
|
|
1228
|
-
* - `variant`: Style variant ('default', 'circle', 'rounded', 'icon', 'avatar', 'smallFeature', 'mediumFeature', 'largeFeature', 'header').
|
|
1229
|
-
*/
|
|
1230
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1231
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1232
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1233
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1234
1197
|
url = computed$1(() => this.props()['url']?.value(), ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
|
|
1235
1198
|
description = computed$1(() => this.props()['description']?.value() || '', ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
|
|
1236
1199
|
fit = computed$1(() => this.props()['fit']?.value() || 'cover', ...(ngDevMode ? [{ debugName: "fit" }] : /* istanbul ignore next */ []));
|
|
1237
1200
|
variant = computed$1(() => this.props()['variant']?.value() || 'default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
1238
1201
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1239
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1202
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ImageComponent, isStandalone: true, selector: "a2ui-v09-image", usesInheritance: true, ngImport: i0, template: `
|
|
1240
1203
|
<img
|
|
1241
1204
|
[src]="url()"
|
|
1242
1205
|
[alt]="description()"
|
|
1243
1206
|
[style.object-fit]="fit()"
|
|
1244
1207
|
[class]="'a2ui-image ' + variant()"
|
|
1245
1208
|
/>
|
|
1246
|
-
`, isInline: true, styles: [".a2ui-image{display:block;max-width:100%;height:auto
|
|
1209
|
+
`, isInline: true, styles: [".a2ui-image{display:block;max-width:100%;height:auto;border-radius:var(--a2ui-image-border-radius, var(--a2ui-border-radius, 8px))}.a2ui-image.icon{width:var(--a2ui-image-icon-size, 24px);height:var(--a2ui-image-icon-size, 24px)}.a2ui-image.avatar{width:var(--a2ui-image-avatar-size, 40px);height:var(--a2ui-image-avatar-size, 40px);border-radius:50%}.a2ui-image.smallFeature{max-width:var(--a2ui-image-small-feature-size, 100px)}.a2ui-image.largeFeature{max-height:var(--a2ui-image-large-feature-size, 400px)}.a2ui-image.header{height:var(--a2ui-image-header-size, 200px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1247
1210
|
}
|
|
1248
1211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ImageComponent, decorators: [{
|
|
1249
1212
|
type: Component,
|
|
@@ -1254,8 +1217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1254
1217
|
[style.object-fit]="fit()"
|
|
1255
1218
|
[class]="'a2ui-image ' + variant()"
|
|
1256
1219
|
/>
|
|
1257
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-image{display:block;max-width:100%;height:auto
|
|
1258
|
-
}]
|
|
1220
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-image{display:block;max-width:100%;height:auto;border-radius:var(--a2ui-image-border-radius, var(--a2ui-border-radius, 8px))}.a2ui-image.icon{width:var(--a2ui-image-icon-size, 24px);height:var(--a2ui-image-icon-size, 24px)}.a2ui-image.avatar{width:var(--a2ui-image-avatar-size, 40px);height:var(--a2ui-image-avatar-size, 40px);border-radius:50%}.a2ui-image.smallFeature{max-width:var(--a2ui-image-small-feature-size, 100px)}.a2ui-image.largeFeature{max-height:var(--a2ui-image-large-feature-size, 400px)}.a2ui-image.header{height:var(--a2ui-image-header-size, 200px)}\n"] }]
|
|
1221
|
+
}] });
|
|
1259
1222
|
|
|
1260
1223
|
/**
|
|
1261
1224
|
* Copyright 2026 Google LLC
|
|
@@ -1272,6 +1235,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1272
1235
|
* See the License for the specific language governing permissions and
|
|
1273
1236
|
* limitations under the License.
|
|
1274
1237
|
*/
|
|
1238
|
+
const ICON_NAME_OVERRIDES = {
|
|
1239
|
+
play: 'play_arrow',
|
|
1240
|
+
rewind: 'fast_rewind',
|
|
1241
|
+
favoriteOff: 'favorite_border',
|
|
1242
|
+
starOff: 'star_border',
|
|
1243
|
+
};
|
|
1275
1244
|
/**
|
|
1276
1245
|
* Angular implementation of the A2UI Icon component (v0.9).
|
|
1277
1246
|
*
|
|
@@ -1284,62 +1253,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1284
1253
|
* - `--a2ui-icon-font-variation-settings`: Controls font variation settings (e.g. FILL).
|
|
1285
1254
|
*/
|
|
1286
1255
|
class IconComponent extends BasicCatalogComponent {
|
|
1287
|
-
/**
|
|
1288
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1289
|
-
*
|
|
1290
|
-
* Expected properties:
|
|
1291
|
-
* - `name`: The name of the icon (e.g., 'home', 'settings') OR an object
|
|
1292
|
-
* with a `path` property for SVG icons.
|
|
1293
|
-
* - `color`: The CSS color to apply to the icon.
|
|
1294
|
-
*/
|
|
1295
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1296
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1297
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1298
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1299
1256
|
color = computed$1(() => this.props()['color']?.value(), ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
1300
1257
|
iconNameRaw = computed$1(() => this.props()['name']?.value(), ...(ngDevMode ? [{ debugName: "iconNameRaw" }] : /* istanbul ignore next */ []));
|
|
1301
|
-
|
|
1258
|
+
isSvgPath = computed$1(() => {
|
|
1302
1259
|
const name = this.iconNameRaw();
|
|
1303
|
-
return typeof name === 'object' && name !== null && '
|
|
1304
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
1305
|
-
|
|
1260
|
+
return typeof name === 'object' && name !== null && 'svgPath' in name;
|
|
1261
|
+
}, ...(ngDevMode ? [{ debugName: "isSvgPath" }] : /* istanbul ignore next */ []));
|
|
1262
|
+
svgPath = computed$1(() => {
|
|
1306
1263
|
const name = this.iconNameRaw();
|
|
1307
|
-
|
|
1308
|
-
|
|
1264
|
+
if (typeof name === 'object' && name !== null && 'svgPath' in name) {
|
|
1265
|
+
return name.svgPath;
|
|
1266
|
+
}
|
|
1267
|
+
return '';
|
|
1268
|
+
}, ...(ngDevMode ? [{ debugName: "svgPath" }] : /* istanbul ignore next */ []));
|
|
1309
1269
|
iconName = computed$1(() => {
|
|
1310
1270
|
const name = this.iconNameRaw();
|
|
1311
1271
|
if (typeof name !== 'string')
|
|
1312
1272
|
return '';
|
|
1273
|
+
if (ICON_NAME_OVERRIDES[name])
|
|
1274
|
+
return ICON_NAME_OVERRIDES[name];
|
|
1313
1275
|
// Convert camelCase to snake_case for Material Icons
|
|
1314
|
-
return name.replace(/[A-Z]/g,
|
|
1276
|
+
return name.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
|
|
1315
1277
|
}, ...(ngDevMode ? [{ debugName: "iconName" }] : /* istanbul ignore next */ []));
|
|
1316
1278
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1317
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: IconComponent, isStandalone: true, selector: "a2ui-v09-icon",
|
|
1318
|
-
@if (
|
|
1279
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: IconComponent, isStandalone: true, selector: "a2ui-v09-icon", usesInheritance: true, ngImport: i0, template: `
|
|
1280
|
+
@if (isSvgPath()) {
|
|
1319
1281
|
<svg class="a2ui-icon svg" viewBox="0 0 24 24" [style.fill]="color() || 'currentColor'">
|
|
1320
|
-
<path [attr.d]="
|
|
1282
|
+
<path [attr.d]="svgPath()"></path>
|
|
1321
1283
|
</svg>
|
|
1322
1284
|
} @else {
|
|
1323
1285
|
<i class="material-icons a2ui-icon" [style.color]="color()">
|
|
1324
1286
|
{{ iconName() }}
|
|
1325
1287
|
</i>
|
|
1326
1288
|
}
|
|
1327
|
-
`, isInline: true, styles: [".a2ui-icon{display:inline-block;width:var(--a2ui-icon-size, 24px);height:var(--a2ui-icon-size, 24px);font-size:var(--a2ui-icon-size, 24px);font-family:var(--a2ui-icon-font-family, \"Material Icons\");color:var(--a2ui-icon-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333)));font-variation-settings:var(--a2ui-icon-font-variation-settings, \"FILL\" 1);line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\";vertical-align:middle}.a2ui-icon.svg{fill:currentColor}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1289
|
+
`, isInline: true, styles: [".a2ui-icon{display:inline-block;width:var(--a2ui-icon-size, 24px);height:var(--a2ui-icon-size, 24px);font-size:var(--a2ui-icon-size, 24px);font-family:var(--a2ui-icon-font-family, \"Material Icons\");color:var( --a2ui-icon-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333)) );font-variation-settings:var(--a2ui-icon-font-variation-settings, \"FILL\" 1);line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\";vertical-align:middle}.a2ui-icon.svg{fill:currentColor}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1328
1290
|
}
|
|
1329
1291
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: IconComponent, decorators: [{
|
|
1330
1292
|
type: Component,
|
|
1331
1293
|
args: [{ selector: 'a2ui-v09-icon', standalone: true, imports: [], template: `
|
|
1332
|
-
@if (
|
|
1294
|
+
@if (isSvgPath()) {
|
|
1333
1295
|
<svg class="a2ui-icon svg" viewBox="0 0 24 24" [style.fill]="color() || 'currentColor'">
|
|
1334
|
-
<path [attr.d]="
|
|
1296
|
+
<path [attr.d]="svgPath()"></path>
|
|
1335
1297
|
</svg>
|
|
1336
1298
|
} @else {
|
|
1337
1299
|
<i class="material-icons a2ui-icon" [style.color]="color()">
|
|
1338
1300
|
{{ iconName() }}
|
|
1339
1301
|
</i>
|
|
1340
1302
|
}
|
|
1341
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-icon{display:inline-block;width:var(--a2ui-icon-size, 24px);height:var(--a2ui-icon-size, 24px);font-size:var(--a2ui-icon-size, 24px);font-family:var(--a2ui-icon-font-family, \"Material Icons\");color:var(--a2ui-icon-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333)));font-variation-settings:var(--a2ui-icon-font-variation-settings, \"FILL\" 1);line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\";vertical-align:middle}.a2ui-icon.svg{fill:currentColor}\n"] }]
|
|
1342
|
-
}]
|
|
1303
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-icon{display:inline-block;width:var(--a2ui-icon-size, 24px);height:var(--a2ui-icon-size, 24px);font-size:var(--a2ui-icon-size, 24px);font-family:var(--a2ui-icon-font-family, \"Material Icons\");color:var( --a2ui-icon-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333)) );font-variation-settings:var(--a2ui-icon-font-variation-settings, \"FILL\" 1);line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\";vertical-align:middle}.a2ui-icon.svg{fill:currentColor}\n"] }]
|
|
1304
|
+
}] });
|
|
1343
1305
|
|
|
1344
1306
|
/**
|
|
1345
1307
|
* Copyright 2026 Google LLC
|
|
@@ -1365,21 +1327,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1365
1327
|
* - `--a2ui-video-border-radius`: Controls the border radius of the video element.
|
|
1366
1328
|
*/
|
|
1367
1329
|
class VideoComponent extends BasicCatalogComponent {
|
|
1368
|
-
/**
|
|
1369
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1370
|
-
*
|
|
1371
|
-
* Expected properties:
|
|
1372
|
-
* - `url`: The absolute URL of the video file.
|
|
1373
|
-
* - `posterUrl`: The URL of an image to show before the video starts.
|
|
1374
|
-
*/
|
|
1375
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1376
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1377
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1378
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1379
1330
|
url = computed$1(() => this.props()['url']?.value(), ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
|
|
1380
1331
|
posterUrl = computed$1(() => this.props()['posterUrl']?.value(), ...(ngDevMode ? [{ debugName: "posterUrl" }] : /* istanbul ignore next */ []));
|
|
1381
1332
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: VideoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1382
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: VideoComponent, isStandalone: true, selector: "a2ui-v09-video", usesInheritance: true, ngImport: i0, template: `
|
|
1383
1334
|
<div class="a2ui-video-container">
|
|
1384
1335
|
<video
|
|
1385
1336
|
[attr.src]="url() || null"
|
|
@@ -1406,7 +1357,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1406
1357
|
</video>
|
|
1407
1358
|
</div>
|
|
1408
1359
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-video-container{width:100%;max-width:100%}.a2ui-video{width:100%;height:auto;display:block;border-radius:var(--a2ui-video-border-radius, 0)}\n"] }]
|
|
1409
|
-
}]
|
|
1360
|
+
}] });
|
|
1410
1361
|
|
|
1411
1362
|
/**
|
|
1412
1363
|
* Copyright 2026 Google LLC
|
|
@@ -1434,21 +1385,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1434
1385
|
* - `--a2ui-audioplayer-padding`: Controls the padding. Defaults to `0`.
|
|
1435
1386
|
*/
|
|
1436
1387
|
class AudioPlayerComponent extends BasicCatalogComponent {
|
|
1437
|
-
/**
|
|
1438
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1439
|
-
*
|
|
1440
|
-
* Expected properties:
|
|
1441
|
-
* - `url`: The absolute URL of the audio file.
|
|
1442
|
-
* - `description`: Optional text to display above the player.
|
|
1443
|
-
*/
|
|
1444
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1445
|
-
surfaceId = input(...(ngDevMode ? [undefined, { debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1446
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1447
|
-
dataContextPath = input(...(ngDevMode ? [undefined, { debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1448
1388
|
description = computed$1(() => this.props()['description']?.value(), ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
|
|
1449
1389
|
url = computed$1(() => this.props()['url']?.value(), ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
|
|
1450
1390
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AudioPlayerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1451
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AudioPlayerComponent, isStandalone: true, selector: "a2ui-v09-audio-player",
|
|
1391
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AudioPlayerComponent, isStandalone: true, selector: "a2ui-v09-audio-player", usesInheritance: true, ngImport: i0, template: `
|
|
1452
1392
|
<div class="a2ui-audio-player">
|
|
1453
1393
|
@if (description()) {
|
|
1454
1394
|
<div class="a2ui-audio-description">
|
|
@@ -1475,7 +1415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1475
1415
|
</audio>
|
|
1476
1416
|
</div>
|
|
1477
1417
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-audio-player{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, .25rem);background:var(--a2ui-audioplayer-background, transparent);border-radius:var(--a2ui-audioplayer-border-radius, 0);padding:var(--a2ui-audioplayer-padding, 0);width:100%}.a2ui-audio-description{font-size:var(--a2ui-font-size-s, .875rem);color:var(--a2ui-text-caption-color, light-dark(#666, #aaa))}.a2ui-audio{width:100%}\n"] }]
|
|
1478
|
-
}]
|
|
1418
|
+
}] });
|
|
1479
1419
|
|
|
1480
1420
|
/**
|
|
1481
1421
|
* Copyright 2026 Google LLC
|
|
@@ -1496,31 +1436,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1496
1436
|
* Angular implementation of the A2UI List component (v0.9).
|
|
1497
1437
|
*
|
|
1498
1438
|
* Renders a list of child components with support for ordered, unordered,
|
|
1499
|
-
* and unstyled layouts in both vertical and horizontal
|
|
1439
|
+
* and unstyled layouts in both vertical and horizontal directions.
|
|
1500
1440
|
*
|
|
1501
1441
|
* Supported CSS variables:
|
|
1502
1442
|
* - `--a2ui-list-gap`: Controls the gap between items.
|
|
1503
1443
|
* - `--a2ui-list-padding`: Controls the padding (applied to padding-inline-start).
|
|
1504
1444
|
*/
|
|
1505
1445
|
class ListComponent extends BasicCatalogComponent {
|
|
1506
|
-
/**
|
|
1507
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1508
|
-
*
|
|
1509
|
-
* Expected properties:
|
|
1510
|
-
* - `children`: A list of component IDs to render as list items.
|
|
1511
|
-
* - `listStyle`: The type of list ('ordered', 'unordered', 'none').
|
|
1512
|
-
* - `orientation`: The layout direction ('vertical', 'horizontal').
|
|
1513
|
-
*/
|
|
1514
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1515
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1516
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1517
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1518
1446
|
listStyle = computed$1(() => this.props()['listStyle']?.value(), ...(ngDevMode ? [{ debugName: "listStyle" }] : /* istanbul ignore next */ []));
|
|
1519
|
-
|
|
1520
|
-
children = computed$1(() => {
|
|
1521
|
-
const raw = this.props()['children']?.value();
|
|
1522
|
-
return Array.isArray(raw) ? raw : [];
|
|
1523
|
-
}, ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
1447
|
+
direction = computed$1(() => this.props()['direction']?.value() || 'vertical', ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
|
|
1448
|
+
children = computed$1(() => this.props()['children'].value(), ...(ngDevMode ? [{ debugName: "children" }] : /* istanbul ignore next */ []));
|
|
1524
1449
|
listTag = computed$1(() => {
|
|
1525
1450
|
const style = this.listStyle();
|
|
1526
1451
|
if (style === 'ordered')
|
|
@@ -1541,42 +1466,33 @@ class ListComponent extends BasicCatalogComponent {
|
|
|
1541
1466
|
*/
|
|
1542
1467
|
trackBy = (index, item) => `${item.basePath}/${item.id}`;
|
|
1543
1468
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1544
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ListComponent, isStandalone: true, selector: "a2ui-v09-list",
|
|
1469
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ListComponent, isStandalone: true, selector: "a2ui-v09-list", usesInheritance: true, ngImport: i0, template: `
|
|
1545
1470
|
@switch (listTag()) {
|
|
1546
1471
|
@case ('ol') {
|
|
1547
|
-
<ol [class]="'a2ui-list ' +
|
|
1472
|
+
<ol [class]="'a2ui-list ' + direction()" [style.list-style-type]="styleType()">
|
|
1548
1473
|
@for (child of children(); track trackBy($index, child)) {
|
|
1549
1474
|
<li>
|
|
1550
|
-
<a2ui-v09-component-host
|
|
1551
|
-
[componentKey]="child"
|
|
1552
|
-
[surfaceId]="surfaceId()"
|
|
1553
|
-
>
|
|
1475
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1554
1476
|
</a2ui-v09-component-host>
|
|
1555
1477
|
</li>
|
|
1556
1478
|
}
|
|
1557
1479
|
</ol>
|
|
1558
1480
|
}
|
|
1559
1481
|
@case ('ul') {
|
|
1560
|
-
<ul [class]="'a2ui-list ' +
|
|
1482
|
+
<ul [class]="'a2ui-list ' + direction()" [style.list-style-type]="styleType()">
|
|
1561
1483
|
@for (child of children(); track trackBy($index, child)) {
|
|
1562
1484
|
<li>
|
|
1563
|
-
<a2ui-v09-component-host
|
|
1564
|
-
[componentKey]="child"
|
|
1565
|
-
[surfaceId]="surfaceId()"
|
|
1566
|
-
>
|
|
1485
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1567
1486
|
</a2ui-v09-component-host>
|
|
1568
1487
|
</li>
|
|
1569
1488
|
}
|
|
1570
1489
|
</ul>
|
|
1571
1490
|
}
|
|
1572
1491
|
@default {
|
|
1573
|
-
<div [class]="'a2ui-list ' +
|
|
1492
|
+
<div [class]="'a2ui-list ' + direction()" style="list-style-type: none;">
|
|
1574
1493
|
@for (child of children(); track trackBy($index, child)) {
|
|
1575
1494
|
<div class="a2ui-list-item-none">
|
|
1576
|
-
<a2ui-v09-component-host
|
|
1577
|
-
[componentKey]="child"
|
|
1578
|
-
[surfaceId]="surfaceId()"
|
|
1579
|
-
>
|
|
1495
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1580
1496
|
</a2ui-v09-component-host>
|
|
1581
1497
|
</div>
|
|
1582
1498
|
}
|
|
@@ -1590,39 +1506,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1590
1506
|
args: [{ selector: 'a2ui-v09-list', standalone: true, imports: [ComponentHostComponent], template: `
|
|
1591
1507
|
@switch (listTag()) {
|
|
1592
1508
|
@case ('ol') {
|
|
1593
|
-
<ol [class]="'a2ui-list ' +
|
|
1509
|
+
<ol [class]="'a2ui-list ' + direction()" [style.list-style-type]="styleType()">
|
|
1594
1510
|
@for (child of children(); track trackBy($index, child)) {
|
|
1595
1511
|
<li>
|
|
1596
|
-
<a2ui-v09-component-host
|
|
1597
|
-
[componentKey]="child"
|
|
1598
|
-
[surfaceId]="surfaceId()"
|
|
1599
|
-
>
|
|
1512
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1600
1513
|
</a2ui-v09-component-host>
|
|
1601
1514
|
</li>
|
|
1602
1515
|
}
|
|
1603
1516
|
</ol>
|
|
1604
1517
|
}
|
|
1605
1518
|
@case ('ul') {
|
|
1606
|
-
<ul [class]="'a2ui-list ' +
|
|
1519
|
+
<ul [class]="'a2ui-list ' + direction()" [style.list-style-type]="styleType()">
|
|
1607
1520
|
@for (child of children(); track trackBy($index, child)) {
|
|
1608
1521
|
<li>
|
|
1609
|
-
<a2ui-v09-component-host
|
|
1610
|
-
[componentKey]="child"
|
|
1611
|
-
[surfaceId]="surfaceId()"
|
|
1612
|
-
>
|
|
1522
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1613
1523
|
</a2ui-v09-component-host>
|
|
1614
1524
|
</li>
|
|
1615
1525
|
}
|
|
1616
1526
|
</ul>
|
|
1617
1527
|
}
|
|
1618
1528
|
@default {
|
|
1619
|
-
<div [class]="'a2ui-list ' +
|
|
1529
|
+
<div [class]="'a2ui-list ' + direction()" style="list-style-type: none;">
|
|
1620
1530
|
@for (child of children(); track trackBy($index, child)) {
|
|
1621
1531
|
<div class="a2ui-list-item-none">
|
|
1622
|
-
<a2ui-v09-component-host
|
|
1623
|
-
[componentKey]="child"
|
|
1624
|
-
[surfaceId]="surfaceId()"
|
|
1625
|
-
>
|
|
1532
|
+
<a2ui-v09-component-host [componentKey]="child" [surfaceId]="surfaceId()">
|
|
1626
1533
|
</a2ui-v09-component-host>
|
|
1627
1534
|
</div>
|
|
1628
1535
|
}
|
|
@@ -1630,7 +1537,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1630
1537
|
}
|
|
1631
1538
|
}
|
|
1632
1539
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-list{display:flex;padding-inline-start:var(--a2ui-list-padding, var(--a2ui-spacing-l, 24px));margin:0}.a2ui-list.vertical{flex-direction:column;gap:var(--a2ui-list-gap, var(--a2ui-spacing-s, 8px))}.a2ui-list.horizontal{flex-direction:row;gap:var(--a2ui-list-gap, var(--a2ui-spacing-m, 16px));list-style-position:inside}.a2ui-list-item-none{display:block}.horizontal .a2ui-list-item-none{display:inline-block}\n"] }]
|
|
1633
|
-
}]
|
|
1540
|
+
}] });
|
|
1634
1541
|
|
|
1635
1542
|
/**
|
|
1636
1543
|
* Copyright 2026 Google LLC
|
|
@@ -1661,44 +1568,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1661
1568
|
* - `--a2ui-card-margin`: Controls the margin.
|
|
1662
1569
|
*/
|
|
1663
1570
|
class CardComponent extends BasicCatalogComponent {
|
|
1664
|
-
/**
|
|
1665
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1666
|
-
*
|
|
1667
|
-
* Expected properties:
|
|
1668
|
-
* - `child`: The component ID to render inside the card.
|
|
1669
|
-
*/
|
|
1670
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1671
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1672
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1673
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1674
1571
|
child = computed$1(() => this.props()['child']?.value(), ...(ngDevMode ? [{ debugName: "child" }] : /* istanbul ignore next */ []));
|
|
1675
1572
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1676
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: CardComponent, isStandalone: true, selector: "a2ui-v09-card",
|
|
1573
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: CardComponent, isStandalone: true, selector: "a2ui-v09-card", usesInheritance: true, ngImport: i0, template: `
|
|
1677
1574
|
<div class="a2ui-card">
|
|
1678
1575
|
@if (child()) {
|
|
1679
|
-
<a2ui-v09-component-host
|
|
1680
|
-
[componentKey]="child()!"
|
|
1681
|
-
[surfaceId]="surfaceId()"
|
|
1682
|
-
>
|
|
1576
|
+
<a2ui-v09-component-host [componentKey]="child()!" [surfaceId]="surfaceId()">
|
|
1683
1577
|
</a2ui-v09-component-host>
|
|
1684
1578
|
}
|
|
1685
1579
|
</div>
|
|
1686
|
-
`, isInline: true, styles: [".a2ui-card{padding:var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));border-radius:var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));box-shadow:var(--a2ui-card-box-shadow, 0 2px 4px rgba(0,0,0
|
|
1580
|
+
`, isInline: true, styles: [".a2ui-card{padding:var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));border-radius:var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));box-shadow:var(--a2ui-card-box-shadow, 0 2px 4px rgba(0, 0, 0, .1));background:var(--a2ui-card-background, var(--a2ui-color-surface, #fff));border:var( --a2ui-card-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );margin:var(--a2ui-card-margin, var(--a2ui-spacing-m, 16px))}\n"], dependencies: [{ kind: "component", type: ComponentHostComponent, selector: "a2ui-v09-component-host", inputs: ["componentKey", "surfaceId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1687
1581
|
}
|
|
1688
1582
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CardComponent, decorators: [{
|
|
1689
1583
|
type: Component,
|
|
1690
1584
|
args: [{ selector: 'a2ui-v09-card', standalone: true, imports: [ComponentHostComponent], template: `
|
|
1691
1585
|
<div class="a2ui-card">
|
|
1692
1586
|
@if (child()) {
|
|
1693
|
-
<a2ui-v09-component-host
|
|
1694
|
-
[componentKey]="child()!"
|
|
1695
|
-
[surfaceId]="surfaceId()"
|
|
1696
|
-
>
|
|
1587
|
+
<a2ui-v09-component-host [componentKey]="child()!" [surfaceId]="surfaceId()">
|
|
1697
1588
|
</a2ui-v09-component-host>
|
|
1698
1589
|
}
|
|
1699
1590
|
</div>
|
|
1700
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-card{padding:var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));border-radius:var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));box-shadow:var(--a2ui-card-box-shadow, 0 2px 4px rgba(0,0,0
|
|
1701
|
-
}]
|
|
1591
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-card{padding:var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px));border-radius:var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px));box-shadow:var(--a2ui-card-box-shadow, 0 2px 4px rgba(0, 0, 0, .1));background:var(--a2ui-card-background, var(--a2ui-color-surface, #fff));border:var( --a2ui-card-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );margin:var(--a2ui-card-margin, var(--a2ui-spacing-m, 16px))}\n"] }]
|
|
1592
|
+
}] });
|
|
1702
1593
|
|
|
1703
1594
|
/**
|
|
1704
1595
|
* Copyright 2026 Google LLC
|
|
@@ -1730,33 +1621,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1730
1621
|
* - `--a2ui-tabs-content-padding`: Controls the padding of the tab content.
|
|
1731
1622
|
*/
|
|
1732
1623
|
class TabsComponent extends BasicCatalogComponent {
|
|
1733
|
-
/**
|
|
1734
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1735
|
-
*
|
|
1736
|
-
* Expected properties:
|
|
1737
|
-
* - `tabs`: A list of tab objects, each containing a `label` and `content` ID.
|
|
1738
|
-
*/
|
|
1739
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1740
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1741
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1742
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1743
1624
|
activeTabIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeTabIndex" }] : /* istanbul ignore next */ []));
|
|
1744
1625
|
tabs = computed$1(() => this.props()['tabs']?.value() || [], ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
|
|
1745
1626
|
activeTab = computed$1(() => this.tabs()[this.activeTabIndex()], ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
|
|
1746
|
-
|
|
1747
|
-
const
|
|
1748
|
-
if (!
|
|
1627
|
+
normalizedActiveTabChild = computed$1(() => {
|
|
1628
|
+
const child = this.activeTab()?.child;
|
|
1629
|
+
if (!child)
|
|
1749
1630
|
return null;
|
|
1750
|
-
if (typeof
|
|
1751
|
-
return
|
|
1631
|
+
if (typeof child === 'object' && child !== null && 'id' in child) {
|
|
1632
|
+
return child;
|
|
1752
1633
|
}
|
|
1753
|
-
return { id:
|
|
1754
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
1634
|
+
return { id: child, basePath: this.dataContextPath() };
|
|
1635
|
+
}, ...(ngDevMode ? [{ debugName: "normalizedActiveTabChild" }] : /* istanbul ignore next */ []));
|
|
1755
1636
|
setActiveTab(index) {
|
|
1756
1637
|
this.activeTabIndex.set(index);
|
|
1757
1638
|
}
|
|
1758
1639
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1759
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TabsComponent, isStandalone: true, selector: "a2ui-v09-tabs",
|
|
1640
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TabsComponent, isStandalone: true, selector: "a2ui-v09-tabs", usesInheritance: true, ngImport: i0, template: `
|
|
1760
1641
|
<div class="a2ui-tabs">
|
|
1761
1642
|
<div class="a2ui-tab-bar">
|
|
1762
1643
|
@for (tab of tabs(); track tab; let i = $index) {
|
|
@@ -1765,14 +1646,14 @@ class TabsComponent extends BasicCatalogComponent {
|
|
|
1765
1646
|
[class.active]="activeTabIndex() === i"
|
|
1766
1647
|
(click)="setActiveTab(i)"
|
|
1767
1648
|
>
|
|
1768
|
-
{{ tab.
|
|
1649
|
+
{{ tab.title }}
|
|
1769
1650
|
</button>
|
|
1770
1651
|
}
|
|
1771
1652
|
</div>
|
|
1772
|
-
@if (
|
|
1653
|
+
@if (normalizedActiveTabChild()) {
|
|
1773
1654
|
<div class="a2ui-tab-content">
|
|
1774
1655
|
<a2ui-v09-component-host
|
|
1775
|
-
[componentKey]="
|
|
1656
|
+
[componentKey]="normalizedActiveTabChild()!"
|
|
1776
1657
|
[surfaceId]="surfaceId()"
|
|
1777
1658
|
>
|
|
1778
1659
|
</a2ui-v09-component-host>
|
|
@@ -1792,14 +1673,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1792
1673
|
[class.active]="activeTabIndex() === i"
|
|
1793
1674
|
(click)="setActiveTab(i)"
|
|
1794
1675
|
>
|
|
1795
|
-
{{ tab.
|
|
1676
|
+
{{ tab.title }}
|
|
1796
1677
|
</button>
|
|
1797
1678
|
}
|
|
1798
1679
|
</div>
|
|
1799
|
-
@if (
|
|
1680
|
+
@if (normalizedActiveTabChild()) {
|
|
1800
1681
|
<div class="a2ui-tab-content">
|
|
1801
1682
|
<a2ui-v09-component-host
|
|
1802
|
-
[componentKey]="
|
|
1683
|
+
[componentKey]="normalizedActiveTabChild()!"
|
|
1803
1684
|
[surfaceId]="surfaceId()"
|
|
1804
1685
|
>
|
|
1805
1686
|
</a2ui-v09-component-host>
|
|
@@ -1807,7 +1688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1807
1688
|
}
|
|
1808
1689
|
</div>
|
|
1809
1690
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-tabs{display:flex;flex-direction:column;width:100%}.a2ui-tab-bar{display:flex;border-bottom:var(--a2ui-tabs-border, 2px solid var(--a2ui-color-border, #eee));gap:var(--a2ui-spacing-m, 16px)}.a2ui-tab-button{padding:var(--a2ui-spacing-s, 8px) var(--a2ui-spacing-m, 16px);border:none;background:var(--a2ui-tabs-header-background, transparent);cursor:pointer;font-weight:500;color:var(--a2ui-tabs-header-color, var(--a2ui-text-caption-color, #666));border-bottom:2px solid transparent;margin-bottom:-2px}.a2ui-tab-button.active{background:var(--a2ui-tabs-header-background-active, transparent);color:var(--a2ui-tabs-header-color-active, var(--a2ui-color-primary, #007bff));border-bottom:2px solid var(--a2ui-color-primary, #007bff)}.a2ui-tab-content{padding:var(--a2ui-tabs-content-padding, var(--a2ui-spacing-m, 16px) 0)}\n"] }]
|
|
1810
|
-
}]
|
|
1691
|
+
}] });
|
|
1811
1692
|
|
|
1812
1693
|
/**
|
|
1813
1694
|
* Copyright 2026 Google LLC
|
|
@@ -1837,17 +1718,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1837
1718
|
* - `--a2ui-modal-backdrop-bg`: Controls the background of the backdrop.
|
|
1838
1719
|
*/
|
|
1839
1720
|
class ModalComponent extends BasicCatalogComponent {
|
|
1840
|
-
/**
|
|
1841
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1842
|
-
*
|
|
1843
|
-
* Expected properties:
|
|
1844
|
-
* - `trigger`: The ID of the component that opens the modal.
|
|
1845
|
-
* - `content`: The ID of the component to display inside the modal.
|
|
1846
|
-
*/
|
|
1847
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1848
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1849
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1850
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1851
1721
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
1852
1722
|
trigger = computed$1(() => this.props()['trigger']?.value(), ...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
1853
1723
|
content = computed$1(() => this.props()['content']?.value(), ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
@@ -1858,14 +1728,11 @@ class ModalComponent extends BasicCatalogComponent {
|
|
|
1858
1728
|
this.isOpen.set(false);
|
|
1859
1729
|
}
|
|
1860
1730
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1861
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ModalComponent, isStandalone: true, selector: "a2ui-v09-modal",
|
|
1731
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ModalComponent, isStandalone: true, selector: "a2ui-v09-modal", usesInheritance: true, ngImport: i0, template: `
|
|
1862
1732
|
<div class="a2ui-modal-wrapper">
|
|
1863
1733
|
<div (click)="openModal()" class="a2ui-modal-trigger">
|
|
1864
1734
|
@if (trigger()) {
|
|
1865
|
-
<a2ui-v09-component-host
|
|
1866
|
-
[componentKey]="trigger()!"
|
|
1867
|
-
[surfaceId]="surfaceId()"
|
|
1868
|
-
>
|
|
1735
|
+
<a2ui-v09-component-host [componentKey]="trigger()!" [surfaceId]="surfaceId()">
|
|
1869
1736
|
</a2ui-v09-component-host>
|
|
1870
1737
|
}
|
|
1871
1738
|
</div>
|
|
@@ -1875,10 +1742,7 @@ class ModalComponent extends BasicCatalogComponent {
|
|
|
1875
1742
|
<div class="a2ui-modal-content" (click)="$event.stopPropagation()">
|
|
1876
1743
|
<button class="a2ui-modal-close" (click)="closeModal()">×</button>
|
|
1877
1744
|
@if (content()) {
|
|
1878
|
-
<a2ui-v09-component-host
|
|
1879
|
-
[componentKey]="content()!"
|
|
1880
|
-
[surfaceId]="surfaceId()"
|
|
1881
|
-
>
|
|
1745
|
+
<a2ui-v09-component-host [componentKey]="content()!" [surfaceId]="surfaceId()">
|
|
1882
1746
|
</a2ui-v09-component-host>
|
|
1883
1747
|
}
|
|
1884
1748
|
</div>
|
|
@@ -1893,10 +1757,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1893
1757
|
<div class="a2ui-modal-wrapper">
|
|
1894
1758
|
<div (click)="openModal()" class="a2ui-modal-trigger">
|
|
1895
1759
|
@if (trigger()) {
|
|
1896
|
-
<a2ui-v09-component-host
|
|
1897
|
-
[componentKey]="trigger()!"
|
|
1898
|
-
[surfaceId]="surfaceId()"
|
|
1899
|
-
>
|
|
1760
|
+
<a2ui-v09-component-host [componentKey]="trigger()!" [surfaceId]="surfaceId()">
|
|
1900
1761
|
</a2ui-v09-component-host>
|
|
1901
1762
|
}
|
|
1902
1763
|
</div>
|
|
@@ -1906,10 +1767,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1906
1767
|
<div class="a2ui-modal-content" (click)="$event.stopPropagation()">
|
|
1907
1768
|
<button class="a2ui-modal-close" (click)="closeModal()">×</button>
|
|
1908
1769
|
@if (content()) {
|
|
1909
|
-
<a2ui-v09-component-host
|
|
1910
|
-
[componentKey]="content()!"
|
|
1911
|
-
[surfaceId]="surfaceId()"
|
|
1912
|
-
>
|
|
1770
|
+
<a2ui-v09-component-host [componentKey]="content()!" [surfaceId]="surfaceId()">
|
|
1913
1771
|
</a2ui-v09-component-host>
|
|
1914
1772
|
}
|
|
1915
1773
|
</div>
|
|
@@ -1917,7 +1775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1917
1775
|
}
|
|
1918
1776
|
</div>
|
|
1919
1777
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-modal-wrapper{display:inline-block}.a2ui-modal-trigger{cursor:pointer}.a2ui-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--a2ui-modal-backdrop-bg, rgba(0, 0, 0, .5));display:flex;justify-content:center;align-items:center;z-index:1000}.a2ui-modal-content{background:var(--a2ui-modal-background, var(--a2ui-color-surface, white));padding:var(--a2ui-modal-padding, var(--a2ui-spacing-xl, 32px));border-radius:var(--a2ui-modal-border-radius, var(--a2ui-border-radius, 8px));position:relative;min-width:300px;max-width:80%;max-height:80%;overflow-y:auto;box-shadow:var(--a2ui-modal-box-shadow, 0 10px 25px rgba(0, 0, 0, .2))}.a2ui-modal-close{position:absolute;top:10px;right:15px;border:none;background:none;font-size:24px;cursor:pointer;color:var(--a2ui-text-caption-color, #999)}.a2ui-modal-close:hover{color:var(--a2ui-text-color, #333)}\n"] }]
|
|
1920
|
-
}]
|
|
1778
|
+
}] });
|
|
1921
1779
|
|
|
1922
1780
|
/**
|
|
1923
1781
|
* Copyright 2026 Google LLC
|
|
@@ -1944,25 +1802,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1944
1802
|
* - `--a2ui-divider-spacing`: Controls the margin around the divider.
|
|
1945
1803
|
*/
|
|
1946
1804
|
class DividerComponent extends BasicCatalogComponent {
|
|
1947
|
-
/**
|
|
1948
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
1949
|
-
*
|
|
1950
|
-
* Expected properties:
|
|
1951
|
-
* - `axis`: The orientation of the divider ('horizontal' (default) or 'vertical').
|
|
1952
|
-
*/
|
|
1953
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
1954
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
1955
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
1956
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
1957
1805
|
axis = computed$1(() => this.props()['axis']?.value() ?? 'horizontal', ...(ngDevMode ? [{ debugName: "axis" }] : /* istanbul ignore next */ []));
|
|
1958
1806
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DividerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1959
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1807
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: DividerComponent, isStandalone: true, selector: "a2ui-v09-divider", host: { properties: { "style.display": "\"block\"", "style.width": "axis() === \"horizontal\" ? \"100%\" : \"auto\"" } }, usesInheritance: true, ngImport: i0, template: `
|
|
1960
1808
|
<hr
|
|
1961
1809
|
class="a2ui-divider"
|
|
1962
1810
|
[class.horizontal]="axis() === 'horizontal'"
|
|
1963
1811
|
[class.vertical]="axis() === 'vertical'"
|
|
1964
1812
|
/>
|
|
1965
|
-
`, isInline: true, styles: [".a2ui-divider{border:0;border-top:var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));margin:var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;width:100%}.a2ui-divider.vertical{width:var(--a2ui-border-width, 1px);height:100%;margin:0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));border-top:0;border-left:var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1813
|
+
`, isInline: true, styles: [".a2ui-divider{border:0;border-top:var( --a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );margin:var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;width:100%}.a2ui-divider.vertical{width:var(--a2ui-border-width, 1px);height:100%;margin:0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));border-top:0;border-left:var( --a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) )}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1966
1814
|
}
|
|
1967
1815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DividerComponent, decorators: [{
|
|
1968
1816
|
type: Component,
|
|
@@ -1975,8 +1823,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
1975
1823
|
[class.horizontal]="axis() === 'horizontal'"
|
|
1976
1824
|
[class.vertical]="axis() === 'vertical'"
|
|
1977
1825
|
/>
|
|
1978
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-divider{border:0;border-top:var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc));margin:var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;width:100%}.a2ui-divider.vertical{width:var(--a2ui-border-width, 1px);height:100%;margin:0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));border-top:0;border-left:var(--a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc))}\n"] }]
|
|
1979
|
-
}]
|
|
1826
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-divider{border:0;border-top:var( --a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) );margin:var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px)) 0;width:100%}.a2ui-divider.vertical{width:var(--a2ui-border-width, 1px);height:100%;margin:0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 16px));border-top:0;border-left:var( --a2ui-divider-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc) )}\n"] }]
|
|
1827
|
+
}] });
|
|
1980
1828
|
|
|
1981
1829
|
/**
|
|
1982
1830
|
* Copyright 2026 Google LLC
|
|
@@ -2011,17 +1859,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2011
1859
|
* - `--a2ui-checkbox-color-error`: Controls the color for error states.
|
|
2012
1860
|
*/
|
|
2013
1861
|
class CheckBoxComponent extends BasicCatalogComponent {
|
|
2014
|
-
/**
|
|
2015
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
2016
|
-
*
|
|
2017
|
-
* Expected properties:
|
|
2018
|
-
* - `label`: The text to display next to the checkbox.
|
|
2019
|
-
* - `value`: Boolean indicating whether the checkbox is checked.
|
|
2020
|
-
*/
|
|
2021
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
2022
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
2023
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
2024
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
2025
1862
|
value = computed$1(() => this.props()['value']?.value() === true, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
2026
1863
|
label = computed$1(() => this.props()['label']?.value(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2027
1864
|
handleChange(event) {
|
|
@@ -2029,7 +1866,7 @@ class CheckBoxComponent extends BasicCatalogComponent {
|
|
|
2029
1866
|
this.props()['value']?.onUpdate(checked);
|
|
2030
1867
|
}
|
|
2031
1868
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CheckBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2032
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1869
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: CheckBoxComponent, isStandalone: true, selector: "a2ui-v09-check-box", usesInheritance: true, ngImport: i0, template: `
|
|
2033
1870
|
<label class="a2ui-check-box-label">
|
|
2034
1871
|
<input
|
|
2035
1872
|
type="checkbox"
|
|
@@ -2039,7 +1876,7 @@ class CheckBoxComponent extends BasicCatalogComponent {
|
|
|
2039
1876
|
/>
|
|
2040
1877
|
<span class="a2ui-check-box-text">{{ label() }}</span>
|
|
2041
1878
|
</label>
|
|
2042
|
-
`, isInline: true, styles: [".a2ui-check-box-label{display:flex;align-items:center;gap:var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, .5rem));cursor:pointer;padding:4px 0;margin:var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-check-box-input{width:var(--a2ui-checkbox-size, 1rem);height:var(--a2ui-checkbox-size, 1rem);cursor:pointer;background:var(--a2ui-checkbox-background, inherit);border:var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);border-radius:var(--a2ui-checkbox-border-radius, 4px)}.a2ui-check-box-text{font-size:var(--a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px)));font-weight:var(--a2ui-checkbox-label-font-weight, bold)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1879
|
+
`, isInline: true, styles: [".a2ui-check-box-label{display:flex;align-items:center;gap:var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, .5rem));cursor:pointer;padding:4px 0;margin:var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-check-box-input{width:var(--a2ui-checkbox-size, 1rem);height:var(--a2ui-checkbox-size, 1rem);cursor:pointer;background:var(--a2ui-checkbox-background, inherit);border:var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);border-radius:var(--a2ui-checkbox-border-radius, 4px);accent-color:var(--a2ui-color-primary)}.a2ui-check-box-text{font-size:var( --a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px)) );font-weight:var(--a2ui-checkbox-label-font-weight, bold)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2043
1880
|
}
|
|
2044
1881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
2045
1882
|
type: Component,
|
|
@@ -2053,8 +1890,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2053
1890
|
/>
|
|
2054
1891
|
<span class="a2ui-check-box-text">{{ label() }}</span>
|
|
2055
1892
|
</label>
|
|
2056
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-check-box-label{display:flex;align-items:center;gap:var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, .5rem));cursor:pointer;padding:4px 0;margin:var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-check-box-input{width:var(--a2ui-checkbox-size, 1rem);height:var(--a2ui-checkbox-size, 1rem);cursor:pointer;background:var(--a2ui-checkbox-background, inherit);border:var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);border-radius:var(--a2ui-checkbox-border-radius, 4px)}.a2ui-check-box-text{font-size:var(--a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px)));font-weight:var(--a2ui-checkbox-label-font-weight, bold)}\n"] }]
|
|
2057
|
-
}]
|
|
1893
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-check-box-label{display:flex;align-items:center;gap:var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, .5rem));cursor:pointer;padding:4px 0;margin:var(--a2ui-checkbox-margin, var(--a2ui-spacing-m, 16px));color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-check-box-input{width:var(--a2ui-checkbox-size, 1rem);height:var(--a2ui-checkbox-size, 1rem);cursor:pointer;background:var(--a2ui-checkbox-background, inherit);border:var(--a2ui-checkbox-border, var(--a2ui-border-width, 1px) solid #ccc);border-radius:var(--a2ui-checkbox-border-radius, 4px);accent-color:var(--a2ui-color-primary)}.a2ui-check-box-text{font-size:var( --a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 16px)) );font-weight:var(--a2ui-checkbox-label-font-weight, bold)}\n"] }]
|
|
1894
|
+
}] });
|
|
2058
1895
|
|
|
2059
1896
|
/**
|
|
2060
1897
|
* Copyright 2026 Google LLC
|
|
@@ -2088,21 +1925,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2088
1925
|
* - `--a2ui-choicepicker-chip-background-selected`: Controls background of selected chips.
|
|
2089
1926
|
*/
|
|
2090
1927
|
class ChoicePickerComponent extends BasicCatalogComponent {
|
|
2091
|
-
/**
|
|
2092
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
2093
|
-
*
|
|
2094
|
-
* Expected properties:
|
|
2095
|
-
* - `value`: The currently selected value(s).
|
|
2096
|
-
* - `choices` or `options`: List of choice objects (label and value).
|
|
2097
|
-
* - `displayStyle`: How to render the choices ('default' or 'chips').
|
|
2098
|
-
* - `variant`: Selection mode ('singleSelection' or 'multipleSelection').
|
|
2099
|
-
*/
|
|
2100
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
2101
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
2102
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
2103
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
2104
1928
|
displayStyle = computed$1(() => this.props()['displayStyle']?.value(), ...(ngDevMode ? [{ debugName: "displayStyle" }] : /* istanbul ignore next */ []));
|
|
2105
|
-
|
|
1929
|
+
options = computed$1(() => this.props()['options']?.value() || [], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
2106
1930
|
variant = computed$1(() => this.props()['variant']?.value(), ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
2107
1931
|
selectedValue = computed$1(() => this.props()['value']?.value(), ...(ngDevMode ? [{ debugName: "selectedValue" }] : /* istanbul ignore next */ []));
|
|
2108
1932
|
isMultiple() {
|
|
@@ -2138,46 +1962,46 @@ class ChoicePickerComponent extends BasicCatalogComponent {
|
|
|
2138
1962
|
}
|
|
2139
1963
|
else {
|
|
2140
1964
|
if (active) {
|
|
2141
|
-
this.props()['value']?.onUpdate(value);
|
|
1965
|
+
this.props()['value']?.onUpdate([value]);
|
|
2142
1966
|
}
|
|
2143
1967
|
}
|
|
2144
1968
|
}
|
|
2145
1969
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChoicePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ChoicePickerComponent, isStandalone: true, selector: "a2ui-v09-choice-picker",
|
|
1970
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ChoicePickerComponent, isStandalone: true, selector: "a2ui-v09-choice-picker", usesInheritance: true, ngImport: i0, template: `
|
|
2147
1971
|
<div class="a2ui-choice-picker">
|
|
2148
1972
|
<!-- Chips Variant -->
|
|
2149
1973
|
@if (displayStyle() === 'chips') {
|
|
2150
1974
|
<div class="a2ui-chips-group">
|
|
2151
|
-
@for (
|
|
1975
|
+
@for (option of options(); track option.value) {
|
|
2152
1976
|
<button
|
|
2153
1977
|
class="a2ui-chip"
|
|
2154
|
-
[class.active]="isSelected(
|
|
2155
|
-
(click)="toggleActive(
|
|
1978
|
+
[class.active]="isSelected(option.value)"
|
|
1979
|
+
(click)="toggleActive(option.value)"
|
|
2156
1980
|
>
|
|
2157
|
-
{{
|
|
1981
|
+
{{ option.label }}
|
|
2158
1982
|
</button>
|
|
2159
1983
|
}
|
|
2160
1984
|
</div>
|
|
2161
1985
|
} @else {
|
|
2162
1986
|
<!-- Checkbox/Radio Variant -->
|
|
2163
1987
|
<div class="a2ui-options-group">
|
|
2164
|
-
@for (
|
|
1988
|
+
@for (option of options(); track option.value) {
|
|
2165
1989
|
<label class="a2ui-option-label">
|
|
2166
1990
|
<input
|
|
2167
1991
|
[type]="isMultiple() ? 'checkbox' : 'radio'"
|
|
2168
1992
|
[name]="componentId()"
|
|
2169
|
-
[value]="
|
|
2170
|
-
[checked]="isSelected(
|
|
2171
|
-
(change)="onCheckChange(
|
|
1993
|
+
[value]="option.value"
|
|
1994
|
+
[checked]="isSelected(option.value)"
|
|
1995
|
+
(change)="onCheckChange(option.value, $event)"
|
|
2172
1996
|
class="a2ui-option-input"
|
|
2173
1997
|
/>
|
|
2174
|
-
<span class="a2ui-option-text">{{
|
|
1998
|
+
<span class="a2ui-option-text">{{ option.label }}</span>
|
|
2175
1999
|
</label>
|
|
2176
2000
|
}
|
|
2177
2001
|
</div>
|
|
2178
2002
|
}
|
|
2179
2003
|
</div>
|
|
2180
|
-
`, isInline: true, styles: [".a2ui-choice-picker{width:100%;padding:var(--a2ui-choicepicker-padding, 0)}.a2ui-options-group{display:flex;flex-direction:column;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-option-label{display:flex;align-items:center;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem));cursor:pointer;color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-option-input{width:var(--a2ui-choicepicker-checkbox-size, 1rem);height:var(--a2ui-choicepicker-checkbox-size, 1rem)}.a2ui-chips-group{display:flex;flex-wrap:wrap;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-chip{padding:var(--a2ui-choicepicker-chip-padding, var(--a2ui-spacing-s, .5rem) var(--a2ui-spacing-m, 1rem));border-radius:var(--a2ui-choicepicker-chip-border-radius, 100px);border:var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));background:var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));cursor:pointer;transition:all .2s}.a2ui-chip.active{background-color:var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e));color:var(--a2ui-color-on-primary, #fff);border-color:var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2004
|
+
`, isInline: true, styles: [".a2ui-choice-picker{width:100%;padding:var(--a2ui-choicepicker-padding, 0)}.a2ui-options-group{display:flex;flex-direction:column;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-option-label{display:flex;align-items:center;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem));cursor:pointer;color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-option-input{width:var(--a2ui-choicepicker-checkbox-size, 1rem);height:var(--a2ui-choicepicker-checkbox-size, 1rem)}.a2ui-chips-group{display:flex;flex-wrap:wrap;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-chip{padding:var( --a2ui-choicepicker-chip-padding, var(--a2ui-spacing-s, .5rem) var(--a2ui-spacing-m, 1rem) );border-radius:var(--a2ui-choicepicker-chip-border-radius, 100px);border:var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));background:var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));cursor:pointer;transition:all .2s}.a2ui-chip.active{background-color:var( --a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e) );color:var(--a2ui-color-on-primary, #fff);border-color:var( --a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e) )}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2181
2005
|
}
|
|
2182
2006
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ChoicePickerComponent, decorators: [{
|
|
2183
2007
|
type: Component,
|
|
@@ -2186,37 +2010,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2186
2010
|
<!-- Chips Variant -->
|
|
2187
2011
|
@if (displayStyle() === 'chips') {
|
|
2188
2012
|
<div class="a2ui-chips-group">
|
|
2189
|
-
@for (
|
|
2013
|
+
@for (option of options(); track option.value) {
|
|
2190
2014
|
<button
|
|
2191
2015
|
class="a2ui-chip"
|
|
2192
|
-
[class.active]="isSelected(
|
|
2193
|
-
(click)="toggleActive(
|
|
2016
|
+
[class.active]="isSelected(option.value)"
|
|
2017
|
+
(click)="toggleActive(option.value)"
|
|
2194
2018
|
>
|
|
2195
|
-
{{
|
|
2019
|
+
{{ option.label }}
|
|
2196
2020
|
</button>
|
|
2197
2021
|
}
|
|
2198
2022
|
</div>
|
|
2199
2023
|
} @else {
|
|
2200
2024
|
<!-- Checkbox/Radio Variant -->
|
|
2201
2025
|
<div class="a2ui-options-group">
|
|
2202
|
-
@for (
|
|
2026
|
+
@for (option of options(); track option.value) {
|
|
2203
2027
|
<label class="a2ui-option-label">
|
|
2204
2028
|
<input
|
|
2205
2029
|
[type]="isMultiple() ? 'checkbox' : 'radio'"
|
|
2206
2030
|
[name]="componentId()"
|
|
2207
|
-
[value]="
|
|
2208
|
-
[checked]="isSelected(
|
|
2209
|
-
(change)="onCheckChange(
|
|
2031
|
+
[value]="option.value"
|
|
2032
|
+
[checked]="isSelected(option.value)"
|
|
2033
|
+
(change)="onCheckChange(option.value, $event)"
|
|
2210
2034
|
class="a2ui-option-input"
|
|
2211
2035
|
/>
|
|
2212
|
-
<span class="a2ui-option-text">{{
|
|
2036
|
+
<span class="a2ui-option-text">{{ option.label }}</span>
|
|
2213
2037
|
</label>
|
|
2214
2038
|
}
|
|
2215
2039
|
</div>
|
|
2216
2040
|
}
|
|
2217
2041
|
</div>
|
|
2218
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-choice-picker{width:100%;padding:var(--a2ui-choicepicker-padding, 0)}.a2ui-options-group{display:flex;flex-direction:column;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-option-label{display:flex;align-items:center;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem));cursor:pointer;color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-option-input{width:var(--a2ui-choicepicker-checkbox-size, 1rem);height:var(--a2ui-choicepicker-checkbox-size, 1rem)}.a2ui-chips-group{display:flex;flex-wrap:wrap;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-chip{padding:var(--a2ui-choicepicker-chip-padding, var(--a2ui-spacing-s, .5rem) var(--a2ui-spacing-m, 1rem));border-radius:var(--a2ui-choicepicker-chip-border-radius, 100px);border:var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));background:var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));cursor:pointer;transition:all .2s}.a2ui-chip.active{background-color:var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e));color:var(--a2ui-color-on-primary, #fff);border-color:var(--a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e))}\n"] }]
|
|
2219
|
-
}]
|
|
2042
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-choice-picker{width:100%;padding:var(--a2ui-choicepicker-padding, 0)}.a2ui-options-group{display:flex;flex-direction:column;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-option-label{display:flex;align-items:center;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem));cursor:pointer;color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-option-input{width:var(--a2ui-choicepicker-checkbox-size, 1rem);height:var(--a2ui-choicepicker-checkbox-size, 1rem)}.a2ui-chips-group{display:flex;flex-wrap:wrap;gap:var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, .25rem))}.a2ui-chip{padding:var( --a2ui-choicepicker-chip-padding, var(--a2ui-spacing-s, .5rem) var(--a2ui-spacing-m, 1rem) );border-radius:var(--a2ui-choicepicker-chip-border-radius, 100px);border:var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));background:var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));cursor:pointer;transition:all .2s}.a2ui-chip.active{background-color:var( --a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e) );color:var(--a2ui-color-on-primary, #fff);border-color:var( --a2ui-choicepicker-chip-background-selected, var(--a2ui-color-primary, #17e) )}\n"] }]
|
|
2043
|
+
}] });
|
|
2220
2044
|
|
|
2221
2045
|
/**
|
|
2222
2046
|
* Copyright 2026 Google LLC
|
|
@@ -2246,20 +2070,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2246
2070
|
* - `--a2ui-slider-track-color`: Controls the background of the track.
|
|
2247
2071
|
*/
|
|
2248
2072
|
class SliderComponent extends BasicCatalogComponent {
|
|
2249
|
-
/**
|
|
2250
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
2251
|
-
*
|
|
2252
|
-
* Expected properties:
|
|
2253
|
-
* - `value`: The current numeric value.
|
|
2254
|
-
* - `label`: Label text to display.
|
|
2255
|
-
* - `min`: Minimum value (default: 0).
|
|
2256
|
-
* - `max`: Maximum value (default: 100).
|
|
2257
|
-
* - `step`: Increment step (default: 1).
|
|
2258
|
-
*/
|
|
2259
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
2260
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
2261
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
2262
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
2263
2073
|
label = computed$1(() => this.props()['label']?.value(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2264
2074
|
value = computed$1(() => this.props()['value']?.value(), ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
2265
2075
|
min = computed$1(() => this.props()['min']?.value() ?? 0, ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
|
|
@@ -2270,7 +2080,7 @@ class SliderComponent extends BasicCatalogComponent {
|
|
|
2270
2080
|
this.props()['value']?.onUpdate(val);
|
|
2271
2081
|
}
|
|
2272
2082
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SliderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2273
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2083
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: SliderComponent, isStandalone: true, selector: "a2ui-v09-slider", usesInheritance: true, ngImport: i0, template: `
|
|
2274
2084
|
<div class="a2ui-slider-container">
|
|
2275
2085
|
<div class="a2ui-slider-header">
|
|
2276
2086
|
<span class="a2ui-slider-label">{{ label() }}</span>
|
|
@@ -2281,12 +2091,12 @@ class SliderComponent extends BasicCatalogComponent {
|
|
|
2281
2091
|
[min]="min()"
|
|
2282
2092
|
[max]="max()"
|
|
2283
2093
|
[step]="step()"
|
|
2284
|
-
[value]="value()
|
|
2094
|
+
[value]="value()"
|
|
2285
2095
|
(input)="handleInput($event)"
|
|
2286
2096
|
class="a2ui-slider"
|
|
2287
2097
|
/>
|
|
2288
2098
|
</div>
|
|
2289
|
-
`, isInline: true, styles: [".a2ui-slider-container{width:100%;display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px))}.a2ui-slider-header{display:flex;justify-content:space-between;font-size:var(--a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-slider-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-slider{width:100%;cursor:pointer;accent-color:var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));background:var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2099
|
+
`, isInline: true, styles: [".a2ui-slider-container{width:100%;display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px))}.a2ui-slider-header{display:flex;justify-content:space-between;font-size:var( --a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-slider-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-slider{width:100%;cursor:pointer;accent-color:var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));background:var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2290
2100
|
}
|
|
2291
2101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SliderComponent, decorators: [{
|
|
2292
2102
|
type: Component,
|
|
@@ -2301,13 +2111,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2301
2111
|
[min]="min()"
|
|
2302
2112
|
[max]="max()"
|
|
2303
2113
|
[step]="step()"
|
|
2304
|
-
[value]="value()
|
|
2114
|
+
[value]="value()"
|
|
2305
2115
|
(input)="handleInput($event)"
|
|
2306
2116
|
class="a2ui-slider"
|
|
2307
2117
|
/>
|
|
2308
2118
|
</div>
|
|
2309
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-slider-container{width:100%;display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px))}.a2ui-slider-header{display:flex;justify-content:space-between;font-size:var(--a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-slider-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-slider{width:100%;cursor:pointer;accent-color:var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));background:var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef))}\n"] }]
|
|
2310
|
-
}]
|
|
2119
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-slider-container{width:100%;display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);margin:var(--a2ui-slider-margin, var(--a2ui-spacing-m, 16px))}.a2ui-slider-header{display:flex;justify-content:space-between;font-size:var( --a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-slider-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-slider{width:100%;cursor:pointer;accent-color:var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff));background:var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef))}\n"] }]
|
|
2120
|
+
}] });
|
|
2311
2121
|
|
|
2312
2122
|
/**
|
|
2313
2123
|
* Copyright 2026 Google LLC
|
|
@@ -2340,19 +2150,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2340
2150
|
* - `--a2ui-datetimeinput-label-font-weight`: Controls the font weight of the label.
|
|
2341
2151
|
*/
|
|
2342
2152
|
class DateTimeInputComponent extends BasicCatalogComponent {
|
|
2343
|
-
/**
|
|
2344
|
-
* Reactive properties resolved from the A2UI {@link ComponentModel}.
|
|
2345
|
-
*
|
|
2346
|
-
* Expected properties:
|
|
2347
|
-
* - `value`: The current ISO date/time string.
|
|
2348
|
-
* - `label`: Optional label text.
|
|
2349
|
-
* - `enableDate`: Whether to show the date picker (default: true).
|
|
2350
|
-
* - `enableTime`: Whether to show the time picker (default: false).
|
|
2351
|
-
*/
|
|
2352
|
-
props = input({}, ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
|
|
2353
|
-
surfaceId = input.required(...(ngDevMode ? [{ debugName: "surfaceId" }] : /* istanbul ignore next */ []));
|
|
2354
|
-
componentId = input(...(ngDevMode ? [undefined, { debugName: "componentId" }] : /* istanbul ignore next */ []));
|
|
2355
|
-
dataContextPath = input('/', ...(ngDevMode ? [{ debugName: "dataContextPath" }] : /* istanbul ignore next */ []));
|
|
2356
2153
|
label = computed$1(() => this.props()['label']?.value(), ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2357
2154
|
enableDate = computed$1(() => this.props()['enableDate']?.value() ?? true, ...(ngDevMode ? [{ debugName: "enableDate" }] : /* istanbul ignore next */ []));
|
|
2358
2155
|
enableTime = computed$1(() => this.props()['enableTime']?.value() ?? false, ...(ngDevMode ? [{ debugName: "enableTime" }] : /* istanbul ignore next */ []));
|
|
@@ -2389,7 +2186,7 @@ class DateTimeInputComponent extends BasicCatalogComponent {
|
|
|
2389
2186
|
this.props()['value']?.onUpdate(`${date}T${time}:00`);
|
|
2390
2187
|
}
|
|
2391
2188
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DateTimeInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2392
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: DateTimeInputComponent, isStandalone: true, selector: "a2ui-v09-date-time-input",
|
|
2189
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: DateTimeInputComponent, isStandalone: true, selector: "a2ui-v09-date-time-input", usesInheritance: true, ngImport: i0, template: `
|
|
2393
2190
|
<div class="a2ui-date-time-container">
|
|
2394
2191
|
@if (label()) {
|
|
2395
2192
|
<label class="a2ui-date-time-label">
|
|
@@ -2415,7 +2212,7 @@ class DateTimeInputComponent extends BasicCatalogComponent {
|
|
|
2415
2212
|
}
|
|
2416
2213
|
</div>
|
|
2417
2214
|
</div>
|
|
2418
|
-
`, isInline: true, styles: [".a2ui-date-time-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);width:100%}.a2ui-date-time-label{font-size:var(--a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-datetimeinput-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-date-time-inputs{display:flex;gap:var(--a2ui-spacing-s, 8px);width:100%}.a2ui-date-time-input{padding:var(--a2ui-datetimeinput-padding, 8px);border-radius:var(--a2ui-datetimeinput-border-radius, 4px);border:var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));background-color:var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));color:var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));font-family:inherit;flex:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2215
|
+
`, isInline: true, styles: [".a2ui-date-time-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);width:100%}.a2ui-date-time-label{font-size:var( --a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-datetimeinput-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-date-time-inputs{display:flex;gap:var(--a2ui-spacing-s, 8px);width:100%}.a2ui-date-time-input{padding:var(--a2ui-datetimeinput-padding, 8px);border-radius:var(--a2ui-datetimeinput-border-radius, 4px);border:var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));background-color:var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));color:var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));font-family:inherit;flex:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2419
2216
|
}
|
|
2420
2217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DateTimeInputComponent, decorators: [{
|
|
2421
2218
|
type: Component,
|
|
@@ -2445,8 +2242,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2445
2242
|
}
|
|
2446
2243
|
</div>
|
|
2447
2244
|
</div>
|
|
2448
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-date-time-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);width:100%}.a2ui-date-time-label{font-size:var(--a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)));font-weight:var(--a2ui-datetimeinput-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-date-time-inputs{display:flex;gap:var(--a2ui-spacing-s, 8px);width:100%}.a2ui-date-time-input{padding:var(--a2ui-datetimeinput-padding, 8px);border-radius:var(--a2ui-datetimeinput-border-radius, 4px);border:var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));background-color:var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));color:var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));font-family:inherit;flex:1}\n"] }]
|
|
2449
|
-
}]
|
|
2245
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".a2ui-date-time-container{display:flex;flex-direction:column;gap:var(--a2ui-spacing-xs, 4px);width:100%}.a2ui-date-time-label{font-size:var( --a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s, 14px)) );font-weight:var(--a2ui-datetimeinput-label-font-weight, bold);color:var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333))}.a2ui-date-time-inputs{display:flex;gap:var(--a2ui-spacing-s, 8px);width:100%}.a2ui-date-time-input{padding:var(--a2ui-datetimeinput-padding, 8px);border-radius:var(--a2ui-datetimeinput-border-radius, 4px);border:var(--a2ui-datetimeinput-border, 1px solid var(--a2ui-color-border, #ccc));background-color:var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff));color:var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));font-family:inherit;flex:1}\n"] }]
|
|
2246
|
+
}] });
|
|
2450
2247
|
|
|
2451
2248
|
/**
|
|
2452
2249
|
* Copyright 2026 Google LLC
|
|
@@ -2465,26 +2262,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2465
2262
|
*/
|
|
2466
2263
|
/**
|
|
2467
2264
|
* The set of default Angular implementations for each component in the basic catalog.
|
|
2265
|
+
* Using string literals as keys, to survive property renaming, as these names need to match the JSON payload.
|
|
2468
2266
|
*/
|
|
2267
|
+
// Ignore Prettier to preserve quoted keys, needed to survive property renaming.
|
|
2268
|
+
// prettier-ignore
|
|
2469
2269
|
const DEFAULT_COMPONENT_IMPLEMENTATIONS = {
|
|
2470
|
-
text: { ...TextApi, component: TextComponent },
|
|
2471
|
-
row: { ...RowApi, component: RowComponent },
|
|
2472
|
-
column: { ...ColumnApi, component: ColumnComponent },
|
|
2473
|
-
button: { ...ButtonApi, component: ButtonComponent },
|
|
2474
|
-
textField: { ...TextFieldApi, component: TextFieldComponent },
|
|
2475
|
-
image: { ...ImageApi, component: ImageComponent },
|
|
2476
|
-
icon: { ...IconApi, component: IconComponent },
|
|
2477
|
-
video: { ...VideoApi, component: VideoComponent },
|
|
2478
|
-
audioPlayer: { ...AudioPlayerApi, component: AudioPlayerComponent },
|
|
2479
|
-
list: { ...ListApi, component: ListComponent },
|
|
2480
|
-
card: { ...CardApi, component: CardComponent },
|
|
2481
|
-
tabs: { ...TabsApi, component: TabsComponent },
|
|
2482
|
-
modal: { ...ModalApi, component: ModalComponent },
|
|
2483
|
-
divider: { ...DividerApi, component: DividerComponent },
|
|
2484
|
-
checkBox: { ...CheckBoxApi, component: CheckBoxComponent },
|
|
2485
|
-
choicePicker: { ...ChoicePickerApi, component: ChoicePickerComponent },
|
|
2486
|
-
slider: { ...SliderApi, component: SliderComponent },
|
|
2487
|
-
dateTimeInput: { ...DateTimeInputApi, component: DateTimeInputComponent },
|
|
2270
|
+
'text': { ...TextApi, component: TextComponent },
|
|
2271
|
+
'row': { ...RowApi, component: RowComponent },
|
|
2272
|
+
'column': { ...ColumnApi, component: ColumnComponent },
|
|
2273
|
+
'button': { ...ButtonApi, component: ButtonComponent },
|
|
2274
|
+
'textField': { ...TextFieldApi, component: TextFieldComponent },
|
|
2275
|
+
'image': { ...ImageApi, component: ImageComponent },
|
|
2276
|
+
'icon': { ...IconApi, component: IconComponent },
|
|
2277
|
+
'video': { ...VideoApi, component: VideoComponent },
|
|
2278
|
+
'audioPlayer': { ...AudioPlayerApi, component: AudioPlayerComponent },
|
|
2279
|
+
'list': { ...ListApi, component: ListComponent },
|
|
2280
|
+
'card': { ...CardApi, component: CardComponent },
|
|
2281
|
+
'tabs': { ...TabsApi, component: TabsComponent },
|
|
2282
|
+
'modal': { ...ModalApi, component: ModalComponent },
|
|
2283
|
+
'divider': { ...DividerApi, component: DividerComponent },
|
|
2284
|
+
'checkBox': { ...CheckBoxApi, component: CheckBoxComponent },
|
|
2285
|
+
'choicePicker': { ...ChoicePickerApi, component: ChoicePickerComponent },
|
|
2286
|
+
'slider': { ...SliderApi, component: SliderComponent },
|
|
2287
|
+
'dateTimeInput': { ...DateTimeInputApi, component: DateTimeInputComponent },
|
|
2488
2288
|
};
|
|
2489
2289
|
/**
|
|
2490
2290
|
* The set of Angular UI components provided by the basic catalog.
|
|
@@ -2558,5 +2358,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
2558
2358
|
* Generated bundle index. Do not edit.
|
|
2559
2359
|
*/
|
|
2560
2360
|
|
|
2561
|
-
export { A2UI_RENDERER_CONFIG, A2uiRendererService, AngularCatalog, AudioPlayerComponent, BASIC_COMPONENTS, BasicCatalog, BasicCatalogBase, ButtonComponent, CardComponent, CheckBoxComponent, ChoicePickerComponent, ColumnComponent, ComponentBinder, ComponentHostComponent, DateTimeInputComponent, DefaultMarkdownRenderer, DividerComponent, IconComponent, ImageComponent, ListComponent, MarkdownRenderer, ModalComponent, RowComponent, SliderComponent, SurfaceComponent, TabsComponent, TextComponent, TextFieldComponent, VideoComponent, getNormalizedPath, provideMarkdownRenderer, toAngularSignal };
|
|
2361
|
+
export { A2UI_RENDERER_CONFIG, A2uiRendererService, AngularCatalog, AudioPlayerComponent, BASIC_COMPONENTS, BasicCatalog, BasicCatalogBase, ButtonComponent, CardComponent, CatalogComponent, CheckBoxComponent, ChoicePickerComponent, ColumnComponent, ComponentBinder, ComponentHostComponent, DateTimeInputComponent, DefaultMarkdownRenderer, DividerComponent, IconComponent, ImageComponent, ListComponent, MarkdownRenderer, ModalComponent, RowComponent, SliderComponent, SurfaceComponent, TabsComponent, TextComponent, TextFieldComponent, VideoComponent, getNormalizedPath, provideMarkdownRenderer, toAngularSignal };
|
|
2562
2362
|
//# sourceMappingURL=a2ui-angular-v0_9.mjs.map
|