valtech-components 2.0.564 → 2.0.566
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/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +55 -13
- package/esm2022/lib/components/molecules/card/card.component.mjs +125 -82
- package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +3 -3
- package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +382 -165
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
- package/lib/components/molecules/card/card.component.d.ts +24 -5
- package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
- package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
- package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
- package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
- package/package.json +1 -1
|
@@ -5213,28 +5213,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5213
5213
|
* val-alert-box
|
|
5214
5214
|
*
|
|
5215
5215
|
* Displays an alert box with an icon and text, using a styled box container.
|
|
5216
|
+
* Supports presets for reusable configurations.
|
|
5216
5217
|
*
|
|
5217
|
-
* @example
|
|
5218
|
+
* @example With preset (recommended):
|
|
5219
|
+
* <val-alert-box preset="warning" [props]="{ text: 'Advertencia!' }"></val-alert-box>
|
|
5220
|
+
*
|
|
5221
|
+
* @example Static (backwards compatible):
|
|
5218
5222
|
* <val-alert-box [props]="{ box: {...}, icon: {...}, text: { content: 'Alerta' } }"></val-alert-box>
|
|
5219
5223
|
*
|
|
5220
|
-
* @input
|
|
5224
|
+
* @input preset: string - Name of preset to apply (e.g., 'info', 'success', 'warning', 'error')
|
|
5225
|
+
* @input props: AlertBoxMetadata | ReactiveAlertBoxMetadata - Configuration for the alert box (overrides preset values)
|
|
5221
5226
|
*/
|
|
5222
5227
|
class AlertBoxComponent {
|
|
5228
|
+
constructor() {
|
|
5229
|
+
this.presets = inject(PresetService);
|
|
5230
|
+
/**
|
|
5231
|
+
* Alert box configuration object. Values here override preset values.
|
|
5232
|
+
* Supports both legacy AlertBoxMetadata and ReactiveAlertBoxMetadata patterns.
|
|
5233
|
+
*/
|
|
5234
|
+
this.props = {};
|
|
5235
|
+
/**
|
|
5236
|
+
* Resolved props after merging preset + explicit props.
|
|
5237
|
+
*/
|
|
5238
|
+
this.resolvedProps = {};
|
|
5239
|
+
}
|
|
5223
5240
|
/** Whether this is using the legacy props pattern */
|
|
5224
5241
|
get isLegacyProps() {
|
|
5225
|
-
return 'text' in this.
|
|
5242
|
+
return 'text' in this.resolvedProps && typeof this.resolvedProps.text === 'object';
|
|
5226
5243
|
}
|
|
5227
5244
|
/** Get text props for legacy pattern */
|
|
5228
5245
|
getLegacyTextProps() {
|
|
5229
|
-
return this.
|
|
5246
|
+
return this.resolvedProps.text;
|
|
5230
5247
|
}
|
|
5231
5248
|
ngOnInit() {
|
|
5249
|
+
this.resolveProps();
|
|
5232
5250
|
if (!this.isLegacyProps) {
|
|
5233
5251
|
this.initializeTextProps();
|
|
5234
5252
|
}
|
|
5235
5253
|
}
|
|
5254
|
+
ngOnChanges(changes) {
|
|
5255
|
+
if (changes['preset'] || changes['props']) {
|
|
5256
|
+
this.resolveProps();
|
|
5257
|
+
if (!this.isLegacyProps) {
|
|
5258
|
+
this.initializeTextProps();
|
|
5259
|
+
}
|
|
5260
|
+
}
|
|
5261
|
+
}
|
|
5262
|
+
/**
|
|
5263
|
+
* Merge preset configuration with explicit props.
|
|
5264
|
+
* Explicit props take precedence over preset values.
|
|
5265
|
+
*/
|
|
5266
|
+
resolveProps() {
|
|
5267
|
+
const presetProps = this.preset
|
|
5268
|
+
? this.presets.get('alertBox', this.preset)
|
|
5269
|
+
: {};
|
|
5270
|
+
this.resolvedProps = {
|
|
5271
|
+
...presetProps,
|
|
5272
|
+
...this.props,
|
|
5273
|
+
};
|
|
5274
|
+
}
|
|
5236
5275
|
initializeTextProps() {
|
|
5237
|
-
const reactiveProps = this.
|
|
5276
|
+
const reactiveProps = this.resolvedProps;
|
|
5238
5277
|
// Base text properties with styling
|
|
5239
5278
|
this.computedTextProps = {
|
|
5240
5279
|
size: reactiveProps.textStyle?.size || 'medium',
|
|
@@ -5247,10 +5286,10 @@ class AlertBoxComponent {
|
|
|
5247
5286
|
}
|
|
5248
5287
|
}
|
|
5249
5288
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5250
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertBoxComponent, isStandalone: true, selector: "val-alert-box", inputs: { props: "props" }, ngImport: i0, template: `
|
|
5251
|
-
<val-box [props]="
|
|
5289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertBoxComponent, isStandalone: true, selector: "val-alert-box", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
5290
|
+
<val-box [props]="resolvedProps.box">
|
|
5252
5291
|
<div class="content-container" body>
|
|
5253
|
-
<val-icon [props]="
|
|
5292
|
+
<val-icon [props]="resolvedProps.icon"></val-icon>
|
|
5254
5293
|
<!-- Support both legacy and reactive patterns -->
|
|
5255
5294
|
@if (isLegacyProps) {
|
|
5256
5295
|
<val-text class="text" [props]="getLegacyTextProps()" />
|
|
@@ -5264,9 +5303,9 @@ class AlertBoxComponent {
|
|
|
5264
5303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertBoxComponent, decorators: [{
|
|
5265
5304
|
type: Component,
|
|
5266
5305
|
args: [{ selector: 'val-alert-box', standalone: true, imports: [CommonModule, BoxComponent, IconComponent, TextComponent], template: `
|
|
5267
|
-
<val-box [props]="
|
|
5306
|
+
<val-box [props]="resolvedProps.box">
|
|
5268
5307
|
<div class="content-container" body>
|
|
5269
|
-
<val-icon [props]="
|
|
5308
|
+
<val-icon [props]="resolvedProps.icon"></val-icon>
|
|
5270
5309
|
<!-- Support both legacy and reactive patterns -->
|
|
5271
5310
|
@if (isLegacyProps) {
|
|
5272
5311
|
<val-text class="text" [props]="getLegacyTextProps()" />
|
|
@@ -5276,7 +5315,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5276
5315
|
</div>
|
|
5277
5316
|
</val-box>
|
|
5278
5317
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.text{margin-left:.25rem}.content-container{display:flex;align-items:flex-start}\n"] }]
|
|
5279
|
-
}], propDecorators: {
|
|
5318
|
+
}], propDecorators: { preset: [{
|
|
5319
|
+
type: Input
|
|
5320
|
+
}], props: [{
|
|
5280
5321
|
type: Input
|
|
5281
5322
|
}] } });
|
|
5282
5323
|
|
|
@@ -5358,15 +5399,37 @@ var CardSection;
|
|
|
5358
5399
|
* val-card
|
|
5359
5400
|
*
|
|
5360
5401
|
* A flexible card component supporting images, titles, content, actions, and custom sections.
|
|
5402
|
+
* Supports presets for reusable configurations.
|
|
5361
5403
|
*
|
|
5362
|
-
* @example
|
|
5363
|
-
* <val-card [props]="{
|
|
5404
|
+
* @example With preset (recommended):
|
|
5405
|
+
* <val-card preset="feature" [props]="{ title: 'Card', image: 'url', content: '...' }" (onClick)="handler($event)"></val-card>
|
|
5364
5406
|
*
|
|
5365
|
-
* @
|
|
5407
|
+
* @example Static (backwards compatible):
|
|
5408
|
+
* <val-card [props]="{ type: 'native', title: 'Card', image: 'url', content: '...' }" (onClick)="handler($event)"></val-card>
|
|
5409
|
+
*
|
|
5410
|
+
* @input preset: string - Name of preset to apply (e.g., 'feature', 'compact')
|
|
5411
|
+
* @input props: CardMetadata - Configuration for the card (overrides preset values)
|
|
5366
5412
|
* @output onClick - Emits a CardClickEvent when the card or an action is clicked
|
|
5367
5413
|
*/
|
|
5368
5414
|
class CardComponent {
|
|
5369
5415
|
constructor() {
|
|
5416
|
+
this.presets = inject(PresetService);
|
|
5417
|
+
/**
|
|
5418
|
+
* Card configuration object. Values here override preset values.
|
|
5419
|
+
* @type {CardMetadata}
|
|
5420
|
+
* @property type - The card type (see CardType).
|
|
5421
|
+
* @property title - The card title.
|
|
5422
|
+
* @property image - The card image URL.
|
|
5423
|
+
* @property content - The card content.
|
|
5424
|
+
* @property actions - Array of action buttons (optional).
|
|
5425
|
+
* @property sections - Custom card sections (optional).
|
|
5426
|
+
* @property overtitle - Subtitle or overtitle (optional).
|
|
5427
|
+
*/
|
|
5428
|
+
this.props = {};
|
|
5429
|
+
/**
|
|
5430
|
+
* Resolved props after merging preset + explicit props.
|
|
5431
|
+
*/
|
|
5432
|
+
this.resolvedProps = {};
|
|
5370
5433
|
/**
|
|
5371
5434
|
* Event emitted when the card or an action is clicked.
|
|
5372
5435
|
*/
|
|
@@ -5375,64 +5438,82 @@ class CardComponent {
|
|
|
5375
5438
|
this.actionTypes = ToolbarActionType;
|
|
5376
5439
|
this.sections = CardSection;
|
|
5377
5440
|
}
|
|
5378
|
-
ngOnInit() {
|
|
5441
|
+
ngOnInit() {
|
|
5442
|
+
this.resolveProps();
|
|
5443
|
+
}
|
|
5444
|
+
ngOnChanges(changes) {
|
|
5445
|
+
if (changes['preset'] || changes['props']) {
|
|
5446
|
+
this.resolveProps();
|
|
5447
|
+
}
|
|
5448
|
+
}
|
|
5449
|
+
/**
|
|
5450
|
+
* Merge preset configuration with explicit props.
|
|
5451
|
+
* Explicit props take precedence over preset values.
|
|
5452
|
+
*/
|
|
5453
|
+
resolveProps() {
|
|
5454
|
+
const presetProps = this.preset ? this.presets.get('card', this.preset) : {};
|
|
5455
|
+
this.resolvedProps = {
|
|
5456
|
+
...presetProps,
|
|
5457
|
+
...this.props,
|
|
5458
|
+
};
|
|
5459
|
+
}
|
|
5379
5460
|
clickHandler(section, token) {
|
|
5380
5461
|
this.onClick.emit({ section, token });
|
|
5381
5462
|
}
|
|
5382
5463
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5383
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "val-card", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
|
|
5384
|
-
<ion-card *ngIf="
|
|
5385
|
-
<img alt="image" [src]="
|
|
5386
|
-
<ion-card-header *ngIf="
|
|
5387
|
-
<ion-card-title *ngIf="
|
|
5388
|
-
<ion-card-subtitle *ngIf="
|
|
5464
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "val-card", inputs: { preset: "preset", props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
|
|
5465
|
+
<ion-card *ngIf="resolvedProps.type === types.native">
|
|
5466
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5467
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
5468
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5469
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5389
5470
|
</ion-card-header>
|
|
5390
5471
|
|
|
5391
|
-
<ion-card-content *ngIf="
|
|
5472
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5392
5473
|
|
|
5393
5474
|
<val-button
|
|
5394
|
-
*ngFor="let b of
|
|
5475
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
5395
5476
|
[props]="b"
|
|
5396
5477
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
5397
5478
|
></val-button>
|
|
5398
5479
|
</ion-card>
|
|
5399
5480
|
|
|
5400
5481
|
<ion-card
|
|
5401
|
-
*ngIf="
|
|
5402
|
-
(click)="clickHandler(sections.content,
|
|
5482
|
+
*ngIf="resolvedProps.type === types.tappable"
|
|
5483
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
5403
5484
|
class="tapable"
|
|
5404
5485
|
>
|
|
5405
|
-
<img alt="image" [src]="
|
|
5406
|
-
<ion-card-header *ngIf="
|
|
5407
|
-
<ion-card-title *ngIf="
|
|
5408
|
-
<ion-card-subtitle *ngIf="
|
|
5486
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5487
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
5488
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5489
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5409
5490
|
</ion-card-header>
|
|
5410
5491
|
|
|
5411
|
-
<ion-card-content *ngIf="
|
|
5492
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5412
5493
|
</ion-card>
|
|
5413
5494
|
|
|
5414
5495
|
<ion-card
|
|
5415
|
-
*ngIf="
|
|
5416
|
-
(click)="clickHandler(sections.content,
|
|
5496
|
+
*ngIf="resolvedProps.type === types.checker"
|
|
5497
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
5417
5498
|
class="tapable"
|
|
5418
5499
|
>
|
|
5419
|
-
<ion-card-header *ngIf="
|
|
5500
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="checker">
|
|
5420
5501
|
<div>
|
|
5421
|
-
<ion-card-subtitle *ngIf="
|
|
5422
|
-
<ion-card-title *ngIf="
|
|
5502
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5503
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5423
5504
|
</div>
|
|
5424
5505
|
<div>
|
|
5425
|
-
<ion-checkbox [checked]="
|
|
5506
|
+
<ion-checkbox [checked]="resolvedProps.selected"></ion-checkbox>
|
|
5426
5507
|
</div>
|
|
5427
5508
|
</ion-card-header>
|
|
5428
5509
|
|
|
5429
|
-
<ion-card-content *ngIf="
|
|
5510
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5430
5511
|
</ion-card>
|
|
5431
5512
|
|
|
5432
|
-
<ion-card *ngIf="
|
|
5513
|
+
<ion-card *ngIf="resolvedProps.type === types.complex" class="complex">
|
|
5433
5514
|
<ion-card-header class="complex-header">
|
|
5434
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
5435
|
-
<ng-container *ngFor="let action of
|
|
5515
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.leftActions?.length > 0">
|
|
5516
|
+
<ng-container *ngFor="let action of resolvedProps.leftActions">
|
|
5436
5517
|
<ion-button
|
|
5437
5518
|
*ngIf="action.type === actionTypes.ICON"
|
|
5438
5519
|
(click)="clickHandler(sections.headerLeft, action.token)"
|
|
@@ -5456,13 +5537,13 @@ class CardComponent {
|
|
|
5456
5537
|
>
|
|
5457
5538
|
{{ action.description }}
|
|
5458
5539
|
</ion-button>
|
|
5459
|
-
<div *ngIf="
|
|
5460
|
-
<val-text [props]="{ content:
|
|
5540
|
+
<div *ngIf="resolvedProps.headerText">
|
|
5541
|
+
<val-text [props]="{ content: resolvedProps.headerText, color: 'dark', bold: true, size: 'medium' }" />
|
|
5461
5542
|
</div>
|
|
5462
5543
|
</ng-container>
|
|
5463
5544
|
</ion-buttons>
|
|
5464
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
5465
|
-
<ng-container *ngFor="let action of
|
|
5545
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.rightActions?.length > 0">
|
|
5546
|
+
<ng-container *ngFor="let action of resolvedProps.rightActions">
|
|
5466
5547
|
<ion-button
|
|
5467
5548
|
*ngIf="action.type === actionTypes.ICON"
|
|
5468
5549
|
(click)="clickHandler(sections.headerRight, action.token)"
|
|
@@ -5490,27 +5571,27 @@ class CardComponent {
|
|
|
5490
5571
|
</ion-buttons>
|
|
5491
5572
|
</ion-card-header>
|
|
5492
5573
|
|
|
5493
|
-
<div class="tapable" (click)="clickHandler(sections.content,
|
|
5494
|
-
<ion-card-header *ngIf="
|
|
5574
|
+
<div class="tapable" (click)="clickHandler(sections.content, resolvedProps.token)">
|
|
5575
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="complex-header">
|
|
5495
5576
|
<div>
|
|
5496
|
-
<ion-card-subtitle *ngIf="
|
|
5497
|
-
<ion-card-title *ngIf="
|
|
5577
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5578
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5498
5579
|
</div>
|
|
5499
5580
|
</ion-card-header>
|
|
5500
5581
|
|
|
5501
|
-
<img alt="image" [src]="
|
|
5502
|
-
<ion-card-content *ngIf="
|
|
5582
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5583
|
+
<ion-card-content *ngIf="resolvedProps.content" class="complex-content">{{ resolvedProps.content }}</ion-card-content>
|
|
5503
5584
|
</div>
|
|
5504
5585
|
<val-button
|
|
5505
|
-
*ngFor="let b of
|
|
5586
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
5506
5587
|
[props]="b"
|
|
5507
5588
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
5508
5589
|
></val-button>
|
|
5509
5590
|
<ion-buttons
|
|
5510
5591
|
style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
|
|
5511
|
-
*ngIf="
|
|
5592
|
+
*ngIf="resolvedProps.footerComplexActions?.length > 0"
|
|
5512
5593
|
>
|
|
5513
|
-
<ng-container *ngFor="let action of
|
|
5594
|
+
<ng-container *ngFor="let action of resolvedProps.footerComplexActions">
|
|
5514
5595
|
<ion-button
|
|
5515
5596
|
*ngIf="action.type === actionTypes.ICON"
|
|
5516
5597
|
(click)="clickHandler(sections.footerExtra, action.token)"
|
|
@@ -5558,58 +5639,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5558
5639
|
IonButton,
|
|
5559
5640
|
IonIcon,
|
|
5560
5641
|
], template: `
|
|
5561
|
-
<ion-card *ngIf="
|
|
5562
|
-
<img alt="image" [src]="
|
|
5563
|
-
<ion-card-header *ngIf="
|
|
5564
|
-
<ion-card-title *ngIf="
|
|
5565
|
-
<ion-card-subtitle *ngIf="
|
|
5642
|
+
<ion-card *ngIf="resolvedProps.type === types.native">
|
|
5643
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5644
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
5645
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5646
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5566
5647
|
</ion-card-header>
|
|
5567
5648
|
|
|
5568
|
-
<ion-card-content *ngIf="
|
|
5649
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5569
5650
|
|
|
5570
5651
|
<val-button
|
|
5571
|
-
*ngFor="let b of
|
|
5652
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
5572
5653
|
[props]="b"
|
|
5573
5654
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
5574
5655
|
></val-button>
|
|
5575
5656
|
</ion-card>
|
|
5576
5657
|
|
|
5577
5658
|
<ion-card
|
|
5578
|
-
*ngIf="
|
|
5579
|
-
(click)="clickHandler(sections.content,
|
|
5659
|
+
*ngIf="resolvedProps.type === types.tappable"
|
|
5660
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
5580
5661
|
class="tapable"
|
|
5581
5662
|
>
|
|
5582
|
-
<img alt="image" [src]="
|
|
5583
|
-
<ion-card-header *ngIf="
|
|
5584
|
-
<ion-card-title *ngIf="
|
|
5585
|
-
<ion-card-subtitle *ngIf="
|
|
5663
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5664
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
5665
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5666
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5586
5667
|
</ion-card-header>
|
|
5587
5668
|
|
|
5588
|
-
<ion-card-content *ngIf="
|
|
5669
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5589
5670
|
</ion-card>
|
|
5590
5671
|
|
|
5591
5672
|
<ion-card
|
|
5592
|
-
*ngIf="
|
|
5593
|
-
(click)="clickHandler(sections.content,
|
|
5673
|
+
*ngIf="resolvedProps.type === types.checker"
|
|
5674
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
5594
5675
|
class="tapable"
|
|
5595
5676
|
>
|
|
5596
|
-
<ion-card-header *ngIf="
|
|
5677
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="checker">
|
|
5597
5678
|
<div>
|
|
5598
|
-
<ion-card-subtitle *ngIf="
|
|
5599
|
-
<ion-card-title *ngIf="
|
|
5679
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5680
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5600
5681
|
</div>
|
|
5601
5682
|
<div>
|
|
5602
|
-
<ion-checkbox [checked]="
|
|
5683
|
+
<ion-checkbox [checked]="resolvedProps.selected"></ion-checkbox>
|
|
5603
5684
|
</div>
|
|
5604
5685
|
</ion-card-header>
|
|
5605
5686
|
|
|
5606
|
-
<ion-card-content *ngIf="
|
|
5687
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
5607
5688
|
</ion-card>
|
|
5608
5689
|
|
|
5609
|
-
<ion-card *ngIf="
|
|
5690
|
+
<ion-card *ngIf="resolvedProps.type === types.complex" class="complex">
|
|
5610
5691
|
<ion-card-header class="complex-header">
|
|
5611
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
5612
|
-
<ng-container *ngFor="let action of
|
|
5692
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.leftActions?.length > 0">
|
|
5693
|
+
<ng-container *ngFor="let action of resolvedProps.leftActions">
|
|
5613
5694
|
<ion-button
|
|
5614
5695
|
*ngIf="action.type === actionTypes.ICON"
|
|
5615
5696
|
(click)="clickHandler(sections.headerLeft, action.token)"
|
|
@@ -5633,13 +5714,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5633
5714
|
>
|
|
5634
5715
|
{{ action.description }}
|
|
5635
5716
|
</ion-button>
|
|
5636
|
-
<div *ngIf="
|
|
5637
|
-
<val-text [props]="{ content:
|
|
5717
|
+
<div *ngIf="resolvedProps.headerText">
|
|
5718
|
+
<val-text [props]="{ content: resolvedProps.headerText, color: 'dark', bold: true, size: 'medium' }" />
|
|
5638
5719
|
</div>
|
|
5639
5720
|
</ng-container>
|
|
5640
5721
|
</ion-buttons>
|
|
5641
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
5642
|
-
<ng-container *ngFor="let action of
|
|
5722
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.rightActions?.length > 0">
|
|
5723
|
+
<ng-container *ngFor="let action of resolvedProps.rightActions">
|
|
5643
5724
|
<ion-button
|
|
5644
5725
|
*ngIf="action.type === actionTypes.ICON"
|
|
5645
5726
|
(click)="clickHandler(sections.headerRight, action.token)"
|
|
@@ -5667,27 +5748,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5667
5748
|
</ion-buttons>
|
|
5668
5749
|
</ion-card-header>
|
|
5669
5750
|
|
|
5670
|
-
<div class="tapable" (click)="clickHandler(sections.content,
|
|
5671
|
-
<ion-card-header *ngIf="
|
|
5751
|
+
<div class="tapable" (click)="clickHandler(sections.content, resolvedProps.token)">
|
|
5752
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="complex-header">
|
|
5672
5753
|
<div>
|
|
5673
|
-
<ion-card-subtitle *ngIf="
|
|
5674
|
-
<ion-card-title *ngIf="
|
|
5754
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
5755
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
5675
5756
|
</div>
|
|
5676
5757
|
</ion-card-header>
|
|
5677
5758
|
|
|
5678
|
-
<img alt="image" [src]="
|
|
5679
|
-
<ion-card-content *ngIf="
|
|
5759
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
5760
|
+
<ion-card-content *ngIf="resolvedProps.content" class="complex-content">{{ resolvedProps.content }}</ion-card-content>
|
|
5680
5761
|
</div>
|
|
5681
5762
|
<val-button
|
|
5682
|
-
*ngFor="let b of
|
|
5763
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
5683
5764
|
[props]="b"
|
|
5684
5765
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
5685
5766
|
></val-button>
|
|
5686
5767
|
<ion-buttons
|
|
5687
5768
|
style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
|
|
5688
|
-
*ngIf="
|
|
5769
|
+
*ngIf="resolvedProps.footerComplexActions?.length > 0"
|
|
5689
5770
|
>
|
|
5690
|
-
<ng-container *ngFor="let action of
|
|
5771
|
+
<ng-container *ngFor="let action of resolvedProps.footerComplexActions">
|
|
5691
5772
|
<ion-button
|
|
5692
5773
|
*ngIf="action.type === actionTypes.ICON"
|
|
5693
5774
|
(click)="clickHandler(sections.footerExtra, action.token)"
|
|
@@ -5716,7 +5797,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5716
5797
|
</ion-buttons>
|
|
5717
5798
|
</ion-card>
|
|
5718
5799
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}ion-card.tapable{transition:transform .3s ease,box-shadow .3s ease}ion-card.tapable:hover{transform:scale(1.01);box-shadow:.1875rem .625rem .5rem #1219541a}.tapable{cursor:pointer}.checker{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-header{padding:10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-content{padding-left:10px;padding-top:4px;padding-bottom:10px}.complex{border-radius:16px}img{border-radius:24px}\n"] }]
|
|
5719
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
5800
|
+
}], ctorParameters: () => [], propDecorators: { preset: [{
|
|
5801
|
+
type: Input
|
|
5802
|
+
}], props: [{
|
|
5720
5803
|
type: Input
|
|
5721
5804
|
}], onClick: [{
|
|
5722
5805
|
type: Output
|
|
@@ -5936,31 +6019,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5936
6019
|
* val-email-input
|
|
5937
6020
|
*
|
|
5938
6021
|
* An email input field integrated with Angular forms.
|
|
5939
|
-
*
|
|
6022
|
+
* Supports presets for reusable configurations.
|
|
5940
6023
|
*
|
|
5941
|
-
* @example
|
|
5942
|
-
* <val-email-input [props]="{ control: myControl, placeholder: '
|
|
6024
|
+
* @example With preset (recommended):
|
|
6025
|
+
* <val-email-input preset="form-field" [props]="{ control: myControl, placeholder: 'Email' }"></val-email-input>
|
|
5943
6026
|
*
|
|
5944
|
-
* @example
|
|
5945
|
-
*
|
|
5946
|
-
* // In component
|
|
5947
|
-
* emailProps = {
|
|
5948
|
-
* control: this.emailControl,
|
|
5949
|
-
* placeholder: this.langService.getText('Login', 'emailPlaceholder')
|
|
5950
|
-
* };
|
|
5951
|
-
* ```
|
|
6027
|
+
* @example Static (backwards compatible):
|
|
6028
|
+
* <val-email-input [props]="{ control: myControl, placeholder: 'Enter your email' }"></val-email-input>
|
|
5952
6029
|
*
|
|
5953
|
-
* @input
|
|
6030
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field')
|
|
6031
|
+
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
5954
6032
|
*/
|
|
5955
6033
|
class EmailInputComponent {
|
|
5956
|
-
|
|
6034
|
+
constructor() {
|
|
6035
|
+
this.presets = inject(PresetService);
|
|
6036
|
+
/**
|
|
6037
|
+
* Input configuration object. Values here override preset values.
|
|
6038
|
+
* @type {InputMetadata}
|
|
6039
|
+
* @property control - The Angular FormControl for the input.
|
|
6040
|
+
* @property placeholder - The placeholder text.
|
|
6041
|
+
*/
|
|
6042
|
+
this.props = {};
|
|
6043
|
+
/**
|
|
6044
|
+
* Resolved props after merging preset + explicit props.
|
|
6045
|
+
*/
|
|
6046
|
+
this.resolvedProps = {};
|
|
6047
|
+
}
|
|
6048
|
+
ngOnInit() {
|
|
6049
|
+
this.resolveProps();
|
|
6050
|
+
}
|
|
6051
|
+
ngOnChanges(changes) {
|
|
6052
|
+
if (changes['preset'] || changes['props']) {
|
|
6053
|
+
this.resolveProps();
|
|
6054
|
+
}
|
|
6055
|
+
}
|
|
6056
|
+
/**
|
|
6057
|
+
* Merge preset configuration with explicit props.
|
|
6058
|
+
* Explicit props take precedence over preset values.
|
|
6059
|
+
*/
|
|
6060
|
+
resolveProps() {
|
|
6061
|
+
const presetProps = this.preset ? this.presets.get('emailInput', this.preset) : {};
|
|
6062
|
+
this.resolvedProps = {
|
|
6063
|
+
...presetProps,
|
|
6064
|
+
...this.props,
|
|
6065
|
+
};
|
|
6066
|
+
}
|
|
5957
6067
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5958
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="
|
|
6068
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
5959
6069
|
}
|
|
5960
6070
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
5961
6071
|
type: Component,
|
|
5962
|
-
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="
|
|
5963
|
-
}], propDecorators: {
|
|
6072
|
+
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> ` }]
|
|
6073
|
+
}], propDecorators: { preset: [{
|
|
6074
|
+
type: Input
|
|
6075
|
+
}], props: [{
|
|
5964
6076
|
type: Input
|
|
5965
6077
|
}] } });
|
|
5966
6078
|
|
|
@@ -7473,35 +7585,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7473
7585
|
* val-password-input
|
|
7474
7586
|
*
|
|
7475
7587
|
* A password input field with show/hide toggle, integrated with Angular forms.
|
|
7476
|
-
*
|
|
7588
|
+
* Supports presets for reusable configurations.
|
|
7477
7589
|
*
|
|
7478
|
-
* @example
|
|
7479
|
-
* <val-password-input [props]="{ control: myControl, placeholder: '
|
|
7590
|
+
* @example With preset (recommended):
|
|
7591
|
+
* <val-password-input preset="form-field" [props]="{ control: myControl, placeholder: 'Password' }"></val-password-input>
|
|
7480
7592
|
*
|
|
7481
|
-
* @example
|
|
7482
|
-
*
|
|
7483
|
-
* // In component
|
|
7484
|
-
* passwordProps = {
|
|
7485
|
-
* control: this.passwordControl,
|
|
7486
|
-
* placeholder: this.langService.getText('Login', 'passwordPlaceholder')
|
|
7487
|
-
* };
|
|
7488
|
-
* ```
|
|
7593
|
+
* @example Static (backwards compatible):
|
|
7594
|
+
* <val-password-input [props]="{ control: myControl, placeholder: 'Enter password' }"></val-password-input>
|
|
7489
7595
|
*
|
|
7490
|
-
* @input
|
|
7596
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field', 'login')
|
|
7597
|
+
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
7491
7598
|
*/
|
|
7492
7599
|
class PasswordInputComponent {
|
|
7493
7600
|
constructor(icon) {
|
|
7601
|
+
this.presets = inject(PresetService);
|
|
7602
|
+
/**
|
|
7603
|
+
* Input configuration object. Values here override preset values.
|
|
7604
|
+
* @type {InputMetadata}
|
|
7605
|
+
* @property control - The Angular FormControl for the input.
|
|
7606
|
+
* @property placeholder - The placeholder text.
|
|
7607
|
+
*/
|
|
7608
|
+
this.props = {};
|
|
7609
|
+
/**
|
|
7610
|
+
* Resolved props after merging preset + explicit props.
|
|
7611
|
+
*/
|
|
7612
|
+
this.resolvedProps = {};
|
|
7494
7613
|
this.hidePassword = true;
|
|
7495
7614
|
}
|
|
7496
|
-
ngOnInit() {
|
|
7615
|
+
ngOnInit() {
|
|
7616
|
+
this.resolveProps();
|
|
7617
|
+
}
|
|
7618
|
+
ngOnChanges(changes) {
|
|
7619
|
+
if (changes['preset'] || changes['props']) {
|
|
7620
|
+
this.resolveProps();
|
|
7621
|
+
}
|
|
7622
|
+
}
|
|
7623
|
+
/**
|
|
7624
|
+
* Merge preset configuration with explicit props.
|
|
7625
|
+
* Explicit props take precedence over preset values.
|
|
7626
|
+
*/
|
|
7627
|
+
resolveProps() {
|
|
7628
|
+
const presetProps = this.preset ? this.presets.get('passwordInput', this.preset) : {};
|
|
7629
|
+
this.resolvedProps = {
|
|
7630
|
+
...presetProps,
|
|
7631
|
+
...this.props,
|
|
7632
|
+
};
|
|
7633
|
+
}
|
|
7497
7634
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordInputComponent, deps: [{ token: IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordInputComponent, isStandalone: true, selector: "val-password-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
7635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordInputComponent, isStandalone: true, selector: "val-password-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
7499
7636
|
<div class="input-container">
|
|
7500
7637
|
<ion-input
|
|
7501
7638
|
class="sign-in__input-password"
|
|
7502
|
-
[formControl]="
|
|
7639
|
+
[formControl]="resolvedProps.control"
|
|
7503
7640
|
[type]="hidePassword ? 'password' : 'text'"
|
|
7504
|
-
[placeholder]="
|
|
7641
|
+
[placeholder]="resolvedProps.placeholder"
|
|
7505
7642
|
></ion-input>
|
|
7506
7643
|
<ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
|
|
7507
7644
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
@@ -7515,16 +7652,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7515
7652
|
<div class="input-container">
|
|
7516
7653
|
<ion-input
|
|
7517
7654
|
class="sign-in__input-password"
|
|
7518
|
-
[formControl]="
|
|
7655
|
+
[formControl]="resolvedProps.control"
|
|
7519
7656
|
[type]="hidePassword ? 'password' : 'text'"
|
|
7520
|
-
[placeholder]="
|
|
7657
|
+
[placeholder]="resolvedProps.placeholder"
|
|
7521
7658
|
></ion-input>
|
|
7522
7659
|
<ion-button color="dark" fill="clear" (click)="hidePassword = !hidePassword" size="small">
|
|
7523
7660
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
7524
7661
|
</ion-button>
|
|
7525
7662
|
</div>
|
|
7526
7663
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"] }]
|
|
7527
|
-
}], ctorParameters: () => [{ type: IconService }], propDecorators: {
|
|
7664
|
+
}], ctorParameters: () => [{ type: IconService }], propDecorators: { preset: [{
|
|
7665
|
+
type: Input
|
|
7666
|
+
}], props: [{
|
|
7528
7667
|
type: Input
|
|
7529
7668
|
}] } });
|
|
7530
7669
|
|
|
@@ -8042,8 +8181,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8042
8181
|
* val-select-input
|
|
8043
8182
|
*
|
|
8044
8183
|
* A select/dropdown input integrated with Angular forms, using Ionic's select component.
|
|
8184
|
+
* Supports presets for reusable configurations.
|
|
8045
8185
|
*
|
|
8046
|
-
* @example
|
|
8186
|
+
* @example With preset (recommended):
|
|
8187
|
+
* <val-select-input preset="form-field" [props]="{
|
|
8188
|
+
* control: myControl,
|
|
8189
|
+
* label: 'Seleccionar',
|
|
8190
|
+
* options: [{ id: '1', name: 'Opción 1' }]
|
|
8191
|
+
* }"></val-select-input>
|
|
8192
|
+
*
|
|
8193
|
+
* @example Static (backwards compatible):
|
|
8047
8194
|
* <val-select-input [props]="{
|
|
8048
8195
|
* control: myControl,
|
|
8049
8196
|
* label: 'Seleccionar',
|
|
@@ -8052,39 +8199,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8052
8199
|
* okText: 'Aceptar'
|
|
8053
8200
|
* }"></val-select-input>
|
|
8054
8201
|
*
|
|
8055
|
-
* @input
|
|
8202
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field')
|
|
8203
|
+
* @input props: InputMetadata - Configuration for the select input (overrides preset values)
|
|
8056
8204
|
*/
|
|
8057
8205
|
class SearchSelectorComponent {
|
|
8058
8206
|
constructor() {
|
|
8059
8207
|
this.i18n = inject(I18nService);
|
|
8208
|
+
this.presets = inject(PresetService);
|
|
8209
|
+
/**
|
|
8210
|
+
* Input configuration object. Values here override preset values.
|
|
8211
|
+
* @type {InputMetadata}
|
|
8212
|
+
* @property control - The Angular FormControl for the select input.
|
|
8213
|
+
* @property label - The label for the select.
|
|
8214
|
+
* @property options - The available options for the select.
|
|
8215
|
+
* @property placeholder - The placeholder text.
|
|
8216
|
+
* @property modalHeader - Custom header text for the modal (optional, uses label if not provided).
|
|
8217
|
+
* @property cancelText - Custom cancel button text (default: 'Cancelar').
|
|
8218
|
+
* @property okText - Custom OK button text (default: 'Aceptar').
|
|
8219
|
+
*/
|
|
8220
|
+
this.props = {};
|
|
8221
|
+
/**
|
|
8222
|
+
* Resolved props after merging preset + explicit props.
|
|
8223
|
+
*/
|
|
8224
|
+
this.resolvedProps = {};
|
|
8060
8225
|
}
|
|
8061
8226
|
ngOnInit() {
|
|
8062
|
-
|
|
8063
|
-
|
|
8227
|
+
this.resolveProps();
|
|
8228
|
+
this.setupComponent();
|
|
8229
|
+
}
|
|
8230
|
+
ngOnChanges(changes) {
|
|
8231
|
+
if (changes['preset'] || changes['props']) {
|
|
8232
|
+
this.resolveProps();
|
|
8233
|
+
this.setupComponent();
|
|
8234
|
+
}
|
|
8235
|
+
}
|
|
8236
|
+
/**
|
|
8237
|
+
* Merge preset configuration with explicit props.
|
|
8238
|
+
* Explicit props take precedence over preset values.
|
|
8239
|
+
*/
|
|
8240
|
+
resolveProps() {
|
|
8241
|
+
const presetProps = this.preset ? this.presets.get('selectInput', this.preset) : {};
|
|
8242
|
+
this.resolvedProps = {
|
|
8243
|
+
...presetProps,
|
|
8244
|
+
...this.props,
|
|
8245
|
+
};
|
|
8246
|
+
}
|
|
8247
|
+
setupComponent() {
|
|
8248
|
+
if (this.resolvedProps?.withDefault || this.resolvedProps?.value) {
|
|
8249
|
+
applyDefaultValueToControl(this.resolvedProps);
|
|
8064
8250
|
}
|
|
8065
8251
|
// Set modal header from props or use label as fallback, then i18n default
|
|
8066
|
-
const headerText = this.
|
|
8252
|
+
const headerText = this.resolvedProps.modalHeader || this.resolvedProps.label || this.i18n.t('selectOption');
|
|
8067
8253
|
this.customModalOptions = {
|
|
8068
8254
|
header: headerText,
|
|
8069
8255
|
breakpoints: [0, 0.6],
|
|
8070
8256
|
initialBreakpoint: 0.6,
|
|
8071
8257
|
};
|
|
8072
8258
|
// Set button texts from props or use i18n defaults
|
|
8073
|
-
this.cancelText = this.
|
|
8074
|
-
this.okText = this.
|
|
8259
|
+
this.cancelText = this.resolvedProps.cancelText || this.i18n.t('cancel');
|
|
8260
|
+
this.okText = this.resolvedProps.okText || this.i18n.t('ok');
|
|
8075
8261
|
}
|
|
8076
8262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SearchSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8077
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SearchSelectorComponent, isStandalone: true, selector: "val-select-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
8263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SearchSelectorComponent, isStandalone: true, selector: "val-select-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
8078
8264
|
<ion-select
|
|
8079
|
-
[formControl]="
|
|
8080
|
-
[label]="
|
|
8265
|
+
[formControl]="resolvedProps.control"
|
|
8266
|
+
[label]="resolvedProps.label"
|
|
8081
8267
|
[interfaceOptions]="customModalOptions"
|
|
8082
8268
|
interface="modal"
|
|
8083
|
-
[placeholder]="[
|
|
8269
|
+
[placeholder]="[resolvedProps.placeholder]"
|
|
8084
8270
|
[cancelText]="cancelText"
|
|
8085
8271
|
[okText]="okText"
|
|
8086
8272
|
>
|
|
8087
|
-
@for (o of
|
|
8273
|
+
@for (o of resolvedProps.options; track o.id) {
|
|
8088
8274
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
8089
8275
|
}
|
|
8090
8276
|
</ion-select>
|
|
@@ -8094,20 +8280,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8094
8280
|
type: Component,
|
|
8095
8281
|
args: [{ selector: 'val-select-input', standalone: true, imports: [ReactiveFormsModule, IonSelect, IonSelectOption], template: `
|
|
8096
8282
|
<ion-select
|
|
8097
|
-
[formControl]="
|
|
8098
|
-
[label]="
|
|
8283
|
+
[formControl]="resolvedProps.control"
|
|
8284
|
+
[label]="resolvedProps.label"
|
|
8099
8285
|
[interfaceOptions]="customModalOptions"
|
|
8100
8286
|
interface="modal"
|
|
8101
|
-
[placeholder]="[
|
|
8287
|
+
[placeholder]="[resolvedProps.placeholder]"
|
|
8102
8288
|
[cancelText]="cancelText"
|
|
8103
8289
|
[okText]="okText"
|
|
8104
8290
|
>
|
|
8105
|
-
@for (o of
|
|
8291
|
+
@for (o of resolvedProps.options; track o.id) {
|
|
8106
8292
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
8107
8293
|
}
|
|
8108
8294
|
</ion-select>
|
|
8109
8295
|
` }]
|
|
8110
|
-
}], propDecorators: {
|
|
8296
|
+
}], propDecorators: { preset: [{
|
|
8297
|
+
type: Input
|
|
8298
|
+
}], props: [{
|
|
8111
8299
|
type: Input
|
|
8112
8300
|
}] } });
|
|
8113
8301
|
|
|
@@ -8628,39 +8816,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8628
8816
|
* val-text-input
|
|
8629
8817
|
*
|
|
8630
8818
|
* A text input field integrated with Angular forms.
|
|
8631
|
-
*
|
|
8819
|
+
* Supports presets for reusable configurations.
|
|
8632
8820
|
*
|
|
8633
|
-
* @example
|
|
8634
|
-
* <val-text-input [props]="{ control: myControl, placeholder: 'Enter text' }"></val-text-input>
|
|
8821
|
+
* @example With preset (recommended):
|
|
8822
|
+
* <val-text-input preset="form-field" [props]="{ control: myControl, placeholder: 'Enter text' }"></val-text-input>
|
|
8635
8823
|
*
|
|
8636
|
-
* @example
|
|
8637
|
-
*
|
|
8638
|
-
* // In component
|
|
8639
|
-
* textProps = {
|
|
8640
|
-
* control: this.textControl,
|
|
8641
|
-
* placeholder: this.langService.getText('MyComponent', 'namePlaceholder')
|
|
8642
|
-
* };
|
|
8643
|
-
* ```
|
|
8824
|
+
* @example Static (backwards compatible):
|
|
8825
|
+
* <val-text-input [props]="{ control: myControl, placeholder: 'Enter text' }"></val-text-input>
|
|
8644
8826
|
*
|
|
8645
|
-
* @input
|
|
8827
|
+
* @input preset: string - Name of preset to apply (e.g., 'form-field', 'search')
|
|
8828
|
+
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
8646
8829
|
*/
|
|
8647
8830
|
class TextInputComponent {
|
|
8648
8831
|
constructor() {
|
|
8832
|
+
this.presets = inject(PresetService);
|
|
8833
|
+
/**
|
|
8834
|
+
* Input configuration object. Values here override preset values.
|
|
8835
|
+
* @type {InputMetadata}
|
|
8836
|
+
* @property control - The Angular FormControl for the input.
|
|
8837
|
+
* @property placeholder - The placeholder text.
|
|
8838
|
+
* @property label, name, hint, type, validators, etc. - See InputMetadata for all options.
|
|
8839
|
+
*/
|
|
8840
|
+
this.props = {};
|
|
8841
|
+
/**
|
|
8842
|
+
* Resolved props after merging preset + explicit props.
|
|
8843
|
+
* Preset values are overridden by explicit props.
|
|
8844
|
+
*/
|
|
8845
|
+
this.resolvedProps = {};
|
|
8649
8846
|
this.states = ComponentStates;
|
|
8650
8847
|
}
|
|
8651
8848
|
ngOnInit() {
|
|
8849
|
+
this.resolveProps();
|
|
8652
8850
|
// Apply default values on initialization
|
|
8653
|
-
if (this.
|
|
8654
|
-
applyDefaultValueToControl(this.
|
|
8851
|
+
if (this.resolvedProps?.withDefault || this.resolvedProps?.value) {
|
|
8852
|
+
applyDefaultValueToControl(this.resolvedProps);
|
|
8655
8853
|
}
|
|
8656
8854
|
}
|
|
8855
|
+
ngOnChanges(changes) {
|
|
8856
|
+
if (changes['preset'] || changes['props']) {
|
|
8857
|
+
this.resolveProps();
|
|
8858
|
+
}
|
|
8859
|
+
}
|
|
8860
|
+
/**
|
|
8861
|
+
* Merge preset configuration with explicit props.
|
|
8862
|
+
* Explicit props take precedence over preset values.
|
|
8863
|
+
*/
|
|
8864
|
+
resolveProps() {
|
|
8865
|
+
const presetProps = this.preset ? this.presets.get('textInput', this.preset) : {};
|
|
8866
|
+
// Merge: preset defaults < explicit props
|
|
8867
|
+
this.resolvedProps = {
|
|
8868
|
+
...presetProps,
|
|
8869
|
+
...this.props,
|
|
8870
|
+
};
|
|
8871
|
+
}
|
|
8657
8872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8658
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TextInputComponent, isStandalone: true, selector: "val-text-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="
|
|
8873
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TextInputComponent, isStandalone: true, selector: "val-text-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: ` <ion-input [formControl]="resolvedProps.control" type="text" [placeholder]="resolvedProps.placeholder" /> `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
8659
8874
|
}
|
|
8660
8875
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
8661
8876
|
type: Component,
|
|
8662
|
-
args: [{ selector: 'val-text-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="
|
|
8663
|
-
}], propDecorators: {
|
|
8877
|
+
args: [{ selector: 'val-text-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="resolvedProps.control" type="text" [placeholder]="resolvedProps.placeholder" /> `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"] }]
|
|
8878
|
+
}], propDecorators: { preset: [{
|
|
8879
|
+
type: Input
|
|
8880
|
+
}], props: [{
|
|
8664
8881
|
type: Input
|
|
8665
8882
|
}] } });
|
|
8666
8883
|
|
|
@@ -18315,7 +18532,7 @@ class FormComponent {
|
|
|
18315
18532
|
></val-button-group>
|
|
18316
18533
|
</form>
|
|
18317
18534
|
</div>
|
|
18318
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["label", "labelProperty", "valueProperty", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["props"] }] }); }
|
|
18535
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["preset", "props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["preset", "props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["label", "labelProperty", "valueProperty", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }] }); }
|
|
18319
18536
|
}
|
|
18320
18537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormComponent, decorators: [{
|
|
18321
18538
|
type: Component,
|
|
@@ -34401,7 +34618,7 @@ class DocsApiTableComponent {
|
|
|
34401
34618
|
<p class="docs-api-table__empty">No items to display.</p>
|
|
34402
34619
|
}
|
|
34403
34620
|
</div>
|
|
34404
|
-
`, isInline: true, styles: [".docs-api-table{--table-bg: var(--ion-background-color, #fff);--table-border: var(--ion-border-color, #e0e0e0);--table-header-bg: #f8f9fa;--table-row-hover: rgba(0, 0, 0, .02);--table-text: var(--ion-text-color, #1a1a1a);--table-text-secondary: #5b6570;--code-bg: #f1f3f5;--code-text: #0d6efd;--type-bg: #e9ecef;--type-text: #495057;margin:1.5rem 0;font-family:var(--ion-font-family, system-ui, -apple-system, sans-serif)}.docs-api-table__title{font-size:1.25rem;font-weight:700;margin:0 0 1rem;color:var(--table-text)}.docs-api-table__wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.docs-api-table__table{width:100%;min-width:
|
|
34621
|
+
`, isInline: true, styles: [".docs-api-table{--table-bg: var(--ion-background-color, #fff);--table-border: var(--ion-border-color, #e0e0e0);--table-header-bg: #f8f9fa;--table-row-hover: rgba(0, 0, 0, .02);--table-text: var(--ion-text-color, #1a1a1a);--table-text-secondary: #5b6570;--code-bg: #f1f3f5;--code-text: #0d6efd;--type-bg: #e9ecef;--type-text: #495057;margin:1.5rem 0;font-family:var(--ion-font-family, system-ui, -apple-system, sans-serif)}.docs-api-table__title{font-size:1.25rem;font-weight:700;margin:0 0 1rem;color:var(--table-text)}.docs-api-table__wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.docs-api-table__table{width:100%;min-width:620px;border-collapse:separate;border-spacing:0;font-size:.875rem;line-height:1.5;table-layout:fixed}.docs-api-table__th{text-align:left;padding:.625rem .75rem;font-weight:600;font-size:.8125rem;color:var(--table-text-secondary);background:var(--table-header-bg);border-bottom:2px solid var(--table-border);white-space:nowrap}.docs-api-table__th--name{width:120px}.docs-api-table__th--type{width:160px}.docs-api-table__th--default{width:110px}.docs-api-table__th--description{width:auto}.docs-api-table__td{padding:.625rem .75rem;border-bottom:1px solid var(--table-border);vertical-align:top;color:var(--table-text)}.docs-api-table__td--description{color:var(--table-text-secondary);line-height:1.5}.docs-api-table__row{transition:background-color .15s ease}.docs-api-table__row:hover{background:var(--table-row-hover)}.docs-api-table__row:last-child .docs-api-table__td{border-bottom:none}.docs-api-table__row--deprecated{opacity:.65}.docs-api-table__row--deprecated .docs-api-table__code{text-decoration:line-through}.docs-api-table__code{display:inline-block;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-size:.75rem;font-weight:500;color:var(--code-text);background:var(--code-bg);padding:.125rem .375rem;border-radius:4px;word-break:break-word}.docs-api-table__type,.docs-api-table__default{display:inline-block;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-size:.6875rem;font-weight:500;color:var(--type-text);background:var(--type-bg);padding:.1875rem .375rem;border-radius:4px;white-space:normal;word-break:break-word}.docs-api-table__required{color:var(--ion-color-danger, #dc3545);font-weight:700;margin-left:.25rem;font-size:1rem;vertical-align:middle}.docs-api-table__badge{display:inline-block;margin-left:.5rem;padding:.1875rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em;border-radius:4px;background:#e9ecef;color:#495057;vertical-align:middle}.docs-api-table__badge--deprecated{background:#fff3cd;color:#856404}.docs-api-table__deprecation-note{margin-top:.5rem;font-size:.75rem;font-style:italic;color:#856404}.docs-api-table__empty{padding:3rem;text-align:center;color:var(--table-text-secondary);font-style:italic}.docs-api-table--bordered .docs-api-table__wrapper{border:1px solid var(--table-border);border-radius:12px;overflow-x:auto;overflow-y:hidden;background:var(--table-bg)}.docs-api-table--bordered .docs-api-table__th:first-child{border-top-left-radius:11px}.docs-api-table--bordered .docs-api-table__th:last-child{border-top-right-radius:11px}@media (max-width: 768px){.docs-api-table__table{display:block}.docs-api-table__table thead{display:none}.docs-api-table__table tbody{display:block}.docs-api-table__row{display:block;padding:1rem;margin-bottom:.5rem;border:1px solid var(--table-border);border-radius:8px;background:var(--table-bg)}.docs-api-table__row:last-child{margin-bottom:0}.docs-api-table__row:hover{background:var(--table-row-hover)}.docs-api-table__td{display:block;padding:.375rem 0;border:none!important}.docs-api-table__td:before{content:attr(data-label);display:block;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--table-text-secondary);margin-bottom:.25rem}.docs-api-table__td--name{padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid var(--table-border)!important}.docs-api-table__td--description:before{display:none}.docs-api-table--bordered .docs-api-table__wrapper{border:none;border-radius:0;background:transparent}}:host-context(.dark) .docs-api-table,:host-context([color-scheme=dark]) .docs-api-table{--table-bg: #1e1e1e;--table-border: #3a3a3a;--table-header-bg: #252525;--table-row-hover: rgba(255, 255, 255, .03);--table-text: #f4f5f8;--table-text-secondary: #a0a0a0;--code-bg: rgba(56, 139, 253, .15);--code-text: #79b8ff;--type-bg: rgba(255, 255, 255, .08);--type-text: #c9d1d9}:host-context(.dark) .docs-api-table__badge,:host-context([color-scheme=dark]) .docs-api-table__badge{background:#ffffff14;color:#c9d1d9}:host-context(.dark) .docs-api-table__badge--deprecated,:host-context([color-scheme=dark]) .docs-api-table__badge--deprecated{background:#ffc10726;color:#ffc107}:host-context(.dark) .docs-api-table__deprecation-note,:host-context([color-scheme=dark]) .docs-api-table__deprecation-note{color:#ffc107}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
34405
34622
|
}
|
|
34406
34623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsApiTableComponent, decorators: [{
|
|
34407
34624
|
type: Component,
|
|
@@ -34488,7 +34705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
34488
34705
|
<p class="docs-api-table__empty">No items to display.</p>
|
|
34489
34706
|
}
|
|
34490
34707
|
</div>
|
|
34491
|
-
`, styles: [".docs-api-table{--table-bg: var(--ion-background-color, #fff);--table-border: var(--ion-border-color, #e0e0e0);--table-header-bg: #f8f9fa;--table-row-hover: rgba(0, 0, 0, .02);--table-text: var(--ion-text-color, #1a1a1a);--table-text-secondary: #5b6570;--code-bg: #f1f3f5;--code-text: #0d6efd;--type-bg: #e9ecef;--type-text: #495057;margin:1.5rem 0;font-family:var(--ion-font-family, system-ui, -apple-system, sans-serif)}.docs-api-table__title{font-size:1.25rem;font-weight:700;margin:0 0 1rem;color:var(--table-text)}.docs-api-table__wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.docs-api-table__table{width:100%;min-width:
|
|
34708
|
+
`, styles: [".docs-api-table{--table-bg: var(--ion-background-color, #fff);--table-border: var(--ion-border-color, #e0e0e0);--table-header-bg: #f8f9fa;--table-row-hover: rgba(0, 0, 0, .02);--table-text: var(--ion-text-color, #1a1a1a);--table-text-secondary: #5b6570;--code-bg: #f1f3f5;--code-text: #0d6efd;--type-bg: #e9ecef;--type-text: #495057;margin:1.5rem 0;font-family:var(--ion-font-family, system-ui, -apple-system, sans-serif)}.docs-api-table__title{font-size:1.25rem;font-weight:700;margin:0 0 1rem;color:var(--table-text)}.docs-api-table__wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.docs-api-table__table{width:100%;min-width:620px;border-collapse:separate;border-spacing:0;font-size:.875rem;line-height:1.5;table-layout:fixed}.docs-api-table__th{text-align:left;padding:.625rem .75rem;font-weight:600;font-size:.8125rem;color:var(--table-text-secondary);background:var(--table-header-bg);border-bottom:2px solid var(--table-border);white-space:nowrap}.docs-api-table__th--name{width:120px}.docs-api-table__th--type{width:160px}.docs-api-table__th--default{width:110px}.docs-api-table__th--description{width:auto}.docs-api-table__td{padding:.625rem .75rem;border-bottom:1px solid var(--table-border);vertical-align:top;color:var(--table-text)}.docs-api-table__td--description{color:var(--table-text-secondary);line-height:1.5}.docs-api-table__row{transition:background-color .15s ease}.docs-api-table__row:hover{background:var(--table-row-hover)}.docs-api-table__row:last-child .docs-api-table__td{border-bottom:none}.docs-api-table__row--deprecated{opacity:.65}.docs-api-table__row--deprecated .docs-api-table__code{text-decoration:line-through}.docs-api-table__code{display:inline-block;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-size:.75rem;font-weight:500;color:var(--code-text);background:var(--code-bg);padding:.125rem .375rem;border-radius:4px;word-break:break-word}.docs-api-table__type,.docs-api-table__default{display:inline-block;font-family:SF Mono,Fira Code,Monaco,Consolas,monospace;font-size:.6875rem;font-weight:500;color:var(--type-text);background:var(--type-bg);padding:.1875rem .375rem;border-radius:4px;white-space:normal;word-break:break-word}.docs-api-table__required{color:var(--ion-color-danger, #dc3545);font-weight:700;margin-left:.25rem;font-size:1rem;vertical-align:middle}.docs-api-table__badge{display:inline-block;margin-left:.5rem;padding:.1875rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em;border-radius:4px;background:#e9ecef;color:#495057;vertical-align:middle}.docs-api-table__badge--deprecated{background:#fff3cd;color:#856404}.docs-api-table__deprecation-note{margin-top:.5rem;font-size:.75rem;font-style:italic;color:#856404}.docs-api-table__empty{padding:3rem;text-align:center;color:var(--table-text-secondary);font-style:italic}.docs-api-table--bordered .docs-api-table__wrapper{border:1px solid var(--table-border);border-radius:12px;overflow-x:auto;overflow-y:hidden;background:var(--table-bg)}.docs-api-table--bordered .docs-api-table__th:first-child{border-top-left-radius:11px}.docs-api-table--bordered .docs-api-table__th:last-child{border-top-right-radius:11px}@media (max-width: 768px){.docs-api-table__table{display:block}.docs-api-table__table thead{display:none}.docs-api-table__table tbody{display:block}.docs-api-table__row{display:block;padding:1rem;margin-bottom:.5rem;border:1px solid var(--table-border);border-radius:8px;background:var(--table-bg)}.docs-api-table__row:last-child{margin-bottom:0}.docs-api-table__row:hover{background:var(--table-row-hover)}.docs-api-table__td{display:block;padding:.375rem 0;border:none!important}.docs-api-table__td:before{content:attr(data-label);display:block;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--table-text-secondary);margin-bottom:.25rem}.docs-api-table__td--name{padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid var(--table-border)!important}.docs-api-table__td--description:before{display:none}.docs-api-table--bordered .docs-api-table__wrapper{border:none;border-radius:0;background:transparent}}:host-context(.dark) .docs-api-table,:host-context([color-scheme=dark]) .docs-api-table{--table-bg: #1e1e1e;--table-border: #3a3a3a;--table-header-bg: #252525;--table-row-hover: rgba(255, 255, 255, .03);--table-text: #f4f5f8;--table-text-secondary: #a0a0a0;--code-bg: rgba(56, 139, 253, .15);--code-text: #79b8ff;--type-bg: rgba(255, 255, 255, .08);--type-text: #c9d1d9}:host-context(.dark) .docs-api-table__badge,:host-context([color-scheme=dark]) .docs-api-table__badge{background:#ffffff14;color:#c9d1d9}:host-context(.dark) .docs-api-table__badge--deprecated,:host-context([color-scheme=dark]) .docs-api-table__badge--deprecated{background:#ffc10726;color:#ffc107}:host-context(.dark) .docs-api-table__deprecation-note,:host-context([color-scheme=dark]) .docs-api-table__deprecation-note{color:#ffc107}\n"] }]
|
|
34492
34709
|
}], propDecorators: { props: [{
|
|
34493
34710
|
type: Input
|
|
34494
34711
|
}] } });
|
|
@@ -34641,7 +34858,7 @@ class DocsCodeExampleComponent {
|
|
|
34641
34858
|
</div>
|
|
34642
34859
|
}
|
|
34643
34860
|
</div>
|
|
34644
|
-
`, isInline: true, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.
|
|
34861
|
+
`, isInline: true, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.75em;line-height:1.5;color:#24292f;white-space:inherit;word-break:normal;tab-size:2}.docs-code-example__code .token{text-decoration:none!important}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#6a737d}.docs-code-example__code .token.punctuation{color:#24292f}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#005cc5}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#22863a}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#24292f}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#d73a49}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#6f42c1}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#e36209}@media (max-width: 600px){.docs-code-example{border-radius:8px}.docs-code-example__tab-list{font-size:11px}.docs-code-example__pre{max-height:20rem}.docs-code-example__code{font-size:.7em}}@media (prefers-color-scheme: dark){.docs-code-example{background:#21252b;border-color:#3b4048;box-shadow:0 4px 15px #0009}.docs-code-example__header{background:#21252b;border-color:#3b4048}.docs-code-example__title{color:#c9d1d9}.docs-code-example__preview{background:#161b22;border-color:#3b4048}.docs-code-example__tabs{background:#1a1a1a}.docs-code-example__tab-list{border-color:#3b4048}.docs-code-example__tab{color:#8b949e}.docs-code-example__tab:hover{background:#21252b}.docs-code-example__tab--active{background:#282c34;color:#c9d1d9;border-color:#3b4048;border-bottom-color:#282c34}.docs-code-example__code-panel,.docs-code-example__pre{background:#161b22}.docs-code-example__code{color:#c9d1d9}.docs-code-example__copy-btn{--background: rgba(0, 0, 0, .4)}.docs-code-example__copy-btn:hover{--background: rgba(0, 0, 0, .6)}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#8b949e}.docs-code-example__code .token.punctuation{color:#c9d1d9}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#79c0ff}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#7ee787}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#c9d1d9}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#ff7b72}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#d2a8ff}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#ffa657}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
34645
34862
|
}
|
|
34646
34863
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocsCodeExampleComponent, decorators: [{
|
|
34647
34864
|
type: Component,
|
|
@@ -34724,7 +34941,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
34724
34941
|
</div>
|
|
34725
34942
|
}
|
|
34726
34943
|
</div>
|
|
34727
|
-
`, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.
|
|
34944
|
+
`, styles: [".docs-code-example{margin:1.5rem 0;border:1px solid #f2f6f7;border-radius:12px;overflow:hidden;box-shadow:0 2px 4px #0000000d;background:#fff}.docs-code-example__header{padding:1rem 1.25rem;border-bottom:1px solid #f2f6f7;background:#fff}.docs-code-example__title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--ion-text-color, #1a1a1a)}.docs-code-example__description{font-size:.875rem;color:var(--ion-color-medium, #666);margin:0}.docs-code-example__external-link{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;font-size:.8125rem;color:#555;text-decoration:none}.docs-code-example__external-link:hover{color:#1a1a1a;text-decoration:underline}.docs-code-example__external-link ion-icon{font-size:.875rem}.docs-code-example__preview{padding:1.5rem;background:#fff;border-bottom:1px solid #f2f6f7}.docs-code-example__tabs{background:#f6f9fa}.docs-code-example__tab-list{display:flex;gap:2px;border-bottom:1px solid #f2f6f7;overflow-x:auto;scrollbar-width:thin;font-size:12px}.docs-code-example__tab{padding:10px 18px 8px;font-family:Roboto Mono,SF Mono,Monaco,monospace;font-size:.95em;font-weight:500;color:#899396;background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;transition:background .2s,color .2s;margin-bottom:-1px;white-space:nowrap}.docs-code-example__tab:hover{background:#e8eef2}.docs-code-example__tab--active{background:#fff;color:#19422d;border:1px solid #f2f6f7;border-bottom:1px solid #ffffff;font-weight:600;z-index:2}.docs-code-example__code-panel{position:relative;background:#fff}.docs-code-example__code-header{position:sticky;top:10px;float:right;z-index:10;height:0;margin-right:15px}.docs-code-example__copy-btn{--padding-start: 2px;--padding-end: 2px;min-width:28px;min-height:28px;height:28px;width:28px;--color: var(--ion-color-primary);--background: rgba(255, 255, 255, .7);border-radius:6px;box-shadow:0 1px 4px #0000000d;opacity:0;transition:opacity .2s ease}.docs-code-example__code-panel:hover .docs-code-example__copy-btn{opacity:1}.docs-code-example__copy-btn:hover{--background: rgba(255, 255, 255, .9)}.docs-code-example__pre{margin:0;padding:1rem 1.25rem;overflow-x:auto;overflow-y:auto;max-height:30rem;min-height:3rem;background:#fff;white-space:pre;word-break:normal}.docs-code-example__pre--line-numbers{padding-left:3rem;counter-reset:line}.docs-code-example__code{display:block;font-family:Roboto Mono,SF Mono,Monaco,Courier New,monospace;font-size:.75em;line-height:1.5;color:#24292f;white-space:inherit;word-break:normal;tab-size:2}.docs-code-example__code .token{text-decoration:none!important}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#6a737d}.docs-code-example__code .token.punctuation{color:#24292f}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#005cc5}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#22863a}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#24292f}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#d73a49}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#6f42c1}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#e36209}@media (max-width: 600px){.docs-code-example{border-radius:8px}.docs-code-example__tab-list{font-size:11px}.docs-code-example__pre{max-height:20rem}.docs-code-example__code{font-size:.7em}}@media (prefers-color-scheme: dark){.docs-code-example{background:#21252b;border-color:#3b4048;box-shadow:0 4px 15px #0009}.docs-code-example__header{background:#21252b;border-color:#3b4048}.docs-code-example__title{color:#c9d1d9}.docs-code-example__preview{background:#161b22;border-color:#3b4048}.docs-code-example__tabs{background:#1a1a1a}.docs-code-example__tab-list{border-color:#3b4048}.docs-code-example__tab{color:#8b949e}.docs-code-example__tab:hover{background:#21252b}.docs-code-example__tab--active{background:#282c34;color:#c9d1d9;border-color:#3b4048;border-bottom-color:#282c34}.docs-code-example__code-panel,.docs-code-example__pre{background:#161b22}.docs-code-example__code{color:#c9d1d9}.docs-code-example__copy-btn{--background: rgba(0, 0, 0, .4)}.docs-code-example__copy-btn:hover{--background: rgba(0, 0, 0, .6)}.docs-code-example__code .token.comment,.docs-code-example__code .token.prolog,.docs-code-example__code .token.doctype,.docs-code-example__code .token.cdata{color:#8b949e}.docs-code-example__code .token.punctuation{color:#c9d1d9}.docs-code-example__code .token.property,.docs-code-example__code .token.tag,.docs-code-example__code .token.boolean,.docs-code-example__code .token.number,.docs-code-example__code .token.constant,.docs-code-example__code .token.symbol,.docs-code-example__code .token.deleted{color:#79c0ff}.docs-code-example__code .token.selector,.docs-code-example__code .token.attr-name,.docs-code-example__code .token.string,.docs-code-example__code .token.char,.docs-code-example__code .token.builtin,.docs-code-example__code .token.inserted{color:#7ee787}.docs-code-example__code .token.operator,.docs-code-example__code .token.entity,.docs-code-example__code .token.url{color:#c9d1d9}.docs-code-example__code .token.atrule,.docs-code-example__code .token.attr-value,.docs-code-example__code .token.keyword{color:#ff7b72}.docs-code-example__code .token.function,.docs-code-example__code .token.class-name{color:#d2a8ff}.docs-code-example__code .token.regex,.docs-code-example__code .token.important,.docs-code-example__code .token.variable{color:#ffa657}}\n"] }]
|
|
34728
34945
|
}], propDecorators: { props: [{
|
|
34729
34946
|
type: Input
|
|
34730
34947
|
}], previewTpl: [{
|