valtech-components 2.0.293 → 2.0.294
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/language-selector/language-selector.component.mjs +219 -0
- package/esm2022/lib/components/molecules/language-selector/types.mjs +2 -0
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +170 -0
- package/esm2022/lib/components/molecules/popover-selector/types.mjs +2 -0
- package/esm2022/lib/examples/display-demo.component.mjs +53 -53
- package/esm2022/lib/examples/selector-examples.component.mjs +208 -0
- package/esm2022/lib/services/lang-provider/components/display-demo.mjs +86 -0
- package/esm2022/lib/services/lang-provider/content.mjs +1 -1
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/valtech-components.mjs +630 -55
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +50 -0
- package/lib/components/molecules/language-selector/types.d.ts +52 -0
- package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +29 -0
- package/lib/components/molecules/popover-selector/types.d.ts +69 -0
- package/lib/examples/display-demo.component.d.ts +3 -0
- package/lib/examples/selector-examples.component.d.ts +20 -0
- package/lib/services/lang-provider/components/display-demo.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, Pipe, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef } from '@angular/core';
|
|
3
|
-
import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonButtons, IonTextarea, IonDatetime, IonDatetimeButton, IonModal, IonInput,
|
|
3
|
+
import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonButtons, IonTextarea, IonDatetime, IonDatetimeButton, IonModal, IonInput, IonSelect, IonSelectOption, IonItem, IonLabel, IonRadioGroup, IonRadio, IonSearchbar, IonToolbar, IonTitle, IonMenuButton, IonFooter, IonHeader, IonList, IonListHeader, IonNote, IonContent } from '@ionic/angular/standalone';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule, NgStyle, AsyncPipe, NgFor, NgClass } from '@angular/common';
|
|
6
6
|
import { addIcons } from 'ionicons';
|
|
7
|
-
import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBackOutline, arrowForwardOutline, arrowDownOutline, checkmarkCircleOutline, ellipsisHorizontalOutline, notificationsOutline, openOutline, closeOutline, chatbubblesOutline, shareOutline, heart, heartOutline, homeOutline, eyeOffOutline, eyeOutline, scanOutline, chevronDownOutline, chevronForwardOutline, checkmarkOutline, clipboardOutline, copyOutline, filterOutline, locationOutline, calendarOutline, businessOutline, logoTwitter, logoInstagram, logoLinkedin, logoYoutube, logoTiktok, logoFacebook, createOutline, trashOutline, playOutline, refreshOutline, documentTextOutline, lockClosedOutline, informationCircleOutline, logoNpm, chevronBackOutline } from 'ionicons/icons';
|
|
7
|
+
import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBackOutline, arrowForwardOutline, arrowDownOutline, checkmarkCircleOutline, ellipsisHorizontalOutline, notificationsOutline, openOutline, closeOutline, chatbubblesOutline, shareOutline, heart, heartOutline, homeOutline, eyeOffOutline, eyeOutline, scanOutline, chevronDownOutline, chevronForwardOutline, checkmarkOutline, clipboardOutline, copyOutline, filterOutline, locationOutline, calendarOutline, businessOutline, logoTwitter, logoInstagram, logoLinkedin, logoYoutube, logoTiktok, logoFacebook, createOutline, trashOutline, playOutline, refreshOutline, documentTextOutline, lockClosedOutline, informationCircleOutline, logoNpm, chevronDown, language, globe, chevronBackOutline } from 'ionicons/icons';
|
|
8
8
|
import { map, BehaviorSubject, distinctUntilChanged, Subscription, of } from 'rxjs';
|
|
9
9
|
import { Router, RouterLink } from '@angular/router';
|
|
10
10
|
import { Browser } from '@capacitor/browser';
|
|
11
11
|
import * as i1$1 from '@angular/platform-browser';
|
|
12
12
|
import * as i1$2 from '@angular/forms';
|
|
13
13
|
import { ReactiveFormsModule, FormsModule, Validators } from '@angular/forms';
|
|
14
|
+
import { map as map$1 } from 'rxjs/operators';
|
|
14
15
|
import * as i1$3 from 'ng-otp-input';
|
|
15
16
|
import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
|
|
16
17
|
import * as i2 from '@ionic/angular';
|
|
17
18
|
import { IonicModule } from '@ionic/angular';
|
|
18
|
-
import { map as map$1 } from 'rxjs/operators';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* val-avatar
|
|
@@ -3771,6 +3771,378 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3771
3771
|
type: Input
|
|
3772
3772
|
}] } });
|
|
3773
3773
|
|
|
3774
|
+
/**
|
|
3775
|
+
* val-popover-selector
|
|
3776
|
+
*
|
|
3777
|
+
* A generic reusable popover selector component that can be used for any type of selection.
|
|
3778
|
+
* Provides a button trigger that opens a popover with selectable options.
|
|
3779
|
+
*
|
|
3780
|
+
* @example
|
|
3781
|
+
* // Basic usage
|
|
3782
|
+
* <val-popover-selector
|
|
3783
|
+
* [props]="selectorProps"
|
|
3784
|
+
* (selectionChange)="onSelectionChange($event)">
|
|
3785
|
+
* </val-popover-selector>
|
|
3786
|
+
*
|
|
3787
|
+
* @example
|
|
3788
|
+
* // With icon and custom styling
|
|
3789
|
+
* const selectorProps: PopoverSelectorMetadata = {
|
|
3790
|
+
* options: [
|
|
3791
|
+
* { value: 'option1', label: 'Option 1', icon: 'star' },
|
|
3792
|
+
* { value: 'option2', label: 'Option 2', icon: 'heart' }
|
|
3793
|
+
* ],
|
|
3794
|
+
* selectedValue: 'option1',
|
|
3795
|
+
* label: 'Choose option',
|
|
3796
|
+
* icon: 'settings',
|
|
3797
|
+
* color: 'primary',
|
|
3798
|
+
* size: 'large',
|
|
3799
|
+
* fill: 'solid'
|
|
3800
|
+
* };
|
|
3801
|
+
*
|
|
3802
|
+
* @input props: PopoverSelectorMetadata - Configuration for the selector
|
|
3803
|
+
* @output selectionChange: EventEmitter<string | string[]> - Emitted when selection changes
|
|
3804
|
+
*/
|
|
3805
|
+
class PopoverSelectorComponent {
|
|
3806
|
+
constructor() {
|
|
3807
|
+
/**
|
|
3808
|
+
* Event emitted when the selection changes.
|
|
3809
|
+
* Emits the selected value(s).
|
|
3810
|
+
*/
|
|
3811
|
+
this.selectionChange = new EventEmitter();
|
|
3812
|
+
// Register required icons
|
|
3813
|
+
addIcons({ chevronDown });
|
|
3814
|
+
}
|
|
3815
|
+
/**
|
|
3816
|
+
* Handle selection change from the ion-select.
|
|
3817
|
+
* @param event - The ion-select change event
|
|
3818
|
+
*/
|
|
3819
|
+
onSelectionChange(event) {
|
|
3820
|
+
const selectedValue = event.detail.value;
|
|
3821
|
+
this.selectionChange.emit(selectedValue);
|
|
3822
|
+
}
|
|
3823
|
+
/**
|
|
3824
|
+
* Get the display text for the trigger button.
|
|
3825
|
+
* Shows the selected option's label or placeholder.
|
|
3826
|
+
* @returns The display text
|
|
3827
|
+
*/
|
|
3828
|
+
getDisplayText() {
|
|
3829
|
+
if (!this.props.selectedValue) {
|
|
3830
|
+
return this.props.placeholder || 'Seleccionar...';
|
|
3831
|
+
}
|
|
3832
|
+
if (Array.isArray(this.props.selectedValue)) {
|
|
3833
|
+
// Multiple selection
|
|
3834
|
+
if (this.props.selectedValue.length === 0) {
|
|
3835
|
+
return this.props.placeholder || 'Seleccionar...';
|
|
3836
|
+
}
|
|
3837
|
+
if (this.props.selectedValue.length === 1) {
|
|
3838
|
+
const option = this.props.options.find(opt => opt.value === this.props.selectedValue[0]);
|
|
3839
|
+
return option?.label || this.props.selectedValue[0];
|
|
3840
|
+
}
|
|
3841
|
+
return `${this.props.selectedValue.length} seleccionados`;
|
|
3842
|
+
}
|
|
3843
|
+
// Single selection
|
|
3844
|
+
const selectedOption = this.props.options.find(opt => opt.value === this.props.selectedValue);
|
|
3845
|
+
return selectedOption?.label || this.props.selectedValue;
|
|
3846
|
+
}
|
|
3847
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3848
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PopoverSelectorComponent, isStandalone: true, selector: "val-popover-selector", inputs: { props: "props" }, outputs: { selectionChange: "selectionChange" }, ngImport: i0, template: `
|
|
3849
|
+
<ion-item [disabled]="props.disabled" lines="none">
|
|
3850
|
+
<ion-label *ngIf="props.label" position="stacked">{{ props.label }}</ion-label>
|
|
3851
|
+
<ion-select
|
|
3852
|
+
[value]="props.selectedValue"
|
|
3853
|
+
[placeholder]="props.placeholder || 'Seleccionar...'"
|
|
3854
|
+
[interface]="props.interface || 'popover'"
|
|
3855
|
+
[multiple]="props.multiple || false"
|
|
3856
|
+
[disabled]="props.disabled || false"
|
|
3857
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
3858
|
+
[okText]="props.okText || 'Aceptar'"
|
|
3859
|
+
(ionChange)="onSelectionChange($event)"
|
|
3860
|
+
class="popover-selector-select"
|
|
3861
|
+
>
|
|
3862
|
+
<ion-button
|
|
3863
|
+
slot="trigger"
|
|
3864
|
+
[fill]="props.fill || 'outline'"
|
|
3865
|
+
[size]="props.size || 'default'"
|
|
3866
|
+
[shape]="props.shape"
|
|
3867
|
+
[expand]="props.expand"
|
|
3868
|
+
[color]="props.color || 'medium'"
|
|
3869
|
+
[disabled]="props.disabled || false"
|
|
3870
|
+
class="selector-trigger"
|
|
3871
|
+
>
|
|
3872
|
+
<ion-icon *ngIf="props.icon" [name]="props.icon" slot="start"> </ion-icon>
|
|
3873
|
+
|
|
3874
|
+
<span class="trigger-text">{{ getDisplayText() }}</span>
|
|
3875
|
+
|
|
3876
|
+
<ion-icon name="chevron-down" slot="end" class="chevron-icon"> </ion-icon>
|
|
3877
|
+
</ion-button>
|
|
3878
|
+
|
|
3879
|
+
<ion-select-option *ngFor="let option of props.options" [value]="option.value" [disabled]="option.disabled">
|
|
3880
|
+
<div class="option-content">
|
|
3881
|
+
<ion-icon *ngIf="option.icon" [name]="option.icon" class="option-icon"> </ion-icon>
|
|
3882
|
+
<span>{{ option.label }}</span>
|
|
3883
|
+
</div>
|
|
3884
|
+
</ion-select-option>
|
|
3885
|
+
</ion-select>
|
|
3886
|
+
</ion-item>
|
|
3887
|
+
`, isInline: true, styles: [".popover-selector-select{width:100%}.popover-selector-select .selector-trigger{width:100%;justify-content:space-between;text-align:left}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .2s ease}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg)}.option-content{display:flex;align-items:center;gap:8px}.option-content .option-icon{font-size:16px;width:16px;height:16px}.popover-selector-select.size-small .selector-trigger{--padding-start: 8px;--padding-end: 8px;font-size:14px}.popover-selector-select.size-large .selector-trigger{--padding-start: 16px;--padding-end: 16px;font-size:18px}ion-item[disabled]{opacity:.6;pointer-events:none}\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: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }] }); }
|
|
3888
|
+
}
|
|
3889
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PopoverSelectorComponent, decorators: [{
|
|
3890
|
+
type: Component,
|
|
3891
|
+
args: [{ selector: 'val-popover-selector', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSelect, IonSelectOption, IonItem, IonLabel], template: `
|
|
3892
|
+
<ion-item [disabled]="props.disabled" lines="none">
|
|
3893
|
+
<ion-label *ngIf="props.label" position="stacked">{{ props.label }}</ion-label>
|
|
3894
|
+
<ion-select
|
|
3895
|
+
[value]="props.selectedValue"
|
|
3896
|
+
[placeholder]="props.placeholder || 'Seleccionar...'"
|
|
3897
|
+
[interface]="props.interface || 'popover'"
|
|
3898
|
+
[multiple]="props.multiple || false"
|
|
3899
|
+
[disabled]="props.disabled || false"
|
|
3900
|
+
[cancelText]="props.cancelText || 'Cancelar'"
|
|
3901
|
+
[okText]="props.okText || 'Aceptar'"
|
|
3902
|
+
(ionChange)="onSelectionChange($event)"
|
|
3903
|
+
class="popover-selector-select"
|
|
3904
|
+
>
|
|
3905
|
+
<ion-button
|
|
3906
|
+
slot="trigger"
|
|
3907
|
+
[fill]="props.fill || 'outline'"
|
|
3908
|
+
[size]="props.size || 'default'"
|
|
3909
|
+
[shape]="props.shape"
|
|
3910
|
+
[expand]="props.expand"
|
|
3911
|
+
[color]="props.color || 'medium'"
|
|
3912
|
+
[disabled]="props.disabled || false"
|
|
3913
|
+
class="selector-trigger"
|
|
3914
|
+
>
|
|
3915
|
+
<ion-icon *ngIf="props.icon" [name]="props.icon" slot="start"> </ion-icon>
|
|
3916
|
+
|
|
3917
|
+
<span class="trigger-text">{{ getDisplayText() }}</span>
|
|
3918
|
+
|
|
3919
|
+
<ion-icon name="chevron-down" slot="end" class="chevron-icon"> </ion-icon>
|
|
3920
|
+
</ion-button>
|
|
3921
|
+
|
|
3922
|
+
<ion-select-option *ngFor="let option of props.options" [value]="option.value" [disabled]="option.disabled">
|
|
3923
|
+
<div class="option-content">
|
|
3924
|
+
<ion-icon *ngIf="option.icon" [name]="option.icon" class="option-icon"> </ion-icon>
|
|
3925
|
+
<span>{{ option.label }}</span>
|
|
3926
|
+
</div>
|
|
3927
|
+
</ion-select-option>
|
|
3928
|
+
</ion-select>
|
|
3929
|
+
</ion-item>
|
|
3930
|
+
`, styles: [".popover-selector-select{width:100%}.popover-selector-select .selector-trigger{width:100%;justify-content:space-between;text-align:left}.popover-selector-select .selector-trigger .trigger-text{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popover-selector-select .selector-trigger .chevron-icon{margin-left:auto;transition:transform .2s ease}.popover-selector-select .selector-trigger.select-expanded .chevron-icon{transform:rotate(180deg)}.option-content{display:flex;align-items:center;gap:8px}.option-content .option-icon{font-size:16px;width:16px;height:16px}.popover-selector-select.size-small .selector-trigger{--padding-start: 8px;--padding-end: 8px;font-size:14px}.popover-selector-select.size-large .selector-trigger{--padding-start: 16px;--padding-end: 16px;font-size:18px}ion-item[disabled]{opacity:.6;pointer-events:none}\n"] }]
|
|
3931
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
3932
|
+
type: Input
|
|
3933
|
+
}], selectionChange: [{
|
|
3934
|
+
type: Output
|
|
3935
|
+
}] } });
|
|
3936
|
+
|
|
3937
|
+
/**
|
|
3938
|
+
* val-language-selector
|
|
3939
|
+
*
|
|
3940
|
+
* A specialized language selector component that integrates with the LangService.
|
|
3941
|
+
* Uses the popover-selector component internally and provides language-specific functionality.
|
|
3942
|
+
*
|
|
3943
|
+
* @example
|
|
3944
|
+
* // Basic usage (auto-detects languages from LangService)
|
|
3945
|
+
* <val-language-selector
|
|
3946
|
+
* [props]="{ showLabel: true, showFlags: true }">
|
|
3947
|
+
* </val-language-selector>
|
|
3948
|
+
*
|
|
3949
|
+
* @example
|
|
3950
|
+
* // Custom configuration
|
|
3951
|
+
* const languageProps: LanguageSelectorMetadata = {
|
|
3952
|
+
* showLabel: true,
|
|
3953
|
+
* label: 'Choose Language',
|
|
3954
|
+
* showFlags: true,
|
|
3955
|
+
* color: 'primary',
|
|
3956
|
+
* size: 'large',
|
|
3957
|
+
* fill: 'outline',
|
|
3958
|
+
* customLanguageNames: {
|
|
3959
|
+
* 'es': 'Español',
|
|
3960
|
+
* 'en': 'English',
|
|
3961
|
+
* 'fr': 'Français'
|
|
3962
|
+
* }
|
|
3963
|
+
* };
|
|
3964
|
+
*
|
|
3965
|
+
* @example
|
|
3966
|
+
* // With reactive content
|
|
3967
|
+
* const languageProps: LanguageSelectorMetadata = {
|
|
3968
|
+
* showLabel: true,
|
|
3969
|
+
* labelConfig: {
|
|
3970
|
+
* className: 'myComponent',
|
|
3971
|
+
* key: 'languageLabel',
|
|
3972
|
+
* fallback: 'Language'
|
|
3973
|
+
* },
|
|
3974
|
+
* color: 'tertiary'
|
|
3975
|
+
* };
|
|
3976
|
+
*
|
|
3977
|
+
* @input props: LanguageSelectorMetadata - Configuration for the language selector
|
|
3978
|
+
* @output languageChange: EventEmitter<string> - Emitted when language changes
|
|
3979
|
+
*/
|
|
3980
|
+
class LanguageSelectorComponent {
|
|
3981
|
+
constructor(langService, contentService) {
|
|
3982
|
+
this.langService = langService;
|
|
3983
|
+
this.contentService = contentService;
|
|
3984
|
+
/**
|
|
3985
|
+
* Language selector configuration object.
|
|
3986
|
+
* @type {LanguageSelectorMetadata}
|
|
3987
|
+
*/
|
|
3988
|
+
this.props = {};
|
|
3989
|
+
/**
|
|
3990
|
+
* Event emitted when the language selection changes.
|
|
3991
|
+
* Emits the selected language code.
|
|
3992
|
+
*/
|
|
3993
|
+
this.languageChange = new EventEmitter();
|
|
3994
|
+
this.subscriptions = new Subscription();
|
|
3995
|
+
/** Default language display names */
|
|
3996
|
+
this.defaultLanguageNames = {
|
|
3997
|
+
es: 'Español',
|
|
3998
|
+
en: 'English',
|
|
3999
|
+
fr: 'Français',
|
|
4000
|
+
de: 'Deutsch',
|
|
4001
|
+
pt: 'Português',
|
|
4002
|
+
it: 'Italiano',
|
|
4003
|
+
zh: '中文',
|
|
4004
|
+
ja: '日本語',
|
|
4005
|
+
ko: '한국어',
|
|
4006
|
+
ru: 'Русский',
|
|
4007
|
+
ar: 'العربية',
|
|
4008
|
+
};
|
|
4009
|
+
/** Default flag icons for languages */
|
|
4010
|
+
this.defaultLanguageFlags = {
|
|
4011
|
+
es: '🇪🇸',
|
|
4012
|
+
en: '🇺🇸',
|
|
4013
|
+
fr: '🇫🇷',
|
|
4014
|
+
de: '🇩🇪',
|
|
4015
|
+
pt: '🇵🇹',
|
|
4016
|
+
it: '🇮🇹',
|
|
4017
|
+
zh: '🇨🇳',
|
|
4018
|
+
ja: '🇯🇵',
|
|
4019
|
+
ko: '🇰🇷',
|
|
4020
|
+
ru: '🇷🇺',
|
|
4021
|
+
ar: '🇸🇦',
|
|
4022
|
+
};
|
|
4023
|
+
// Register required icons
|
|
4024
|
+
addIcons({ language, globe });
|
|
4025
|
+
}
|
|
4026
|
+
ngOnInit() {
|
|
4027
|
+
this.initializeLanguageState();
|
|
4028
|
+
this.initializeLabel();
|
|
4029
|
+
this.initializePopoverProps();
|
|
4030
|
+
}
|
|
4031
|
+
ngOnDestroy() {
|
|
4032
|
+
this.subscriptions.unsubscribe();
|
|
4033
|
+
}
|
|
4034
|
+
initializeLanguageState() {
|
|
4035
|
+
// Get current language and available languages from LangService
|
|
4036
|
+
this.currentLanguage$ = this.langService.currentLang$;
|
|
4037
|
+
this.availableLanguages$ = this.currentLanguage$.pipe(map$1(() => this.props.availableLanguages || this.langService.availableLangs));
|
|
4038
|
+
}
|
|
4039
|
+
initializeLabel() {
|
|
4040
|
+
// Initialize label observable based on configuration
|
|
4041
|
+
if (this.props.label !== undefined) {
|
|
4042
|
+
// Static label
|
|
4043
|
+
this.label$ = of(this.props.label);
|
|
4044
|
+
}
|
|
4045
|
+
else if (this.props.labelConfig) {
|
|
4046
|
+
// Reactive label
|
|
4047
|
+
this.label$ = this.contentService.fromContent({
|
|
4048
|
+
className: this.props.labelConfig.className || '_global',
|
|
4049
|
+
key: this.props.labelConfig.key,
|
|
4050
|
+
fallback: this.props.labelConfig.fallback || 'Language',
|
|
4051
|
+
interpolation: this.props.labelConfig.interpolation,
|
|
4052
|
+
});
|
|
4053
|
+
}
|
|
4054
|
+
else {
|
|
4055
|
+
// Default label from global content
|
|
4056
|
+
this.label$ = this.contentService.fromContent({
|
|
4057
|
+
className: '_global',
|
|
4058
|
+
key: 'language',
|
|
4059
|
+
fallback: 'Idioma',
|
|
4060
|
+
});
|
|
4061
|
+
}
|
|
4062
|
+
}
|
|
4063
|
+
initializePopoverProps() {
|
|
4064
|
+
// Subscribe to language state changes to update popover props
|
|
4065
|
+
const languageSubscription = this.availableLanguages$.subscribe(availableLanguages => {
|
|
4066
|
+
const currentLanguageSubscription = this.currentLanguage$.subscribe(currentLanguage => {
|
|
4067
|
+
this.updatePopoverProps(availableLanguages, currentLanguage);
|
|
4068
|
+
});
|
|
4069
|
+
this.subscriptions.add(currentLanguageSubscription);
|
|
4070
|
+
});
|
|
4071
|
+
this.subscriptions.add(languageSubscription);
|
|
4072
|
+
// Subscribe to label changes
|
|
4073
|
+
const labelSubscription = this.label$.subscribe(label => {
|
|
4074
|
+
if (this.popoverProps) {
|
|
4075
|
+
this.popoverProps = {
|
|
4076
|
+
...this.popoverProps,
|
|
4077
|
+
label: this.props.showLabel !== false ? label : undefined,
|
|
4078
|
+
};
|
|
4079
|
+
}
|
|
4080
|
+
});
|
|
4081
|
+
this.subscriptions.add(labelSubscription);
|
|
4082
|
+
}
|
|
4083
|
+
updatePopoverProps(availableLanguages, currentLanguage) {
|
|
4084
|
+
// Convert language codes to popover options
|
|
4085
|
+
const options = availableLanguages.map(lang => ({
|
|
4086
|
+
value: lang,
|
|
4087
|
+
label: this.getLanguageDisplayName(lang),
|
|
4088
|
+
icon: this.props.showFlags ? undefined : undefined, // We'll use text flags instead
|
|
4089
|
+
}));
|
|
4090
|
+
// Create popover configuration
|
|
4091
|
+
this.popoverProps = {
|
|
4092
|
+
options,
|
|
4093
|
+
selectedValue: currentLanguage,
|
|
4094
|
+
label: this.props.showLabel !== false ? '' : undefined, // Will be set by label subscription
|
|
4095
|
+
icon: 'language',
|
|
4096
|
+
placeholder: 'Seleccionar idioma...',
|
|
4097
|
+
color: this.props.color || 'medium',
|
|
4098
|
+
size: this.props.size || 'default',
|
|
4099
|
+
fill: this.props.fill || 'outline',
|
|
4100
|
+
shape: this.props.shape,
|
|
4101
|
+
expand: this.props.expand,
|
|
4102
|
+
disabled: this.props.disabled || false,
|
|
4103
|
+
interface: 'popover',
|
|
4104
|
+
showCheckmark: true,
|
|
4105
|
+
multiple: false,
|
|
4106
|
+
cancelText: 'Cancelar',
|
|
4107
|
+
okText: 'Aceptar',
|
|
4108
|
+
};
|
|
4109
|
+
}
|
|
4110
|
+
getLanguageDisplayName(languageCode) {
|
|
4111
|
+
// Use custom names if provided, otherwise use defaults, otherwise use the code itself
|
|
4112
|
+
const customName = this.props.customLanguageNames?.[languageCode];
|
|
4113
|
+
const defaultName = this.defaultLanguageNames[languageCode];
|
|
4114
|
+
const flag = this.props.showFlags ? this.defaultLanguageFlags[languageCode] : '';
|
|
4115
|
+
const displayName = customName || defaultName || languageCode.toUpperCase();
|
|
4116
|
+
return flag ? `${flag} ${displayName}` : displayName;
|
|
4117
|
+
}
|
|
4118
|
+
/**
|
|
4119
|
+
* Handle language selection change.
|
|
4120
|
+
* @param selectedLanguage - The selected language code(s)
|
|
4121
|
+
*/
|
|
4122
|
+
onLanguageChange(selectedLanguage) {
|
|
4123
|
+
if (typeof selectedLanguage === 'string') {
|
|
4124
|
+
// Update the language service
|
|
4125
|
+
this.langService.setLang(selectedLanguage);
|
|
4126
|
+
// Emit the change event
|
|
4127
|
+
this.languageChange.emit(selectedLanguage);
|
|
4128
|
+
}
|
|
4129
|
+
}
|
|
4130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageSelectorComponent, deps: [{ token: LangService }, { token: ContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
|
|
4132
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
4133
|
+
`, isInline: true, styles: [":host{display:block}val-popover-selector .selector-trigger .trigger-text{display:flex;align-items:center;gap:8px}.language-flag{font-size:1.2em;margin-right:4px}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 8px;--padding-end: 8px}val-popover-selector .selector-trigger .trigger-text{font-size:14px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }] }); }
|
|
4134
|
+
}
|
|
4135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageSelectorComponent, decorators: [{
|
|
4136
|
+
type: Component,
|
|
4137
|
+
args: [{ selector: 'val-language-selector', standalone: true, imports: [CommonModule, PopoverSelectorComponent], template: `
|
|
4138
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
4139
|
+
`, styles: [":host{display:block}val-popover-selector .selector-trigger .trigger-text{display:flex;align-items:center;gap:8px}.language-flag{font-size:1.2em;margin-right:4px}@media (max-width: 768px){val-popover-selector .selector-trigger{--padding-start: 8px;--padding-end: 8px}val-popover-selector .selector-trigger .trigger-text{font-size:14px}}\n"] }]
|
|
4140
|
+
}], ctorParameters: () => [{ type: LangService }, { type: ContentService }], propDecorators: { props: [{
|
|
4141
|
+
type: Input
|
|
4142
|
+
}], languageChange: [{
|
|
4143
|
+
type: Output
|
|
4144
|
+
}] } });
|
|
4145
|
+
|
|
3774
4146
|
/**
|
|
3775
4147
|
* Service for managing application themes (light, dark, auto).
|
|
3776
4148
|
* Handles user preferences, system theme detection, and theme toggling.
|
|
@@ -7314,6 +7686,19 @@ class DisplayDemoComponent {
|
|
|
7314
7686
|
this.langService = langService;
|
|
7315
7687
|
// Contador para ejemplos dinámicos
|
|
7316
7688
|
this.counter = 0;
|
|
7689
|
+
// Configuración del selector de idioma
|
|
7690
|
+
this.languageSelectorProps = {
|
|
7691
|
+
showLabel: true,
|
|
7692
|
+
labelConfig: {
|
|
7693
|
+
className: '_global',
|
|
7694
|
+
key: 'language',
|
|
7695
|
+
fallback: 'Idioma',
|
|
7696
|
+
},
|
|
7697
|
+
showFlags: true,
|
|
7698
|
+
color: 'primary',
|
|
7699
|
+
size: 'default',
|
|
7700
|
+
fill: 'outline',
|
|
7701
|
+
};
|
|
7317
7702
|
// Configuraciones de ejemplo - ESTÁTICAS
|
|
7318
7703
|
this.smallStaticDisplay = {
|
|
7319
7704
|
content: 'Texto pequeño estático',
|
|
@@ -7365,7 +7750,7 @@ class DisplayDemoComponent {
|
|
|
7365
7750
|
this.welcomeDisplay = {
|
|
7366
7751
|
contentConfig: {
|
|
7367
7752
|
className: 'displayDemo',
|
|
7368
|
-
key: '
|
|
7753
|
+
key: 'welcomeTitle',
|
|
7369
7754
|
fallback: 'Bienvenido a la aplicación',
|
|
7370
7755
|
},
|
|
7371
7756
|
color: 'primary',
|
|
@@ -7374,7 +7759,7 @@ class DisplayDemoComponent {
|
|
|
7374
7759
|
this.descriptionDisplay = {
|
|
7375
7760
|
contentConfig: {
|
|
7376
7761
|
className: 'displayDemo',
|
|
7377
|
-
key: '
|
|
7762
|
+
key: 'welcomeDescription',
|
|
7378
7763
|
fallback: 'Esta es una descripción de ejemplo',
|
|
7379
7764
|
},
|
|
7380
7765
|
color: 'medium',
|
|
@@ -7383,7 +7768,7 @@ class DisplayDemoComponent {
|
|
|
7383
7768
|
this.statusDisplay = {
|
|
7384
7769
|
contentConfig: {
|
|
7385
7770
|
className: 'displayDemo',
|
|
7386
|
-
key: '
|
|
7771
|
+
key: 'statusOnline',
|
|
7387
7772
|
fallback: 'En línea',
|
|
7388
7773
|
},
|
|
7389
7774
|
color: 'success',
|
|
@@ -7393,7 +7778,7 @@ class DisplayDemoComponent {
|
|
|
7393
7778
|
this.userWelcomeDisplay = {
|
|
7394
7779
|
contentConfig: {
|
|
7395
7780
|
className: 'displayDemo',
|
|
7396
|
-
key: '
|
|
7781
|
+
key: 'welcomeUser',
|
|
7397
7782
|
fallback: 'Hola, {{userName}}!',
|
|
7398
7783
|
interpolation: {
|
|
7399
7784
|
userName: 'Juan Pérez',
|
|
@@ -7405,7 +7790,7 @@ class DisplayDemoComponent {
|
|
|
7405
7790
|
this.counterDisplay = {
|
|
7406
7791
|
contentConfig: {
|
|
7407
7792
|
className: 'displayDemo',
|
|
7408
|
-
key: '
|
|
7793
|
+
key: 'counterCurrent',
|
|
7409
7794
|
fallback: 'Contador: {{count}}',
|
|
7410
7795
|
interpolation: {
|
|
7411
7796
|
count: this.counter,
|
|
@@ -7442,7 +7827,7 @@ class DisplayDemoComponent {
|
|
|
7442
7827
|
this.reactiveMixedDisplay = {
|
|
7443
7828
|
contentConfig: {
|
|
7444
7829
|
className: 'displayDemo',
|
|
7445
|
-
key: '
|
|
7830
|
+
key: 'mixedReactive',
|
|
7446
7831
|
fallback: 'Este contenido sí cambia con el idioma',
|
|
7447
7832
|
},
|
|
7448
7833
|
color: 'primary',
|
|
@@ -7452,7 +7837,7 @@ class DisplayDemoComponent {
|
|
|
7452
7837
|
this.dynamicCounterDisplay = {
|
|
7453
7838
|
contentConfig: {
|
|
7454
7839
|
className: 'displayDemo',
|
|
7455
|
-
key: '
|
|
7840
|
+
key: 'dynamicContent',
|
|
7456
7841
|
fallback: 'Clics: {{count}}',
|
|
7457
7842
|
interpolation: {
|
|
7458
7843
|
count: this.counter,
|
|
@@ -7470,7 +7855,7 @@ class DisplayDemoComponent {
|
|
|
7470
7855
|
// Contenido de la página
|
|
7471
7856
|
this.demoTitle$ = this.contentService.fromContent({
|
|
7472
7857
|
className: 'displayDemo',
|
|
7473
|
-
key: '
|
|
7858
|
+
key: 'pageTitle',
|
|
7474
7859
|
fallback: 'Demostración del Componente Display',
|
|
7475
7860
|
});
|
|
7476
7861
|
this.languageLabel$ = this.contentService.fromContent({
|
|
@@ -7480,67 +7865,67 @@ class DisplayDemoComponent {
|
|
|
7480
7865
|
});
|
|
7481
7866
|
this.staticSectionTitle$ = this.contentService.fromContent({
|
|
7482
7867
|
className: 'displayDemo',
|
|
7483
|
-
key: '
|
|
7868
|
+
key: 'sectionsStatic',
|
|
7484
7869
|
fallback: 'Ejemplos Estáticos',
|
|
7485
7870
|
});
|
|
7486
7871
|
this.reactiveSectionTitle$ = this.contentService.fromContent({
|
|
7487
7872
|
className: 'displayDemo',
|
|
7488
|
-
key: '
|
|
7873
|
+
key: 'sectionsReactive',
|
|
7489
7874
|
fallback: 'Ejemplos Reactivos',
|
|
7490
7875
|
});
|
|
7491
7876
|
this.mixedSectionTitle$ = this.contentService.fromContent({
|
|
7492
7877
|
className: 'displayDemo',
|
|
7493
|
-
key: '
|
|
7878
|
+
key: 'sectionsMixed',
|
|
7494
7879
|
fallback: 'Ejemplos Mixtos',
|
|
7495
7880
|
});
|
|
7496
7881
|
this.dynamicSectionTitle$ = this.contentService.fromContent({
|
|
7497
7882
|
className: 'displayDemo',
|
|
7498
|
-
key: '
|
|
7883
|
+
key: 'sectionsDynamic',
|
|
7499
7884
|
fallback: 'Ejemplos Dinámicos',
|
|
7500
7885
|
});
|
|
7501
7886
|
this.analysisTitle$ = this.contentService.fromContent({
|
|
7502
7887
|
className: 'displayDemo',
|
|
7503
|
-
key: '
|
|
7888
|
+
key: 'sectionsAnalysis',
|
|
7504
7889
|
fallback: 'Análisis de Idioma',
|
|
7505
7890
|
});
|
|
7506
7891
|
this.reactiveContentTitle$ = this.contentService.fromContent({
|
|
7507
7892
|
className: 'displayDemo',
|
|
7508
|
-
key: '
|
|
7893
|
+
key: 'subsectionsReactiveContent',
|
|
7509
7894
|
fallback: 'Contenido reactivo básico:',
|
|
7510
7895
|
});
|
|
7511
7896
|
this.interpolationTitle$ = this.contentService.fromContent({
|
|
7512
7897
|
className: 'displayDemo',
|
|
7513
|
-
key: '
|
|
7898
|
+
key: 'subsectionsInterpolation',
|
|
7514
7899
|
fallback: 'Contenido con interpolación:',
|
|
7515
7900
|
});
|
|
7516
7901
|
this.fallbackTitle$ = this.contentService.fromContent({
|
|
7517
7902
|
className: 'displayDemo',
|
|
7518
|
-
key: '
|
|
7903
|
+
key: 'subsectionsFallback',
|
|
7519
7904
|
fallback: 'Demostración de fallbacks:',
|
|
7520
7905
|
});
|
|
7521
7906
|
this.mixedContentTitle$ = this.contentService.fromContent({
|
|
7522
7907
|
className: 'displayDemo',
|
|
7523
|
-
key: '
|
|
7908
|
+
key: 'subsectionsMixedContent',
|
|
7524
7909
|
fallback: 'Contenido estático vs reactivo:',
|
|
7525
7910
|
});
|
|
7526
7911
|
this.dynamicContentTitle$ = this.contentService.fromContent({
|
|
7527
7912
|
className: 'displayDemo',
|
|
7528
|
-
key: '
|
|
7913
|
+
key: 'subsectionsDynamicContent',
|
|
7529
7914
|
fallback: 'Contenido que se actualiza dinámicamente:',
|
|
7530
7915
|
});
|
|
7531
7916
|
this.updateButtonText$ = this.contentService.fromContent({
|
|
7532
7917
|
className: 'displayDemo',
|
|
7533
|
-
key: '
|
|
7918
|
+
key: 'buttonsUpdateCounter',
|
|
7534
7919
|
fallback: 'Actualizar Contador',
|
|
7535
7920
|
});
|
|
7536
7921
|
this.currentLangLabel$ = this.contentService.fromContent({
|
|
7537
7922
|
className: 'displayDemo',
|
|
7538
|
-
key: '
|
|
7923
|
+
key: 'analysisCurrentLanguage',
|
|
7539
7924
|
fallback: 'Idioma actual',
|
|
7540
7925
|
});
|
|
7541
7926
|
this.availableLangsLabel$ = this.contentService.fromContent({
|
|
7542
7927
|
className: 'displayDemo',
|
|
7543
|
-
key: '
|
|
7928
|
+
key: 'analysisAvailableLanguages',
|
|
7544
7929
|
fallback: 'Idiomas disponibles',
|
|
7545
7930
|
});
|
|
7546
7931
|
}
|
|
@@ -7551,6 +7936,11 @@ class DisplayDemoComponent {
|
|
|
7551
7936
|
changeLanguage(language) {
|
|
7552
7937
|
this.langService.setLang(language);
|
|
7553
7938
|
}
|
|
7939
|
+
onLanguageChange(language) {
|
|
7940
|
+
console.log('Language changed to:', language);
|
|
7941
|
+
// El language selector ya maneja el cambio de idioma internamente
|
|
7942
|
+
// pero podemos agregar lógica adicional aquí si es necesario
|
|
7943
|
+
}
|
|
7554
7944
|
updateCounter() {
|
|
7555
7945
|
this.counter++;
|
|
7556
7946
|
// Actualizar los displays que usan el contador
|
|
@@ -7583,18 +7973,10 @@ class DisplayDemoComponent {
|
|
|
7583
7973
|
|
|
7584
7974
|
<ion-card-content>
|
|
7585
7975
|
<!-- Selector de idioma -->
|
|
7586
|
-
<
|
|
7587
|
-
<
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
[value]="currentLanguage$ | async"
|
|
7591
|
-
(ionChange)="changeLanguage($event.detail.value)"
|
|
7592
|
-
>
|
|
7593
|
-
<ion-select-option *ngFor="let lang of availableLanguages$ | async" [value]="lang">
|
|
7594
|
-
{{ lang | uppercase }}
|
|
7595
|
-
</ion-select-option>
|
|
7596
|
-
</ion-select>
|
|
7597
|
-
</ion-item>
|
|
7976
|
+
<div class="language-selector-container">
|
|
7977
|
+
<val-language-selector [props]="languageSelectorProps" (languageChange)="onLanguageChange($event)">
|
|
7978
|
+
</val-language-selector>
|
|
7979
|
+
</div>
|
|
7598
7980
|
|
|
7599
7981
|
<!-- Ejemplos estáticos -->
|
|
7600
7982
|
<div class="section">
|
|
@@ -7684,7 +8066,7 @@ class DisplayDemoComponent {
|
|
|
7684
8066
|
</ion-card-content>
|
|
7685
8067
|
</ion-card>
|
|
7686
8068
|
</div>
|
|
7687
|
-
`, isInline: true, styles: [".display-demo{padding:16px}.section{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.example-group{margin:16px 0;padding:12px;background:var(--ion-color-light);border-radius:8px}.example-group h4{margin:0 0 12px;color:var(--ion-color-medium)}.mixed-examples{display:flex;flex-direction:column;gap:8px}.analysis-info{background:var(--ion-color-step-50);padding:16px;border-radius:8px;margin-top:16px}val-display{display:block;margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "
|
|
8069
|
+
`, isInline: true, styles: [".display-demo{padding:16px}.language-selector-container{margin:16px 0;padding:12px;background:var(--ion-color-step-50);border-radius:8px}.section{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.example-group{margin:16px 0;padding:12px;background:var(--ion-color-light);border-radius:8px}.example-group h4{margin:0 0 12px;color:var(--ion-color-medium)}.mixed-examples{display:flex;flex-direction:column;gap:8px}.analysis-info{background:var(--ion-color-step-50);padding:16px;border-radius:8px;margin-top:16px}val-display{display:block;margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { 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"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: LanguageSelectorComponent, selector: "val-language-selector", inputs: ["props"], outputs: ["languageChange"] }] }); }
|
|
7688
8070
|
}
|
|
7689
8071
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayDemoComponent, decorators: [{
|
|
7690
8072
|
type: Component,
|
|
@@ -7694,12 +8076,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7694
8076
|
IonCardContent,
|
|
7695
8077
|
IonCardHeader,
|
|
7696
8078
|
IonCardTitle,
|
|
7697
|
-
IonSelect,
|
|
7698
|
-
IonSelectOption,
|
|
7699
|
-
IonItem,
|
|
7700
|
-
IonLabel,
|
|
7701
8079
|
IonButton,
|
|
7702
8080
|
DisplayComponent,
|
|
8081
|
+
LanguageSelectorComponent,
|
|
7703
8082
|
], template: `
|
|
7704
8083
|
<div class="display-demo">
|
|
7705
8084
|
<ion-card>
|
|
@@ -7709,18 +8088,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7709
8088
|
|
|
7710
8089
|
<ion-card-content>
|
|
7711
8090
|
<!-- Selector de idioma -->
|
|
7712
|
-
<
|
|
7713
|
-
<
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
[value]="currentLanguage$ | async"
|
|
7717
|
-
(ionChange)="changeLanguage($event.detail.value)"
|
|
7718
|
-
>
|
|
7719
|
-
<ion-select-option *ngFor="let lang of availableLanguages$ | async" [value]="lang">
|
|
7720
|
-
{{ lang | uppercase }}
|
|
7721
|
-
</ion-select-option>
|
|
7722
|
-
</ion-select>
|
|
7723
|
-
</ion-item>
|
|
8091
|
+
<div class="language-selector-container">
|
|
8092
|
+
<val-language-selector [props]="languageSelectorProps" (languageChange)="onLanguageChange($event)">
|
|
8093
|
+
</val-language-selector>
|
|
8094
|
+
</div>
|
|
7724
8095
|
|
|
7725
8096
|
<!-- Ejemplos estáticos -->
|
|
7726
8097
|
<div class="section">
|
|
@@ -7810,7 +8181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7810
8181
|
</ion-card-content>
|
|
7811
8182
|
</ion-card>
|
|
7812
8183
|
</div>
|
|
7813
|
-
`, styles: [".display-demo{padding:16px}.section{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.example-group{margin:16px 0;padding:12px;background:var(--ion-color-light);border-radius:8px}.example-group h4{margin:0 0 12px;color:var(--ion-color-medium)}.mixed-examples{display:flex;flex-direction:column;gap:8px}.analysis-info{background:var(--ion-color-step-50);padding:16px;border-radius:8px;margin-top:16px}val-display{display:block;margin:8px 0}\n"] }]
|
|
8184
|
+
`, styles: [".display-demo{padding:16px}.language-selector-container{margin:16px 0;padding:12px;background:var(--ion-color-step-50);border-radius:8px}.section{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.example-group{margin:16px 0;padding:12px;background:var(--ion-color-light);border-radius:8px}.example-group h4{margin:0 0 12px;color:var(--ion-color-medium)}.mixed-examples{display:flex;flex-direction:column;gap:8px}.analysis-info{background:var(--ion-color-step-50);padding:16px;border-radius:8px;margin-top:16px}val-display{display:block;margin:8px 0}\n"] }]
|
|
7814
8185
|
}], ctorParameters: () => [{ type: ContentService }, { type: LangService }] });
|
|
7815
8186
|
|
|
7816
8187
|
/**
|
|
@@ -8537,6 +8908,210 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
8537
8908
|
`, styles: [".multi-lang-demo{padding:20px;max-width:800px}.language-info,.content-examples,.warning-info,.component-analysis{margin:20px 0;padding:15px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}.button-group{display:flex;gap:10px;flex-wrap:wrap}.button-group button{padding:8px 16px;border:1px solid var(--ion-color-primary, #3880ff);background:#fff;color:var(--ion-color-primary, #3880ff);border-radius:4px;cursor:pointer;transition:all .2s}.button-group button:hover{background:var(--ion-color-primary-tint, #4992ff);color:#fff}.button-group button.active{background:var(--ion-color-primary, #3880ff);color:#fff}.example-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:10px}.analysis-results{margin-top:10px;padding:10px;background:#fff;border-radius:4px}h2{color:var(--ion-color-primary, #3880ff)}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px}\n"] }]
|
|
8538
8909
|
}], ctorParameters: () => [{ type: ContentService }, { type: LangService }] });
|
|
8539
8910
|
|
|
8911
|
+
/**
|
|
8912
|
+
* Ejemplo de uso de los componentes popover-selector y language-selector
|
|
8913
|
+
*/
|
|
8914
|
+
class SelectorExamplesComponent {
|
|
8915
|
+
constructor() {
|
|
8916
|
+
// ✅ Ejemplos de Popover Selector Genérico
|
|
8917
|
+
this.categorySelector = {
|
|
8918
|
+
options: [
|
|
8919
|
+
{ value: 'work', label: 'Trabajo', icon: 'briefcase' },
|
|
8920
|
+
{ value: 'personal', label: 'Personal', icon: 'person' },
|
|
8921
|
+
{ value: 'travel', label: 'Viajes', icon: 'airplane' },
|
|
8922
|
+
{ value: 'health', label: 'Salud', icon: 'fitness' },
|
|
8923
|
+
],
|
|
8924
|
+
selectedValue: 'work',
|
|
8925
|
+
label: 'Categoría',
|
|
8926
|
+
icon: 'folder',
|
|
8927
|
+
color: 'primary',
|
|
8928
|
+
size: 'default',
|
|
8929
|
+
fill: 'outline',
|
|
8930
|
+
};
|
|
8931
|
+
this.prioritySelector = {
|
|
8932
|
+
options: [
|
|
8933
|
+
{ value: 'low', label: 'Baja', icon: 'arrow-down', disabled: false },
|
|
8934
|
+
{ value: 'medium', label: 'Media', icon: 'remove' },
|
|
8935
|
+
{ value: 'high', label: 'Alta', icon: 'arrow-up' },
|
|
8936
|
+
{ value: 'urgent', label: 'Urgente', icon: 'warning' },
|
|
8937
|
+
],
|
|
8938
|
+
selectedValue: 'medium',
|
|
8939
|
+
label: 'Prioridad',
|
|
8940
|
+
icon: 'flag',
|
|
8941
|
+
color: 'warning',
|
|
8942
|
+
size: 'large',
|
|
8943
|
+
fill: 'solid',
|
|
8944
|
+
shape: 'round',
|
|
8945
|
+
};
|
|
8946
|
+
this.multipleSelector = {
|
|
8947
|
+
options: [
|
|
8948
|
+
{ value: 'email', label: 'Email', icon: 'mail' },
|
|
8949
|
+
{ value: 'sms', label: 'SMS', icon: 'chatbox' },
|
|
8950
|
+
{ value: 'push', label: 'Push', icon: 'notifications' },
|
|
8951
|
+
{ value: 'in-app', label: 'In-App', icon: 'apps' },
|
|
8952
|
+
],
|
|
8953
|
+
selectedValue: ['email', 'push'],
|
|
8954
|
+
label: 'Notificaciones',
|
|
8955
|
+
icon: 'notifications-circle',
|
|
8956
|
+
multiple: true,
|
|
8957
|
+
color: 'tertiary',
|
|
8958
|
+
size: 'default',
|
|
8959
|
+
fill: 'outline',
|
|
8960
|
+
showCheckmark: true,
|
|
8961
|
+
};
|
|
8962
|
+
// ✅ Ejemplos de Language Selector
|
|
8963
|
+
this.basicLanguageSelector = {
|
|
8964
|
+
showLabel: true,
|
|
8965
|
+
label: 'Idioma',
|
|
8966
|
+
color: 'medium',
|
|
8967
|
+
size: 'default',
|
|
8968
|
+
fill: 'outline',
|
|
8969
|
+
};
|
|
8970
|
+
this.flagLanguageSelector = {
|
|
8971
|
+
showLabel: true,
|
|
8972
|
+
label: 'Language / Idioma',
|
|
8973
|
+
showFlags: true,
|
|
8974
|
+
color: 'primary',
|
|
8975
|
+
size: 'large',
|
|
8976
|
+
fill: 'solid',
|
|
8977
|
+
};
|
|
8978
|
+
this.customLanguageSelector = {
|
|
8979
|
+
showLabel: true,
|
|
8980
|
+
labelConfig: {
|
|
8981
|
+
className: '_global',
|
|
8982
|
+
key: 'language',
|
|
8983
|
+
fallback: 'Idioma',
|
|
8984
|
+
},
|
|
8985
|
+
showFlags: true,
|
|
8986
|
+
color: 'secondary',
|
|
8987
|
+
size: 'default',
|
|
8988
|
+
fill: 'outline',
|
|
8989
|
+
shape: 'round',
|
|
8990
|
+
customLanguageNames: {
|
|
8991
|
+
es: 'Español (España)',
|
|
8992
|
+
en: 'English (US)',
|
|
8993
|
+
fr: 'Français',
|
|
8994
|
+
de: 'Deutsch',
|
|
8995
|
+
},
|
|
8996
|
+
};
|
|
8997
|
+
}
|
|
8998
|
+
// ✅ Event Handlers
|
|
8999
|
+
onCategoryChange(category) {
|
|
9000
|
+
console.log('Category changed:', category);
|
|
9001
|
+
}
|
|
9002
|
+
onPriorityChange(priority) {
|
|
9003
|
+
console.log('Priority changed:', priority);
|
|
9004
|
+
}
|
|
9005
|
+
onMultipleChange(notifications) {
|
|
9006
|
+
console.log('Notifications changed:', notifications);
|
|
9007
|
+
}
|
|
9008
|
+
onLanguageChange(language) {
|
|
9009
|
+
console.log('Language changed:', language);
|
|
9010
|
+
}
|
|
9011
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectorExamplesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9012
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectorExamplesComponent, isStandalone: true, selector: "app-selector-examples", ngImport: i0, template: `
|
|
9013
|
+
<div class="selector-examples">
|
|
9014
|
+
<h2>Ejemplos de Selectores</h2>
|
|
9015
|
+
|
|
9016
|
+
<!-- Popover Selector Genérico -->
|
|
9017
|
+
<div class="section">
|
|
9018
|
+
<h3>Popover Selector Genérico</h3>
|
|
9019
|
+
|
|
9020
|
+
<div class="example-group">
|
|
9021
|
+
<h4>Selector de Categorías:</h4>
|
|
9022
|
+
<val-popover-selector [props]="categorySelector" (selectionChange)="onCategoryChange($event)">
|
|
9023
|
+
</val-popover-selector>
|
|
9024
|
+
</div>
|
|
9025
|
+
|
|
9026
|
+
<div class="example-group">
|
|
9027
|
+
<h4>Selector de Prioridad:</h4>
|
|
9028
|
+
<val-popover-selector [props]="prioritySelector" (selectionChange)="onPriorityChange($event)">
|
|
9029
|
+
</val-popover-selector>
|
|
9030
|
+
</div>
|
|
9031
|
+
|
|
9032
|
+
<div class="example-group">
|
|
9033
|
+
<h4>Selector Múltiple:</h4>
|
|
9034
|
+
<val-popover-selector [props]="multipleSelector" (selectionChange)="onMultipleChange($event)">
|
|
9035
|
+
</val-popover-selector>
|
|
9036
|
+
</div>
|
|
9037
|
+
</div>
|
|
9038
|
+
|
|
9039
|
+
<!-- Language Selector -->
|
|
9040
|
+
<div class="section">
|
|
9041
|
+
<h3>Selector de Idioma</h3>
|
|
9042
|
+
|
|
9043
|
+
<div class="example-group">
|
|
9044
|
+
<h4>Selector Básico:</h4>
|
|
9045
|
+
<val-language-selector [props]="basicLanguageSelector"> </val-language-selector>
|
|
9046
|
+
</div>
|
|
9047
|
+
|
|
9048
|
+
<div class="example-group">
|
|
9049
|
+
<h4>Selector con Banderas:</h4>
|
|
9050
|
+
<val-language-selector [props]="flagLanguageSelector"> </val-language-selector>
|
|
9051
|
+
</div>
|
|
9052
|
+
|
|
9053
|
+
<div class="example-group">
|
|
9054
|
+
<h4>Selector Personalizado:</h4>
|
|
9055
|
+
<val-language-selector [props]="customLanguageSelector" (languageChange)="onLanguageChange($event)">
|
|
9056
|
+
</val-language-selector>
|
|
9057
|
+
</div>
|
|
9058
|
+
</div>
|
|
9059
|
+
</div>
|
|
9060
|
+
`, isInline: true, styles: [".selector-examples{padding:20px;max-width:800px;margin:0 auto}.section{margin:30px 0;padding:20px;border:1px solid var(--ion-color-light);border-radius:8px;background:var(--ion-color-step-50)}.section h3{margin:0 0 20px;color:var(--ion-color-primary)}.example-group{margin:20px 0;padding:15px;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.example-group h4{margin:0 0 15px;color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }, { kind: "component", type: LanguageSelectorComponent, selector: "val-language-selector", inputs: ["props"], outputs: ["languageChange"] }] }); }
|
|
9061
|
+
}
|
|
9062
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectorExamplesComponent, decorators: [{
|
|
9063
|
+
type: Component,
|
|
9064
|
+
args: [{ selector: 'app-selector-examples', standalone: true, imports: [PopoverSelectorComponent, LanguageSelectorComponent], template: `
|
|
9065
|
+
<div class="selector-examples">
|
|
9066
|
+
<h2>Ejemplos de Selectores</h2>
|
|
9067
|
+
|
|
9068
|
+
<!-- Popover Selector Genérico -->
|
|
9069
|
+
<div class="section">
|
|
9070
|
+
<h3>Popover Selector Genérico</h3>
|
|
9071
|
+
|
|
9072
|
+
<div class="example-group">
|
|
9073
|
+
<h4>Selector de Categorías:</h4>
|
|
9074
|
+
<val-popover-selector [props]="categorySelector" (selectionChange)="onCategoryChange($event)">
|
|
9075
|
+
</val-popover-selector>
|
|
9076
|
+
</div>
|
|
9077
|
+
|
|
9078
|
+
<div class="example-group">
|
|
9079
|
+
<h4>Selector de Prioridad:</h4>
|
|
9080
|
+
<val-popover-selector [props]="prioritySelector" (selectionChange)="onPriorityChange($event)">
|
|
9081
|
+
</val-popover-selector>
|
|
9082
|
+
</div>
|
|
9083
|
+
|
|
9084
|
+
<div class="example-group">
|
|
9085
|
+
<h4>Selector Múltiple:</h4>
|
|
9086
|
+
<val-popover-selector [props]="multipleSelector" (selectionChange)="onMultipleChange($event)">
|
|
9087
|
+
</val-popover-selector>
|
|
9088
|
+
</div>
|
|
9089
|
+
</div>
|
|
9090
|
+
|
|
9091
|
+
<!-- Language Selector -->
|
|
9092
|
+
<div class="section">
|
|
9093
|
+
<h3>Selector de Idioma</h3>
|
|
9094
|
+
|
|
9095
|
+
<div class="example-group">
|
|
9096
|
+
<h4>Selector Básico:</h4>
|
|
9097
|
+
<val-language-selector [props]="basicLanguageSelector"> </val-language-selector>
|
|
9098
|
+
</div>
|
|
9099
|
+
|
|
9100
|
+
<div class="example-group">
|
|
9101
|
+
<h4>Selector con Banderas:</h4>
|
|
9102
|
+
<val-language-selector [props]="flagLanguageSelector"> </val-language-selector>
|
|
9103
|
+
</div>
|
|
9104
|
+
|
|
9105
|
+
<div class="example-group">
|
|
9106
|
+
<h4>Selector Personalizado:</h4>
|
|
9107
|
+
<val-language-selector [props]="customLanguageSelector" (languageChange)="onLanguageChange($event)">
|
|
9108
|
+
</val-language-selector>
|
|
9109
|
+
</div>
|
|
9110
|
+
</div>
|
|
9111
|
+
</div>
|
|
9112
|
+
`, styles: [".selector-examples{padding:20px;max-width:800px;margin:0 auto}.section{margin:30px 0;padding:20px;border:1px solid var(--ion-color-light);border-radius:8px;background:var(--ion-color-step-50)}.section h3{margin:0 0 20px;color:var(--ion-color-primary)}.example-group{margin:20px 0;padding:15px;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.example-group h4{margin:0 0 15px;color:var(--ion-color-medium)}\n"] }]
|
|
9113
|
+
}] });
|
|
9114
|
+
|
|
8540
9115
|
const text = {
|
|
8541
9116
|
es: {
|
|
8542
9117
|
spanish: 'Español',
|
|
@@ -8717,5 +9292,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
8717
9292
|
* Generated bundle index. Do not edit.
|
|
8718
9293
|
*/
|
|
8719
9294
|
|
|
8720
|
-
export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ComprehensiveLinkTestComponent, ContentLoaderComponent, ContentService, CustomContentDemoComponent, DateInputComponent, DisplayComponent, DisplayDemoComponent, DisplayExampleComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessingExampleComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, MultiLanguageDemoComponent, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createComponentContentHelper, createContentHelper, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, maxLength, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
|
|
9295
|
+
export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ComprehensiveLinkTestComponent, ContentLoaderComponent, ContentService, CustomContentDemoComponent, DateInputComponent, DisplayComponent, DisplayDemoComponent, DisplayExampleComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessingExampleComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, MultiLanguageDemoComponent, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PopoverSelectorComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SelectorExamplesComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createComponentContentHelper, createContentHelper, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, maxLength, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
|
|
8721
9296
|
//# sourceMappingURL=valtech-components.mjs.map
|