valtech-components 2.0.302 → 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.
Files changed (32) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +103 -23
  2. package/esm2022/lib/components/types.mjs +1 -1
  3. package/esm2022/lib/services/lang-provider/content.mjs +1 -55
  4. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +4 -9
  5. package/esm2022/lib/shared/utils/content.mjs +2 -8
  6. package/esm2022/public-api.mjs +1 -12
  7. package/fesm2022/valtech-components.mjs +124 -2807
  8. package/fesm2022/valtech-components.mjs.map +1 -1
  9. package/lib/components/atoms/button/button.component.d.ts +33 -2
  10. package/lib/components/types.d.ts +19 -7
  11. package/package.json +1 -1
  12. package/public-api.d.ts +0 -10
  13. package/esm2022/lib/examples/comprehensive-link-test.component.mjs +0 -208
  14. package/esm2022/lib/examples/custom-content-demo.component.mjs +0 -291
  15. package/esm2022/lib/examples/display-demo.component.mjs +0 -518
  16. package/esm2022/lib/examples/display-simple-example.component.mjs +0 -202
  17. package/esm2022/lib/examples/link-processing-example.component.mjs +0 -233
  18. package/esm2022/lib/examples/multi-language-demo.component.mjs +0 -304
  19. package/esm2022/lib/examples/reactive-components-demo.component.mjs +0 -303
  20. package/esm2022/lib/examples/reactivity-test.component.mjs +0 -200
  21. package/esm2022/lib/examples/selector-examples.component.mjs +0 -234
  22. package/esm2022/lib/examples/user-issue-test.component.mjs +0 -267
  23. package/lib/examples/comprehensive-link-test.component.d.ts +0 -23
  24. package/lib/examples/custom-content-demo.component.d.ts +0 -26
  25. package/lib/examples/display-demo.component.d.ts +0 -62
  26. package/lib/examples/display-simple-example.component.d.ts +0 -23
  27. package/lib/examples/link-processing-example.component.d.ts +0 -26
  28. package/lib/examples/multi-language-demo.component.d.ts +0 -34
  29. package/lib/examples/reactive-components-demo.component.d.ts +0 -45
  30. package/lib/examples/reactivity-test.component.d.ts +0 -27
  31. package/lib/examples/selector-examples.component.d.ts +0 -21
  32. package/lib/examples/user-issue-test.component.d.ts +0 -31
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItZXhhbXBsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvZXhhbXBsZXMvc2VsZWN0b3ItZXhhbXBsZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFFbEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUVBQXFFLENBQUM7O0FBRy9HOztHQUVHO0FBZ0dILE1BQU0sT0FBTyx5QkFBeUI7SUEvRnRDO1FBZ0dFLDBDQUEwQztRQUUxQyxxQkFBZ0IsR0FBNEI7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3RELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ3hELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3RELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7YUFDckQ7WUFDRCxhQUFhLEVBQUUsTUFBTTtZQUNyQixLQUFLLEVBQUUsV0FBVztZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztRQUVGLHFCQUFnQixHQUE0QjtZQUMxQyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUNuRCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNsRCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2FBQ3ZEO1lBQ0QsYUFBYSxFQUFFLFFBQVE7WUFDdkIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO1FBRUYscUJBQWdCLEdBQTRCO1lBQzFDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNoRCxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUMvQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUN2RCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQ25EO1lBQ0QsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsVUFBVTtZQUNqQixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQztRQUVGLDREQUE0RDtRQUU1RCw4RUFBOEU7UUFDOUUsbUVBQW1FO1FBQ25FLDBCQUFxQixHQUE2QjtZQUNoRCxTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUM7UUFFRixvREFBb0Q7UUFDcEQseUJBQW9CLEdBQTZCO1lBQy9DLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLG1CQUFtQjtZQUMxQixTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDO1FBRUYsd0VBQXdFO1FBQ3hFLDJCQUFzQixHQUE2QjtZQUNqRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRTtnQkFDWCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsR0FBRyxFQUFFLFVBQVU7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7YUFDbkI7WUFDRCxTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxXQUFXO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsT0FBTztZQUNkLG1CQUFtQixFQUFFO2dCQUNuQixFQUFFLEVBQUUsa0JBQWtCO2dCQUN0QixFQUFFLEVBQUUsY0FBYztnQkFDbEIsRUFBRSxFQUFFLFVBQVU7Z0JBQ2QsRUFBRSxFQUFFLFNBQVM7YUFDZDtTQUNGLENBQUM7UUFFRiw0REFBNEQ7UUFDNUQsNEJBQXVCLEdBQTZCO1lBQ2xELFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLFVBQVU7WUFDakIsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUM7S0FxQkg7SUFuQkMsbUJBQW1CO0lBRW5CLGdCQUFnQixDQUFDLFFBQTJCO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQTJCO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLGFBQWdDO1FBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMseUVBQXlFO1FBQ3pFLHNEQUFzRDtJQUN4RCxDQUFDOytHQXpIVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpRkEzRjFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRFQsa2ZBdkRTLHdCQUF3QixrSEFBRSx5QkFBeUI7OzRGQTRGbEQseUJBQXlCO2tCQS9GckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsd0JBQXdCLEVBQUUseUJBQXlCLENBQUMsWUFDcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5cbi8qKlxuICogRWplbXBsbyBkZSB1c28gZGUgbG9zIGNvbXBvbmVudGVzIHBvcG92ZXItc2VsZWN0b3IgeSBsYW5ndWFnZS1zZWxlY3RvclxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2VsZWN0b3ItZXhhbXBsZXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50LCBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0b3ItZXhhbXBsZXNcIj5cbiAgICAgIDxoMj5FamVtcGxvcyBkZSBTZWxlY3RvcmVzPC9oMj5cblxuICAgICAgPCEtLSBQb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljbyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgIDxoMz5Qb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljbzwvaDM+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgZGUgQ2F0ZWdvcsOtYXM6PC9oND5cbiAgICAgICAgICA8dmFsLXBvcG92ZXItc2VsZWN0b3IgW3Byb3BzXT1cImNhdGVnb3J5U2VsZWN0b3JcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2F0ZWdvcnlDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvdmFsLXBvcG92ZXItc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWdyb3VwXCI+XG4gICAgICAgICAgPGg0PlNlbGVjdG9yIGRlIFByaW9yaWRhZDo8L2g0PlxuICAgICAgICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicHJpb3JpdHlTZWxlY3RvclwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Qcmlvcml0eUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgTcO6bHRpcGxlOjwvaDQ+XG4gICAgICAgICAgPHZhbC1wb3BvdmVyLXNlbGVjdG9yIFtwcm9wc109XCJtdWx0aXBsZVNlbGVjdG9yXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk11bHRpcGxlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICA8L3ZhbC1wb3BvdmVyLXNlbGVjdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExhbmd1YWdlIFNlbGVjdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPGgzPlNlbGVjdG9yIGRlIElkaW9tYSAoTXVsdGlpZGlvbWEpPC9oMz5cbiAgICAgICAgPHA+TG9zIG5vbWJyZXMgZGUgaWRpb21hcyBzZSBtdWVzdHJhbiB0cmFkdWNpZG9zIHNlZ8O6biBlbCBpZGlvbWEgYWN0dWFsOjwvcD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ncm91cFwiPlxuICAgICAgICAgIDxoND5TZWxlY3RvciBCw6FzaWNvIChub21icmVzIHRyYWR1Y2lkb3MpOjwvaDQ+XG4gICAgICAgICAgPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwiYmFzaWNMYW5ndWFnZVNlbGVjdG9yXCI+IDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1ncm91cFwiPlxuICAgICAgICAgIDxoND5TZWxlY3RvciBjb24gQmFuZGVyYXMgKG5vbWJyZXMgdHJhZHVjaWRvcyk6PC9oND5cbiAgICAgICAgICA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJmbGFnTGFuZ3VhZ2VTZWxlY3RvclwiPiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZ3JvdXBcIj5cbiAgICAgICAgICA8aDQ+U2VsZWN0b3IgUGVyc29uYWxpemFkbyAobm9tYnJlcyBwcm9waW9zKTo8L2g0PlxuICAgICAgICAgIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cImN1c3RvbUxhbmd1YWdlU2VsZWN0b3JcIiAobGFuZ3VhZ2VDaGFuZ2UpPVwib25MYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWdyb3VwXCI+XG4gICAgICAgICAgPGg0PlNlbGVjdG9yIENvbXBhY3RvOjwvaDQ+XG4gICAgICAgICAgPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwiY29tcGFjdExhbmd1YWdlU2VsZWN0b3JcIj4gPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zZWxlY3Rvci1leGFtcGxlcyB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMzBweCAwO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zdGVwLTUwKTtcbiAgICAgIH1cblxuICAgICAgLnNlY3Rpb24gaDMge1xuICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5leGFtcGxlLWdyb3VwIHtcbiAgICAgICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5leGFtcGxlLWdyb3VwIGg0IHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTVweCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0b3JFeGFtcGxlc0NvbXBvbmVudCB7XG4gIC8vIOKchSBFamVtcGxvcyBkZSBQb3BvdmVyIFNlbGVjdG9yIEdlbsOpcmljb1xuXG4gIGNhdGVnb3J5U2VsZWN0b3I6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhID0ge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgIHsgdmFsdWU6ICd3b3JrJywgbGFiZWw6ICdUcmFiYWpvJywgaWNvbjogJ2JyaWVmY2FzZScgfSxcbiAgICAgIHsgdmFsdWU6ICdwZXJzb25hbCcsIGxhYmVsOiAnUGVyc29uYWwnLCBpY29uOiAncGVyc29uJyB9LFxuICAgICAgeyB2YWx1ZTogJ3RyYXZlbCcsIGxhYmVsOiAnVmlhamVzJywgaWNvbjogJ2FpcnBsYW5lJyB9LFxuICAgICAgeyB2YWx1ZTogJ2hlYWx0aCcsIGxhYmVsOiAnU2FsdWQnLCBpY29uOiAnZml0bmVzcycgfSxcbiAgICBdLFxuICAgIHNlbGVjdGVkVmFsdWU6ICd3b3JrJyxcbiAgICBsYWJlbDogJ0NhdGVnb3LDrWEnLFxuICAgIGljb246ICdmb2xkZXInLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgfTtcblxuICBwcmlvcml0eVNlbGVjdG9yOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IHZhbHVlOiAnbG93JywgbGFiZWw6ICdCYWphJywgaWNvbjogJ2Fycm93LWRvd24nLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgIHsgdmFsdWU6ICdtZWRpdW0nLCBsYWJlbDogJ01lZGlhJywgaWNvbjogJ3JlbW92ZScgfSxcbiAgICAgIHsgdmFsdWU6ICdoaWdoJywgbGFiZWw6ICdBbHRhJywgaWNvbjogJ2Fycm93LXVwJyB9LFxuICAgICAgeyB2YWx1ZTogJ3VyZ2VudCcsIGxhYmVsOiAnVXJnZW50ZScsIGljb246ICd3YXJuaW5nJyB9LFxuICAgIF0sXG4gICAgc2VsZWN0ZWRWYWx1ZTogJ21lZGl1bScsXG4gICAgbGFiZWw6ICdQcmlvcmlkYWQnLFxuICAgIGljb246ICdmbGFnJyxcbiAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgIHNpemU6ICdsYXJnZScsXG4gICAgZmlsbDogJ3NvbGlkJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgfTtcblxuICBtdWx0aXBsZVNlbGVjdG9yOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IHZhbHVlOiAnZW1haWwnLCBsYWJlbDogJ0VtYWlsJywgaWNvbjogJ21haWwnIH0sXG4gICAgICB7IHZhbHVlOiAnc21zJywgbGFiZWw6ICdTTVMnLCBpY29uOiAnY2hhdGJveCcgfSxcbiAgICAgIHsgdmFsdWU6ICdwdXNoJywgbGFiZWw6ICdQdXNoJywgaWNvbjogJ25vdGlmaWNhdGlvbnMnIH0sXG4gICAgICB7IHZhbHVlOiAnaW4tYXBwJywgbGFiZWw6ICdJbi1BcHAnLCBpY29uOiAnYXBwcycgfSxcbiAgICBdLFxuICAgIHNlbGVjdGVkVmFsdWU6IFsnZW1haWwnLCAncHVzaCddLFxuICAgIGxhYmVsOiAnTm90aWZpY2FjaW9uZXMnLFxuICAgIGljb246ICdub3RpZmljYXRpb25zLWNpcmNsZScsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgY29sb3I6ICd0ZXJ0aWFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaG93Q2hlY2ttYXJrOiB0cnVlLFxuICB9O1xuXG4gIC8vIOKchSBFamVtcGxvcyBkZSBMYW5ndWFnZSBTZWxlY3RvciAoY29uIHNvcG9ydGUgbXVsdGlpZGlvbWEpXG5cbiAgLy8gTG9zIG5vbWJyZXMgZGUgaWRpb21hcyBzZSBvYnRpZW5lbiBhdXRvbcOhdGljYW1lbnRlIGRlbCBzaXN0ZW1hIGRlIGNvbnRlbmlkb1xuICAvLyB5IHNlIG11ZXN0cmFuIHRyYWR1Y2lkb3Mgc2Vnw7puIGVsIGlkaW9tYSBhY3R1YWwgZGUgbGEgYXBsaWNhY2nDs25cbiAgYmFzaWNMYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgIGxhYmVsOiAnSWRpb21hJyxcbiAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgfTtcblxuICAvLyBDb24gYmFuZGVyYXMgeSBub21icmVzIHRyYWR1Y2lkb3MgYXV0b23DoXRpY2FtZW50ZVxuICBmbGFnTGFuZ3VhZ2VTZWxlY3RvcjogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge1xuICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICBsYWJlbDogJ0xhbmd1YWdlIC8gSWRpb21hJyxcbiAgICBzaG93RmxhZ3M6IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzaXplOiAnbGFyZ2UnLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gIH07XG5cbiAgLy8gQ29uIG5vbWJyZXMgcGVyc29uYWxpemFkb3MgKHNvYnJlc2NyaWJlIGxhcyB0cmFkdWNjaW9uZXMgYXV0b23DoXRpY2FzKVxuICBjdXN0b21MYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgIGxhYmVsQ29uZmlnOiB7XG4gICAgICBjbGFzc05hbWU6ICdfZ2xvYmFsJyxcbiAgICAgIGtleTogJ2xhbmd1YWdlJyxcbiAgICAgIGZhbGxiYWNrOiAnSWRpb21hJyxcbiAgICB9LFxuICAgIHNob3dGbGFnczogdHJ1ZSxcbiAgICBjb2xvcjogJ3NlY29uZGFyeScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICBjdXN0b21MYW5ndWFnZU5hbWVzOiB7XG4gICAgICBlczogJ0VzcGHDsW9sIChFc3Bhw7FhKScsXG4gICAgICBlbjogJ0VuZ2xpc2ggKFVTKScsXG4gICAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgICBkZTogJ0RldXRzY2gnLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ29tcGFjdG8gc2luIGV0aXF1ZXRhLCBzb2xvIGJhbmRlcmFzIHkgbm9tYnJlcyB0cmFkdWNpZG9zXG4gIGNvbXBhY3RMYW5ndWFnZVNlbGVjdG9yOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7XG4gICAgc2hvd0xhYmVsOiBmYWxzZSxcbiAgICBzaG93RmxhZ3M6IHRydWUsXG4gICAgY29sb3I6ICd0ZXJ0aWFyeScsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBmaWxsOiAnY2xlYXInLFxuICB9O1xuXG4gIC8vIOKchSBFdmVudCBIYW5kbGVyc1xuXG4gIG9uQ2F0ZWdvcnlDaGFuZ2UoY2F0ZWdvcnk6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc29sZS5sb2coJ0NhdGVnb3J5IGNoYW5nZWQ6JywgY2F0ZWdvcnkpO1xuICB9XG5cbiAgb25Qcmlvcml0eUNoYW5nZShwcmlvcml0eTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zb2xlLmxvZygnUHJpb3JpdHkgY2hhbmdlZDonLCBwcmlvcml0eSk7XG4gIH1cblxuICBvbk11bHRpcGxlQ2hhbmdlKG5vdGlmaWNhdGlvbnM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbnMgY2hhbmdlZDonLCBub3RpZmljYXRpb25zKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjaGFuZ2VkIHRvOicsIGxhbmd1YWdlKTtcbiAgICAvLyBMYSBhcGxpY2FjacOzbiBhdXRvbcOhdGljYW1lbnRlIGFjdHVhbGl6YXLDoSB0b2RvcyBsb3Mgbm9tYnJlcyBkZSBpZGlvbWFzXG4gICAgLy8gc2Vnw7puIGxhIG51ZXZhIGNvbmZpZ3VyYWNpw7NuIGRlIGlkaW9tYSBzZWxlY2Npb25hZGFcbiAgfVxufVxuIl19
@@ -1,267 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject } from '@angular/core';
3
- import { ContentService } from '../services/content.service';
4
- import { LangService } from '../services/lang-provider/lang-provider.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- /**
8
- * Simple test component to diagnose the user's specific issue.
9
- * Tests the exact pattern the user is using.
10
- */
11
- export class UserIssueTestComponent {
12
- constructor() {
13
- this.contentService = inject(ContentService);
14
- this.langService = inject(LangService);
15
- // Current language observable
16
- this.currentLang$ = this.langService.currentLang$;
17
- // Direct ContentService pattern (what user is trying)
18
- this.saveButtonDirect$ = this.contentService.fromContent({ key: 'save' });
19
- this.cancelButtonDirect$ = this.contentService.fromContent({ key: 'cancel' });
20
- // ContentHelper pattern (user's alternative)
21
- this.contentHelper = this.contentService.forComponent('_global');
22
- this.saveButtonHelper$ = this.contentHelper.get('save');
23
- this.cancelButtonHelper$ = this.contentHelper.get('cancel');
24
- // Direct LangService for comparison
25
- this.saveButtonLang$ = this.langService.getContent('_global', 'save');
26
- this.cancelButtonLang$ = this.langService.getContent('_global', 'cancel');
27
- // Update counters
28
- this.directUpdateCount = 0;
29
- this.helperUpdateCount = 0;
30
- this.langServiceUpdateCount = 0;
31
- }
32
- ngOnInit() {
33
- console.log('UserIssueTestComponent: Initializing...');
34
- // Subscribe to count updates
35
- this.saveButtonDirect$.subscribe(value => {
36
- this.directUpdateCount++;
37
- console.log('Direct fromContent updated:', value, 'Count:', this.directUpdateCount);
38
- });
39
- this.saveButtonHelper$.subscribe(value => {
40
- this.helperUpdateCount++;
41
- console.log('Helper updated:', value, 'Count:', this.helperUpdateCount);
42
- });
43
- this.saveButtonLang$.subscribe(value => {
44
- this.langServiceUpdateCount++;
45
- console.log('LangService updated:', value, 'Count:', this.langServiceUpdateCount);
46
- });
47
- // Log initial state
48
- console.log('Current language:', this.langService.currentLang);
49
- console.log('Available languages:', this.langService.availableLangs);
50
- console.log('Has save content:', this.langService.hasContent('_global', 'save'));
51
- console.log('Has cancel content:', this.langService.hasContent('_global', 'cancel'));
52
- }
53
- switchToSpanish() {
54
- console.log('Switching to Spanish...');
55
- this.langService.setLang('es');
56
- }
57
- switchToEnglish() {
58
- console.log('Switching to English...');
59
- this.langService.setLang('en');
60
- }
61
- // Synchronous methods for debugging
62
- getSaveTextSync() {
63
- return this.contentService.getText('save', 'Save (fallback)');
64
- }
65
- getCancelTextSync() {
66
- return this.contentService.getText('cancel', 'Cancel (fallback)');
67
- }
68
- getAvailableLanguages() {
69
- return this.langService.availableLangs.join(', ');
70
- }
71
- hasContentSave() {
72
- return this.langService.hasContent('_global', 'save');
73
- }
74
- hasContentCancel() {
75
- return this.langService.hasContent('_global', 'cancel');
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserIssueTestComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: UserIssueTestComponent, isStandalone: true, selector: "val-user-issue-test", ngImport: i0, template: `
79
- <div style="padding: 20px; border: 2px solid #007bff; margin: 10px; border-radius: 8px;">
80
- <h3>User Issue Test - Exact Pattern</h3>
81
-
82
- <!-- Current Language Display -->
83
- <div style="margin-bottom: 20px; padding: 10px; background: #f0f8ff; border-radius: 4px;">
84
- <strong>Current Language:</strong> {{ currentLang$ | async }}
85
- </div>
86
-
87
- <!-- Language Switch Buttons -->
88
- <div style="margin-bottom: 20px;">
89
- <button
90
- (click)="switchToSpanish()"
91
- style="margin-right: 10px; padding: 8px 16px; background: #28a745; color: white; border: none; border-radius: 4px; cursor: pointer;"
92
- >
93
- Switch to ES
94
- </button>
95
- <button
96
- (click)="switchToEnglish()"
97
- style="margin-right: 10px; padding: 8px 16px; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;"
98
- >
99
- Switch to EN
100
- </button>
101
- </div>
102
-
103
- <!-- Direct ContentService Tests -->
104
- <div style="margin-bottom: 20px; padding: 10px; background: #fff3cd; border-radius: 4px;">
105
- <h4>Direct ContentService fromContent (user's pattern)</h4>
106
- <div>
107
- <strong>Save Button:</strong>
108
- <ng-container *ngIf="saveButtonDirect$ | async as save; else loading">{{ save }}</ng-container>
109
- </div>
110
- <div>
111
- <strong>Cancel Button:</strong>
112
- <ng-container *ngIf="cancelButtonDirect$ | async as cancel; else loading">{{ cancel }}</ng-container>
113
- </div>
114
- </div>
115
-
116
- <!-- ContentHelper Tests -->
117
- <div style="margin-bottom: 20px; padding: 10px; background: #d1ecf1; border-radius: 4px;">
118
- <h4>ContentHelper forComponent (user's helper)</h4>
119
- <div>
120
- <strong>Save Button:</strong>
121
- <ng-container *ngIf="saveButtonHelper$ | async as save; else loading">{{ save }}</ng-container>
122
- </div>
123
- <div>
124
- <strong>Cancel Button:</strong>
125
- <ng-container *ngIf="cancelButtonHelper$ | async as cancel; else loading">{{ cancel }}</ng-container>
126
- </div>
127
- </div>
128
-
129
- <!-- Direct LangService Tests -->
130
- <div style="margin-bottom: 20px; padding: 10px; background: '#d4edda'; border-radius: 4px;">
131
- <h4>Direct LangService (for comparison)</h4>
132
- <div>
133
- <strong>Save Button:</strong>
134
- <ng-container *ngIf="saveButtonLang$ | async as save; else loading">{{ save }}</ng-container>
135
- </div>
136
- <div>
137
- <strong>Cancel Button:</strong>
138
- <ng-container *ngIf="cancelButtonLang$ | async as cancel; else loading">{{ cancel }}</ng-container>
139
- </div>
140
- </div>
141
-
142
- <ng-template #loading>Loading...</ng-template>
143
-
144
- <!-- Synchronous Tests -->
145
- <div style="margin-bottom: 20px; padding: 10px; background: #f8d7da; border-radius: 4px;">
146
- <h4>Synchronous getText (for reference)</h4>
147
- <div><strong>Save Button (sync):</strong> {{ getSaveTextSync() }}</div>
148
- <div><strong>Cancel Button (sync):</strong> {{ getCancelTextSync() }}</div>
149
- </div>
150
-
151
- <!-- Debug Information -->
152
- <div style="margin-bottom: 20px; padding: 10px; background: #e2e3e5; border-radius: 4px;">
153
- <h4>Debug Info</h4>
154
- <div><strong>Available Languages:</strong> {{ getAvailableLanguages() }}</div>
155
- <div><strong>Has 'save' content:</strong> {{ hasContentSave() }}</div>
156
- <div><strong>Has 'cancel' content:</strong> {{ hasContentCancel() }}</div>
157
- </div>
158
-
159
- <!-- Update Counters -->
160
- <div style="padding: 10px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px;">
161
- <h4>Update Counters (should increment on language change)</h4>
162
- <div><strong>Direct fromContent updates:</strong> {{ directUpdateCount }}</div>
163
- <div><strong>Helper updates:</strong> {{ helperUpdateCount }}</div>
164
- <div><strong>LangService updates:</strong> {{ langServiceUpdateCount }}</div>
165
- </div>
166
- </div>
167
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
168
- }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserIssueTestComponent, decorators: [{
170
- type: Component,
171
- args: [{
172
- selector: 'val-user-issue-test',
173
- standalone: true,
174
- imports: [CommonModule],
175
- template: `
176
- <div style="padding: 20px; border: 2px solid #007bff; margin: 10px; border-radius: 8px;">
177
- <h3>User Issue Test - Exact Pattern</h3>
178
-
179
- <!-- Current Language Display -->
180
- <div style="margin-bottom: 20px; padding: 10px; background: #f0f8ff; border-radius: 4px;">
181
- <strong>Current Language:</strong> {{ currentLang$ | async }}
182
- </div>
183
-
184
- <!-- Language Switch Buttons -->
185
- <div style="margin-bottom: 20px;">
186
- <button
187
- (click)="switchToSpanish()"
188
- style="margin-right: 10px; padding: 8px 16px; background: #28a745; color: white; border: none; border-radius: 4px; cursor: pointer;"
189
- >
190
- Switch to ES
191
- </button>
192
- <button
193
- (click)="switchToEnglish()"
194
- style="margin-right: 10px; padding: 8px 16px; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;"
195
- >
196
- Switch to EN
197
- </button>
198
- </div>
199
-
200
- <!-- Direct ContentService Tests -->
201
- <div style="margin-bottom: 20px; padding: 10px; background: #fff3cd; border-radius: 4px;">
202
- <h4>Direct ContentService fromContent (user's pattern)</h4>
203
- <div>
204
- <strong>Save Button:</strong>
205
- <ng-container *ngIf="saveButtonDirect$ | async as save; else loading">{{ save }}</ng-container>
206
- </div>
207
- <div>
208
- <strong>Cancel Button:</strong>
209
- <ng-container *ngIf="cancelButtonDirect$ | async as cancel; else loading">{{ cancel }}</ng-container>
210
- </div>
211
- </div>
212
-
213
- <!-- ContentHelper Tests -->
214
- <div style="margin-bottom: 20px; padding: 10px; background: #d1ecf1; border-radius: 4px;">
215
- <h4>ContentHelper forComponent (user's helper)</h4>
216
- <div>
217
- <strong>Save Button:</strong>
218
- <ng-container *ngIf="saveButtonHelper$ | async as save; else loading">{{ save }}</ng-container>
219
- </div>
220
- <div>
221
- <strong>Cancel Button:</strong>
222
- <ng-container *ngIf="cancelButtonHelper$ | async as cancel; else loading">{{ cancel }}</ng-container>
223
- </div>
224
- </div>
225
-
226
- <!-- Direct LangService Tests -->
227
- <div style="margin-bottom: 20px; padding: 10px; background: '#d4edda'; border-radius: 4px;">
228
- <h4>Direct LangService (for comparison)</h4>
229
- <div>
230
- <strong>Save Button:</strong>
231
- <ng-container *ngIf="saveButtonLang$ | async as save; else loading">{{ save }}</ng-container>
232
- </div>
233
- <div>
234
- <strong>Cancel Button:</strong>
235
- <ng-container *ngIf="cancelButtonLang$ | async as cancel; else loading">{{ cancel }}</ng-container>
236
- </div>
237
- </div>
238
-
239
- <ng-template #loading>Loading...</ng-template>
240
-
241
- <!-- Synchronous Tests -->
242
- <div style="margin-bottom: 20px; padding: 10px; background: #f8d7da; border-radius: 4px;">
243
- <h4>Synchronous getText (for reference)</h4>
244
- <div><strong>Save Button (sync):</strong> {{ getSaveTextSync() }}</div>
245
- <div><strong>Cancel Button (sync):</strong> {{ getCancelTextSync() }}</div>
246
- </div>
247
-
248
- <!-- Debug Information -->
249
- <div style="margin-bottom: 20px; padding: 10px; background: #e2e3e5; border-radius: 4px;">
250
- <h4>Debug Info</h4>
251
- <div><strong>Available Languages:</strong> {{ getAvailableLanguages() }}</div>
252
- <div><strong>Has 'save' content:</strong> {{ hasContentSave() }}</div>
253
- <div><strong>Has 'cancel' content:</strong> {{ hasContentCancel() }}</div>
254
- </div>
255
-
256
- <!-- Update Counters -->
257
- <div style="padding: 10px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px;">
258
- <h4>Update Counters (should increment on language change)</h4>
259
- <div><strong>Direct fromContent updates:</strong> {{ directUpdateCount }}</div>
260
- <div><strong>Helper updates:</strong> {{ helperUpdateCount }}</div>
261
- <div><strong>LangService updates:</strong> {{ langServiceUpdateCount }}</div>
262
- </div>
263
- </div>
264
- `,
265
- }]
266
- }] });
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pc3N1ZS10ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2V4YW1wbGVzL3VzZXItaXNzdWUtdGVzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7OztBQUU5RTs7O0dBR0c7QUFnR0gsTUFBTSxPQUFPLHNCQUFzQjtJQS9GbkM7UUFnR1UsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUMsOEJBQThCO1FBQzlCLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFFN0Msc0RBQXNEO1FBQ3RELHNCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckUsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV6RSw2Q0FBNkM7UUFDckMsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCx3QkFBbUIsR0FBRyxJQUFJ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QUM7SUFDcEQsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQzsrR0FoRlUsc0JBQXNCO21HQUF0QixzQkFBc0IsK0VBM0Z2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RlQsMkRBMUZTLFlBQVk7OzRGQTRGWCxzQkFBc0I7a0JBL0ZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RlQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBTaW1wbGUgdGVzdCBjb21wb25lbnQgdG8gZGlhZ25vc2UgdGhlIHVzZXIncyBzcGVjaWZpYyBpc3N1ZS5cbiAqIFRlc3RzIHRoZSBleGFjdCBwYXR0ZXJuIHRoZSB1c2VyIGlzIHVzaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdXNlci1pc3N1ZS10ZXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDIwcHg7IGJvcmRlcjogMnB4IHNvbGlkICMwMDdiZmY7IG1hcmdpbjogMTBweDsgYm9yZGVyLXJhZGl1czogOHB4O1wiPlxuICAgICAgPGgzPlVzZXIgSXNzdWUgVGVzdCAtIEV4YWN0IFBhdHRlcm48L2gzPlxuXG4gICAgICA8IS0tIEN1cnJlbnQgTGFuZ3VhZ2UgRGlzcGxheSAtLT5cbiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4OyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZjBmOGZmOyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgIDxzdHJvbmc+Q3VycmVudCBMYW5ndWFnZTo8L3N0cm9uZz4ge3sgY3VycmVudExhbmckIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExhbmd1YWdlIFN3aXRjaCBCdXR0b25zIC0tPlxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIwcHg7XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVG9TcGFuaXNoKClcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4OyBwYWRkaW5nOiA4cHggMTZweDsgYmFja2dyb3VuZDogIzI4YTc0NTsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyO1wiXG4gICAgICAgID5cbiAgICAgICAgICBTd2l0Y2ggdG8gRVNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVG9FbmdsaXNoKClcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4OyBwYWRkaW5nOiA4cHggMTZweDsgYmFja2dyb3VuZDogIzAwN2JmZjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyO1wiXG4gICAgICAgID5cbiAgICAgICAgICBTd2l0Y2ggdG8gRU5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaXJlY3QgQ29udGVudFNlcnZpY2UgVGVzdHMgLS0+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDsgcGFkZGluZzogMTBweDsgYmFja2dyb3VuZDogI2ZmZjNjZDsgYm9yZGVyLXJhZGl1czogNHB4O1wiPlxuICAgICAgICA8aDQ+RGlyZWN0IENvbnRlbnRTZXJ2aWNlIGZyb21Db250ZW50ICh1c2VyJ3MgcGF0dGVybik8L2g0PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHJvbmc+U2F2ZSBCdXR0b246PC9zdHJvbmc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNhdmVCdXR0b25EaXJlY3QkIHwgYXN5bmMgYXMgc2F2ZTsgZWxzZSBsb2FkaW5nXCI+e3sgc2F2ZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3Ryb25nPkNhbmNlbCBCdXR0b246PC9zdHJvbmc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbmNlbEJ1dHRvbkRpcmVjdCQgfCBhc3luYyBhcyBjYW5jZWw7IGVsc2UgbG9hZGluZ1wiPnt7IGNhbmNlbCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENvbnRlbnRIZWxwZXIgVGVzdHMgLS0+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDsgcGFkZGluZzogMTBweDsgYmFja2dyb3VuZDogI2QxZWNmMTsgYm9yZGVyLXJhZGl1czogNHB4O1wiPlxuICAgICAgICA8aDQ+Q29udGVudEhlbHBlciBmb3JDb21wb25lbnQgKHVzZXIncyBoZWxwZXIpPC9oND5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3Ryb25nPlNhdmUgQnV0dG9uOjwvc3Ryb25nPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzYXZlQnV0dG9uSGVscGVyJCB8IGFzeW5jIGFzIHNhdmU7IGVsc2UgbG9hZGluZ1wiPnt7IHNhdmUgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZz5DYW5jZWwgQnV0dG9uOjwvc3Ryb25nPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5jZWxCdXR0b25IZWxwZXIkIHwgYXN5bmMgYXMgY2FuY2VsOyBlbHNlIGxvYWRpbmdcIj57eyBjYW5jZWwgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEaXJlY3QgTGFuZ1NlcnZpY2UgVGVzdHMgLS0+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDsgcGFkZGluZzogMTBweDsgYmFja2dyb3VuZDogJyNkNGVkZGEnOyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgIDxoND5EaXJlY3QgTGFuZ1NlcnZpY2UgKGZvciBjb21wYXJpc29uKTwvaDQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZz5TYXZlIEJ1dHRvbjo8L3N0cm9uZz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2F2ZUJ1dHRvbkxhbmckIHwgYXN5bmMgYXMgc2F2ZTsgZWxzZSBsb2FkaW5nXCI+e3sgc2F2ZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c3Ryb25nPkNhbmNlbCBCdXR0b246PC9zdHJvbmc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbmNlbEJ1dHRvbkxhbmckIHwgYXN5bmMgYXMgY2FuY2VsOyBlbHNlIGxvYWRpbmdcIj57eyBjYW5jZWwgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nPkxvYWRpbmcuLi48L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIFN5bmNocm9ub3VzIFRlc3RzIC0tPlxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIwcHg7IHBhZGRpbmc6IDEwcHg7IGJhY2tncm91bmQ6ICNmOGQ3ZGE7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cbiAgICAgICAgPGg0PlN5bmNocm9ub3VzIGdldFRleHQgKGZvciByZWZlcmVuY2UpPC9oND5cbiAgICAgICAgPGRpdj48c3Ryb25nPlNhdmUgQnV0dG9uIChzeW5jKTo8L3N0cm9uZz4ge3sgZ2V0U2F2ZVRleHRTeW5jKCkgfX08L2Rpdj5cbiAgICAgICAgPGRpdj48c3Ryb25nPkNhbmNlbCBCdXR0b24gKHN5bmMpOjwvc3Ryb25nPiB7eyBnZXRDYW5jZWxUZXh0U3luYygpIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEZWJ1ZyBJbmZvcm1hdGlvbiAtLT5cbiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4OyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZTJlM2U1OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgIDxoND5EZWJ1ZyBJbmZvPC9oND5cbiAgICAgICAgPGRpdj48c3Ryb25nPkF2YWlsYWJsZSBMYW5ndWFnZXM6PC9zdHJvbmc+IHt7IGdldEF2YWlsYWJsZUxhbmd1YWdlcygpIH19PC9kaXY+XG4gICAgICAgIDxkaXY+PHN0cm9uZz5IYXMgJ3NhdmUnIGNvbnRlbnQ6PC9zdHJvbmc+IHt7IGhhc0NvbnRlbnRTYXZlKCkgfX08L2Rpdj5cbiAgICAgICAgPGRpdj48c3Ryb25nPkhhcyAnY2FuY2VsJyBjb250ZW50Ojwvc3Ryb25nPiB7eyBoYXNDb250ZW50Q2FuY2VsKCkgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFVwZGF0ZSBDb3VudGVycyAtLT5cbiAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgIDxoND5VcGRhdGUgQ291bnRlcnMgKHNob3VsZCBpbmNyZW1lbnQgb24gbGFuZ3VhZ2UgY2hhbmdlKTwvaDQ+XG4gICAgICAgIDxkaXY+PHN0cm9uZz5EaXJlY3QgZnJvbUNvbnRlbnQgdXBkYXRlczo8L3N0cm9uZz4ge3sgZGlyZWN0VXBkYXRlQ291bnQgfX08L2Rpdj5cbiAgICAgICAgPGRpdj48c3Ryb25nPkhlbHBlciB1cGRhdGVzOjwvc3Ryb25nPiB7eyBoZWxwZXJVcGRhdGVDb3VudCB9fTwvZGl2PlxuICAgICAgICA8ZGl2PjxzdHJvbmc+TGFuZ1NlcnZpY2UgdXBkYXRlczo8L3N0cm9uZz4ge3sgbGFuZ1NlcnZpY2VVcGRhdGVDb3VudCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJJc3N1ZVRlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlID0gaW5qZWN0KENvbnRlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgLy8gQ3VycmVudCBsYW5ndWFnZSBvYnNlcnZhYmxlXG4gIGN1cnJlbnRMYW5nJCA9IHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmckO1xuXG4gIC8vIERpcmVjdCBDb250ZW50U2VydmljZSBwYXR0ZXJuICh3aGF0IHVzZXIgaXMgdHJ5aW5nKVxuICBzYXZlQnV0dG9uRGlyZWN0JCA9IHRoaXMuY29udGVudFNlcnZpY2UuZnJvbUNvbnRlbnQoeyBrZXk6ICdzYXZlJyB9KTtcbiAgY2FuY2VsQnV0dG9uRGlyZWN0JCA9IHRoaXMuY29udGVudFNlcnZpY2UuZnJvbUNvbnRlbnQoeyBrZXk6ICdjYW5jZWwnIH0pO1xuXG4gIC8vIENvbnRlbnRIZWxwZXIgcGF0dGVybiAodXNlcidzIGFsdGVybmF0aXZlKVxuICBwcml2YXRlIGNvbnRlbnRIZWxwZXIgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmZvckNvbXBvbmVudCgnX2dsb2JhbCcpO1xuICBzYXZlQnV0dG9uSGVscGVyJCA9IHRoaXMuY29udGVudEhlbHBlci5nZXQoJ3NhdmUnKTtcbiAgY2FuY2VsQnV0dG9uSGVscGVyJCA9IHRoaXMuY29udGVudEhlbHBlci5nZXQoJ2NhbmNlbCcpO1xuXG4gIC8vIERpcmVjdCBMYW5nU2VydmljZSBmb3IgY29tcGFyaXNvblxuICBzYXZlQnV0dG9uTGFuZyQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldENvbnRlbnQoJ19nbG9iYWwnLCAnc2F2ZScpO1xuICBjYW5jZWxCdXR0b25MYW5nJCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0Q29udGVudCgnX2dsb2JhbCcsICdjYW5jZWwnKTtcblxuICAvLyBVcGRhdGUgY291bnRlcnNcbiAgZGlyZWN0VXBkYXRlQ291bnQgPSAwO1xuICBoZWxwZXJVcGRhdGVDb3VudCA9IDA7XG4gIGxhbmdTZXJ2aWNlVXBkYXRlQ291bnQgPSAwO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUubG9nKCdVc2VySXNzdWVUZXN0Q29tcG9uZW50OiBJbml0aWFsaXppbmcuLi4nKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byBjb3VudCB1cGRhdGVzXG4gICAgdGhpcy5zYXZlQnV0dG9uRGlyZWN0JC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5kaXJlY3RVcGRhdGVDb3VudCsrO1xuICAgICAgY29uc29sZS5sb2coJ0RpcmVjdCBmcm9tQ29udGVudCB1cGRhdGVkOicsIHZhbHVlLCAnQ291bnQ6JywgdGhpcy5kaXJlY3RVcGRhdGVDb3VudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNhdmVCdXR0b25IZWxwZXIkLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmhlbHBlclVwZGF0ZUNvdW50Kys7XG4gICAgICBjb25zb2xlLmxvZygnSGVscGVyIHVwZGF0ZWQ6JywgdmFsdWUsICdDb3VudDonLCB0aGlzLmhlbHBlclVwZGF0ZUNvdW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2F2ZUJ1dHRvbkxhbmckLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmxhbmdTZXJ2aWNlVXBkYXRlQ291bnQrKztcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5nU2VydmljZSB1cGRhdGVkOicsIHZhbHVlLCAnQ291bnQ6JywgdGhpcy5sYW5nU2VydmljZVVwZGF0ZUNvdW50KTtcbiAgICB9KTtcblxuICAgIC8vIExvZyBpbml0aWFsIHN0YXRlXG4gICAgY29uc29sZS5sb2coJ0N1cnJlbnQgbGFuZ3VhZ2U6JywgdGhpcy5sYW5nU2VydmljZS5jdXJyZW50TGFuZyk7XG4gICAgY29uc29sZS5sb2coJ0F2YWlsYWJsZSBsYW5ndWFnZXM6JywgdGhpcy5sYW5nU2VydmljZS5hdmFpbGFibGVMYW5ncyk7XG4gICAgY29uc29sZS5sb2coJ0hhcyBzYXZlIGNvbnRlbnQ6JywgdGhpcy5sYW5nU2VydmljZS5oYXNDb250ZW50KCdfZ2xvYmFsJywgJ3NhdmUnKSk7XG4gICAgY29uc29sZS5sb2coJ0hhcyBjYW5jZWwgY29udGVudDonLCB0aGlzLmxhbmdTZXJ2aWNlLmhhc0NvbnRlbnQoJ19nbG9iYWwnLCAnY2FuY2VsJykpO1xuICB9XG5cbiAgc3dpdGNoVG9TcGFuaXNoKCkge1xuICAgIGNvbnNvbGUubG9nKCdTd2l0Y2hpbmcgdG8gU3BhbmlzaC4uLicpO1xuICAgIHRoaXMubGFuZ1NlcnZpY2Uuc2V0TGFuZygnZXMnKTtcbiAgfVxuXG4gIHN3aXRjaFRvRW5nbGlzaCgpIHtcbiAgICBjb25zb2xlLmxvZygnU3dpdGNoaW5nIHRvIEVuZ2xpc2guLi4nKTtcbiAgICB0aGlzLmxhbmdTZXJ2aWNlLnNldExhbmcoJ2VuJyk7XG4gIH1cblxuICAvLyBTeW5jaHJvbm91cyBtZXRob2RzIGZvciBkZWJ1Z2dpbmdcbiAgZ2V0U2F2ZVRleHRTeW5jKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuZ2V0VGV4dCgnc2F2ZScsICdTYXZlIChmYWxsYmFjayknKTtcbiAgfVxuXG4gIGdldENhbmNlbFRleHRTeW5jKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuZ2V0VGV4dCgnY2FuY2VsJywgJ0NhbmNlbCAoZmFsbGJhY2spJyk7XG4gIH1cblxuICBnZXRBdmFpbGFibGVMYW5ndWFnZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5hdmFpbGFibGVMYW5ncy5qb2luKCcsICcpO1xuICB9XG5cbiAgaGFzQ29udGVudFNhdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuaGFzQ29udGVudCgnX2dsb2JhbCcsICdzYXZlJyk7XG4gIH1cblxuICBoYXNDb250ZW50Q2FuY2VsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmhhc0NvbnRlbnQoJ19nbG9iYWwnLCAnY2FuY2VsJyk7XG4gIH1cbn1cbiJdfQ==
@@ -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
- }