valtech-components 2.0.284 → 2.0.288
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/README.md +54 -14
- package/esm2022/lib/components/atoms/text/text.component.mjs +46 -10
- package/esm2022/lib/components/atoms/text/types.mjs +1 -1
- package/esm2022/lib/examples/custom-content-demo.component.mjs +291 -0
- package/esm2022/lib/examples/link-processing-example.component.mjs +139 -0
- package/esm2022/lib/services/lang-provider/content.mjs +1 -13
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +7 -9
- package/esm2022/lib/services/link-processor.service.mjs +147 -0
- package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
- package/esm2022/public-api.mjs +5 -4
- package/fesm2022/valtech-components.mjs +418 -935
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/text/text.component.d.ts +5 -1
- package/lib/components/atoms/text/types.d.ts +5 -0
- package/lib/examples/link-processing-example.component.d.ts +22 -0
- package/lib/services/lang-provider/lang-provider.service.d.ts +5 -7
- package/lib/services/link-processor.service.d.ts +92 -0
- package/lib/shared/pipes/process-links.pipe.d.ts +55 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -3
- package/esm2022/lib/components/_examples/custom-content-demo.component.mjs +0 -265
- package/esm2022/lib/components/_examples/global-content-example-content.mjs +0 -23
- package/esm2022/lib/components/_examples/global-content-example.component.mjs +0 -504
- package/esm2022/lib/components/_examples/reactive-content-example-content.mjs +0 -43
- package/esm2022/lib/components/_examples/reactive-content-example.component.mjs +0 -347
- package/esm2022/lib/services/lang-provider/components/theme-settings.mjs +0 -15
- package/lib/components/_examples/global-content-example-content.d.ts +0 -9
- package/lib/components/_examples/global-content-example.component.d.ts +0 -73
- package/lib/components/_examples/reactive-content-example-content.d.ts +0 -32
- package/lib/components/_examples/reactive-content-example.component.d.ts +0 -47
- package/lib/services/lang-provider/components/theme-settings.d.ts +0 -3
- /package/lib/{components/_examples → examples}/custom-content-demo.component.d.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, Injectable, inject, Pipe, InjectionToken, Inject, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef } from '@angular/core';
|
|
3
3
|
import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonButtons, IonTextarea, IonDatetime, IonDatetimeButton, IonModal, IonInput, IonRadioGroup, IonRadio, IonSearchbar, IonSelect, IonSelectOption, IonToolbar, IonTitle, IonMenuButton, IonFooter, IonHeader, IonList, IonListHeader, IonLabel, IonNote, IonItem, IonContent } from '@ionic/angular/standalone';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule, NgStyle, AsyncPipe, NgIf, NgFor, NgClass } from '@angular/common';
|
|
@@ -8,9 +8,10 @@ import { addOutline, addCircleOutline, alertOutline, alertCircleOutline, arrowBa
|
|
|
8
8
|
import { Router, RouterLink } from '@angular/router';
|
|
9
9
|
import { Browser } from '@capacitor/browser';
|
|
10
10
|
import { map, BehaviorSubject, distinctUntilChanged, Subscription, of } from 'rxjs';
|
|
11
|
-
import * as i1$1 from '@angular/
|
|
11
|
+
import * as i1$1 from '@angular/platform-browser';
|
|
12
|
+
import * as i1$2 from '@angular/forms';
|
|
12
13
|
import { ReactiveFormsModule, FormsModule, Validators } from '@angular/forms';
|
|
13
|
-
import * as i1$
|
|
14
|
+
import * as i1$3 from 'ng-otp-input';
|
|
14
15
|
import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
|
|
15
16
|
import * as i2 from '@ionic/angular';
|
|
16
17
|
import { IonicModule } from '@ionic/angular';
|
|
@@ -1003,6 +1004,216 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1003
1004
|
type: Input
|
|
1004
1005
|
}] } });
|
|
1005
1006
|
|
|
1007
|
+
/**
|
|
1008
|
+
* LinkProcessorService - Service for processing text content to convert URLs and internal routes into clickable links.
|
|
1009
|
+
*
|
|
1010
|
+
* This service automatically detects external URLs (http/https) and internal routes (starting with /)
|
|
1011
|
+
* and converts them into HTML anchor elements with appropriate attributes.
|
|
1012
|
+
*
|
|
1013
|
+
* @example Basic usage:
|
|
1014
|
+
* ```typescript
|
|
1015
|
+
* constructor(private linkProcessor: LinkProcessorService) {}
|
|
1016
|
+
*
|
|
1017
|
+
* processText() {
|
|
1018
|
+
* const text = 'Visit https://example.com or go to /profile';
|
|
1019
|
+
* const processed = this.linkProcessor.processLinks(text);
|
|
1020
|
+
* // Returns SafeHtml with clickable links
|
|
1021
|
+
* }
|
|
1022
|
+
* ```
|
|
1023
|
+
*/
|
|
1024
|
+
class LinkProcessorService {
|
|
1025
|
+
constructor(sanitizer) {
|
|
1026
|
+
this.sanitizer = sanitizer;
|
|
1027
|
+
// Regex para detectar URLs completas (http/https)
|
|
1028
|
+
this.urlRegex = /(https?:\/\/[^\s]+)/g;
|
|
1029
|
+
// Regex para detectar rutas internas (empiezan con / pero no son URLs completas)
|
|
1030
|
+
this.internalRouteRegex = /(\s|^)(\/[^\s]*)/g;
|
|
1031
|
+
}
|
|
1032
|
+
/**
|
|
1033
|
+
* Procesa texto para convertir enlaces en elementos <a> clickeables.
|
|
1034
|
+
* Detecta automáticamente URLs externas e internas y las convierte en enlaces.
|
|
1035
|
+
*
|
|
1036
|
+
* @param text - Texto a procesar
|
|
1037
|
+
* @param config - Configuración del procesamiento
|
|
1038
|
+
* @returns SafeHtml con enlaces procesados o string original
|
|
1039
|
+
*
|
|
1040
|
+
* @example
|
|
1041
|
+
* ```typescript
|
|
1042
|
+
* const result = this.linkProcessor.processLinks(
|
|
1043
|
+
* 'Visit https://example.com or /profile',
|
|
1044
|
+
* {
|
|
1045
|
+
* openExternalInNewTab: true,
|
|
1046
|
+
* openInternalInNewTab: false,
|
|
1047
|
+
* linkClass: 'custom-link'
|
|
1048
|
+
* }
|
|
1049
|
+
* );
|
|
1050
|
+
* ```
|
|
1051
|
+
*/
|
|
1052
|
+
processLinks(text, config = {}) {
|
|
1053
|
+
if (!text)
|
|
1054
|
+
return '';
|
|
1055
|
+
const { openExternalInNewTab = true, openInternalInNewTab = false, linkClass = 'processed-link', externalLinkClass = 'external-link', internalLinkClass = 'internal-link', } = config;
|
|
1056
|
+
let hasLinks = false;
|
|
1057
|
+
let processedText = text;
|
|
1058
|
+
// Procesar URLs externas primero
|
|
1059
|
+
if (this.urlRegex.test(text)) {
|
|
1060
|
+
hasLinks = true;
|
|
1061
|
+
this.urlRegex.lastIndex = 0; // Reset regex
|
|
1062
|
+
processedText = processedText.replace(this.urlRegex, url => {
|
|
1063
|
+
const target = openExternalInNewTab ? ' target="_blank" rel="noopener noreferrer"' : '';
|
|
1064
|
+
const classes = `${linkClass} ${externalLinkClass}`.trim();
|
|
1065
|
+
return `<a href="${url}"${target} class="${classes}">${url}</a>`;
|
|
1066
|
+
});
|
|
1067
|
+
}
|
|
1068
|
+
// Procesar rutas internas después
|
|
1069
|
+
if (this.internalRouteRegex.test(processedText)) {
|
|
1070
|
+
hasLinks = true;
|
|
1071
|
+
this.internalRouteRegex.lastIndex = 0; // Reset regex
|
|
1072
|
+
processedText = processedText.replace(this.internalRouteRegex, (match, prefix, route) => {
|
|
1073
|
+
// Solo procesar si no está ya dentro de un enlace
|
|
1074
|
+
if (processedText.indexOf(`href="${route}"`) === -1) {
|
|
1075
|
+
const target = openInternalInNewTab ? ' target="_blank"' : '';
|
|
1076
|
+
const classes = `${linkClass} ${internalLinkClass}`.trim();
|
|
1077
|
+
return `${prefix}<a href="${route}"${target} class="${classes}">${route}</a>`;
|
|
1078
|
+
}
|
|
1079
|
+
return match;
|
|
1080
|
+
});
|
|
1081
|
+
}
|
|
1082
|
+
// Si hay enlaces, sanitizar el HTML
|
|
1083
|
+
if (hasLinks) {
|
|
1084
|
+
return this.sanitizer.bypassSecurityTrustHtml(processedText);
|
|
1085
|
+
}
|
|
1086
|
+
return text;
|
|
1087
|
+
}
|
|
1088
|
+
/**
|
|
1089
|
+
* Detecta si un texto contiene enlaces (URLs o rutas internas).
|
|
1090
|
+
*
|
|
1091
|
+
* @param text - Texto a analizar
|
|
1092
|
+
* @returns true si contiene enlaces
|
|
1093
|
+
*
|
|
1094
|
+
* @example
|
|
1095
|
+
* ```typescript
|
|
1096
|
+
* const hasLinks = this.linkProcessor.hasLinks('Visit https://example.com');
|
|
1097
|
+
* // Returns: true
|
|
1098
|
+
* ```
|
|
1099
|
+
*/
|
|
1100
|
+
hasLinks(text) {
|
|
1101
|
+
if (!text)
|
|
1102
|
+
return false;
|
|
1103
|
+
// Reset regex indices
|
|
1104
|
+
this.urlRegex.lastIndex = 0;
|
|
1105
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
1106
|
+
return this.urlRegex.test(text) || this.internalRouteRegex.test(text);
|
|
1107
|
+
}
|
|
1108
|
+
/**
|
|
1109
|
+
* Extrae todos los enlaces de un texto.
|
|
1110
|
+
*
|
|
1111
|
+
* @param text - Texto a analizar
|
|
1112
|
+
* @returns Array de enlaces encontrados con su tipo
|
|
1113
|
+
*
|
|
1114
|
+
* @example
|
|
1115
|
+
* ```typescript
|
|
1116
|
+
* const links = this.linkProcessor.extractLinks('Visit https://example.com or /profile');
|
|
1117
|
+
* // Returns: [
|
|
1118
|
+
* // { url: 'https://example.com', type: 'external' },
|
|
1119
|
+
* // { url: '/profile', type: 'internal' }
|
|
1120
|
+
* // ]
|
|
1121
|
+
* ```
|
|
1122
|
+
*/
|
|
1123
|
+
extractLinks(text) {
|
|
1124
|
+
if (!text)
|
|
1125
|
+
return [];
|
|
1126
|
+
const links = [];
|
|
1127
|
+
// Reset regex indices
|
|
1128
|
+
this.urlRegex.lastIndex = 0;
|
|
1129
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
1130
|
+
// Extraer URLs externas
|
|
1131
|
+
let match;
|
|
1132
|
+
while ((match = this.urlRegex.exec(text)) !== null) {
|
|
1133
|
+
links.push({ url: match[1], type: 'external' });
|
|
1134
|
+
}
|
|
1135
|
+
// Extraer rutas internas
|
|
1136
|
+
while ((match = this.internalRouteRegex.exec(text)) !== null) {
|
|
1137
|
+
links.push({ url: match[2], type: 'internal' });
|
|
1138
|
+
}
|
|
1139
|
+
return links;
|
|
1140
|
+
}
|
|
1141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessorService, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1142
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessorService, providedIn: 'root' }); }
|
|
1143
|
+
}
|
|
1144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessorService, decorators: [{
|
|
1145
|
+
type: Injectable,
|
|
1146
|
+
args: [{
|
|
1147
|
+
providedIn: 'root',
|
|
1148
|
+
}]
|
|
1149
|
+
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }] });
|
|
1150
|
+
|
|
1151
|
+
/**
|
|
1152
|
+
* ProcessLinksPipe - Pipe para procesar texto y convertir URLs en enlaces clickeables.
|
|
1153
|
+
*
|
|
1154
|
+
* Este pipe standalone detecta automáticamente URLs externas (http/https) y rutas internas
|
|
1155
|
+
* (que empiezan con /) y las convierte en elementos HTML anchor con los atributos apropiados.
|
|
1156
|
+
*
|
|
1157
|
+
* @example Uso básico:
|
|
1158
|
+
* ```html
|
|
1159
|
+
* <div [innerHTML]="'Visit https://example.com or go to /profile' | processLinks"></div>
|
|
1160
|
+
* ```
|
|
1161
|
+
*
|
|
1162
|
+
* @example Con configuración personalizada:
|
|
1163
|
+
* ```html
|
|
1164
|
+
* <div [innerHTML]="text | processLinks:linkConfig"></div>
|
|
1165
|
+
* ```
|
|
1166
|
+
*
|
|
1167
|
+
* @example En TypeScript:
|
|
1168
|
+
* ```typescript
|
|
1169
|
+
* export class MyComponent {
|
|
1170
|
+
* linkConfig: LinkProcessorConfig = {
|
|
1171
|
+
* openExternalInNewTab: true,
|
|
1172
|
+
* openInternalInNewTab: false,
|
|
1173
|
+
* linkClass: 'my-link',
|
|
1174
|
+
* externalLinkClass: 'external',
|
|
1175
|
+
* internalLinkClass: 'internal'
|
|
1176
|
+
* };
|
|
1177
|
+
* }
|
|
1178
|
+
* ```
|
|
1179
|
+
*/
|
|
1180
|
+
class ProcessLinksPipe {
|
|
1181
|
+
constructor() {
|
|
1182
|
+
this.linkProcessor = inject(LinkProcessorService);
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* Transforma texto procesando URLs y rutas internas para convertirlas en enlaces.
|
|
1186
|
+
*
|
|
1187
|
+
* @param value - El texto a procesar
|
|
1188
|
+
* @param config - Configuración opcional para el procesamiento de enlaces
|
|
1189
|
+
* @returns SafeHtml con enlaces procesados o string original si no hay enlaces
|
|
1190
|
+
*
|
|
1191
|
+
* @example
|
|
1192
|
+
* ```html
|
|
1193
|
+
* <!-- Uso básico -->
|
|
1194
|
+
* <p [innerHTML]="'Check out https://angular.io' | processLinks"></p>
|
|
1195
|
+
*
|
|
1196
|
+
* <!-- Con configuración -->
|
|
1197
|
+
* <p [innerHTML]="message | processLinks:{ openExternalInNewTab: false }"></p>
|
|
1198
|
+
* ```
|
|
1199
|
+
*/
|
|
1200
|
+
transform(value, config) {
|
|
1201
|
+
if (!value) {
|
|
1202
|
+
return '';
|
|
1203
|
+
}
|
|
1204
|
+
return this.linkProcessor.processLinks(value, config);
|
|
1205
|
+
}
|
|
1206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1207
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, isStandalone: true, name: "processLinks" }); }
|
|
1208
|
+
}
|
|
1209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, decorators: [{
|
|
1210
|
+
type: Pipe,
|
|
1211
|
+
args: [{
|
|
1212
|
+
name: 'processLinks',
|
|
1213
|
+
standalone: true,
|
|
1214
|
+
}]
|
|
1215
|
+
}] });
|
|
1216
|
+
|
|
1006
1217
|
/**
|
|
1007
1218
|
* Create a reactive content observable from a content key.
|
|
1008
1219
|
* This is the primary utility for the `fromContent` pattern with unified support
|
|
@@ -1278,7 +1489,7 @@ class LangService {
|
|
|
1278
1489
|
}
|
|
1279
1490
|
/**
|
|
1280
1491
|
* Observable that emits the current language whenever it changes.
|
|
1281
|
-
* Use this to
|
|
1492
|
+
* Use this to subscribe to language changes in components.
|
|
1282
1493
|
*/
|
|
1283
1494
|
get currentLang$() {
|
|
1284
1495
|
return this.selectedLang.asObservable().pipe(distinctUntilChanged());
|
|
@@ -1290,8 +1501,8 @@ class LangService {
|
|
|
1290
1501
|
return this.selectedLang.value;
|
|
1291
1502
|
}
|
|
1292
1503
|
/**
|
|
1293
|
-
* Set the current language and persist it to
|
|
1294
|
-
* This will trigger updates in all
|
|
1504
|
+
* Set the current language and persist it to localStorage.
|
|
1505
|
+
* This will trigger updates in all reactive content subscriptions.
|
|
1295
1506
|
*
|
|
1296
1507
|
* @param lang - The language to set
|
|
1297
1508
|
*/
|
|
@@ -1300,17 +1511,15 @@ class LangService {
|
|
|
1300
1511
|
LocalStorageService.set(LANG, lang);
|
|
1301
1512
|
}
|
|
1302
1513
|
/**
|
|
1303
|
-
* Get
|
|
1514
|
+
* Get content for a component class and key (legacy method).
|
|
1304
1515
|
*
|
|
1305
|
-
* @param className - The component class name
|
|
1306
|
-
* @returns The language text object for the current language
|
|
1307
1516
|
* @deprecated Use getText() or getContent() for better type safety
|
|
1308
1517
|
*/
|
|
1309
1518
|
Text(className) {
|
|
1310
|
-
return this.content[className]
|
|
1519
|
+
return this.content[className].Content[this.selectedLang.value];
|
|
1311
1520
|
}
|
|
1312
1521
|
/**
|
|
1313
|
-
* Get a
|
|
1522
|
+
* Get a single content string synchronously for the current language.
|
|
1314
1523
|
*
|
|
1315
1524
|
* @param className - The component class name
|
|
1316
1525
|
* @param key - The text key
|
|
@@ -1749,6 +1958,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1749
1958
|
* }"></val-text>
|
|
1750
1959
|
* ```
|
|
1751
1960
|
*
|
|
1961
|
+
* @example With automatic link processing:
|
|
1962
|
+
* ```html
|
|
1963
|
+
* <val-text [props]="{
|
|
1964
|
+
* content: 'Visit https://example.com or go to /profile for more info',
|
|
1965
|
+
* processLinks: true,
|
|
1966
|
+
* linkConfig: {
|
|
1967
|
+
* openExternalInNewTab: true,
|
|
1968
|
+
* openInternalInNewTab: false,
|
|
1969
|
+
* linkClass: 'custom-link',
|
|
1970
|
+
* externalLinkClass: 'external',
|
|
1971
|
+
* internalLinkClass: 'internal'
|
|
1972
|
+
* },
|
|
1973
|
+
* color: 'primary',
|
|
1974
|
+
* size: 'medium'
|
|
1975
|
+
* }"></val-text>
|
|
1976
|
+
* ```
|
|
1977
|
+
*
|
|
1752
1978
|
* @example Using ContentService helper:
|
|
1753
1979
|
* ```typescript
|
|
1754
1980
|
* // In component
|
|
@@ -1768,8 +1994,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1768
1994
|
* @input props: TextMetadata - Configuration for the text (content, styling, and reactive content options)
|
|
1769
1995
|
*/
|
|
1770
1996
|
class TextComponent {
|
|
1771
|
-
constructor(contentService) {
|
|
1997
|
+
constructor(contentService, linkProcessor) {
|
|
1772
1998
|
this.contentService = contentService;
|
|
1999
|
+
this.linkProcessor = linkProcessor;
|
|
1773
2000
|
this.subscription = new Subscription();
|
|
1774
2001
|
}
|
|
1775
2002
|
ngOnInit() {
|
|
@@ -1813,21 +2040,37 @@ class TextComponent {
|
|
|
1813
2040
|
this.displayContent$ = of(this.props.contentFallback || '');
|
|
1814
2041
|
}
|
|
1815
2042
|
}
|
|
1816
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, deps: [{ token: ContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1817
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2043
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, deps: [{ token: ContentService }, { token: LinkProcessorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2044
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TextComponent, isStandalone: true, selector: "val-text", inputs: { props: "props" }, ngImport: i0, template: `
|
|
1818
2045
|
<ion-text [color]="props.color">
|
|
1819
|
-
|
|
2046
|
+
@if (props.processLinks) {
|
|
2047
|
+
<p
|
|
2048
|
+
[class]="props.size"
|
|
2049
|
+
[class.bold]="props.bold"
|
|
2050
|
+
[innerHTML]="displayContent$ | async | processLinks: props.linkConfig"
|
|
2051
|
+
></p>
|
|
2052
|
+
} @else {
|
|
2053
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
2054
|
+
}
|
|
1820
2055
|
</ion-text>
|
|
1821
|
-
`, isInline: true, styles: ["
|
|
2056
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}:host ::ng-deep .processed-link{color:var(--ion-color-primary, #3880ff);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .3s ease}:host ::ng-deep .processed-link:hover{color:var(--ion-color-primary-shade, #3171e0);text-decoration-thickness:2px}:host ::ng-deep .processed-link:active{color:var(--ion-color-primary-tint, #4c8dff)}:host ::ng-deep .external-link:after{content:\" \\2197\";font-size:.8em;opacity:.7}:host ::ng-deep .internal-link{color:var(--ion-color-secondary, #0cd1e8)}:host ::ng-deep .internal-link:hover{color:var(--ion-color-secondary-shade, #0bb8cc)}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ProcessLinksPipe, name: "processLinks" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1822
2057
|
}
|
|
1823
2058
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, decorators: [{
|
|
1824
2059
|
type: Component,
|
|
1825
|
-
args: [{ selector: 'val-text', standalone: true, imports: [IonText, AsyncPipe], template: `
|
|
2060
|
+
args: [{ selector: 'val-text', standalone: true, imports: [IonText, AsyncPipe, ProcessLinksPipe], template: `
|
|
1826
2061
|
<ion-text [color]="props.color">
|
|
1827
|
-
|
|
2062
|
+
@if (props.processLinks) {
|
|
2063
|
+
<p
|
|
2064
|
+
[class]="props.size"
|
|
2065
|
+
[class.bold]="props.bold"
|
|
2066
|
+
[innerHTML]="displayContent$ | async | processLinks: props.linkConfig"
|
|
2067
|
+
></p>
|
|
2068
|
+
} @else {
|
|
2069
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
2070
|
+
}
|
|
1828
2071
|
</ion-text>
|
|
1829
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["
|
|
1830
|
-
}], ctorParameters: () => [{ type: ContentService }], propDecorators: { props: [{
|
|
2072
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@charset \"UTF-8\";:root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.small{font-size:.75rem;line-height:1.25rem;font-weight:400}.small.bold{font-size:.75rem;line-height:1.25rem;font-weight:700}.medium{font-size:.875rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.medium{font-size:1rem;line-height:1.5rem}}.medium.bold{font-size:.875rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.medium.bold{font-size:1rem;line-height:1.5rem}}.large{font-size:1rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.large{font-size:1.125rem;line-height:1.5rem}}.large.bold{font-size:1rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.large.bold{font-size:1.125rem;line-height:1.5rem}}.xlarge{font-size:1.125rem;line-height:1.5rem;font-weight:400}@media (min-width: 768px){.xlarge{font-size:1.5rem;line-height:2rem}}.xlarge.bold{font-size:1.125rem;line-height:1.5rem;font-weight:700}@media (min-width: 768px){.xlarge.bold{font-size:1.5rem;line-height:2rem}}:host ::ng-deep .processed-link{color:var(--ion-color-primary, #3880ff);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .3s ease}:host ::ng-deep .processed-link:hover{color:var(--ion-color-primary-shade, #3171e0);text-decoration-thickness:2px}:host ::ng-deep .processed-link:active{color:var(--ion-color-primary-tint, #4c8dff)}:host ::ng-deep .external-link:after{content:\" \\2197\";font-size:.8em;opacity:.7}:host ::ng-deep .internal-link{color:var(--ion-color-secondary, #0cd1e8)}:host ::ng-deep .internal-link:hover{color:var(--ion-color-secondary-shade, #0bb8cc)}\n"] }]
|
|
2073
|
+
}], ctorParameters: () => [{ type: ContentService }, { type: LinkProcessorService }], propDecorators: { props: [{
|
|
1831
2074
|
type: Input
|
|
1832
2075
|
}] } });
|
|
1833
2076
|
/**
|
|
@@ -2420,7 +2663,7 @@ class CommentInputComponent {
|
|
|
2420
2663
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2421
2664
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CommentInputComponent, isStandalone: true, selector: "val-comment-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
2422
2665
|
<ion-textarea [formControl]="props.control" [counter]="true" [maxlength]="props.range.max"></ion-textarea>
|
|
2423
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
2666
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
|
|
2424
2667
|
}
|
|
2425
2668
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, decorators: [{
|
|
2426
2669
|
type: Component,
|
|
@@ -2622,7 +2865,7 @@ class DateInputComponent {
|
|
|
2622
2865
|
</ion-datetime>
|
|
2623
2866
|
</ng-template>
|
|
2624
2867
|
</ion-modal>
|
|
2625
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
2868
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonDatetimeButton, selector: "ion-datetime-button", inputs: ["color", "datetime", "disabled", "mode"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
|
|
2626
2869
|
}
|
|
2627
2870
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
2628
2871
|
type: Component,
|
|
@@ -2669,7 +2912,7 @@ class EmailInputComponent {
|
|
|
2669
2912
|
constructor() { }
|
|
2670
2913
|
ngOnInit() { }
|
|
2671
2914
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2672
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
2915
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="email" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
2673
2916
|
}
|
|
2674
2917
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
2675
2918
|
type: Component,
|
|
@@ -2923,7 +3166,7 @@ class HourInputComponent {
|
|
|
2923
3166
|
constructor() { }
|
|
2924
3167
|
ngOnInit() { }
|
|
2925
3168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2926
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HourInputComponent, isStandalone: true, selector: "val-hour-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
3169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HourInputComponent, isStandalone: true, selector: "val-hour-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }] }); }
|
|
2927
3170
|
}
|
|
2928
3171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, decorators: [{
|
|
2929
3172
|
type: Component,
|
|
@@ -3437,7 +3680,7 @@ class NumberInputComponent {
|
|
|
3437
3680
|
}
|
|
3438
3681
|
}
|
|
3439
3682
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3440
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NumberInputComponent, isStandalone: true, selector: "val-number-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
3683
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NumberInputComponent, isStandalone: true, selector: "val-number-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
3441
3684
|
}
|
|
3442
3685
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
3443
3686
|
type: Component,
|
|
@@ -3474,7 +3717,7 @@ class PasswordInputComponent {
|
|
|
3474
3717
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
3475
3718
|
</ion-button>
|
|
3476
3719
|
</div>
|
|
3477
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
3720
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.input-container{display:flex;align-items:center;flex-direction:row}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
3478
3721
|
}
|
|
3479
3722
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
3480
3723
|
type: Component,
|
|
@@ -3530,7 +3773,7 @@ class PinInputComponent {
|
|
|
3530
3773
|
<div class="otp">
|
|
3531
3774
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
3532
3775
|
</div>
|
|
3533
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$
|
|
3776
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$3.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
|
|
3534
3777
|
}
|
|
3535
3778
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinInputComponent, decorators: [{
|
|
3536
3779
|
type: Component,
|
|
@@ -3766,7 +4009,7 @@ class RadioInputComponent {
|
|
|
3766
4009
|
<br />
|
|
3767
4010
|
</ng-container>
|
|
3768
4011
|
</ion-radio-group>
|
|
3769
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
4012
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }] }); }
|
|
3770
4013
|
}
|
|
3771
4014
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioInputComponent, decorators: [{
|
|
3772
4015
|
type: Component,
|
|
@@ -3898,7 +4141,7 @@ class SearchSelectorComponent {
|
|
|
3898
4141
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
3899
4142
|
}
|
|
3900
4143
|
</ion-select>
|
|
3901
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
4144
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }] }); }
|
|
3902
4145
|
}
|
|
3903
4146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchSelectorComponent, decorators: [{
|
|
3904
4147
|
type: Component,
|
|
@@ -4237,7 +4480,7 @@ class SelectSearchComponent {
|
|
|
4237
4480
|
</ion-content>
|
|
4238
4481
|
</ng-template>
|
|
4239
4482
|
</ion-modal>
|
|
4240
|
-
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$
|
|
4483
|
+
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
4241
4484
|
}
|
|
4242
4485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectSearchComponent, decorators: [{
|
|
4243
4486
|
type: Component,
|
|
@@ -4323,7 +4566,7 @@ class TextInputComponent {
|
|
|
4323
4566
|
}
|
|
4324
4567
|
}
|
|
4325
4568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4326
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextInputComponent, isStandalone: true, selector: "val-text-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="text" [placeholder]="props.placeholder" /> `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
4569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TextInputComponent, isStandalone: true, selector: "val-text-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="text" [placeholder]="props.placeholder" /> `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
4327
4570
|
}
|
|
4328
4571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
4329
4572
|
type: Component,
|
|
@@ -4902,7 +5145,7 @@ class FormComponent {
|
|
|
4902
5145
|
}
|
|
4903
5146
|
return [this.props.actions];
|
|
4904
5147
|
}
|
|
4905
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, deps: [{ token: i1$
|
|
5148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, deps: [{ token: i1$2.FormBuilder }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4906
5149
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormComponent, isStandalone: true, selector: "val-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onInvalid: "onInvalid", onSelectChange: "onSelectChange" }, ngImport: i0, template: `
|
|
4907
5150
|
<div class="container">
|
|
4908
5151
|
<form [formGroup]="form">
|
|
@@ -4968,7 +5211,7 @@ class FormComponent {
|
|
|
4968
5211
|
></val-button-group>
|
|
4969
5212
|
</form>
|
|
4970
5213
|
</div>
|
|
4971
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
5214
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input" }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["props"] }] }); }
|
|
4972
5215
|
}
|
|
4973
5216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, decorators: [{
|
|
4974
5217
|
type: Component,
|
|
@@ -5059,7 +5302,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5059
5302
|
</form>
|
|
5060
5303
|
</div>
|
|
5061
5304
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143,73,248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255,255,255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"] }]
|
|
5062
|
-
}], ctorParameters: () => [{ type: i1$
|
|
5305
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i0.ElementRef }], propDecorators: { props: [{
|
|
5063
5306
|
type: Input
|
|
5064
5307
|
}], onSubmit: [{
|
|
5065
5308
|
type: Output
|
|
@@ -6034,8 +6277,18 @@ class CustomContentDemoComponent {
|
|
|
6034
6277
|
this.saveTextSync = this.content.getText('save');
|
|
6035
6278
|
// Tu contenido global personalizado
|
|
6036
6279
|
this.dashboardTextSync = this.content.getText('dashboard');
|
|
6037
|
-
// Contenido específico del componente
|
|
6038
|
-
|
|
6280
|
+
// Contenido específico del componente - SOLUCIÓN TEMPORAL
|
|
6281
|
+
// En lugar de usar getText, acceder directamente
|
|
6282
|
+
try {
|
|
6283
|
+
const langService = this.content.langService;
|
|
6284
|
+
const languageContent = langService.content['Language'];
|
|
6285
|
+
const currentLang = langService.selectedLang?.value || 'es';
|
|
6286
|
+
const classContent = languageContent?.Content?.[currentLang];
|
|
6287
|
+
this.languageDescSync = classContent?.['description'] || 'No encontrado';
|
|
6288
|
+
}
|
|
6289
|
+
catch (error) {
|
|
6290
|
+
this.languageDescSync = `Error: ${error}`;
|
|
6291
|
+
}
|
|
6039
6292
|
}
|
|
6040
6293
|
diagnoseConfiguration() {
|
|
6041
6294
|
console.log('=== DIAGNÓSTICO DE CONFIGURACIÓN ===');
|
|
@@ -6090,6 +6343,14 @@ class CustomContentDemoComponent {
|
|
|
6090
6343
|
try {
|
|
6091
6344
|
const spanishText = this.content.getText('Language', 'spanish');
|
|
6092
6345
|
console.log('✅ Componente Language (spanish):', spanishText);
|
|
6346
|
+
// 🔍 Debug paso a paso para spanish
|
|
6347
|
+
const langService = this.content.langService;
|
|
6348
|
+
const languageContent = langService.content['Language'];
|
|
6349
|
+
const currentLang = langService.selectedLang?.value;
|
|
6350
|
+
const classContent = languageContent?.Content[currentLang];
|
|
6351
|
+
console.log('🔍 Debug spanish - currentLang:', currentLang);
|
|
6352
|
+
console.log('🔍 Debug spanish - classContent:', classContent);
|
|
6353
|
+
console.log('🔍 Debug spanish - classContent["spanish"]:', classContent?.['spanish']);
|
|
6093
6354
|
}
|
|
6094
6355
|
catch (error) {
|
|
6095
6356
|
console.log('❌ Error componente Language (spanish):', error);
|
|
@@ -6098,6 +6359,14 @@ class CustomContentDemoComponent {
|
|
|
6098
6359
|
try {
|
|
6099
6360
|
const descriptionText = this.content.getText('Language', 'description');
|
|
6100
6361
|
console.log('✅ Componente Language (description):', descriptionText);
|
|
6362
|
+
// 🔍 Debug paso a paso para description
|
|
6363
|
+
const langService = this.content.langService;
|
|
6364
|
+
const languageContent = langService.content['Language'];
|
|
6365
|
+
const currentLang = langService.selectedLang?.value;
|
|
6366
|
+
const classContent = languageContent?.Content[currentLang];
|
|
6367
|
+
console.log('🔍 Debug description - currentLang:', currentLang);
|
|
6368
|
+
console.log('🔍 Debug description - classContent:', classContent);
|
|
6369
|
+
console.log('🔍 Debug description - classContent["description"]:', classContent?.['description']);
|
|
6101
6370
|
}
|
|
6102
6371
|
catch (error) {
|
|
6103
6372
|
console.log('❌ Error componente Language (description):', error);
|
|
@@ -6235,905 +6504,142 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
6235
6504
|
}] });
|
|
6236
6505
|
|
|
6237
6506
|
/**
|
|
6238
|
-
*
|
|
6239
|
-
*
|
|
6240
|
-
*
|
|
6241
|
-
*
|
|
6242
|
-
*
|
|
6243
|
-
*
|
|
6244
|
-
*
|
|
6245
|
-
*
|
|
6507
|
+
* LinkProcessingExampleComponent - Componente de ejemplo que demuestra el procesamiento automático de enlaces.
|
|
6508
|
+
*
|
|
6509
|
+
* Este componente muestra diferentes casos de uso para el procesamiento automático de enlaces
|
|
6510
|
+
* en el componente val-text, incluyendo enlaces externos, rutas internas y configuraciones personalizadas.
|
|
6511
|
+
*
|
|
6512
|
+
* @example Uso en template:
|
|
6513
|
+
* ```html
|
|
6514
|
+
* <val-link-processing-example></val-link-processing-example>
|
|
6515
|
+
* ```
|
|
6246
6516
|
*/
|
|
6247
|
-
class
|
|
6517
|
+
class LinkProcessingExampleComponent {
|
|
6248
6518
|
constructor() {
|
|
6249
|
-
this.
|
|
6250
|
-
|
|
6251
|
-
// Form data
|
|
6252
|
-
this.formData = {
|
|
6253
|
-
name: '',
|
|
6254
|
-
email: '',
|
|
6255
|
-
message: '',
|
|
6256
|
-
};
|
|
6257
|
-
// Action state
|
|
6258
|
-
this.actionPerformed = false;
|
|
6259
|
-
// Component-specific content properties
|
|
6260
|
-
this.titleProps = {
|
|
6261
|
-
contentKey: 'title',
|
|
6262
|
-
contentClass: 'GlobalContentExample',
|
|
6263
|
-
contentFallback: 'Global Content Example',
|
|
6264
|
-
color: 'primary',
|
|
6265
|
-
size: 'xlarge',
|
|
6266
|
-
bold: true,
|
|
6267
|
-
};
|
|
6268
|
-
this.languageLabel = {
|
|
6269
|
-
contentKey: 'languageLabel',
|
|
6270
|
-
contentClass: 'GlobalContentExample',
|
|
6271
|
-
contentFallback: 'Language:',
|
|
6272
|
-
color: 'medium',
|
|
6519
|
+
this.basicTextProps = {
|
|
6520
|
+
content: 'Este texto contiene https://angular.io y /dashboard pero no se procesan como enlaces.',
|
|
6273
6521
|
size: 'medium',
|
|
6274
|
-
|
|
6522
|
+
color: 'dark',
|
|
6523
|
+
bold: false,
|
|
6524
|
+
processLinks: false,
|
|
6275
6525
|
};
|
|
6276
|
-
this.
|
|
6277
|
-
|
|
6278
|
-
|
|
6279
|
-
contentFallback: 'This example demonstrates global and component-specific content.',
|
|
6526
|
+
this.basicLinksProps = {
|
|
6527
|
+
content: 'Visita https://angular.io para documentación o ve a /dashboard para el panel principal.',
|
|
6528
|
+
size: 'medium',
|
|
6280
6529
|
color: 'dark',
|
|
6530
|
+
bold: false,
|
|
6531
|
+
processLinks: true,
|
|
6532
|
+
};
|
|
6533
|
+
this.customLinksProps = {
|
|
6534
|
+
content: 'Enlaces personalizados: https://github.com/angular/angular y /profile/settings',
|
|
6281
6535
|
size: 'medium',
|
|
6536
|
+
color: 'dark',
|
|
6282
6537
|
bold: false,
|
|
6538
|
+
processLinks: true,
|
|
6539
|
+
linkConfig: {
|
|
6540
|
+
openExternalInNewTab: true,
|
|
6541
|
+
openInternalInNewTab: false,
|
|
6542
|
+
linkClass: 'custom-link-style',
|
|
6543
|
+
externalLinkClass: 'external-custom',
|
|
6544
|
+
internalLinkClass: 'internal-custom',
|
|
6545
|
+
},
|
|
6283
6546
|
};
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6297
|
-
this.filterButton$ = this.content.fromContent({ key: 'filter' });
|
|
6298
|
-
this.sortButton$ = this.content.fromContent({ key: 'sort' });
|
|
6299
|
-
this.refreshButton$ = this.content.fromContent({ key: 'refresh' });
|
|
6300
|
-
// Global state content
|
|
6301
|
-
this.loadingText$ = this.content.fromContent({ key: 'loading' });
|
|
6302
|
-
this.successText$ = this.content.fromContent({ key: 'success' });
|
|
6303
|
-
this.errorText$ = this.content.fromContent({ key: 'error' });
|
|
6304
|
-
this.warningText$ = this.content.fromContent({ key: 'warning' });
|
|
6305
|
-
this.infoText$ = this.content.fromContent({ key: 'info' });
|
|
6306
|
-
this.noDataText$ = this.content.fromContent({ key: 'noData' });
|
|
6307
|
-
// Global form content
|
|
6308
|
-
this.requiredText$ = this.content.fromContent({ key: 'required' });
|
|
6309
|
-
this.optionalText$ = this.content.fromContent({ key: 'optional' });
|
|
6310
|
-
this.searchPlaceholder$ = this.content.fromContent({ key: 'searchPlaceholder' });
|
|
6311
|
-
// Global confirmation content with interpolation
|
|
6312
|
-
this.deleteConfirmation$ = this.content.fromContentWithInterpolation({
|
|
6313
|
-
key: 'deleteConfirmation',
|
|
6314
|
-
interpolation: { itemName: 'este registro' },
|
|
6315
|
-
});
|
|
6316
|
-
this.areYouSureText$ = this.content.fromContent({ key: 'areYouSure' });
|
|
6317
|
-
this.unsavedChangesText$ = this.content.fromContent({ key: 'unsavedChanges' });
|
|
6318
|
-
}
|
|
6319
|
-
/**
|
|
6320
|
-
* Set language
|
|
6321
|
-
*/
|
|
6322
|
-
setLanguage(lang) {
|
|
6323
|
-
this.content.setLang(lang);
|
|
6324
|
-
}
|
|
6325
|
-
/**
|
|
6326
|
-
* Perform an action to demonstrate status messages
|
|
6327
|
-
*/
|
|
6328
|
-
performAction() {
|
|
6329
|
-
this.actionPerformed = true;
|
|
6330
|
-
setTimeout(() => {
|
|
6331
|
-
this.actionPerformed = false;
|
|
6332
|
-
}, 3000);
|
|
6333
|
-
}
|
|
6334
|
-
/**
|
|
6335
|
-
* Cancel action
|
|
6336
|
-
*/
|
|
6337
|
-
cancelAction() {
|
|
6338
|
-
this.formData = { name: '', email: '', message: '' };
|
|
6339
|
-
this.actionPerformed = false;
|
|
6340
|
-
}
|
|
6341
|
-
/**
|
|
6342
|
-
* Example of synchronous global content access
|
|
6343
|
-
*/
|
|
6344
|
-
getOkTextSync() {
|
|
6345
|
-
return this.content.getGlobalText('ok');
|
|
6346
|
-
}
|
|
6347
|
-
/**
|
|
6348
|
-
* Example of synchronous global content access using getText
|
|
6349
|
-
*/
|
|
6350
|
-
getCancelTextSync() {
|
|
6351
|
-
return this.content.getText('cancel');
|
|
6352
|
-
}
|
|
6353
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobalContentExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6354
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GlobalContentExampleComponent, isStandalone: true, selector: "val-global-content-example", ngImport: i0, template: `
|
|
6355
|
-
<ion-card>
|
|
6356
|
-
<ion-card-header>
|
|
6357
|
-
<ion-card-title>
|
|
6358
|
-
<val-text [props]="titleProps"></val-text>
|
|
6359
|
-
</ion-card-title>
|
|
6360
|
-
</ion-card-header>
|
|
6361
|
-
|
|
6362
|
-
<ion-card-content>
|
|
6363
|
-
<!-- Language switcher -->
|
|
6364
|
-
<div class="language-section">
|
|
6365
|
-
<val-text [props]="languageLabel"></val-text>
|
|
6366
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('es')"> Español </ion-button>
|
|
6367
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('en')"> English </ion-button>
|
|
6368
|
-
</div>
|
|
6369
|
-
|
|
6370
|
-
<div class="divider"></div>
|
|
6371
|
-
|
|
6372
|
-
<!-- Global buttons demonstration -->
|
|
6373
|
-
<div class="section">
|
|
6374
|
-
<h3>Global Buttons</h3>
|
|
6375
|
-
<div class="button-grid">
|
|
6376
|
-
<ion-button color="primary">{{ saveButton$ | async }}</ion-button>
|
|
6377
|
-
<ion-button color="secondary">{{ editButton$ | async }}</ion-button>
|
|
6378
|
-
<ion-button color="danger">{{ deleteButton$ | async }}</ion-button>
|
|
6379
|
-
<ion-button fill="outline">{{ cancelButton$ | async }}</ion-button>
|
|
6380
|
-
<ion-button fill="outline">{{ backButton$ | async }}</ion-button>
|
|
6381
|
-
<ion-button fill="outline">{{ nextButton$ | async }}</ion-button>
|
|
6382
|
-
<ion-button color="success">{{ okButton$ | async }}</ion-button>
|
|
6383
|
-
<ion-button fill="clear">{{ closeButton$ | async }}</ion-button>
|
|
6384
|
-
</div>
|
|
6385
|
-
</div>
|
|
6386
|
-
|
|
6387
|
-
<div class="divider"></div>
|
|
6388
|
-
|
|
6389
|
-
<!-- Global actions demonstration -->
|
|
6390
|
-
<div class="section">
|
|
6391
|
-
<h3>Global Actions</h3>
|
|
6392
|
-
<div class="button-grid">
|
|
6393
|
-
<ion-button size="small">{{ addButton$ | async }}</ion-button>
|
|
6394
|
-
<ion-button size="small">{{ removeButton$ | async }}</ion-button>
|
|
6395
|
-
<ion-button size="small">{{ searchButton$ | async }}</ion-button>
|
|
6396
|
-
<ion-button size="small">{{ filterButton$ | async }}</ion-button>
|
|
6397
|
-
<ion-button size="small">{{ sortButton$ | async }}</ion-button>
|
|
6398
|
-
<ion-button size="small">{{ refreshButton$ | async }}</ion-button>
|
|
6399
|
-
</div>
|
|
6400
|
-
</div>
|
|
6401
|
-
|
|
6402
|
-
<div class="divider"></div>
|
|
6403
|
-
|
|
6404
|
-
<!-- Global states demonstration -->
|
|
6405
|
-
<div class="section">
|
|
6406
|
-
<h3>Global States</h3>
|
|
6407
|
-
<div class="state-messages">
|
|
6408
|
-
<div class="state-item loading">
|
|
6409
|
-
<val-text
|
|
6410
|
-
[props]="{ content: loadingText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6411
|
-
></val-text>
|
|
6412
|
-
</div>
|
|
6413
|
-
<div class="state-item success">
|
|
6414
|
-
<val-text
|
|
6415
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6416
|
-
></val-text>
|
|
6417
|
-
</div>
|
|
6418
|
-
<div class="state-item error">
|
|
6419
|
-
<val-text
|
|
6420
|
-
[props]="{ content: errorText$ | async, color: 'danger', size: 'small', bold: false }"
|
|
6421
|
-
></val-text>
|
|
6422
|
-
</div>
|
|
6423
|
-
<div class="state-item warning">
|
|
6424
|
-
<val-text
|
|
6425
|
-
[props]="{ content: warningText$ | async, color: 'warning', size: 'small', bold: false }"
|
|
6426
|
-
></val-text>
|
|
6427
|
-
</div>
|
|
6428
|
-
<div class="state-item info">
|
|
6429
|
-
<val-text
|
|
6430
|
-
[props]="{ content: infoText$ | async, color: 'primary', size: 'small', bold: false }"
|
|
6431
|
-
></val-text>
|
|
6432
|
-
</div>
|
|
6433
|
-
<div class="state-item no-data">
|
|
6434
|
-
<val-text
|
|
6435
|
-
[props]="{ content: noDataText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6436
|
-
></val-text>
|
|
6437
|
-
</div>
|
|
6438
|
-
</div>
|
|
6439
|
-
</div>
|
|
6440
|
-
|
|
6441
|
-
<div class="divider"></div>
|
|
6442
|
-
|
|
6443
|
-
<!-- Form with global placeholders and labels -->
|
|
6444
|
-
<div class="section">
|
|
6445
|
-
<h3>Form with Global Content</h3>
|
|
6446
|
-
<form class="example-form">
|
|
6447
|
-
<ion-item>
|
|
6448
|
-
<ion-label position="stacked">Name ({{ requiredText$ | async }})</ion-label>
|
|
6449
|
-
<ion-input [(ngModel)]="formData.name" [placeholder]="'Enter your name' + '...'" name="name"> </ion-input>
|
|
6450
|
-
</ion-item>
|
|
6451
|
-
|
|
6452
|
-
<ion-item>
|
|
6453
|
-
<ion-label position="stacked">Email ({{ optionalText$ | async }})</ion-label>
|
|
6454
|
-
<ion-input [(ngModel)]="formData.email" [placeholder]="'Enter your email' + '...'" name="email">
|
|
6455
|
-
</ion-input>
|
|
6456
|
-
</ion-item>
|
|
6457
|
-
|
|
6458
|
-
<ion-item>
|
|
6459
|
-
<ion-label position="stacked">Message</ion-label>
|
|
6460
|
-
<ion-textarea [(ngModel)]="formData.message" [placeholder]="searchPlaceholder$ | async" name="message">
|
|
6461
|
-
</ion-textarea>
|
|
6462
|
-
</ion-item>
|
|
6463
|
-
</form>
|
|
6464
|
-
</div>
|
|
6465
|
-
|
|
6466
|
-
<div class="divider"></div>
|
|
6467
|
-
|
|
6468
|
-
<!-- Global confirmations with interpolation -->
|
|
6469
|
-
<div class="section">
|
|
6470
|
-
<h3>Confirmations with Interpolation</h3>
|
|
6471
|
-
<div class="confirmation-examples">
|
|
6472
|
-
<p><strong>Delete Confirmation:</strong></p>
|
|
6473
|
-
<val-text
|
|
6474
|
-
[props]="{ content: deleteConfirmation$ | async, color: 'danger', size: 'medium', bold: false }"
|
|
6475
|
-
></val-text>
|
|
6476
|
-
|
|
6477
|
-
<br /><br />
|
|
6478
|
-
<p><strong>General Confirmation:</strong></p>
|
|
6479
|
-
<val-text
|
|
6480
|
-
[props]="{ content: areYouSureText$ | async, color: 'warning', size: 'medium', bold: false }"
|
|
6481
|
-
></val-text>
|
|
6482
|
-
|
|
6483
|
-
<br /><br />
|
|
6484
|
-
<p><strong>Unsaved Changes:</strong></p>
|
|
6485
|
-
<val-text
|
|
6486
|
-
[props]="{ content: unsavedChangesText$ | async, color: 'medium', size: 'medium', bold: false }"
|
|
6487
|
-
></val-text>
|
|
6488
|
-
</div>
|
|
6489
|
-
</div>
|
|
6490
|
-
|
|
6491
|
-
<div class="divider"></div>
|
|
6492
|
-
|
|
6493
|
-
<!-- Mixed content: Global + Component specific -->
|
|
6494
|
-
<div class="section">
|
|
6495
|
-
<h3>Mixed Content Example</h3>
|
|
6496
|
-
<div class="mixed-content">
|
|
6497
|
-
<!-- Component-specific content -->
|
|
6498
|
-
<val-text [props]="componentDescriptionProps"></val-text>
|
|
6499
|
-
|
|
6500
|
-
<br /><br />
|
|
6501
|
-
|
|
6502
|
-
<!-- Action buttons mixing global and component content -->
|
|
6503
|
-
<div class="action-buttons">
|
|
6504
|
-
<ion-button color="primary" (click)="performAction()">
|
|
6505
|
-
{{ saveButton$ | async }}
|
|
6506
|
-
</ion-button>
|
|
6507
|
-
<ion-button fill="outline" (click)="cancelAction()">
|
|
6508
|
-
{{ cancelButton$ | async }}
|
|
6509
|
-
</ion-button>
|
|
6510
|
-
</div>
|
|
6511
|
-
|
|
6512
|
-
<!-- Status message using global content -->
|
|
6513
|
-
<div *ngIf="actionPerformed" class="status-message">
|
|
6514
|
-
<val-text
|
|
6515
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6516
|
-
></val-text>
|
|
6517
|
-
</div>
|
|
6518
|
-
</div>
|
|
6519
|
-
</div>
|
|
6520
|
-
|
|
6521
|
-
<!-- Demo of synchronous global content access -->
|
|
6522
|
-
<div class="section">
|
|
6523
|
-
<h3>Synchronous Access Example</h3>
|
|
6524
|
-
<p>
|
|
6525
|
-
OK button text (sync): <strong>{{ getOkTextSync() }}</strong>
|
|
6526
|
-
</p>
|
|
6527
|
-
<p>
|
|
6528
|
-
Cancel button text (sync): <strong>{{ getCancelTextSync() }}</strong>
|
|
6529
|
-
</p>
|
|
6530
|
-
</div>
|
|
6531
|
-
</ion-card-content>
|
|
6532
|
-
</ion-card>
|
|
6533
|
-
`, isInline: true, styles: [".language-section{display:flex;align-items:center;gap:8px;margin-bottom:16px}.divider{height:1px;background-color:var(--ion-color-light);margin:16px 0}.section{margin-bottom:16px}.section h3{margin:0 0 12px;color:var(--ion-color-primary)}.button-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.state-messages{display:flex;flex-direction:column;gap:8px}.state-item{padding:8px;border-radius:4px;background-color:var(--ion-color-light-shade)}.state-item.loading{background-color:var(--ion-color-medium-tint)}.state-item.success{background-color:var(--ion-color-success-tint)}.state-item.error{background-color:var(--ion-color-danger-tint)}.state-item.warning{background-color:var(--ion-color-warning-tint)}.state-item.info{background-color:var(--ion-color-primary-tint)}.example-form{margin-top:12px}.confirmation-examples{padding:12px;background-color:var(--ion-color-light-tint);border-radius:8px}.mixed-content{padding:12px;background-color:var(--ion-color-light-shade);border-radius:8px}.action-buttons{display:flex;gap:8px;margin:12px 0}.status-message{padding:8px;background-color:var(--ion-color-success-tint);border-radius:4px;margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
|
|
6534
|
-
}
|
|
6535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobalContentExampleComponent, decorators: [{
|
|
6536
|
-
type: Component,
|
|
6537
|
-
args: [{ selector: 'val-global-content-example', standalone: true, imports: [
|
|
6538
|
-
CommonModule,
|
|
6539
|
-
FormsModule,
|
|
6540
|
-
IonCard,
|
|
6541
|
-
IonCardContent,
|
|
6542
|
-
IonCardHeader,
|
|
6543
|
-
IonCardTitle,
|
|
6544
|
-
IonButton,
|
|
6545
|
-
IonItem,
|
|
6546
|
-
IonLabel,
|
|
6547
|
-
IonInput,
|
|
6548
|
-
IonTextarea,
|
|
6549
|
-
TextComponent,
|
|
6550
|
-
], template: `
|
|
6551
|
-
<ion-card>
|
|
6552
|
-
<ion-card-header>
|
|
6553
|
-
<ion-card-title>
|
|
6554
|
-
<val-text [props]="titleProps"></val-text>
|
|
6555
|
-
</ion-card-title>
|
|
6556
|
-
</ion-card-header>
|
|
6557
|
-
|
|
6558
|
-
<ion-card-content>
|
|
6559
|
-
<!-- Language switcher -->
|
|
6560
|
-
<div class="language-section">
|
|
6561
|
-
<val-text [props]="languageLabel"></val-text>
|
|
6562
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('es')"> Español </ion-button>
|
|
6563
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('en')"> English </ion-button>
|
|
6564
|
-
</div>
|
|
6565
|
-
|
|
6566
|
-
<div class="divider"></div>
|
|
6567
|
-
|
|
6568
|
-
<!-- Global buttons demonstration -->
|
|
6569
|
-
<div class="section">
|
|
6570
|
-
<h3>Global Buttons</h3>
|
|
6571
|
-
<div class="button-grid">
|
|
6572
|
-
<ion-button color="primary">{{ saveButton$ | async }}</ion-button>
|
|
6573
|
-
<ion-button color="secondary">{{ editButton$ | async }}</ion-button>
|
|
6574
|
-
<ion-button color="danger">{{ deleteButton$ | async }}</ion-button>
|
|
6575
|
-
<ion-button fill="outline">{{ cancelButton$ | async }}</ion-button>
|
|
6576
|
-
<ion-button fill="outline">{{ backButton$ | async }}</ion-button>
|
|
6577
|
-
<ion-button fill="outline">{{ nextButton$ | async }}</ion-button>
|
|
6578
|
-
<ion-button color="success">{{ okButton$ | async }}</ion-button>
|
|
6579
|
-
<ion-button fill="clear">{{ closeButton$ | async }}</ion-button>
|
|
6580
|
-
</div>
|
|
6581
|
-
</div>
|
|
6582
|
-
|
|
6583
|
-
<div class="divider"></div>
|
|
6584
|
-
|
|
6585
|
-
<!-- Global actions demonstration -->
|
|
6586
|
-
<div class="section">
|
|
6587
|
-
<h3>Global Actions</h3>
|
|
6588
|
-
<div class="button-grid">
|
|
6589
|
-
<ion-button size="small">{{ addButton$ | async }}</ion-button>
|
|
6590
|
-
<ion-button size="small">{{ removeButton$ | async }}</ion-button>
|
|
6591
|
-
<ion-button size="small">{{ searchButton$ | async }}</ion-button>
|
|
6592
|
-
<ion-button size="small">{{ filterButton$ | async }}</ion-button>
|
|
6593
|
-
<ion-button size="small">{{ sortButton$ | async }}</ion-button>
|
|
6594
|
-
<ion-button size="small">{{ refreshButton$ | async }}</ion-button>
|
|
6595
|
-
</div>
|
|
6596
|
-
</div>
|
|
6597
|
-
|
|
6598
|
-
<div class="divider"></div>
|
|
6599
|
-
|
|
6600
|
-
<!-- Global states demonstration -->
|
|
6601
|
-
<div class="section">
|
|
6602
|
-
<h3>Global States</h3>
|
|
6603
|
-
<div class="state-messages">
|
|
6604
|
-
<div class="state-item loading">
|
|
6605
|
-
<val-text
|
|
6606
|
-
[props]="{ content: loadingText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6607
|
-
></val-text>
|
|
6608
|
-
</div>
|
|
6609
|
-
<div class="state-item success">
|
|
6610
|
-
<val-text
|
|
6611
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6612
|
-
></val-text>
|
|
6613
|
-
</div>
|
|
6614
|
-
<div class="state-item error">
|
|
6615
|
-
<val-text
|
|
6616
|
-
[props]="{ content: errorText$ | async, color: 'danger', size: 'small', bold: false }"
|
|
6617
|
-
></val-text>
|
|
6618
|
-
</div>
|
|
6619
|
-
<div class="state-item warning">
|
|
6620
|
-
<val-text
|
|
6621
|
-
[props]="{ content: warningText$ | async, color: 'warning', size: 'small', bold: false }"
|
|
6622
|
-
></val-text>
|
|
6623
|
-
</div>
|
|
6624
|
-
<div class="state-item info">
|
|
6625
|
-
<val-text
|
|
6626
|
-
[props]="{ content: infoText$ | async, color: 'primary', size: 'small', bold: false }"
|
|
6627
|
-
></val-text>
|
|
6628
|
-
</div>
|
|
6629
|
-
<div class="state-item no-data">
|
|
6630
|
-
<val-text
|
|
6631
|
-
[props]="{ content: noDataText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6632
|
-
></val-text>
|
|
6633
|
-
</div>
|
|
6634
|
-
</div>
|
|
6635
|
-
</div>
|
|
6636
|
-
|
|
6637
|
-
<div class="divider"></div>
|
|
6638
|
-
|
|
6639
|
-
<!-- Form with global placeholders and labels -->
|
|
6640
|
-
<div class="section">
|
|
6641
|
-
<h3>Form with Global Content</h3>
|
|
6642
|
-
<form class="example-form">
|
|
6643
|
-
<ion-item>
|
|
6644
|
-
<ion-label position="stacked">Name ({{ requiredText$ | async }})</ion-label>
|
|
6645
|
-
<ion-input [(ngModel)]="formData.name" [placeholder]="'Enter your name' + '...'" name="name"> </ion-input>
|
|
6646
|
-
</ion-item>
|
|
6647
|
-
|
|
6648
|
-
<ion-item>
|
|
6649
|
-
<ion-label position="stacked">Email ({{ optionalText$ | async }})</ion-label>
|
|
6650
|
-
<ion-input [(ngModel)]="formData.email" [placeholder]="'Enter your email' + '...'" name="email">
|
|
6651
|
-
</ion-input>
|
|
6652
|
-
</ion-item>
|
|
6653
|
-
|
|
6654
|
-
<ion-item>
|
|
6655
|
-
<ion-label position="stacked">Message</ion-label>
|
|
6656
|
-
<ion-textarea [(ngModel)]="formData.message" [placeholder]="searchPlaceholder$ | async" name="message">
|
|
6657
|
-
</ion-textarea>
|
|
6658
|
-
</ion-item>
|
|
6659
|
-
</form>
|
|
6660
|
-
</div>
|
|
6661
|
-
|
|
6662
|
-
<div class="divider"></div>
|
|
6663
|
-
|
|
6664
|
-
<!-- Global confirmations with interpolation -->
|
|
6665
|
-
<div class="section">
|
|
6666
|
-
<h3>Confirmations with Interpolation</h3>
|
|
6667
|
-
<div class="confirmation-examples">
|
|
6668
|
-
<p><strong>Delete Confirmation:</strong></p>
|
|
6669
|
-
<val-text
|
|
6670
|
-
[props]="{ content: deleteConfirmation$ | async, color: 'danger', size: 'medium', bold: false }"
|
|
6671
|
-
></val-text>
|
|
6672
|
-
|
|
6673
|
-
<br /><br />
|
|
6674
|
-
<p><strong>General Confirmation:</strong></p>
|
|
6675
|
-
<val-text
|
|
6676
|
-
[props]="{ content: areYouSureText$ | async, color: 'warning', size: 'medium', bold: false }"
|
|
6677
|
-
></val-text>
|
|
6678
|
-
|
|
6679
|
-
<br /><br />
|
|
6680
|
-
<p><strong>Unsaved Changes:</strong></p>
|
|
6681
|
-
<val-text
|
|
6682
|
-
[props]="{ content: unsavedChangesText$ | async, color: 'medium', size: 'medium', bold: false }"
|
|
6683
|
-
></val-text>
|
|
6684
|
-
</div>
|
|
6685
|
-
</div>
|
|
6686
|
-
|
|
6687
|
-
<div class="divider"></div>
|
|
6688
|
-
|
|
6689
|
-
<!-- Mixed content: Global + Component specific -->
|
|
6690
|
-
<div class="section">
|
|
6691
|
-
<h3>Mixed Content Example</h3>
|
|
6692
|
-
<div class="mixed-content">
|
|
6693
|
-
<!-- Component-specific content -->
|
|
6694
|
-
<val-text [props]="componentDescriptionProps"></val-text>
|
|
6695
|
-
|
|
6696
|
-
<br /><br />
|
|
6697
|
-
|
|
6698
|
-
<!-- Action buttons mixing global and component content -->
|
|
6699
|
-
<div class="action-buttons">
|
|
6700
|
-
<ion-button color="primary" (click)="performAction()">
|
|
6701
|
-
{{ saveButton$ | async }}
|
|
6702
|
-
</ion-button>
|
|
6703
|
-
<ion-button fill="outline" (click)="cancelAction()">
|
|
6704
|
-
{{ cancelButton$ | async }}
|
|
6705
|
-
</ion-button>
|
|
6706
|
-
</div>
|
|
6707
|
-
|
|
6708
|
-
<!-- Status message using global content -->
|
|
6709
|
-
<div *ngIf="actionPerformed" class="status-message">
|
|
6710
|
-
<val-text
|
|
6711
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6712
|
-
></val-text>
|
|
6713
|
-
</div>
|
|
6714
|
-
</div>
|
|
6715
|
-
</div>
|
|
6716
|
-
|
|
6717
|
-
<!-- Demo of synchronous global content access -->
|
|
6718
|
-
<div class="section">
|
|
6719
|
-
<h3>Synchronous Access Example</h3>
|
|
6720
|
-
<p>
|
|
6721
|
-
OK button text (sync): <strong>{{ getOkTextSync() }}</strong>
|
|
6722
|
-
</p>
|
|
6723
|
-
<p>
|
|
6724
|
-
Cancel button text (sync): <strong>{{ getCancelTextSync() }}</strong>
|
|
6725
|
-
</p>
|
|
6726
|
-
</div>
|
|
6727
|
-
</ion-card-content>
|
|
6728
|
-
</ion-card>
|
|
6729
|
-
`, styles: [".language-section{display:flex;align-items:center;gap:8px;margin-bottom:16px}.divider{height:1px;background-color:var(--ion-color-light);margin:16px 0}.section{margin-bottom:16px}.section h3{margin:0 0 12px;color:var(--ion-color-primary)}.button-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.state-messages{display:flex;flex-direction:column;gap:8px}.state-item{padding:8px;border-radius:4px;background-color:var(--ion-color-light-shade)}.state-item.loading{background-color:var(--ion-color-medium-tint)}.state-item.success{background-color:var(--ion-color-success-tint)}.state-item.error{background-color:var(--ion-color-danger-tint)}.state-item.warning{background-color:var(--ion-color-warning-tint)}.state-item.info{background-color:var(--ion-color-primary-tint)}.example-form{margin-top:12px}.confirmation-examples{padding:12px;background-color:var(--ion-color-light-tint);border-radius:8px}.mixed-content{padding:12px;background-color:var(--ion-color-light-shade);border-radius:8px}.action-buttons{display:flex;gap:8px;margin:12px 0}.status-message{padding:8px;background-color:var(--ion-color-success-tint);border-radius:4px;margin-top:8px}\n"] }]
|
|
6730
|
-
}] });
|
|
6731
|
-
|
|
6732
|
-
/**
|
|
6733
|
-
* Reactive Content Example Component
|
|
6734
|
-
*
|
|
6735
|
-
* This component demonstrates various ways to use the new reactive content system with ContentService:
|
|
6736
|
-
* 1. Direct reactive content binding with val-text
|
|
6737
|
-
* 2. Content with interpolation (dynamic values)
|
|
6738
|
-
* 3. Multiple content keys retrieved at once
|
|
6739
|
-
* 4. Using the scoped content helper (forComponent)
|
|
6740
|
-
* 5. Language switching functionality
|
|
6741
|
-
*
|
|
6742
|
-
* The component automatically updates all text when the language changes,
|
|
6743
|
-
* using the simplified ContentService API that eliminates the need for manual
|
|
6744
|
-
* LangService injection and utility function imports.
|
|
6745
|
-
*
|
|
6746
|
-
* @example Usage patterns:
|
|
6747
|
-
* ```typescript
|
|
6748
|
-
* // Simple injection
|
|
6749
|
-
* content = inject(ContentService);
|
|
6750
|
-
*
|
|
6751
|
-
* // Scoped helper for this component
|
|
6752
|
-
* componentContent = this.content.forComponent('MyComponent');
|
|
6753
|
-
*
|
|
6754
|
-
* // Get reactive content
|
|
6755
|
-
* title$ = this.componentContent.get('title');
|
|
6756
|
-
* multipleTexts$ = this.componentContent.getMultiple(['title', 'subtitle']);
|
|
6757
|
-
* ```
|
|
6758
|
-
* without requiring manual subscriptions or change detection triggers.
|
|
6759
|
-
*/
|
|
6760
|
-
class ReactiveContentExampleComponent {
|
|
6761
|
-
constructor() {
|
|
6762
|
-
// Use the new ContentService with inject
|
|
6763
|
-
this.content = inject(ContentService);
|
|
6764
|
-
// Create a scoped content helper for this component
|
|
6765
|
-
this.componentContent = this.content.forComponent('ReactiveContentExample');
|
|
6766
|
-
// State for confirmation dialog
|
|
6767
|
-
this.showConfirmation = false;
|
|
6768
|
-
// Example 1: Simple reactive content props for val-text
|
|
6769
|
-
this.titleProps = {
|
|
6770
|
-
contentKey: 'title',
|
|
6771
|
-
contentClass: 'ReactiveContentExample',
|
|
6772
|
-
contentFallback: 'Default Title',
|
|
6773
|
-
color: 'primary',
|
|
6774
|
-
size: 'xlarge',
|
|
6775
|
-
bold: true,
|
|
6547
|
+
this.mixedLinksProps = {
|
|
6548
|
+
content: 'Consulta la documentación en https://ionicframework.com/docs, revisa el código en https://github.com/ionic-team/ionic-framework, o navega a /components/buttons para ejemplos internos.',
|
|
6549
|
+
size: 'medium',
|
|
6550
|
+
color: 'dark',
|
|
6551
|
+
bold: false,
|
|
6552
|
+
processLinks: true,
|
|
6553
|
+
linkConfig: {
|
|
6554
|
+
openExternalInNewTab: true,
|
|
6555
|
+
openInternalInNewTab: false,
|
|
6556
|
+
linkClass: 'processed-link',
|
|
6557
|
+
externalLinkClass: 'external-link',
|
|
6558
|
+
internalLinkClass: 'internal-link',
|
|
6559
|
+
},
|
|
6776
6560
|
};
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
contentInterpolation: { name: 'Developer', count: 3 },
|
|
6782
|
-
contentFallback: 'Hello Developer',
|
|
6783
|
-
color: 'secondary',
|
|
6784
|
-
size: 'large',
|
|
6561
|
+
this.sameTabLinksProps = {
|
|
6562
|
+
content: 'Estos enlaces no abren en nueva pestaña: https://example.com y /home',
|
|
6563
|
+
size: 'medium',
|
|
6564
|
+
color: 'dark',
|
|
6785
6565
|
bold: false,
|
|
6566
|
+
processLinks: true,
|
|
6567
|
+
linkConfig: {
|
|
6568
|
+
openExternalInNewTab: false,
|
|
6569
|
+
openInternalInNewTab: false,
|
|
6570
|
+
linkClass: 'same-tab-link',
|
|
6571
|
+
externalLinkClass: 'external-same-tab',
|
|
6572
|
+
internalLinkClass: 'internal-same-tab',
|
|
6573
|
+
},
|
|
6786
6574
|
};
|
|
6787
6575
|
}
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
this.multipleContent$ = this.componentContent.getMultiple(['description', 'dynamicText']);
|
|
6793
|
-
// Button text reactive - using the new simplified API with options
|
|
6794
|
-
this.buttonText$ = this.componentContent.get('buttonText');
|
|
6795
|
-
// Global content observables using unified fromContent method
|
|
6796
|
-
this.saveButton$ = this.content.fromContent({ key: 'save' });
|
|
6797
|
-
this.cancelButton$ = this.content.fromContent({ key: 'cancel' });
|
|
6798
|
-
this.deleteButton$ = this.content.fromContent({ key: 'delete' });
|
|
6799
|
-
this.okButton$ = this.content.fromContent({ key: 'ok' });
|
|
6800
|
-
this.loadingText$ = this.content.fromContent({ key: 'loading' });
|
|
6801
|
-
// Global content with interpolation using unified method
|
|
6802
|
-
this.deleteConfirmationText$ = this.content.fromContent({
|
|
6803
|
-
key: 'deleteConfirmation',
|
|
6804
|
-
interpolation: { itemName: 'este elemento' },
|
|
6805
|
-
});
|
|
6806
|
-
// Example of synchronous global content access
|
|
6807
|
-
console.log('Global save text:', this.content.getText('save'));
|
|
6808
|
-
console.log('Global cancel text:', this.content.getGlobalText('cancel'));
|
|
6809
|
-
// Example of using new scoped helper with interpolation
|
|
6810
|
-
const greetingWithNewAPI$ = this.componentContent.get('greeting', {
|
|
6811
|
-
interpolation: { name: 'Developer', count: 3 },
|
|
6812
|
-
fallback: 'Hello!',
|
|
6813
|
-
});
|
|
6814
|
-
console.log('New unified API works!', greetingWithNewAPI$);
|
|
6815
|
-
}
|
|
6816
|
-
/**
|
|
6817
|
-
* Toggle between Spanish and English
|
|
6818
|
-
*/
|
|
6819
|
-
toggleLanguage() {
|
|
6820
|
-
const currentLang = this.content.currentLang;
|
|
6821
|
-
const newLang = currentLang === LangOption.ES ? LangOption.EN : LangOption.ES;
|
|
6822
|
-
this.content.setLang(newLang);
|
|
6823
|
-
}
|
|
6824
|
-
/**
|
|
6825
|
-
* Show delete confirmation dialog
|
|
6826
|
-
*/
|
|
6827
|
-
showDeleteConfirmation() {
|
|
6828
|
-
this.showConfirmation = true;
|
|
6829
|
-
}
|
|
6830
|
-
/**
|
|
6831
|
-
* Hide delete confirmation dialog
|
|
6832
|
-
*/
|
|
6833
|
-
hideDeleteConfirmation() {
|
|
6834
|
-
this.showConfirmation = false;
|
|
6835
|
-
}
|
|
6836
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReactiveContentExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6837
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReactiveContentExampleComponent, isStandalone: true, selector: "val-reactive-content-example", ngImport: i0, template: `
|
|
6838
|
-
<ion-card>
|
|
6839
|
-
<ion-card-header>
|
|
6840
|
-
<ion-card-title>
|
|
6841
|
-
<!-- Example 1: Direct reactive content using val-text -->
|
|
6842
|
-
<val-text [props]="titleProps"></val-text>
|
|
6843
|
-
</ion-card-title>
|
|
6844
|
-
</ion-card-header>
|
|
6576
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6577
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LinkProcessingExampleComponent, isStandalone: true, selector: "val-link-processing-example", ngImport: i0, template: `
|
|
6578
|
+
<div class="link-examples">
|
|
6579
|
+
<h2>Ejemplos de Procesamiento de Enlaces</h2>
|
|
6845
6580
|
|
|
6846
|
-
<
|
|
6847
|
-
|
|
6848
|
-
<val-text [props]="
|
|
6849
|
-
|
|
6850
|
-
<div class="example-divider"></div>
|
|
6851
|
-
|
|
6852
|
-
<!-- Example 3: Multiple content keys -->
|
|
6853
|
-
<div *ngIf="multipleContent$ | async as content">
|
|
6854
|
-
<val-text
|
|
6855
|
-
[props]="{
|
|
6856
|
-
content: content['description'],
|
|
6857
|
-
color: 'medium',
|
|
6858
|
-
size: 'medium',
|
|
6859
|
-
bold: false,
|
|
6860
|
-
}"
|
|
6861
|
-
></val-text>
|
|
6862
|
-
|
|
6863
|
-
<br /><br />
|
|
6864
|
-
|
|
6865
|
-
<val-text
|
|
6866
|
-
[props]="{
|
|
6867
|
-
content: content['dynamicText'],
|
|
6868
|
-
color: 'primary',
|
|
6869
|
-
size: 'small',
|
|
6870
|
-
bold: true,
|
|
6871
|
-
}"
|
|
6872
|
-
></val-text>
|
|
6873
|
-
</div>
|
|
6874
|
-
|
|
6875
|
-
<div class="example-divider"></div>
|
|
6876
|
-
|
|
6877
|
-
<!-- Example 4: Using content helper -->
|
|
6878
|
-
<val-text
|
|
6879
|
-
[props]="{
|
|
6880
|
-
content: componentContent.getText('welcomeMessage'),
|
|
6881
|
-
color: 'success',
|
|
6882
|
-
size: 'large',
|
|
6883
|
-
bold: true,
|
|
6884
|
-
}"
|
|
6885
|
-
></val-text>
|
|
6886
|
-
|
|
6887
|
-
<div class="example-divider"></div>
|
|
6888
|
-
|
|
6889
|
-
<!-- Example 5: Global content - buttons using global text -->
|
|
6890
|
-
<div class="button-group">
|
|
6891
|
-
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
6892
|
-
{{ saveButton$ | async }}
|
|
6893
|
-
</ion-button>
|
|
6894
|
-
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
6895
|
-
{{ cancelButton$ | async }}
|
|
6896
|
-
</ion-button>
|
|
6897
|
-
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
6898
|
-
{{ deleteButton$ | async }}
|
|
6899
|
-
</ion-button>
|
|
6900
|
-
</div>
|
|
6901
|
-
|
|
6902
|
-
<div class="example-divider"></div>
|
|
6903
|
-
|
|
6904
|
-
<!-- Example 6: Global content with interpolation -->
|
|
6905
|
-
<div *ngIf="showConfirmation" class="confirmation-message">
|
|
6906
|
-
<val-text
|
|
6907
|
-
[props]="{
|
|
6908
|
-
content: deleteConfirmationText$ | async,
|
|
6909
|
-
color: 'warning',
|
|
6910
|
-
size: 'medium',
|
|
6911
|
-
bold: true,
|
|
6912
|
-
}"
|
|
6913
|
-
></val-text>
|
|
6914
|
-
<br /><br />
|
|
6915
|
-
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
6916
|
-
{{ okButton$ | async }}
|
|
6917
|
-
</ion-button>
|
|
6918
|
-
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
6919
|
-
{{ cancelButton$ | async }}
|
|
6920
|
-
</ion-button>
|
|
6921
|
-
</div>
|
|
6581
|
+
<div class="example-section">
|
|
6582
|
+
<h3>Texto sin procesamiento de enlaces:</h3>
|
|
6583
|
+
<val-text [props]="basicTextProps"></val-text>
|
|
6584
|
+
</div>
|
|
6922
6585
|
|
|
6923
|
-
|
|
6586
|
+
<div class="example-section">
|
|
6587
|
+
<h3>Texto con procesamiento básico de enlaces:</h3>
|
|
6588
|
+
<val-text [props]="basicLinksProps"></val-text>
|
|
6589
|
+
</div>
|
|
6924
6590
|
|
|
6925
|
-
|
|
6926
|
-
<
|
|
6927
|
-
|
|
6928
|
-
|
|
6591
|
+
<div class="example-section">
|
|
6592
|
+
<h3>Enlaces con configuración personalizada:</h3>
|
|
6593
|
+
<val-text [props]="customLinksProps"></val-text>
|
|
6594
|
+
</div>
|
|
6929
6595
|
|
|
6930
|
-
|
|
6931
|
-
<
|
|
6932
|
-
|
|
6933
|
-
|
|
6934
|
-
<strong>{{ currentLanguage$ | async }}</strong>
|
|
6935
|
-
</p>
|
|
6596
|
+
<div class="example-section">
|
|
6597
|
+
<h3>Enlaces internos y externos mezclados:</h3>
|
|
6598
|
+
<val-text [props]="mixedLinksProps"></val-text>
|
|
6599
|
+
</div>
|
|
6936
6600
|
|
|
6937
|
-
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6942
|
-
|
|
6943
|
-
size: 'small',
|
|
6944
|
-
bold: false,
|
|
6945
|
-
}"
|
|
6946
|
-
></val-text>
|
|
6947
|
-
</p>
|
|
6948
|
-
</div>
|
|
6949
|
-
</ion-card-content>
|
|
6950
|
-
</ion-card>
|
|
6951
|
-
`, isInline: true, styles: [":host{display:block;margin:16px}.example-divider{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.language-info{margin-top:24px;padding:16px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.language-info p{margin:0;color:var(--ion-color-dark)}.language-info strong{color:var(--ion-color-primary);text-transform:uppercase}ion-card{margin:0;border-radius:12px;box-shadow:0 4px 16px #0000001a}ion-card-header{padding-bottom:8px}ion-card-title{font-size:1.5rem;font-weight:600}ion-card-content{padding-top:16px}ion-button{margin:16px 0;--border-radius: 8px}ion-card-content{padding:20px}.language-info{margin-top:16px;padding:12px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.content-section{margin:16px 0;padding:12px;border:1px solid var(--ion-color-light);border-radius:8px}.content-section h3{margin-top:0;color:var(--ion-color-primary)}.example-divider{margin:24px 0;height:1px;background-color:var(--ion-color-light)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6601
|
+
<div class="example-section">
|
|
6602
|
+
<h3>Enlaces sin abrir en nueva pestaña:</h3>
|
|
6603
|
+
<val-text [props]="sameTabLinksProps"></val-text>
|
|
6604
|
+
</div>
|
|
6605
|
+
</div>
|
|
6606
|
+
`, isInline: true, styles: [".link-examples{padding:20px;max-width:800px}.example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
|
|
6952
6607
|
}
|
|
6953
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type:
|
|
6608
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, decorators: [{
|
|
6954
6609
|
type: Component,
|
|
6955
|
-
args: [{ selector: 'val-
|
|
6956
|
-
<
|
|
6957
|
-
<
|
|
6958
|
-
<ion-card-title>
|
|
6959
|
-
<!-- Example 1: Direct reactive content using val-text -->
|
|
6960
|
-
<val-text [props]="titleProps"></val-text>
|
|
6961
|
-
</ion-card-title>
|
|
6962
|
-
</ion-card-header>
|
|
6963
|
-
|
|
6964
|
-
<ion-card-content>
|
|
6965
|
-
<!-- Example 2: Reactive content with interpolation -->
|
|
6966
|
-
<val-text [props]="greetingProps"></val-text>
|
|
6967
|
-
|
|
6968
|
-
<div class="example-divider"></div>
|
|
6969
|
-
|
|
6970
|
-
<!-- Example 3: Multiple content keys -->
|
|
6971
|
-
<div *ngIf="multipleContent$ | async as content">
|
|
6972
|
-
<val-text
|
|
6973
|
-
[props]="{
|
|
6974
|
-
content: content['description'],
|
|
6975
|
-
color: 'medium',
|
|
6976
|
-
size: 'medium',
|
|
6977
|
-
bold: false,
|
|
6978
|
-
}"
|
|
6979
|
-
></val-text>
|
|
6980
|
-
|
|
6981
|
-
<br /><br />
|
|
6982
|
-
|
|
6983
|
-
<val-text
|
|
6984
|
-
[props]="{
|
|
6985
|
-
content: content['dynamicText'],
|
|
6986
|
-
color: 'primary',
|
|
6987
|
-
size: 'small',
|
|
6988
|
-
bold: true,
|
|
6989
|
-
}"
|
|
6990
|
-
></val-text>
|
|
6991
|
-
</div>
|
|
6992
|
-
|
|
6993
|
-
<div class="example-divider"></div>
|
|
6994
|
-
|
|
6995
|
-
<!-- Example 4: Using content helper -->
|
|
6996
|
-
<val-text
|
|
6997
|
-
[props]="{
|
|
6998
|
-
content: componentContent.getText('welcomeMessage'),
|
|
6999
|
-
color: 'success',
|
|
7000
|
-
size: 'large',
|
|
7001
|
-
bold: true,
|
|
7002
|
-
}"
|
|
7003
|
-
></val-text>
|
|
7004
|
-
|
|
7005
|
-
<div class="example-divider"></div>
|
|
7006
|
-
|
|
7007
|
-
<!-- Example 5: Global content - buttons using global text -->
|
|
7008
|
-
<div class="button-group">
|
|
7009
|
-
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
7010
|
-
{{ saveButton$ | async }}
|
|
7011
|
-
</ion-button>
|
|
7012
|
-
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
7013
|
-
{{ cancelButton$ | async }}
|
|
7014
|
-
</ion-button>
|
|
7015
|
-
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
7016
|
-
{{ deleteButton$ | async }}
|
|
7017
|
-
</ion-button>
|
|
7018
|
-
</div>
|
|
7019
|
-
|
|
7020
|
-
<div class="example-divider"></div>
|
|
7021
|
-
|
|
7022
|
-
<!-- Example 6: Global content with interpolation -->
|
|
7023
|
-
<div *ngIf="showConfirmation" class="confirmation-message">
|
|
7024
|
-
<val-text
|
|
7025
|
-
[props]="{
|
|
7026
|
-
content: deleteConfirmationText$ | async,
|
|
7027
|
-
color: 'warning',
|
|
7028
|
-
size: 'medium',
|
|
7029
|
-
bold: true,
|
|
7030
|
-
}"
|
|
7031
|
-
></val-text>
|
|
7032
|
-
<br /><br />
|
|
7033
|
-
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
7034
|
-
{{ okButton$ | async }}
|
|
7035
|
-
</ion-button>
|
|
7036
|
-
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
7037
|
-
{{ cancelButton$ | async }}
|
|
7038
|
-
</ion-button>
|
|
7039
|
-
</div>
|
|
7040
|
-
|
|
7041
|
-
<div class="example-divider"></div>
|
|
6610
|
+
args: [{ selector: 'val-link-processing-example', standalone: true, imports: [TextComponent], template: `
|
|
6611
|
+
<div class="link-examples">
|
|
6612
|
+
<h2>Ejemplos de Procesamiento de Enlaces</h2>
|
|
7042
6613
|
|
|
7043
|
-
|
|
7044
|
-
<
|
|
7045
|
-
|
|
7046
|
-
|
|
6614
|
+
<div class="example-section">
|
|
6615
|
+
<h3>Texto sin procesamiento de enlaces:</h3>
|
|
6616
|
+
<val-text [props]="basicTextProps"></val-text>
|
|
6617
|
+
</div>
|
|
7047
6618
|
|
|
7048
|
-
|
|
7049
|
-
<
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
<strong>{{ currentLanguage$ | async }}</strong>
|
|
7053
|
-
</p>
|
|
6619
|
+
<div class="example-section">
|
|
6620
|
+
<h3>Texto con procesamiento básico de enlaces:</h3>
|
|
6621
|
+
<val-text [props]="basicLinksProps"></val-text>
|
|
6622
|
+
</div>
|
|
7054
6623
|
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
content: loadingText$ | async,
|
|
7060
|
-
color: 'medium',
|
|
7061
|
-
size: 'small',
|
|
7062
|
-
bold: false,
|
|
7063
|
-
}"
|
|
7064
|
-
></val-text>
|
|
7065
|
-
</p>
|
|
7066
|
-
</div>
|
|
7067
|
-
</ion-card-content>
|
|
7068
|
-
</ion-card>
|
|
7069
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;margin:16px}.example-divider{margin:24px 0;border-bottom:1px solid var(--ion-color-light);padding-bottom:16px}.language-info{margin-top:24px;padding:16px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.language-info p{margin:0;color:var(--ion-color-dark)}.language-info strong{color:var(--ion-color-primary);text-transform:uppercase}ion-card{margin:0;border-radius:12px;box-shadow:0 4px 16px #0000001a}ion-card-header{padding-bottom:8px}ion-card-title{font-size:1.5rem;font-weight:600}ion-card-content{padding-top:16px}ion-button{margin:16px 0;--border-radius: 8px}ion-card-content{padding:20px}.language-info{margin-top:16px;padding:12px;background-color:var(--ion-color-light);border-radius:8px;text-align:center}.content-section{margin:16px 0;padding:12px;border:1px solid var(--ion-color-light);border-radius:8px}.content-section h3{margin-top:0;color:var(--ion-color-primary)}.example-divider{margin:24px 0;height:1px;background-color:var(--ion-color-light)}\n"] }]
|
|
7070
|
-
}], ctorParameters: () => [] });
|
|
6624
|
+
<div class="example-section">
|
|
6625
|
+
<h3>Enlaces con configuración personalizada:</h3>
|
|
6626
|
+
<val-text [props]="customLinksProps"></val-text>
|
|
6627
|
+
</div>
|
|
7071
6628
|
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
* global content to create a comprehensive content management system.
|
|
7077
|
-
*/
|
|
7078
|
-
const globalContentExampleData = {
|
|
7079
|
-
title: {
|
|
7080
|
-
es: 'Ejemplo de Contenido Global',
|
|
7081
|
-
en: 'Global Content Example',
|
|
7082
|
-
},
|
|
7083
|
-
languageLabel: {
|
|
7084
|
-
es: 'Idioma:',
|
|
7085
|
-
en: 'Language:',
|
|
7086
|
-
},
|
|
7087
|
-
description: {
|
|
7088
|
-
es: 'Este ejemplo demuestra cómo usar contenido global y específico del componente de manera conjunta.',
|
|
7089
|
-
en: 'This example shows how to use global and component-specific content together.',
|
|
7090
|
-
},
|
|
7091
|
-
};
|
|
7092
|
-
var GlobalContentExample = new TextContent(globalContentExampleData);
|
|
6629
|
+
<div class="example-section">
|
|
6630
|
+
<h3>Enlaces internos y externos mezclados:</h3>
|
|
6631
|
+
<val-text [props]="mixedLinksProps"></val-text>
|
|
6632
|
+
</div>
|
|
7093
6633
|
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
const exampleComponentContent = {
|
|
7102
|
-
es: {
|
|
7103
|
-
title: 'Ejemplo de Contenido Reactivo',
|
|
7104
|
-
subtitle: 'Este es un subtítulo que cambia automáticamente',
|
|
7105
|
-
description: 'Esta descripción se actualiza cuando cambias el idioma sin necesidad de recargar la página.',
|
|
7106
|
-
greeting: 'Hola {name}, tienes {count} mensajes nuevos',
|
|
7107
|
-
welcomeMessage: 'Bienvenido a la biblioteca de componentes Valtech',
|
|
7108
|
-
dynamicText: 'Este texto se actualiza automáticamente cuando cambias el idioma',
|
|
7109
|
-
buttonText: 'Cambiar Idioma',
|
|
7110
|
-
loadingText: 'Cargando...',
|
|
7111
|
-
errorMessage: 'Error: No se pudo cargar el contenido',
|
|
7112
|
-
successMessage: 'Contenido cargado exitosamente',
|
|
7113
|
-
confirmDialog: '¿Estás seguro de que quieres continuar?',
|
|
7114
|
-
cancelButton: 'Cancelar',
|
|
7115
|
-
acceptButton: 'Aceptar',
|
|
7116
|
-
},
|
|
7117
|
-
en: {
|
|
7118
|
-
title: 'Reactive Content Example',
|
|
7119
|
-
subtitle: 'This is a subtitle that changes automatically',
|
|
7120
|
-
description: 'This description updates when you change the language without needing to reload the page.',
|
|
7121
|
-
greeting: 'Hello {name}, you have {count} new messages',
|
|
7122
|
-
welcomeMessage: 'Welcome to the Valtech component library',
|
|
7123
|
-
dynamicText: 'This text updates automatically when you change the language',
|
|
7124
|
-
buttonText: 'Change Language',
|
|
7125
|
-
loadingText: 'Loading...',
|
|
7126
|
-
errorMessage: 'Error: Could not load content',
|
|
7127
|
-
successMessage: 'Content loaded successfully',
|
|
7128
|
-
confirmDialog: 'Are you sure you want to continue?',
|
|
7129
|
-
cancelButton: 'Cancel',
|
|
7130
|
-
acceptButton: 'Accept',
|
|
7131
|
-
},
|
|
7132
|
-
};
|
|
7133
|
-
// Export the content as a TextContent instance
|
|
7134
|
-
var ReactiveContentExample = new TextContent(exampleComponentContent);
|
|
6634
|
+
<div class="example-section">
|
|
6635
|
+
<h3>Enlaces sin abrir en nueva pestaña:</h3>
|
|
6636
|
+
<val-text [props]="sameTabLinksProps"></val-text>
|
|
6637
|
+
</div>
|
|
6638
|
+
</div>
|
|
6639
|
+
`, styles: [".link-examples{padding:20px;max-width:800px}.example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"] }]
|
|
6640
|
+
}] });
|
|
7135
6641
|
|
|
7136
|
-
const text
|
|
6642
|
+
const text = {
|
|
7137
6643
|
es: {
|
|
7138
6644
|
spanish: 'Español',
|
|
7139
6645
|
english: 'Inglés',
|
|
@@ -7143,21 +6649,7 @@ const text$1 = {
|
|
|
7143
6649
|
english: 'English',
|
|
7144
6650
|
},
|
|
7145
6651
|
};
|
|
7146
|
-
var LangSettings = new TextContent(text
|
|
7147
|
-
|
|
7148
|
-
const text = {
|
|
7149
|
-
es: {
|
|
7150
|
-
light: 'Siempre claro',
|
|
7151
|
-
dark: 'Siempre oscuro',
|
|
7152
|
-
auto: 'Automático',
|
|
7153
|
-
},
|
|
7154
|
-
en: {
|
|
7155
|
-
light: 'Always light',
|
|
7156
|
-
dark: 'Always dark',
|
|
7157
|
-
auto: 'System settings',
|
|
7158
|
-
},
|
|
7159
|
-
};
|
|
7160
|
-
var ThemeSettings = new TextContent(text);
|
|
6652
|
+
var LangSettings = new TextContent(text);
|
|
7161
6653
|
|
|
7162
6654
|
/**
|
|
7163
6655
|
* Global content that can be used across all components.
|
|
@@ -7196,9 +6688,6 @@ const globalContentData = {
|
|
|
7196
6688
|
areYouSure: '¿Estás seguro?',
|
|
7197
6689
|
deleteConfirmation: '¿Estás seguro de que deseas eliminar {itemName}?',
|
|
7198
6690
|
unsavedChanges: 'Tienes cambios sin guardar. ¿Deseas continuar?',
|
|
7199
|
-
// Common form labels
|
|
7200
|
-
required: 'Requerido',
|
|
7201
|
-
optional: 'Opcional',
|
|
7202
6691
|
// Common placeholders
|
|
7203
6692
|
searchPlaceholder: 'Buscar...',
|
|
7204
6693
|
},
|
|
@@ -7233,9 +6722,6 @@ const globalContentData = {
|
|
|
7233
6722
|
areYouSure: 'Are you sure?',
|
|
7234
6723
|
deleteConfirmation: 'Are you sure you want to delete {itemName}?',
|
|
7235
6724
|
unsavedChanges: 'You have unsaved changes. Do you want to continue?',
|
|
7236
|
-
// Common form labels
|
|
7237
|
-
required: 'Required',
|
|
7238
|
-
optional: 'Optional',
|
|
7239
6725
|
// Common placeholders
|
|
7240
6726
|
searchPlaceholder: 'Search...',
|
|
7241
6727
|
},
|
|
@@ -7244,9 +6730,6 @@ const GlobalContent = new TextContent(globalContentData);
|
|
|
7244
6730
|
const content = {
|
|
7245
6731
|
_global: GlobalContent,
|
|
7246
6732
|
LangSettings,
|
|
7247
|
-
ThemeSettings,
|
|
7248
|
-
ReactiveContentExample,
|
|
7249
|
-
GlobalContentExample,
|
|
7250
6733
|
};
|
|
7251
6734
|
|
|
7252
6735
|
/**
|
|
@@ -7304,5 +6787,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7304
6787
|
* Generated bundle index. Do not edit.
|
|
7305
6788
|
*/
|
|
7306
6789
|
|
|
7307
|
-
export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentStates, ContentLoaderComponent, ContentService, CustomContentDemoComponent, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent,
|
|
6790
|
+
export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentStates, ContentLoaderComponent, ContentService, CustomContentDemoComponent, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LangOption, LangService, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessingExampleComponent, LinkProcessorService, LinksCakeComponent, LocalStorageService, MOTION, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createContentHelper, createTextProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, maxLength, replaceSpecialChars, resolveColor, resolveInputDefaultValue };
|
|
7308
6791
|
//# sourceMappingURL=valtech-components.mjs.map
|