valtech-components 2.0.301 → 2.0.304
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/atoms/button/button.component.mjs +103 -23
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/lang-provider/content.mjs +1 -55
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +5 -4
- package/esm2022/public-api.mjs +1 -11
- package/fesm2022/valtech-components.mjs +124 -2534
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +33 -2
- package/lib/components/types.d.ts +19 -7
- package/package.json +1 -1
- package/public-api.d.ts +0 -9
- package/esm2022/lib/examples/comprehensive-link-test.component.mjs +0 -208
- package/esm2022/lib/examples/custom-content-demo.component.mjs +0 -291
- package/esm2022/lib/examples/display-demo.component.mjs +0 -518
- package/esm2022/lib/examples/display-simple-example.component.mjs +0 -202
- package/esm2022/lib/examples/link-processing-example.component.mjs +0 -233
- package/esm2022/lib/examples/multi-language-demo.component.mjs +0 -304
- package/esm2022/lib/examples/reactive-components-demo.component.mjs +0 -303
- package/esm2022/lib/examples/reactivity-test.component.mjs +0 -200
- package/esm2022/lib/examples/selector-examples.component.mjs +0 -234
- package/lib/examples/comprehensive-link-test.component.d.ts +0 -23
- package/lib/examples/custom-content-demo.component.d.ts +0 -26
- package/lib/examples/display-demo.component.d.ts +0 -62
- package/lib/examples/display-simple-example.component.d.ts +0 -23
- package/lib/examples/link-processing-example.component.d.ts +0 -26
- package/lib/examples/multi-language-demo.component.d.ts +0 -34
- package/lib/examples/reactive-components-demo.component.d.ts +0 -45
- package/lib/examples/reactivity-test.component.d.ts +0 -27
- package/lib/examples/selector-examples.component.d.ts +0 -21
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { LanguageSelectorComponent } from '../components/molecules/language-selector/language-selector.component';
|
|
3
|
-
import { PopoverSelectorComponent } from '../components/molecules/popover-selector/popover-selector.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Ejemplo de uso de los componentes popover-selector y language-selector
|
|
7
|
-
*/
|
|
8
|
-
export class SelectorExamplesComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
// ✅ Ejemplos de Popover Selector Genérico
|
|
11
|
-
this.categorySelector = {
|
|
12
|
-
options: [
|
|
13
|
-
{ value: 'work', label: 'Trabajo', icon: 'briefcase' },
|
|
14
|
-
{ value: 'personal', label: 'Personal', icon: 'person' },
|
|
15
|
-
{ value: 'travel', label: 'Viajes', icon: 'airplane' },
|
|
16
|
-
{ value: 'health', label: 'Salud', icon: 'fitness' },
|
|
17
|
-
],
|
|
18
|
-
selectedValue: 'work',
|
|
19
|
-
label: 'Categoría',
|
|
20
|
-
icon: 'folder',
|
|
21
|
-
color: 'primary',
|
|
22
|
-
size: 'default',
|
|
23
|
-
fill: 'outline',
|
|
24
|
-
};
|
|
25
|
-
this.prioritySelector = {
|
|
26
|
-
options: [
|
|
27
|
-
{ value: 'low', label: 'Baja', icon: 'arrow-down', disabled: false },
|
|
28
|
-
{ value: 'medium', label: 'Media', icon: 'remove' },
|
|
29
|
-
{ value: 'high', label: 'Alta', icon: 'arrow-up' },
|
|
30
|
-
{ value: 'urgent', label: 'Urgente', icon: 'warning' },
|
|
31
|
-
],
|
|
32
|
-
selectedValue: 'medium',
|
|
33
|
-
label: 'Prioridad',
|
|
34
|
-
icon: 'flag',
|
|
35
|
-
color: 'warning',
|
|
36
|
-
size: 'large',
|
|
37
|
-
fill: 'solid',
|
|
38
|
-
shape: 'round',
|
|
39
|
-
};
|
|
40
|
-
this.multipleSelector = {
|
|
41
|
-
options: [
|
|
42
|
-
{ value: 'email', label: 'Email', icon: 'mail' },
|
|
43
|
-
{ value: 'sms', label: 'SMS', icon: 'chatbox' },
|
|
44
|
-
{ value: 'push', label: 'Push', icon: 'notifications' },
|
|
45
|
-
{ value: 'in-app', label: 'In-App', icon: 'apps' },
|
|
46
|
-
],
|
|
47
|
-
selectedValue: ['email', 'push'],
|
|
48
|
-
label: 'Notificaciones',
|
|
49
|
-
icon: 'notifications-circle',
|
|
50
|
-
multiple: true,
|
|
51
|
-
color: 'tertiary',
|
|
52
|
-
size: 'default',
|
|
53
|
-
fill: 'outline',
|
|
54
|
-
showCheckmark: true,
|
|
55
|
-
};
|
|
56
|
-
// ✅ Ejemplos de Language Selector (con soporte multiidioma)
|
|
57
|
-
// Los nombres de idiomas se obtienen automáticamente del sistema de contenido
|
|
58
|
-
// y se muestran traducidos según el idioma actual de la aplicación
|
|
59
|
-
this.basicLanguageSelector = {
|
|
60
|
-
showLabel: true,
|
|
61
|
-
label: 'Idioma',
|
|
62
|
-
color: 'medium',
|
|
63
|
-
size: 'default',
|
|
64
|
-
fill: 'outline',
|
|
65
|
-
};
|
|
66
|
-
// Con banderas y nombres traducidos automáticamente
|
|
67
|
-
this.flagLanguageSelector = {
|
|
68
|
-
showLabel: true,
|
|
69
|
-
label: 'Language / Idioma',
|
|
70
|
-
showFlags: true,
|
|
71
|
-
color: 'primary',
|
|
72
|
-
size: 'large',
|
|
73
|
-
fill: 'solid',
|
|
74
|
-
};
|
|
75
|
-
// Con nombres personalizados (sobrescribe las traducciones automáticas)
|
|
76
|
-
this.customLanguageSelector = {
|
|
77
|
-
showLabel: true,
|
|
78
|
-
labelConfig: {
|
|
79
|
-
className: '_global',
|
|
80
|
-
key: 'language',
|
|
81
|
-
fallback: 'Idioma',
|
|
82
|
-
},
|
|
83
|
-
showFlags: true,
|
|
84
|
-
color: 'secondary',
|
|
85
|
-
size: 'default',
|
|
86
|
-
fill: 'outline',
|
|
87
|
-
shape: 'round',
|
|
88
|
-
customLanguageNames: {
|
|
89
|
-
es: 'Español (España)',
|
|
90
|
-
en: 'English (US)',
|
|
91
|
-
fr: 'Français',
|
|
92
|
-
de: 'Deutsch',
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
// Compacto sin etiqueta, solo banderas y nombres traducidos
|
|
96
|
-
this.compactLanguageSelector = {
|
|
97
|
-
showLabel: false,
|
|
98
|
-
showFlags: true,
|
|
99
|
-
color: 'tertiary',
|
|
100
|
-
size: 'small',
|
|
101
|
-
fill: 'clear',
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
// ✅ Event Handlers
|
|
105
|
-
onCategoryChange(category) {
|
|
106
|
-
console.log('Category changed:', category);
|
|
107
|
-
}
|
|
108
|
-
onPriorityChange(priority) {
|
|
109
|
-
console.log('Priority changed:', priority);
|
|
110
|
-
}
|
|
111
|
-
onMultipleChange(notifications) {
|
|
112
|
-
console.log('Notifications changed:', notifications);
|
|
113
|
-
}
|
|
114
|
-
onLanguageChange(language) {
|
|
115
|
-
console.log('Language changed to:', language);
|
|
116
|
-
// La aplicación automáticamente actualizará todos los nombres de idiomas
|
|
117
|
-
// según la nueva configuración de idioma seleccionada
|
|
118
|
-
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectorExamplesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectorExamplesComponent, isStandalone: true, selector: "app-selector-examples", ngImport: i0, template: `
|
|
121
|
-
<div class="selector-examples">
|
|
122
|
-
<h2>Ejemplos de Selectores</h2>
|
|
123
|
-
|
|
124
|
-
<!-- Popover Selector Genérico -->
|
|
125
|
-
<div class="section">
|
|
126
|
-
<h3>Popover Selector Genérico</h3>
|
|
127
|
-
|
|
128
|
-
<div class="example-group">
|
|
129
|
-
<h4>Selector de Categorías:</h4>
|
|
130
|
-
<val-popover-selector [props]="categorySelector" (selectionChange)="onCategoryChange($event)">
|
|
131
|
-
</val-popover-selector>
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
<div class="example-group">
|
|
135
|
-
<h4>Selector de Prioridad:</h4>
|
|
136
|
-
<val-popover-selector [props]="prioritySelector" (selectionChange)="onPriorityChange($event)">
|
|
137
|
-
</val-popover-selector>
|
|
138
|
-
</div>
|
|
139
|
-
|
|
140
|
-
<div class="example-group">
|
|
141
|
-
<h4>Selector Múltiple:</h4>
|
|
142
|
-
<val-popover-selector [props]="multipleSelector" (selectionChange)="onMultipleChange($event)">
|
|
143
|
-
</val-popover-selector>
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
|
|
147
|
-
<!-- Language Selector -->
|
|
148
|
-
<div class="section">
|
|
149
|
-
<h3>Selector de Idioma (Multiidioma)</h3>
|
|
150
|
-
<p>Los nombres de idiomas se muestran traducidos según el idioma actual:</p>
|
|
151
|
-
|
|
152
|
-
<div class="example-group">
|
|
153
|
-
<h4>Selector Básico (nombres traducidos):</h4>
|
|
154
|
-
<val-language-selector [props]="basicLanguageSelector"> </val-language-selector>
|
|
155
|
-
</div>
|
|
156
|
-
|
|
157
|
-
<div class="example-group">
|
|
158
|
-
<h4>Selector con Banderas (nombres traducidos):</h4>
|
|
159
|
-
<val-language-selector [props]="flagLanguageSelector"> </val-language-selector>
|
|
160
|
-
</div>
|
|
161
|
-
|
|
162
|
-
<div class="example-group">
|
|
163
|
-
<h4>Selector Personalizado (nombres propios):</h4>
|
|
164
|
-
<val-language-selector [props]="customLanguageSelector" (languageChange)="onLanguageChange($event)">
|
|
165
|
-
</val-language-selector>
|
|
166
|
-
</div>
|
|
167
|
-
|
|
168
|
-
<div class="example-group">
|
|
169
|
-
<h4>Selector Compacto:</h4>
|
|
170
|
-
<val-language-selector [props]="compactLanguageSelector"> </val-language-selector>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
`, 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"] }] }); }
|
|
175
|
-
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectorExamplesComponent, decorators: [{
|
|
177
|
-
type: Component,
|
|
178
|
-
args: [{ selector: 'app-selector-examples', standalone: true, imports: [PopoverSelectorComponent, LanguageSelectorComponent], template: `
|
|
179
|
-
<div class="selector-examples">
|
|
180
|
-
<h2>Ejemplos de Selectores</h2>
|
|
181
|
-
|
|
182
|
-
<!-- Popover Selector Genérico -->
|
|
183
|
-
<div class="section">
|
|
184
|
-
<h3>Popover Selector Genérico</h3>
|
|
185
|
-
|
|
186
|
-
<div class="example-group">
|
|
187
|
-
<h4>Selector de Categorías:</h4>
|
|
188
|
-
<val-popover-selector [props]="categorySelector" (selectionChange)="onCategoryChange($event)">
|
|
189
|
-
</val-popover-selector>
|
|
190
|
-
</div>
|
|
191
|
-
|
|
192
|
-
<div class="example-group">
|
|
193
|
-
<h4>Selector de Prioridad:</h4>
|
|
194
|
-
<val-popover-selector [props]="prioritySelector" (selectionChange)="onPriorityChange($event)">
|
|
195
|
-
</val-popover-selector>
|
|
196
|
-
</div>
|
|
197
|
-
|
|
198
|
-
<div class="example-group">
|
|
199
|
-
<h4>Selector Múltiple:</h4>
|
|
200
|
-
<val-popover-selector [props]="multipleSelector" (selectionChange)="onMultipleChange($event)">
|
|
201
|
-
</val-popover-selector>
|
|
202
|
-
</div>
|
|
203
|
-
</div>
|
|
204
|
-
|
|
205
|
-
<!-- Language Selector -->
|
|
206
|
-
<div class="section">
|
|
207
|
-
<h3>Selector de Idioma (Multiidioma)</h3>
|
|
208
|
-
<p>Los nombres de idiomas se muestran traducidos según el idioma actual:</p>
|
|
209
|
-
|
|
210
|
-
<div class="example-group">
|
|
211
|
-
<h4>Selector Básico (nombres traducidos):</h4>
|
|
212
|
-
<val-language-selector [props]="basicLanguageSelector"> </val-language-selector>
|
|
213
|
-
</div>
|
|
214
|
-
|
|
215
|
-
<div class="example-group">
|
|
216
|
-
<h4>Selector con Banderas (nombres traducidos):</h4>
|
|
217
|
-
<val-language-selector [props]="flagLanguageSelector"> </val-language-selector>
|
|
218
|
-
</div>
|
|
219
|
-
|
|
220
|
-
<div class="example-group">
|
|
221
|
-
<h4>Selector Personalizado (nombres propios):</h4>
|
|
222
|
-
<val-language-selector [props]="customLanguageSelector" (languageChange)="onLanguageChange($event)">
|
|
223
|
-
</val-language-selector>
|
|
224
|
-
</div>
|
|
225
|
-
|
|
226
|
-
<div class="example-group">
|
|
227
|
-
<h4>Selector Compacto:</h4>
|
|
228
|
-
<val-language-selector [props]="compactLanguageSelector"> </val-language-selector>
|
|
229
|
-
</div>
|
|
230
|
-
</div>
|
|
231
|
-
</div>
|
|
232
|
-
`, 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"] }]
|
|
233
|
-
}] });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItZXhhbXBsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvZXhhbXBsZXMvc2VsZWN0b3ItZXhhbXBsZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFFbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUVBQXFFLENBQUM7O0FBRy9HOztHQUVHO0FBZ0dILE1BQU0sT0FBTyx5QkFBeUI7SUEvRnRDO1FBZ0dFLDBDQUEwQztRQUUxQyxxQkFBZ0IsR0FBNEI7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3RELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ3hELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3RELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7YUFDckQ7WUFDRCxhQUFhLEVBQUUsTUFBTTtZQUNyQixLQUFLLEVBQUUsV0FBVztZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztRQUVGLHFCQUFnQixHQUE0QjtZQUMxQyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUs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QUNkLENBQUM7S0FxQkg7SUFuQkMsbUJBQW1CO0lBRW5CLGdCQUFnQixDQUFDLFFBQTJCO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQTJCO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLGFBQWdDO1FBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMseUVBQXlFO1FBQ3pFLHNEQUFzRDtJQUN4RCxDQUFDOytHQXpIVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpRkEzRjFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRFQsa2ZBdkRTLHdCQUF3QixrSEFBRSx5QkFBeUI7OzRGQTRGbEQseUJBQXlCO2tCQS9GckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsd0JBQXdCLEVBQUUseUJBQXlCLENBQUMsWUFDcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5cbi8qKlxuICogRWplbXBsbyBkZSB1c28gZGUgbG9zIGNvbXBvbmVudGVzIHBvcG92ZXItc2VsZWN0b3IgeSBsYW5ndWFnZS1zZWxlY3RvclxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2VsZWN0b3ItZXhhbXBsZXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50LCBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0b3ItZXhhbXBsZXNcIj5cbiAgICAgIDxoMj5FamVtcGxvcyBkZSBTZWxlY3RvcmVzPC9oMj5cblxuICAgICAgPCEtLSBQb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljbyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDxoMz5Qb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljbzwvaDM+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgZGUgQ2F0ZWdvcsOtYXM6PC9oND5cbiAgICAgICAgICA8dmFsLXBvcG92ZXItc2VsZWN0b3IgW3Byb3BzXT1cImNhdGVnb3J5U2VsZWN0b3JcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2F0ZWdvcnlDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvdmFsLXBvcG92ZXItc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWdyb3VwXCI+XG4gICAgICAgICAgPGg0PlNlbGVjdG9yIGRlIFByaW9yaWRhZDo8L2g0PlxuICAgICAgICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicHJpb3JpdHlTZWxlY3RvclwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Qcmlvcml0eUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgTcO6bHRpcGxlOjwvaDQ+XG4gICAgICAgICAgPHZhbC1wb3BvdmVyLXNlbGVjdG9yIFtwcm9wc109XCJtdWx0aXBsZVNlbGVjdG9yXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk11bHRpcGxlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICA8L3ZhbC1wb3BvdmVyLXNlbGVjdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExhbmd1YWdlIFNlbGVjdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPGgzPlNlbGVjdG9yIGRlIElkaW9tYSAoTXVsdGlpZGlvbWEpPC9oMz5cbiAgICAgICAgPHA+TG9zIG5vbWJyZXMgZGUgaWRpb21hcyBzZSBtdWVzdHJhbiB0cmFkdWNpZG9zIHNlZ8O6biBlbCBpZGlvbWEgYWN0dWFsOjwvcD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ncm91cFwiPlxuICAgICAgICAgIDxoND5TZWxlY3RvciBCw6FzaWNvIChub21icmVzIHRyYWR1Y2lkb3MpOjwvaDQ+XG4gICAgICAgICAgPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwiYmFzaWNMYW5ndWFnZVNlbGVjdG9yXCI+IDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ncm91cFwiPlxuICAgICAgICAgIDxoND5TZWxlY3RvciBjb24gQmFuZGVyYXMgKG5vbWJyZXMgdHJhZHVjaWRvcyk6PC9oND5cbiAgICAgICAgICA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJmbGFnTGFuZ3VhZ2VTZWxlY3RvclwiPiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgUGVyc29uYWxpemFkbyAobm9tYnJlcyBwcm9waW9zKTo8L2g0PlxuICAgICAgICAgIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cImN1c3RvbUxhbmd1YWdlU2VsZWN0b3JcIiAobGFuZ3VhZ2VDaGFuZ2UpPVwib25MYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWdyb3VwXCI+XG4gICAgICAgICAgPGg0PlNlbGVjdG9yIENvbXBhY3RvOjwvaDQ+XG4gICAgICAgICAgPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwiY29tcGFjdExhbmd1YWdlU2VsZWN0b3JcIj4gPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zZWxlY3Rvci1leGFtcGxlcyB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMzBweCAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTUwKTtcbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24gaDMge1xuICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5leGFtcGxlLWdyb3VwIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5leGFtcGxlLWdyb3VwIGg0IHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTVweCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JFeGFtcGxlc0NvbXBvbmVudCB7XG4gIC8vIOKchSBFamVtcGxvcyBkZSBQb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljb1xuXG4gIGNhdGVnb3J5U2VsZWN0b3I6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhID0ge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgIHsgdmFsdWU6ICd3b3JrJywgbGFiZWw6ICdUcmFiYWpvJywgaWNvbjogJ2JyaWVmY2FzZScgfSxcbiAgICAgIHsgdmFsdWU6ICdwZXJzb25hbCcsIGxhYmVsOiAnUGVyc29uYWwnLCBpY29uOiAncGVyc29uJyB9LFxuICAgICAgeyB2YWx1ZTogJ3RyYXZlbCcsIGxhYmVsOiAnVmlhamVzJywgaWNvbjogJ2FpcnBsYW5lJyB9LFxuICAgICAgeyB2YWx1ZTogJ2hlYWx0aCcsIGxhYmVsOiAnU2FsdWQnLCBpY29uOiAnZml0bmVzcycgfSxcbiAgICBdLFxuICAgIHNlbGVjdGVkVmFsdWU6ICd3b3JrJyxcbiAgICBsYWJlbDogJ0NhdGVnb3LDrWEnLFxuICAgIGljb246ICdmb2xkZXInLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgfTtcblxuICBwcmlvcml0eVNlbGVjdG9yOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IHZhbHVlOiAnbG93JywgbGFiZWw6ICdCYWphJywgaWNvbjogJ2Fycm93LWRvd24nLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgIHsgdmFsdWU6ICdtZWRpdW0nLCBsYWJlbDogJ01lZGlhJywgaWNvbjogJ3JlbW92ZScgfSxcbiAgICAgIHsgdmFsdWU6ICdoaWdoJywgbGFiZWw6ICdBbHRhJywgaWNvbjogJ2Fycm93LXVwJyB9LFxuICAgICAgeyB2YWx1ZTogJ3VyZ2VudCcsIGxhYmVsOiAnVXJnZW50ZScsIGljb246ICd3YXJuaW5nJyB9LFxuICAgIF0sXG4gICAgc2VsZWN0ZWRWYWx1ZTogJ21lZGl1bScsXG4gICAgbGFiZWw6ICdQcmlvcmlkYWQnLFxuICAgIGljb246ICdmbGFnJyxcbiAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgIHNpemU6ICdsYXJnZScsXG4gICAgZmlsbDogJ3NvbGlkJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgfTtcblxuICBtdWx0aXBsZVNlbGVjdG9yOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IHZhbHVlOiAnZW1haWwnLCBsYWJlbDogJ0VtYWlsJywgaWNvbjogJ21haWwnIH0sXG4gICAgICB7IHZhbHVlOiAnc21zJywgbGFiZWw6ICdTTVMnLCBpY29uOiAnY2hhdGJveCcgfSxcbiAgICAgIHsgdmFsdWU6ICdwdXNoJywgbGFiZWw6ICdQdXNoJywgaWNvbjogJ25vdGlmaWNhdGlvbnMnIH0sXG4gICAgICB7IHZhbHVlOiAnaW4tYXBwJywgbGFiZWw6ICdJbi1BcHAnLCBpY29uOiAnYXBwcycgfSxcbiAgICBdLFxuICAgIHNlbGVjdGVkVmFsdWU6IFsnZW1haWwnLCAncHVzaCddLFxuICAgIGxhYmVsOiAnTm90aWZpY2FjaW9uZXMnLFxuICAgIGljb246ICdub3RpZmljYXRpb25zLWNpcmNsZScsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgY29sb3I6ICd0ZXJ0aWFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaG93Q2hlY2ttYXJrOiB0cnVlLFxuICB9O1xuXG4gIC8vIOKchSBFamVtcGxvcyBkZSBMYW5ndWFnZSBTZWxlY3RvciAoY29uIHNvcG9ydGUgbXVsdGlpZGlvbWEpXG5cbiAgLy8gTG9zIG5vbWJyZXMgZGUgaWRpb21hcyBzZSBvYnRpZW5lbiBhdXRvbcOhdGljYW1lbnRlIGRlbCBzaXN0ZW1hIGRlIGNvbnRlbmlkb1xuICAvLyB5IHNlIG11ZXN0cmFuIHRyYWR1Y2lkb3Mgc2Vnw7puIGVsIGlkaW9tYSBhY3R1YWwgZGUgbGEgYXBsaWNhY2nDs25cbiAgYmFzaWNMYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgIGxhYmVsOiAnSWRpb21hJyxcbiAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgfTtcblxuICAvLyBDb24gYmFuZGVyYXMgeSBub21icmVzIHRyYWR1Y2lkb3MgYXV0b23DoXRpY2FtZW50ZVxuICBmbGFnTGFuZ3VhZ2VTZWxlY3RvcjogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge1xuICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICBsYWJlbDogJ0xhbmd1YWdlIC8gSWRpb21hJyxcbiAgICBzaG93RmxhZ3M6IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzaXplOiAnbGFyZ2UnLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gIH07XG5cbiAgLy8gQ29uIG5vbWJyZXMgcGVyc29uYWxpemFkb3MgKHNvYnJlc2NyaWJlIGxhcyB0cmFkdWNjaW9uZXMgYXV0b23DoXRpY2FzKVxuICBjdXN0b21MYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgIGxhYmVsQ29uZmlnOiB7XG4gICAgICBjbGFzc05hbWU6ICdfZ2xvYmFsJyxcbiAgICAgIGtleTogJ2xhbmd1YWdlJyxcbiAgICAgIGZhbGxiYWNrOiAnSWRpb21hJyxcbiAgICB9LFxuICAgIHNob3dGbGFnczogdHJ1ZSxcbiAgICBjb2xvcjogJ3NlY29uZGFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICBjdXN0b21MYW5ndWFnZU5hbWVzOiB7XG4gICAgICBlczogJ0VzcGHDsW9sIChFc3Bhw7FhKScsXG4gICAgICBlbjogJ0VuZ2xpc2ggKFVTKScsXG4gICAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgICBkZTogJ0RldXRzY2gnLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ29tcGFjdG8gc2luIGV0aXF1ZXRhLCBzb2xvIGJhbmRlcmFzIHkgbm9tYnJlcyB0cmFkdWNpZG9zXG4gIGNvbXBhY3RMYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICBzaG93RmxhZ3M6IHRydWUsXG4gICAgY29sb3I6ICd0ZXJ0aWFyeScsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBmaWxsOiAnY2xlYXInLFxuICB9O1xuXG4gIC8vIOKchSBFdmVudCBIYW5kbGVyc1xuXG4gIG9uQ2F0ZWdvcnlDaGFuZ2UoY2F0ZWdvcnk6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc29sZS5sb2coJ0NhdGVnb3J5IGNoYW5nZWQ6JywgY2F0ZWdvcnkpO1xuICB9XG5cbiAgb25Qcmlvcml0eUNoYW5nZShwcmlvcml0eTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zb2xlLmxvZygnUHJpb3JpdHkgY2hhbmdlZDonLCBwcmlvcml0eSk7XG4gIH1cblxuICBvbk11bHRpcGxlQ2hhbmdlKG5vdGlmaWNhdGlvbnM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbnMgY2hhbmdlZDonLCBub3RpZmljYXRpb25zKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjaGFuZ2VkIHRvOicsIGxhbmd1YWdlKTtcbiAgICAvLyBMYSBhcGxpY2FjacOzbiBhdXRvbcOhdGljYW1lbnRlIGFjdHVhbGl6YXLDoSB0b2RvcyBsb3Mgbm9tYnJlcyBkZSBpZGlvbWFzXG4gICAgLy8gc2Vnw7puIGxhIG51ZXZhIGNvbmZpZ3VyYWNpw7NuIGRlIGlkaW9tYSBzZWxlY2Npb25hZGFcbiAgfVxufVxuIl19
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { TextMetadata } from '../components/atoms/text/types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* ComprehensiveLinkTestComponent - Componente de prueba exhaustiva para el procesamiento de enlaces.
|
|
5
|
-
*
|
|
6
|
-
* Este componente demuestra todos los casos edge y escenarios complejos de procesamiento de enlaces,
|
|
7
|
-
* incluyendo puntuación, URLs complejas, y mezclas de formatos.
|
|
8
|
-
*
|
|
9
|
-
* @example Uso en template:
|
|
10
|
-
* ```html
|
|
11
|
-
* <val-comprehensive-link-test></val-comprehensive-link-test>
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export declare class ComprehensiveLinkTestComponent {
|
|
15
|
-
punctuationProps: TextMetadata;
|
|
16
|
-
complexUrlProps: TextMetadata;
|
|
17
|
-
parenthesesProps: TextMetadata;
|
|
18
|
-
mixedFormatsProps: TextMetadata;
|
|
19
|
-
edgeCasesProps: TextMetadata;
|
|
20
|
-
devUrlsProps: TextMetadata;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ComprehensiveLinkTestComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ComprehensiveLinkTestComponent, "val-comprehensive-link-test", never, {}, {}, never, never, true, never>;
|
|
23
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class CustomContentDemoComponent implements OnInit {
|
|
4
|
-
private content;
|
|
5
|
-
currentLang: string;
|
|
6
|
-
saveText$: import("rxjs").Observable<string>;
|
|
7
|
-
cancelText$: import("rxjs").Observable<string>;
|
|
8
|
-
deleteText$: import("rxjs").Observable<string>;
|
|
9
|
-
loadingText$: import("rxjs").Observable<string>;
|
|
10
|
-
dashboardText$: import("rxjs").Observable<string>;
|
|
11
|
-
profileText$: import("rxjs").Observable<string>;
|
|
12
|
-
settingsText$: import("rxjs").Observable<string>;
|
|
13
|
-
welcomeText$: import("rxjs").Observable<string>;
|
|
14
|
-
spanishText$: import("rxjs").Observable<string>;
|
|
15
|
-
englishText$: import("rxjs").Observable<string>;
|
|
16
|
-
descriptionText$: import("rxjs").Observable<string>;
|
|
17
|
-
saveTextSync: string;
|
|
18
|
-
dashboardTextSync: string;
|
|
19
|
-
languageDescSync: string;
|
|
20
|
-
ngOnInit(): void;
|
|
21
|
-
switchLanguage(): void;
|
|
22
|
-
private updateSyncTexts;
|
|
23
|
-
private diagnoseConfiguration;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CustomContentDemoComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CustomContentDemoComponent, "app-custom-content-demo", never, {}, {}, never, never, true, never>;
|
|
26
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { DisplayMetadata } from '../components/atoms/display/types';
|
|
4
|
-
import { LanguageSelectorMetadata } from '../components/molecules/language-selector/types';
|
|
5
|
-
import { ContentService } from '../services/content.service';
|
|
6
|
-
import { LangService } from '../services/lang-provider/lang-provider.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* Componente de demostración para val-display con contenido reactivo.
|
|
10
|
-
* Muestra diferentes patrones de uso y casos de ejemplo.
|
|
11
|
-
*/
|
|
12
|
-
export declare class DisplayDemoComponent implements OnInit {
|
|
13
|
-
private contentService;
|
|
14
|
-
private langService;
|
|
15
|
-
demoTitle$: Observable<string>;
|
|
16
|
-
languageLabel$: Observable<string>;
|
|
17
|
-
staticSectionTitle$: Observable<string>;
|
|
18
|
-
reactiveSectionTitle$: Observable<string>;
|
|
19
|
-
mixedSectionTitle$: Observable<string>;
|
|
20
|
-
dynamicSectionTitle$: Observable<string>;
|
|
21
|
-
analysisTitle$: Observable<string>;
|
|
22
|
-
reactiveContentTitle$: Observable<string>;
|
|
23
|
-
interpolationTitle$: Observable<string>;
|
|
24
|
-
fallbackTitle$: Observable<string>;
|
|
25
|
-
mixedContentTitle$: Observable<string>;
|
|
26
|
-
dynamicContentTitle$: Observable<string>;
|
|
27
|
-
updateButtonText$: Observable<string>;
|
|
28
|
-
currentLangLabel$: Observable<string>;
|
|
29
|
-
availableLangsLabel$: Observable<string>;
|
|
30
|
-
currentLanguage$: Observable<string>;
|
|
31
|
-
availableLanguages$: Observable<string[]>;
|
|
32
|
-
private counter;
|
|
33
|
-
languageSelectorProps: LanguageSelectorMetadata;
|
|
34
|
-
smallStaticDisplay: DisplayMetadata;
|
|
35
|
-
mediumStaticDisplay: DisplayMetadata;
|
|
36
|
-
largeStaticDisplay: DisplayMetadata;
|
|
37
|
-
xlargeStaticDisplay: DisplayMetadata;
|
|
38
|
-
primaryDisplay: DisplayMetadata;
|
|
39
|
-
secondaryDisplay: DisplayMetadata;
|
|
40
|
-
successDisplay: DisplayMetadata;
|
|
41
|
-
warningDisplay: DisplayMetadata;
|
|
42
|
-
dangerDisplay: DisplayMetadata;
|
|
43
|
-
welcomeDisplay: DisplayMetadata;
|
|
44
|
-
descriptionDisplay: DisplayMetadata;
|
|
45
|
-
statusDisplay: DisplayMetadata;
|
|
46
|
-
userWelcomeDisplay: DisplayMetadata;
|
|
47
|
-
counterDisplay: DisplayMetadata;
|
|
48
|
-
missingKeyDisplay: DisplayMetadata;
|
|
49
|
-
noFallbackDisplay: DisplayMetadata;
|
|
50
|
-
staticMixedDisplay: DisplayMetadata;
|
|
51
|
-
reactiveMixedDisplay: DisplayMetadata;
|
|
52
|
-
dynamicCounterDisplay: DisplayMetadata;
|
|
53
|
-
constructor(contentService: ContentService, langService: LangService);
|
|
54
|
-
ngOnInit(): void;
|
|
55
|
-
private initializeContent;
|
|
56
|
-
private initializeLanguageState;
|
|
57
|
-
changeLanguage(language: string): void;
|
|
58
|
-
onLanguageChange(language: string): void;
|
|
59
|
-
updateCounter(): void;
|
|
60
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DisplayDemoComponent, never>;
|
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DisplayDemoComponent, "val-display-demo", never, {}, {}, never, never, true, never>;
|
|
62
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { DisplayMetadata } from '../components/atoms/display/types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Ejemplo rápido de uso del componente val-display con contenido reactivo
|
|
5
|
-
*/
|
|
6
|
-
export declare class DisplayExampleComponent {
|
|
7
|
-
staticTitle: DisplayMetadata;
|
|
8
|
-
staticSubtitle: DisplayMetadata;
|
|
9
|
-
reactiveWelcome: DisplayMetadata;
|
|
10
|
-
reactiveDescription: DisplayMetadata;
|
|
11
|
-
userGreeting: DisplayMetadata;
|
|
12
|
-
statusMessage: DisplayMetadata;
|
|
13
|
-
smallText: DisplayMetadata;
|
|
14
|
-
mediumText: DisplayMetadata;
|
|
15
|
-
largeText: DisplayMetadata;
|
|
16
|
-
xlargeText: DisplayMetadata;
|
|
17
|
-
primaryText: DisplayMetadata;
|
|
18
|
-
successText: DisplayMetadata;
|
|
19
|
-
warningText: DisplayMetadata;
|
|
20
|
-
dangerText: DisplayMetadata;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DisplayExampleComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DisplayExampleComponent, "app-display-example", never, {}, {}, never, never, true, never>;
|
|
23
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { TextMetadata } from '../components/atoms/text/types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* LinkProcessingExampleComponent - Componente de ejemplo que demuestra el procesamiento automático de enlaces.
|
|
5
|
-
*
|
|
6
|
-
* Este componente muestra diferentes casos de uso para el procesamiento automático de enlaces
|
|
7
|
-
* en el componente val-text, incluyendo enlaces externos, rutas internas y configuraciones personalizadas.
|
|
8
|
-
*
|
|
9
|
-
* @example Uso en template:
|
|
10
|
-
* ```html
|
|
11
|
-
* <val-link-processing-example></val-link-processing-example>
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export declare class LinkProcessingExampleComponent {
|
|
15
|
-
basicTextProps: TextMetadata;
|
|
16
|
-
basicLinksProps: TextMetadata;
|
|
17
|
-
customLinksProps: TextMetadata;
|
|
18
|
-
mixedLinksProps: TextMetadata;
|
|
19
|
-
sameTabLinksProps: TextMetadata;
|
|
20
|
-
markdownLinksProps: TextMetadata;
|
|
21
|
-
mixedFormatsProps: TextMetadata;
|
|
22
|
-
punctuationTestProps: TextMetadata;
|
|
23
|
-
complexUrlsProps: TextMetadata;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LinkProcessingExampleComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LinkProcessingExampleComponent, "val-link-processing-example", never, {}, {}, never, never, true, never>;
|
|
26
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { ContentService } from '../services/content.service';
|
|
3
|
-
import { LangService } from '../services/lang-provider/lang-provider.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* MultiLanguageDemoComponent - Demuestra el sistema de idiomas flexible.
|
|
7
|
-
*
|
|
8
|
-
* Este componente muestra cómo el sistema maneja múltiples idiomas,
|
|
9
|
-
* fallbacks automáticos y warnings por traducciones faltantes.
|
|
10
|
-
*/
|
|
11
|
-
export declare class MultiLanguageDemoComponent implements OnInit {
|
|
12
|
-
content: ContentService;
|
|
13
|
-
langService: LangService;
|
|
14
|
-
availableLanguages: string[];
|
|
15
|
-
analysisResults: {
|
|
16
|
-
availableLanguages: string[];
|
|
17
|
-
missingKeys: string[];
|
|
18
|
-
} | null;
|
|
19
|
-
okButton$: import("rxjs").Observable<string>;
|
|
20
|
-
cancelButton$: import("rxjs").Observable<string>;
|
|
21
|
-
saveButton$: import("rxjs").Observable<string>;
|
|
22
|
-
deleteButton$: import("rxjs").Observable<string>;
|
|
23
|
-
nextButton$: import("rxjs").Observable<string>;
|
|
24
|
-
finishButton$: import("rxjs").Observable<string>;
|
|
25
|
-
searchPlaceholder$: import("rxjs").Observable<string>;
|
|
26
|
-
noDataMessage$: import("rxjs").Observable<string>;
|
|
27
|
-
constructor(content: ContentService, langService: LangService);
|
|
28
|
-
ngOnInit(): void;
|
|
29
|
-
switchLanguage(lang: string): void;
|
|
30
|
-
getLanguageName(lang: string): string;
|
|
31
|
-
analyzeCurrentComponent(): void;
|
|
32
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MultiLanguageDemoComponent, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MultiLanguageDemoComponent, "val-multi-language-demo", never, {}, {}, never, never, true, never>;
|
|
34
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { ReactiveAlertBoxMetadata } from '../components/molecules/alert-box/types';
|
|
4
|
-
import { ButtonMetadata } from '../components/types';
|
|
5
|
-
import { ContentService } from '../services/content.service';
|
|
6
|
-
import { LangService } from '../services/lang-provider/lang-provider.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* Simple demo component showcasing reactive content patterns
|
|
10
|
-
* for buttons and alert boxes.
|
|
11
|
-
*
|
|
12
|
-
* Demonstrates:
|
|
13
|
-
* - Button components with reactive text
|
|
14
|
-
* - Alert boxes with reactive content
|
|
15
|
-
* - Language switching
|
|
16
|
-
* - Static vs reactive content patterns
|
|
17
|
-
*/
|
|
18
|
-
export declare class ReactiveComponentsDemoComponent implements OnInit, OnDestroy {
|
|
19
|
-
private contentService;
|
|
20
|
-
private langService;
|
|
21
|
-
private subscriptions;
|
|
22
|
-
pageTitle$: Observable<string>;
|
|
23
|
-
languageLabel$: Observable<string>;
|
|
24
|
-
buttonSectionTitle$: Observable<string>;
|
|
25
|
-
alertSectionTitle$: Observable<string>;
|
|
26
|
-
currentLanguage$: Observable<string>;
|
|
27
|
-
availableLanguages$: Observable<string[]>;
|
|
28
|
-
saveButton: ButtonMetadata;
|
|
29
|
-
cancelButton: ButtonMetadata;
|
|
30
|
-
staticButton: ButtonMetadata;
|
|
31
|
-
warningAlert: ReactiveAlertBoxMetadata;
|
|
32
|
-
successAlert: ReactiveAlertBoxMetadata;
|
|
33
|
-
staticAlert: ReactiveAlertBoxMetadata;
|
|
34
|
-
constructor(contentService: ContentService, langService: LangService);
|
|
35
|
-
ngOnInit(): void;
|
|
36
|
-
ngOnDestroy(): void;
|
|
37
|
-
private initializeContent;
|
|
38
|
-
private initializeComponents;
|
|
39
|
-
changeLanguage(language: string): void;
|
|
40
|
-
private handleSave;
|
|
41
|
-
private handleCancel;
|
|
42
|
-
private handleStatic;
|
|
43
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ReactiveComponentsDemoComponent, never>;
|
|
44
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReactiveComponentsDemoComponent, "val-reactive-components-demo", never, {}, {}, never, never, true, never>;
|
|
45
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Test component to diagnose reactive content behavior.
|
|
5
|
-
* Compares fromContent vs fromMultipleContent reactivity.
|
|
6
|
-
*/
|
|
7
|
-
export declare class ReactivityTestComponent implements OnInit {
|
|
8
|
-
private contentService;
|
|
9
|
-
private langService;
|
|
10
|
-
currentLang$: import("rxjs").Observable<string>;
|
|
11
|
-
singleWelcome$: import("rxjs").Observable<string>;
|
|
12
|
-
singleSave$: import("rxjs").Observable<string>;
|
|
13
|
-
singleCancel$: import("rxjs").Observable<string>;
|
|
14
|
-
multipleContent$: import("rxjs").Observable<Record<string, string>>;
|
|
15
|
-
directSingle$: import("rxjs").Observable<string>;
|
|
16
|
-
directMultiple$: import("rxjs").Observable<Record<string, string>>;
|
|
17
|
-
singleUpdateCount: number;
|
|
18
|
-
multipleUpdateCount: number;
|
|
19
|
-
directSingleUpdateCount: number;
|
|
20
|
-
directMultipleUpdateCount: number;
|
|
21
|
-
ngOnInit(): void;
|
|
22
|
-
switchToSpanish(): void;
|
|
23
|
-
switchToEnglish(): void;
|
|
24
|
-
switchToFrench(): void;
|
|
25
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ReactivityTestComponent, never>;
|
|
26
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReactivityTestComponent, "val-reactivity-test", never, {}, {}, never, never, true, never>;
|
|
27
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { LanguageSelectorMetadata } from '../components/molecules/language-selector/types';
|
|
2
|
-
import { PopoverSelectorMetadata } from '../components/molecules/popover-selector/types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Ejemplo de uso de los componentes popover-selector y language-selector
|
|
6
|
-
*/
|
|
7
|
-
export declare class SelectorExamplesComponent {
|
|
8
|
-
categorySelector: PopoverSelectorMetadata;
|
|
9
|
-
prioritySelector: PopoverSelectorMetadata;
|
|
10
|
-
multipleSelector: PopoverSelectorMetadata;
|
|
11
|
-
basicLanguageSelector: LanguageSelectorMetadata;
|
|
12
|
-
flagLanguageSelector: LanguageSelectorMetadata;
|
|
13
|
-
customLanguageSelector: LanguageSelectorMetadata;
|
|
14
|
-
compactLanguageSelector: LanguageSelectorMetadata;
|
|
15
|
-
onCategoryChange(category: string | string[]): void;
|
|
16
|
-
onPriorityChange(priority: string | string[]): void;
|
|
17
|
-
onMultipleChange(notifications: string | string[]): void;
|
|
18
|
-
onLanguageChange(language: string): void;
|
|
19
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SelectorExamplesComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SelectorExamplesComponent, "app-selector-examples", never, {}, {}, never, never, true, never>;
|
|
21
|
-
}
|