valtech-components 2.0.286 → 2.0.289
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 +61 -21
- 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 +189 -0
- package/esm2022/lib/services/lang-provider/content.mjs +1 -13
- package/esm2022/lib/services/link-processor.service.mjs +192 -0
- package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
- package/esm2022/public-api.mjs +5 -4
- package/fesm2022/valtech-components.mjs +473 -919
- 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 +24 -0
- package/lib/services/link-processor.service.d.ts +98 -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 -291
- 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,261 @@ 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), internal routes (starting with /),
|
|
1011
|
+
* and Markdown-style links [text](url) 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, go to /profile, or [check docs](https://docs.example.com)';
|
|
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) - excluye caracteres de puntuación al final
|
|
1028
|
+
this.urlRegex = /(https?:\/\/[^\s,;.!?()]+)/g;
|
|
1029
|
+
// Regex para detectar rutas internas (empiezan con / pero no son URLs completas) - excluye puntuación
|
|
1030
|
+
this.internalRouteRegex = /(\s|^)(\/[^\s,;.!?()]*)/g;
|
|
1031
|
+
// Regex para detectar enlaces estilo Markdown [texto](url)
|
|
1032
|
+
this.markdownLinkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
1033
|
+
}
|
|
1034
|
+
/**
|
|
1035
|
+
* Procesa texto para convertir enlaces en elementos <a> clickeables.
|
|
1036
|
+
* Detecta automáticamente URLs externas, rutas internas y enlaces estilo Markdown.
|
|
1037
|
+
*
|
|
1038
|
+
* @param text - Texto a procesar
|
|
1039
|
+
* @param config - Configuración del procesamiento
|
|
1040
|
+
* @returns SafeHtml con enlaces procesados o string original
|
|
1041
|
+
*
|
|
1042
|
+
* @example
|
|
1043
|
+
* ```typescript
|
|
1044
|
+
* const result = this.linkProcessor.processLinks(
|
|
1045
|
+
* 'Visit https://example.com, go to /profile, or [check docs](https://docs.example.com)',
|
|
1046
|
+
* {
|
|
1047
|
+
* openExternalInNewTab: true,
|
|
1048
|
+
* openInternalInNewTab: false,
|
|
1049
|
+
* processMarkdownLinks: true,
|
|
1050
|
+
* linkClass: 'custom-link'
|
|
1051
|
+
* }
|
|
1052
|
+
* );
|
|
1053
|
+
* ```
|
|
1054
|
+
*/
|
|
1055
|
+
processLinks(text, config = {}) {
|
|
1056
|
+
if (!text)
|
|
1057
|
+
return '';
|
|
1058
|
+
const { openExternalInNewTab = true, openInternalInNewTab = false, linkClass = 'processed-link', externalLinkClass = 'external-link', internalLinkClass = 'internal-link', processMarkdownLinks = true, } = config;
|
|
1059
|
+
let hasLinks = false;
|
|
1060
|
+
let processedText = text;
|
|
1061
|
+
// 1. Procesar enlaces estilo Markdown [texto](url) primero
|
|
1062
|
+
if (processMarkdownLinks && this.markdownLinkRegex.test(text)) {
|
|
1063
|
+
hasLinks = true;
|
|
1064
|
+
this.markdownLinkRegex.lastIndex = 0; // Reset regex
|
|
1065
|
+
processedText = processedText.replace(this.markdownLinkRegex, (match, linkText, url) => {
|
|
1066
|
+
const isExternal = /^https?:\/\//.test(url);
|
|
1067
|
+
const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
|
|
1068
|
+
? isExternal
|
|
1069
|
+
? ' target="_blank" rel="noopener noreferrer"'
|
|
1070
|
+
: ' target="_blank"'
|
|
1071
|
+
: '';
|
|
1072
|
+
const typeClass = isExternal ? externalLinkClass : internalLinkClass;
|
|
1073
|
+
const classes = `${linkClass} ${typeClass}`.trim();
|
|
1074
|
+
return `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
|
|
1075
|
+
});
|
|
1076
|
+
}
|
|
1077
|
+
// 2. Procesar URLs externas directas
|
|
1078
|
+
if (this.urlRegex.test(processedText)) {
|
|
1079
|
+
hasLinks = true;
|
|
1080
|
+
this.urlRegex.lastIndex = 0; // Reset regex
|
|
1081
|
+
processedText = processedText.replace(this.urlRegex, url => {
|
|
1082
|
+
// Verificar que no esté ya dentro de un enlace procesado
|
|
1083
|
+
const beforeMatch = processedText.substring(0, processedText.indexOf(url));
|
|
1084
|
+
if (beforeMatch.includes('<a href="' + url + '"')) {
|
|
1085
|
+
return url; // Ya está procesado como Markdown link
|
|
1086
|
+
}
|
|
1087
|
+
const target = openExternalInNewTab ? ' target="_blank" rel="noopener noreferrer"' : '';
|
|
1088
|
+
const classes = `${linkClass} ${externalLinkClass}`.trim();
|
|
1089
|
+
return `<a href="${url}"${target} class="${classes}">${url}</a>`;
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
// 3. Procesar rutas internas después
|
|
1093
|
+
if (this.internalRouteRegex.test(processedText)) {
|
|
1094
|
+
hasLinks = true;
|
|
1095
|
+
this.internalRouteRegex.lastIndex = 0; // Reset regex
|
|
1096
|
+
processedText = processedText.replace(this.internalRouteRegex, (match, prefix, route) => {
|
|
1097
|
+
// Solo procesar si no está ya dentro de un enlace
|
|
1098
|
+
const beforeMatch = processedText.substring(0, processedText.indexOf(match));
|
|
1099
|
+
if (beforeMatch.includes(`href="${route}"`)) {
|
|
1100
|
+
return match; // Ya está procesado
|
|
1101
|
+
}
|
|
1102
|
+
const target = openInternalInNewTab ? ' target="_blank"' : '';
|
|
1103
|
+
const classes = `${linkClass} ${internalLinkClass}`.trim();
|
|
1104
|
+
return `${prefix}<a href="${route}"${target} class="${classes}">${route}</a>`;
|
|
1105
|
+
});
|
|
1106
|
+
}
|
|
1107
|
+
// Si hay enlaces, sanitizar el HTML
|
|
1108
|
+
if (hasLinks) {
|
|
1109
|
+
return this.sanitizer.bypassSecurityTrustHtml(processedText);
|
|
1110
|
+
}
|
|
1111
|
+
return text;
|
|
1112
|
+
}
|
|
1113
|
+
/**
|
|
1114
|
+
* Detecta si un texto contiene enlaces (URLs, rutas internas o enlaces Markdown).
|
|
1115
|
+
*
|
|
1116
|
+
* @param text - Texto a analizar
|
|
1117
|
+
* @returns true si contiene enlaces
|
|
1118
|
+
*
|
|
1119
|
+
* @example
|
|
1120
|
+
* ```typescript
|
|
1121
|
+
* const hasLinks = this.linkProcessor.hasLinks('Visit https://example.com or [docs](https://docs.com)');
|
|
1122
|
+
* // Returns: true
|
|
1123
|
+
* ```
|
|
1124
|
+
*/
|
|
1125
|
+
hasLinks(text) {
|
|
1126
|
+
if (!text)
|
|
1127
|
+
return false;
|
|
1128
|
+
// Reset regex indices
|
|
1129
|
+
this.urlRegex.lastIndex = 0;
|
|
1130
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
1131
|
+
this.markdownLinkRegex.lastIndex = 0;
|
|
1132
|
+
return (this.urlRegex.test(text) ||
|
|
1133
|
+
this.internalRouteRegex.test(text) ||
|
|
1134
|
+
this.markdownLinkRegex.test(text));
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Extrae todos los enlaces de un texto.
|
|
1138
|
+
*
|
|
1139
|
+
* @param text - Texto a analizar
|
|
1140
|
+
* @returns Array de enlaces encontrados con su tipo y texto (si es Markdown)
|
|
1141
|
+
*
|
|
1142
|
+
* @example
|
|
1143
|
+
* ```typescript
|
|
1144
|
+
* const links = this.linkProcessor.extractLinks('Visit https://example.com, /profile, or [docs](https://docs.com)');
|
|
1145
|
+
* // Returns: [
|
|
1146
|
+
* // { url: 'https://example.com', type: 'external', text: 'https://example.com' },
|
|
1147
|
+
* // { url: '/profile', type: 'internal', text: '/profile' },
|
|
1148
|
+
* // { url: 'https://docs.com', type: 'external', text: 'docs' }
|
|
1149
|
+
* // ]
|
|
1150
|
+
* ```
|
|
1151
|
+
*/
|
|
1152
|
+
extractLinks(text) {
|
|
1153
|
+
if (!text)
|
|
1154
|
+
return [];
|
|
1155
|
+
const links = [];
|
|
1156
|
+
// Reset regex indices
|
|
1157
|
+
this.urlRegex.lastIndex = 0;
|
|
1158
|
+
this.internalRouteRegex.lastIndex = 0;
|
|
1159
|
+
this.markdownLinkRegex.lastIndex = 0;
|
|
1160
|
+
// Extraer enlaces Markdown primero
|
|
1161
|
+
let match;
|
|
1162
|
+
while ((match = this.markdownLinkRegex.exec(text)) !== null) {
|
|
1163
|
+
const url = match[2];
|
|
1164
|
+
const linkText = match[1];
|
|
1165
|
+
const type = /^https?:\/\//.test(url) ? 'external' : 'internal';
|
|
1166
|
+
links.push({ url, type, text: linkText });
|
|
1167
|
+
}
|
|
1168
|
+
// Extraer URLs externas directas
|
|
1169
|
+
while ((match = this.urlRegex.exec(text)) !== null) {
|
|
1170
|
+
const url = match[1];
|
|
1171
|
+
// Verificar que no esté ya capturado como Markdown link
|
|
1172
|
+
if (!links.some(link => link.url === url)) {
|
|
1173
|
+
links.push({ url, type: 'external', text: url });
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
// Extraer rutas internas directas
|
|
1177
|
+
while ((match = this.internalRouteRegex.exec(text)) !== null) {
|
|
1178
|
+
const url = match[2];
|
|
1179
|
+
// Verificar que no esté ya capturado como Markdown link
|
|
1180
|
+
if (!links.some(link => link.url === url)) {
|
|
1181
|
+
links.push({ url, type: 'internal', text: url });
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
return links;
|
|
1185
|
+
}
|
|
1186
|
+
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 }); }
|
|
1187
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessorService, providedIn: 'root' }); }
|
|
1188
|
+
}
|
|
1189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessorService, decorators: [{
|
|
1190
|
+
type: Injectable,
|
|
1191
|
+
args: [{
|
|
1192
|
+
providedIn: 'root',
|
|
1193
|
+
}]
|
|
1194
|
+
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }] });
|
|
1195
|
+
|
|
1196
|
+
/**
|
|
1197
|
+
* ProcessLinksPipe - Pipe para procesar texto y convertir URLs en enlaces clickeables.
|
|
1198
|
+
*
|
|
1199
|
+
* Este pipe standalone detecta automáticamente URLs externas (http/https) y rutas internas
|
|
1200
|
+
* (que empiezan con /) y las convierte en elementos HTML anchor con los atributos apropiados.
|
|
1201
|
+
*
|
|
1202
|
+
* @example Uso básico:
|
|
1203
|
+
* ```html
|
|
1204
|
+
* <div [innerHTML]="'Visit https://example.com or go to /profile' | processLinks"></div>
|
|
1205
|
+
* ```
|
|
1206
|
+
*
|
|
1207
|
+
* @example Con configuración personalizada:
|
|
1208
|
+
* ```html
|
|
1209
|
+
* <div [innerHTML]="text | processLinks:linkConfig"></div>
|
|
1210
|
+
* ```
|
|
1211
|
+
*
|
|
1212
|
+
* @example En TypeScript:
|
|
1213
|
+
* ```typescript
|
|
1214
|
+
* export class MyComponent {
|
|
1215
|
+
* linkConfig: LinkProcessorConfig = {
|
|
1216
|
+
* openExternalInNewTab: true,
|
|
1217
|
+
* openInternalInNewTab: false,
|
|
1218
|
+
* linkClass: 'my-link',
|
|
1219
|
+
* externalLinkClass: 'external',
|
|
1220
|
+
* internalLinkClass: 'internal'
|
|
1221
|
+
* };
|
|
1222
|
+
* }
|
|
1223
|
+
* ```
|
|
1224
|
+
*/
|
|
1225
|
+
class ProcessLinksPipe {
|
|
1226
|
+
constructor() {
|
|
1227
|
+
this.linkProcessor = inject(LinkProcessorService);
|
|
1228
|
+
}
|
|
1229
|
+
/**
|
|
1230
|
+
* Transforma texto procesando URLs y rutas internas para convertirlas en enlaces.
|
|
1231
|
+
*
|
|
1232
|
+
* @param value - El texto a procesar
|
|
1233
|
+
* @param config - Configuración opcional para el procesamiento de enlaces
|
|
1234
|
+
* @returns SafeHtml con enlaces procesados o string original si no hay enlaces
|
|
1235
|
+
*
|
|
1236
|
+
* @example
|
|
1237
|
+
* ```html
|
|
1238
|
+
* <!-- Uso básico -->
|
|
1239
|
+
* <p [innerHTML]="'Check out https://angular.io' | processLinks"></p>
|
|
1240
|
+
*
|
|
1241
|
+
* <!-- Con configuración -->
|
|
1242
|
+
* <p [innerHTML]="message | processLinks:{ openExternalInNewTab: false }"></p>
|
|
1243
|
+
* ```
|
|
1244
|
+
*/
|
|
1245
|
+
transform(value, config) {
|
|
1246
|
+
if (!value) {
|
|
1247
|
+
return '';
|
|
1248
|
+
}
|
|
1249
|
+
return this.linkProcessor.processLinks(value, config);
|
|
1250
|
+
}
|
|
1251
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1252
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, isStandalone: true, name: "processLinks" }); }
|
|
1253
|
+
}
|
|
1254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinksPipe, decorators: [{
|
|
1255
|
+
type: Pipe,
|
|
1256
|
+
args: [{
|
|
1257
|
+
name: 'processLinks',
|
|
1258
|
+
standalone: true,
|
|
1259
|
+
}]
|
|
1260
|
+
}] });
|
|
1261
|
+
|
|
1006
1262
|
/**
|
|
1007
1263
|
* Create a reactive content observable from a content key.
|
|
1008
1264
|
* This is the primary utility for the `fromContent` pattern with unified support
|
|
@@ -1747,6 +2003,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1747
2003
|
* }"></val-text>
|
|
1748
2004
|
* ```
|
|
1749
2005
|
*
|
|
2006
|
+
* @example With automatic link processing:
|
|
2007
|
+
* ```html
|
|
2008
|
+
* <val-text [props]="{
|
|
2009
|
+
* content: 'Visit https://example.com or go to /profile for more info',
|
|
2010
|
+
* processLinks: true,
|
|
2011
|
+
* linkConfig: {
|
|
2012
|
+
* openExternalInNewTab: true,
|
|
2013
|
+
* openInternalInNewTab: false,
|
|
2014
|
+
* linkClass: 'custom-link',
|
|
2015
|
+
* externalLinkClass: 'external',
|
|
2016
|
+
* internalLinkClass: 'internal'
|
|
2017
|
+
* },
|
|
2018
|
+
* color: 'primary',
|
|
2019
|
+
* size: 'medium'
|
|
2020
|
+
* }"></val-text>
|
|
2021
|
+
* ```
|
|
2022
|
+
*
|
|
1750
2023
|
* @example Using ContentService helper:
|
|
1751
2024
|
* ```typescript
|
|
1752
2025
|
* // In component
|
|
@@ -1766,8 +2039,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1766
2039
|
* @input props: TextMetadata - Configuration for the text (content, styling, and reactive content options)
|
|
1767
2040
|
*/
|
|
1768
2041
|
class TextComponent {
|
|
1769
|
-
constructor(contentService) {
|
|
2042
|
+
constructor(contentService, linkProcessor) {
|
|
1770
2043
|
this.contentService = contentService;
|
|
2044
|
+
this.linkProcessor = linkProcessor;
|
|
1771
2045
|
this.subscription = new Subscription();
|
|
1772
2046
|
}
|
|
1773
2047
|
ngOnInit() {
|
|
@@ -1811,21 +2085,37 @@ class TextComponent {
|
|
|
1811
2085
|
this.displayContent$ = of(this.props.contentFallback || '');
|
|
1812
2086
|
}
|
|
1813
2087
|
}
|
|
1814
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, deps: [{ token: ContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1815
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2088
|
+
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 }); }
|
|
2089
|
+
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: `
|
|
1816
2090
|
<ion-text [color]="props.color">
|
|
1817
|
-
|
|
2091
|
+
@if (props.processLinks) {
|
|
2092
|
+
<p
|
|
2093
|
+
[class]="props.size"
|
|
2094
|
+
[class.bold]="props.bold"
|
|
2095
|
+
[innerHTML]="displayContent$ | async | processLinks: props.linkConfig"
|
|
2096
|
+
></p>
|
|
2097
|
+
} @else {
|
|
2098
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
2099
|
+
}
|
|
1818
2100
|
</ion-text>
|
|
1819
|
-
`, isInline: true, styles: ["
|
|
2101
|
+
`, 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-primary, #0cd1e8)}:host ::ng-deep .internal-link:hover{color:var(--ion-color-primary-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 }); }
|
|
1820
2102
|
}
|
|
1821
2103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextComponent, decorators: [{
|
|
1822
2104
|
type: Component,
|
|
1823
|
-
args: [{ selector: 'val-text', standalone: true, imports: [IonText, AsyncPipe], template: `
|
|
2105
|
+
args: [{ selector: 'val-text', standalone: true, imports: [IonText, AsyncPipe, ProcessLinksPipe], template: `
|
|
1824
2106
|
<ion-text [color]="props.color">
|
|
1825
|
-
|
|
2107
|
+
@if (props.processLinks) {
|
|
2108
|
+
<p
|
|
2109
|
+
[class]="props.size"
|
|
2110
|
+
[class.bold]="props.bold"
|
|
2111
|
+
[innerHTML]="displayContent$ | async | processLinks: props.linkConfig"
|
|
2112
|
+
></p>
|
|
2113
|
+
} @else {
|
|
2114
|
+
<p [class]="props.size" [class.bold]="props.bold">{{ displayContent$ | async }}</p>
|
|
2115
|
+
}
|
|
1826
2116
|
</ion-text>
|
|
1827
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["
|
|
1828
|
-
}], ctorParameters: () => [{ type: ContentService }], propDecorators: { props: [{
|
|
2117
|
+
`, 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-primary, #0cd1e8)}:host ::ng-deep .internal-link:hover{color:var(--ion-color-primary-shade, #0bb8cc)}\n"] }]
|
|
2118
|
+
}], ctorParameters: () => [{ type: ContentService }, { type: LinkProcessorService }], propDecorators: { props: [{
|
|
1829
2119
|
type: Input
|
|
1830
2120
|
}] } });
|
|
1831
2121
|
/**
|
|
@@ -2418,7 +2708,7 @@ class CommentInputComponent {
|
|
|
2418
2708
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2419
2709
|
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: `
|
|
2420
2710
|
<ion-textarea [formControl]="props.control" [counter]="true" [maxlength]="props.range.max"></ion-textarea>
|
|
2421
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
2711
|
+
`, 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"] }] }); }
|
|
2422
2712
|
}
|
|
2423
2713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentInputComponent, decorators: [{
|
|
2424
2714
|
type: Component,
|
|
@@ -2620,7 +2910,7 @@ class DateInputComponent {
|
|
|
2620
2910
|
</ion-datetime>
|
|
2621
2911
|
</ng-template>
|
|
2622
2912
|
</ion-modal>
|
|
2623
|
-
`, 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$
|
|
2913
|
+
`, 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" }] }); }
|
|
2624
2914
|
}
|
|
2625
2915
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
2626
2916
|
type: Component,
|
|
@@ -2667,7 +2957,7 @@ class EmailInputComponent {
|
|
|
2667
2957
|
constructor() { }
|
|
2668
2958
|
ngOnInit() { }
|
|
2669
2959
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2670
|
-
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$
|
|
2960
|
+
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"] }] }); }
|
|
2671
2961
|
}
|
|
2672
2962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
2673
2963
|
type: Component,
|
|
@@ -2921,7 +3211,7 @@ class HourInputComponent {
|
|
|
2921
3211
|
constructor() { }
|
|
2922
3212
|
ngOnInit() { }
|
|
2923
3213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2924
|
-
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$
|
|
3214
|
+
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"] }] }); }
|
|
2925
3215
|
}
|
|
2926
3216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HourInputComponent, decorators: [{
|
|
2927
3217
|
type: Component,
|
|
@@ -3435,7 +3725,7 @@ class NumberInputComponent {
|
|
|
3435
3725
|
}
|
|
3436
3726
|
}
|
|
3437
3727
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3438
|
-
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$
|
|
3728
|
+
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"] }] }); }
|
|
3439
3729
|
}
|
|
3440
3730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
3441
3731
|
type: Component,
|
|
@@ -3472,7 +3762,7 @@ class PasswordInputComponent {
|
|
|
3472
3762
|
<ion-icon slot="icon-only" [name]="hidePassword ? 'eye-off-outline' : 'eye-outline'"></ion-icon>
|
|
3473
3763
|
</ion-button>
|
|
3474
3764
|
</div>
|
|
3475
|
-
`, 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$
|
|
3765
|
+
`, 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"] }] }); }
|
|
3476
3766
|
}
|
|
3477
3767
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
3478
3768
|
type: Component,
|
|
@@ -3528,7 +3818,7 @@ class PinInputComponent {
|
|
|
3528
3818
|
<div class="otp">
|
|
3529
3819
|
<ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
|
|
3530
3820
|
</div>
|
|
3531
|
-
`, 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$
|
|
3821
|
+
`, 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"] }] }); }
|
|
3532
3822
|
}
|
|
3533
3823
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinInputComponent, decorators: [{
|
|
3534
3824
|
type: Component,
|
|
@@ -3764,7 +4054,7 @@ class RadioInputComponent {
|
|
|
3764
4054
|
<br />
|
|
3765
4055
|
</ng-container>
|
|
3766
4056
|
</ion-radio-group>
|
|
3767
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
4057
|
+
`, 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"] }] }); }
|
|
3768
4058
|
}
|
|
3769
4059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RadioInputComponent, decorators: [{
|
|
3770
4060
|
type: Component,
|
|
@@ -3896,7 +4186,7 @@ class SearchSelectorComponent {
|
|
|
3896
4186
|
<ion-select-option [value]="o.id">{{ o.name }}</ion-select-option>
|
|
3897
4187
|
}
|
|
3898
4188
|
</ion-select>
|
|
3899
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
4189
|
+
`, 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"] }] }); }
|
|
3900
4190
|
}
|
|
3901
4191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchSelectorComponent, decorators: [{
|
|
3902
4192
|
type: Component,
|
|
@@ -4235,7 +4525,7 @@ class SelectSearchComponent {
|
|
|
4235
4525
|
</ion-content>
|
|
4236
4526
|
</ng-template>
|
|
4237
4527
|
</ion-modal>
|
|
4238
|
-
`, 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$
|
|
4528
|
+
`, 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"] }] }); }
|
|
4239
4529
|
}
|
|
4240
4530
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectSearchComponent, decorators: [{
|
|
4241
4531
|
type: Component,
|
|
@@ -4321,7 +4611,7 @@ class TextInputComponent {
|
|
|
4321
4611
|
}
|
|
4322
4612
|
}
|
|
4323
4613
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4324
|
-
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$
|
|
4614
|
+
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"] }] }); }
|
|
4325
4615
|
}
|
|
4326
4616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
4327
4617
|
type: Component,
|
|
@@ -4900,7 +5190,7 @@ class FormComponent {
|
|
|
4900
5190
|
}
|
|
4901
5191
|
return [this.props.actions];
|
|
4902
5192
|
}
|
|
4903
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, deps: [{ token: i1$
|
|
5193
|
+
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 }); }
|
|
4904
5194
|
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: `
|
|
4905
5195
|
<div class="container">
|
|
4906
5196
|
<form [formGroup]="form">
|
|
@@ -4966,7 +5256,7 @@ class FormComponent {
|
|
|
4966
5256
|
></val-button-group>
|
|
4967
5257
|
</form>
|
|
4968
5258
|
</div>
|
|
4969
|
-
`, 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$
|
|
5259
|
+
`, 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"] }] }); }
|
|
4970
5260
|
}
|
|
4971
5261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, decorators: [{
|
|
4972
5262
|
type: Component,
|
|
@@ -5057,7 +5347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5057
5347
|
</form>
|
|
5058
5348
|
</div>
|
|
5059
5349
|
`, 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"] }]
|
|
5060
|
-
}], ctorParameters: () => [{ type: i1$
|
|
5350
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i0.ElementRef }], propDecorators: { props: [{
|
|
5061
5351
|
type: Input
|
|
5062
5352
|
}], onSubmit: [{
|
|
5063
5353
|
type: Output
|
|
@@ -6259,905 +6549,192 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
6259
6549
|
}] });
|
|
6260
6550
|
|
|
6261
6551
|
/**
|
|
6262
|
-
*
|
|
6263
|
-
*
|
|
6264
|
-
*
|
|
6265
|
-
*
|
|
6266
|
-
*
|
|
6267
|
-
*
|
|
6268
|
-
*
|
|
6269
|
-
*
|
|
6552
|
+
* LinkProcessingExampleComponent - Componente de ejemplo que demuestra el procesamiento automático de enlaces.
|
|
6553
|
+
*
|
|
6554
|
+
* Este componente muestra diferentes casos de uso para el procesamiento automático de enlaces
|
|
6555
|
+
* en el componente val-text, incluyendo enlaces externos, rutas internas y configuraciones personalizadas.
|
|
6556
|
+
*
|
|
6557
|
+
* @example Uso en template:
|
|
6558
|
+
* ```html
|
|
6559
|
+
* <val-link-processing-example></val-link-processing-example>
|
|
6560
|
+
* ```
|
|
6270
6561
|
*/
|
|
6271
|
-
class
|
|
6562
|
+
class LinkProcessingExampleComponent {
|
|
6272
6563
|
constructor() {
|
|
6273
|
-
this.
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
|
|
6277
|
-
|
|
6278
|
-
|
|
6279
|
-
message: '',
|
|
6564
|
+
this.basicTextProps = {
|
|
6565
|
+
content: 'Este texto contiene https://angular.io y /dashboard pero no se procesan como enlaces.',
|
|
6566
|
+
size: 'medium',
|
|
6567
|
+
color: 'dark',
|
|
6568
|
+
bold: false,
|
|
6569
|
+
processLinks: false,
|
|
6280
6570
|
};
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
contentFallback: 'Global Content Example',
|
|
6288
|
-
color: 'primary',
|
|
6289
|
-
size: 'xlarge',
|
|
6290
|
-
bold: true,
|
|
6571
|
+
this.basicLinksProps = {
|
|
6572
|
+
content: 'Visita https://angular.io para documentación o ve a /dashboard para el panel principal.',
|
|
6573
|
+
size: 'medium',
|
|
6574
|
+
color: 'dark',
|
|
6575
|
+
bold: false,
|
|
6576
|
+
processLinks: true,
|
|
6291
6577
|
};
|
|
6292
|
-
this.
|
|
6293
|
-
|
|
6294
|
-
contentClass: 'GlobalContentExample',
|
|
6295
|
-
contentFallback: 'Language:',
|
|
6296
|
-
color: 'medium',
|
|
6578
|
+
this.customLinksProps = {
|
|
6579
|
+
content: 'Enlaces personalizados: https://github.com/angular/angular y /profile/settings',
|
|
6297
6580
|
size: 'medium',
|
|
6298
|
-
|
|
6581
|
+
color: 'dark',
|
|
6582
|
+
bold: false,
|
|
6583
|
+
processLinks: true,
|
|
6584
|
+
linkConfig: {
|
|
6585
|
+
openExternalInNewTab: true,
|
|
6586
|
+
openInternalInNewTab: false,
|
|
6587
|
+
linkClass: 'custom-link-style',
|
|
6588
|
+
externalLinkClass: 'external-custom',
|
|
6589
|
+
internalLinkClass: 'internal-custom',
|
|
6590
|
+
},
|
|
6299
6591
|
};
|
|
6300
|
-
this.
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
contentFallback: 'This example demonstrates global and component-specific content.',
|
|
6592
|
+
this.mixedLinksProps = {
|
|
6593
|
+
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.',
|
|
6594
|
+
size: 'medium',
|
|
6304
6595
|
color: 'dark',
|
|
6596
|
+
bold: false,
|
|
6597
|
+
processLinks: true,
|
|
6598
|
+
linkConfig: {
|
|
6599
|
+
openExternalInNewTab: true,
|
|
6600
|
+
openInternalInNewTab: false,
|
|
6601
|
+
linkClass: 'processed-link',
|
|
6602
|
+
externalLinkClass: 'external-link',
|
|
6603
|
+
internalLinkClass: 'internal-link',
|
|
6604
|
+
},
|
|
6605
|
+
};
|
|
6606
|
+
this.sameTabLinksProps = {
|
|
6607
|
+
content: 'Estos enlaces no abren en nueva pestaña: https://example.com y /home',
|
|
6305
6608
|
size: 'medium',
|
|
6609
|
+
color: 'dark',
|
|
6306
6610
|
bold: false,
|
|
6611
|
+
processLinks: true,
|
|
6612
|
+
linkConfig: {
|
|
6613
|
+
openExternalInNewTab: false,
|
|
6614
|
+
openInternalInNewTab: false,
|
|
6615
|
+
linkClass: 'same-tab-link',
|
|
6616
|
+
externalLinkClass: 'external-same-tab',
|
|
6617
|
+
internalLinkClass: 'internal-same-tab',
|
|
6618
|
+
},
|
|
6307
6619
|
};
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
this.sortButton$ = this.content.fromContent({ key: 'sort' });
|
|
6323
|
-
this.refreshButton$ = this.content.fromContent({ key: 'refresh' });
|
|
6324
|
-
// Global state content
|
|
6325
|
-
this.loadingText$ = this.content.fromContent({ key: 'loading' });
|
|
6326
|
-
this.successText$ = this.content.fromContent({ key: 'success' });
|
|
6327
|
-
this.errorText$ = this.content.fromContent({ key: 'error' });
|
|
6328
|
-
this.warningText$ = this.content.fromContent({ key: 'warning' });
|
|
6329
|
-
this.infoText$ = this.content.fromContent({ key: 'info' });
|
|
6330
|
-
this.noDataText$ = this.content.fromContent({ key: 'noData' });
|
|
6331
|
-
// Global form content
|
|
6332
|
-
this.requiredText$ = this.content.fromContent({ key: 'required' });
|
|
6333
|
-
this.optionalText$ = this.content.fromContent({ key: 'optional' });
|
|
6334
|
-
this.searchPlaceholder$ = this.content.fromContent({ key: 'searchPlaceholder' });
|
|
6335
|
-
// Global confirmation content with interpolation
|
|
6336
|
-
this.deleteConfirmation$ = this.content.fromContentWithInterpolation({
|
|
6337
|
-
key: 'deleteConfirmation',
|
|
6338
|
-
interpolation: { itemName: 'este registro' },
|
|
6339
|
-
});
|
|
6340
|
-
this.areYouSureText$ = this.content.fromContent({ key: 'areYouSure' });
|
|
6341
|
-
this.unsavedChangesText$ = this.content.fromContent({ key: 'unsavedChanges' });
|
|
6342
|
-
}
|
|
6343
|
-
/**
|
|
6344
|
-
* Set language
|
|
6345
|
-
*/
|
|
6346
|
-
setLanguage(lang) {
|
|
6347
|
-
this.content.setLang(lang);
|
|
6348
|
-
}
|
|
6349
|
-
/**
|
|
6350
|
-
* Perform an action to demonstrate status messages
|
|
6351
|
-
*/
|
|
6352
|
-
performAction() {
|
|
6353
|
-
this.actionPerformed = true;
|
|
6354
|
-
setTimeout(() => {
|
|
6355
|
-
this.actionPerformed = false;
|
|
6356
|
-
}, 3000);
|
|
6357
|
-
}
|
|
6358
|
-
/**
|
|
6359
|
-
* Cancel action
|
|
6360
|
-
*/
|
|
6361
|
-
cancelAction() {
|
|
6362
|
-
this.formData = { name: '', email: '', message: '' };
|
|
6363
|
-
this.actionPerformed = false;
|
|
6364
|
-
}
|
|
6365
|
-
/**
|
|
6366
|
-
* Example of synchronous global content access
|
|
6367
|
-
*/
|
|
6368
|
-
getOkTextSync() {
|
|
6369
|
-
return this.content.getGlobalText('ok');
|
|
6370
|
-
}
|
|
6371
|
-
/**
|
|
6372
|
-
* Example of synchronous global content access using getText
|
|
6373
|
-
*/
|
|
6374
|
-
getCancelTextSync() {
|
|
6375
|
-
return this.content.getText('cancel');
|
|
6376
|
-
}
|
|
6377
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobalContentExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6378
|
-
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: `
|
|
6379
|
-
<ion-card>
|
|
6380
|
-
<ion-card-header>
|
|
6381
|
-
<ion-card-title>
|
|
6382
|
-
<val-text [props]="titleProps"></val-text>
|
|
6383
|
-
</ion-card-title>
|
|
6384
|
-
</ion-card-header>
|
|
6385
|
-
|
|
6386
|
-
<ion-card-content>
|
|
6387
|
-
<!-- Language switcher -->
|
|
6388
|
-
<div class="language-section">
|
|
6389
|
-
<val-text [props]="languageLabel"></val-text>
|
|
6390
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('es')"> Español </ion-button>
|
|
6391
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('en')"> English </ion-button>
|
|
6392
|
-
</div>
|
|
6393
|
-
|
|
6394
|
-
<div class="divider"></div>
|
|
6395
|
-
|
|
6396
|
-
<!-- Global buttons demonstration -->
|
|
6397
|
-
<div class="section">
|
|
6398
|
-
<h3>Global Buttons</h3>
|
|
6399
|
-
<div class="button-grid">
|
|
6400
|
-
<ion-button color="primary">{{ saveButton$ | async }}</ion-button>
|
|
6401
|
-
<ion-button color="secondary">{{ editButton$ | async }}</ion-button>
|
|
6402
|
-
<ion-button color="danger">{{ deleteButton$ | async }}</ion-button>
|
|
6403
|
-
<ion-button fill="outline">{{ cancelButton$ | async }}</ion-button>
|
|
6404
|
-
<ion-button fill="outline">{{ backButton$ | async }}</ion-button>
|
|
6405
|
-
<ion-button fill="outline">{{ nextButton$ | async }}</ion-button>
|
|
6406
|
-
<ion-button color="success">{{ okButton$ | async }}</ion-button>
|
|
6407
|
-
<ion-button fill="clear">{{ closeButton$ | async }}</ion-button>
|
|
6408
|
-
</div>
|
|
6409
|
-
</div>
|
|
6410
|
-
|
|
6411
|
-
<div class="divider"></div>
|
|
6412
|
-
|
|
6413
|
-
<!-- Global actions demonstration -->
|
|
6414
|
-
<div class="section">
|
|
6415
|
-
<h3>Global Actions</h3>
|
|
6416
|
-
<div class="button-grid">
|
|
6417
|
-
<ion-button size="small">{{ addButton$ | async }}</ion-button>
|
|
6418
|
-
<ion-button size="small">{{ removeButton$ | async }}</ion-button>
|
|
6419
|
-
<ion-button size="small">{{ searchButton$ | async }}</ion-button>
|
|
6420
|
-
<ion-button size="small">{{ filterButton$ | async }}</ion-button>
|
|
6421
|
-
<ion-button size="small">{{ sortButton$ | async }}</ion-button>
|
|
6422
|
-
<ion-button size="small">{{ refreshButton$ | async }}</ion-button>
|
|
6423
|
-
</div>
|
|
6424
|
-
</div>
|
|
6425
|
-
|
|
6426
|
-
<div class="divider"></div>
|
|
6427
|
-
|
|
6428
|
-
<!-- Global states demonstration -->
|
|
6429
|
-
<div class="section">
|
|
6430
|
-
<h3>Global States</h3>
|
|
6431
|
-
<div class="state-messages">
|
|
6432
|
-
<div class="state-item loading">
|
|
6433
|
-
<val-text
|
|
6434
|
-
[props]="{ content: loadingText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6435
|
-
></val-text>
|
|
6436
|
-
</div>
|
|
6437
|
-
<div class="state-item success">
|
|
6438
|
-
<val-text
|
|
6439
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6440
|
-
></val-text>
|
|
6441
|
-
</div>
|
|
6442
|
-
<div class="state-item error">
|
|
6443
|
-
<val-text
|
|
6444
|
-
[props]="{ content: errorText$ | async, color: 'danger', size: 'small', bold: false }"
|
|
6445
|
-
></val-text>
|
|
6446
|
-
</div>
|
|
6447
|
-
<div class="state-item warning">
|
|
6448
|
-
<val-text
|
|
6449
|
-
[props]="{ content: warningText$ | async, color: 'warning', size: 'small', bold: false }"
|
|
6450
|
-
></val-text>
|
|
6451
|
-
</div>
|
|
6452
|
-
<div class="state-item info">
|
|
6453
|
-
<val-text
|
|
6454
|
-
[props]="{ content: infoText$ | async, color: 'primary', size: 'small', bold: false }"
|
|
6455
|
-
></val-text>
|
|
6456
|
-
</div>
|
|
6457
|
-
<div class="state-item no-data">
|
|
6458
|
-
<val-text
|
|
6459
|
-
[props]="{ content: noDataText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6460
|
-
></val-text>
|
|
6461
|
-
</div>
|
|
6462
|
-
</div>
|
|
6463
|
-
</div>
|
|
6464
|
-
|
|
6465
|
-
<div class="divider"></div>
|
|
6466
|
-
|
|
6467
|
-
<!-- Form with global placeholders and labels -->
|
|
6468
|
-
<div class="section">
|
|
6469
|
-
<h3>Form with Global Content</h3>
|
|
6470
|
-
<form class="example-form">
|
|
6471
|
-
<ion-item>
|
|
6472
|
-
<ion-label position="stacked">Name ({{ requiredText$ | async }})</ion-label>
|
|
6473
|
-
<ion-input [(ngModel)]="formData.name" [placeholder]="'Enter your name' + '...'" name="name"> </ion-input>
|
|
6474
|
-
</ion-item>
|
|
6475
|
-
|
|
6476
|
-
<ion-item>
|
|
6477
|
-
<ion-label position="stacked">Email ({{ optionalText$ | async }})</ion-label>
|
|
6478
|
-
<ion-input [(ngModel)]="formData.email" [placeholder]="'Enter your email' + '...'" name="email">
|
|
6479
|
-
</ion-input>
|
|
6480
|
-
</ion-item>
|
|
6481
|
-
|
|
6482
|
-
<ion-item>
|
|
6483
|
-
<ion-label position="stacked">Message</ion-label>
|
|
6484
|
-
<ion-textarea [(ngModel)]="formData.message" [placeholder]="searchPlaceholder$ | async" name="message">
|
|
6485
|
-
</ion-textarea>
|
|
6486
|
-
</ion-item>
|
|
6487
|
-
</form>
|
|
6488
|
-
</div>
|
|
6489
|
-
|
|
6490
|
-
<div class="divider"></div>
|
|
6491
|
-
|
|
6492
|
-
<!-- Global confirmations with interpolation -->
|
|
6493
|
-
<div class="section">
|
|
6494
|
-
<h3>Confirmations with Interpolation</h3>
|
|
6495
|
-
<div class="confirmation-examples">
|
|
6496
|
-
<p><strong>Delete Confirmation:</strong></p>
|
|
6497
|
-
<val-text
|
|
6498
|
-
[props]="{ content: deleteConfirmation$ | async, color: 'danger', size: 'medium', bold: false }"
|
|
6499
|
-
></val-text>
|
|
6500
|
-
|
|
6501
|
-
<br /><br />
|
|
6502
|
-
<p><strong>General Confirmation:</strong></p>
|
|
6503
|
-
<val-text
|
|
6504
|
-
[props]="{ content: areYouSureText$ | async, color: 'warning', size: 'medium', bold: false }"
|
|
6505
|
-
></val-text>
|
|
6506
|
-
|
|
6507
|
-
<br /><br />
|
|
6508
|
-
<p><strong>Unsaved Changes:</strong></p>
|
|
6509
|
-
<val-text
|
|
6510
|
-
[props]="{ content: unsavedChangesText$ | async, color: 'medium', size: 'medium', bold: false }"
|
|
6511
|
-
></val-text>
|
|
6512
|
-
</div>
|
|
6513
|
-
</div>
|
|
6514
|
-
|
|
6515
|
-
<div class="divider"></div>
|
|
6516
|
-
|
|
6517
|
-
<!-- Mixed content: Global + Component specific -->
|
|
6518
|
-
<div class="section">
|
|
6519
|
-
<h3>Mixed Content Example</h3>
|
|
6520
|
-
<div class="mixed-content">
|
|
6521
|
-
<!-- Component-specific content -->
|
|
6522
|
-
<val-text [props]="componentDescriptionProps"></val-text>
|
|
6523
|
-
|
|
6524
|
-
<br /><br />
|
|
6525
|
-
|
|
6526
|
-
<!-- Action buttons mixing global and component content -->
|
|
6527
|
-
<div class="action-buttons">
|
|
6528
|
-
<ion-button color="primary" (click)="performAction()">
|
|
6529
|
-
{{ saveButton$ | async }}
|
|
6530
|
-
</ion-button>
|
|
6531
|
-
<ion-button fill="outline" (click)="cancelAction()">
|
|
6532
|
-
{{ cancelButton$ | async }}
|
|
6533
|
-
</ion-button>
|
|
6534
|
-
</div>
|
|
6535
|
-
|
|
6536
|
-
<!-- Status message using global content -->
|
|
6537
|
-
<div *ngIf="actionPerformed" class="status-message">
|
|
6538
|
-
<val-text
|
|
6539
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6540
|
-
></val-text>
|
|
6541
|
-
</div>
|
|
6542
|
-
</div>
|
|
6543
|
-
</div>
|
|
6544
|
-
|
|
6545
|
-
<!-- Demo of synchronous global content access -->
|
|
6546
|
-
<div class="section">
|
|
6547
|
-
<h3>Synchronous Access Example</h3>
|
|
6548
|
-
<p>
|
|
6549
|
-
OK button text (sync): <strong>{{ getOkTextSync() }}</strong>
|
|
6550
|
-
</p>
|
|
6551
|
-
<p>
|
|
6552
|
-
Cancel button text (sync): <strong>{{ getCancelTextSync() }}</strong>
|
|
6553
|
-
</p>
|
|
6554
|
-
</div>
|
|
6555
|
-
</ion-card-content>
|
|
6556
|
-
</ion-card>
|
|
6557
|
-
`, 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"] }] }); }
|
|
6558
|
-
}
|
|
6559
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobalContentExampleComponent, decorators: [{
|
|
6560
|
-
type: Component,
|
|
6561
|
-
args: [{ selector: 'val-global-content-example', standalone: true, imports: [
|
|
6562
|
-
CommonModule,
|
|
6563
|
-
FormsModule,
|
|
6564
|
-
IonCard,
|
|
6565
|
-
IonCardContent,
|
|
6566
|
-
IonCardHeader,
|
|
6567
|
-
IonCardTitle,
|
|
6568
|
-
IonButton,
|
|
6569
|
-
IonItem,
|
|
6570
|
-
IonLabel,
|
|
6571
|
-
IonInput,
|
|
6572
|
-
IonTextarea,
|
|
6573
|
-
TextComponent,
|
|
6574
|
-
], template: `
|
|
6575
|
-
<ion-card>
|
|
6576
|
-
<ion-card-header>
|
|
6577
|
-
<ion-card-title>
|
|
6578
|
-
<val-text [props]="titleProps"></val-text>
|
|
6579
|
-
</ion-card-title>
|
|
6580
|
-
</ion-card-header>
|
|
6581
|
-
|
|
6582
|
-
<ion-card-content>
|
|
6583
|
-
<!-- Language switcher -->
|
|
6584
|
-
<div class="language-section">
|
|
6585
|
-
<val-text [props]="languageLabel"></val-text>
|
|
6586
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('es')"> Español </ion-button>
|
|
6587
|
-
<ion-button fill="outline" size="small" (click)="setLanguage('en')"> English </ion-button>
|
|
6588
|
-
</div>
|
|
6589
|
-
|
|
6590
|
-
<div class="divider"></div>
|
|
6591
|
-
|
|
6592
|
-
<!-- Global buttons demonstration -->
|
|
6593
|
-
<div class="section">
|
|
6594
|
-
<h3>Global Buttons</h3>
|
|
6595
|
-
<div class="button-grid">
|
|
6596
|
-
<ion-button color="primary">{{ saveButton$ | async }}</ion-button>
|
|
6597
|
-
<ion-button color="secondary">{{ editButton$ | async }}</ion-button>
|
|
6598
|
-
<ion-button color="danger">{{ deleteButton$ | async }}</ion-button>
|
|
6599
|
-
<ion-button fill="outline">{{ cancelButton$ | async }}</ion-button>
|
|
6600
|
-
<ion-button fill="outline">{{ backButton$ | async }}</ion-button>
|
|
6601
|
-
<ion-button fill="outline">{{ nextButton$ | async }}</ion-button>
|
|
6602
|
-
<ion-button color="success">{{ okButton$ | async }}</ion-button>
|
|
6603
|
-
<ion-button fill="clear">{{ closeButton$ | async }}</ion-button>
|
|
6604
|
-
</div>
|
|
6605
|
-
</div>
|
|
6606
|
-
|
|
6607
|
-
<div class="divider"></div>
|
|
6608
|
-
|
|
6609
|
-
<!-- Global actions demonstration -->
|
|
6610
|
-
<div class="section">
|
|
6611
|
-
<h3>Global Actions</h3>
|
|
6612
|
-
<div class="button-grid">
|
|
6613
|
-
<ion-button size="small">{{ addButton$ | async }}</ion-button>
|
|
6614
|
-
<ion-button size="small">{{ removeButton$ | async }}</ion-button>
|
|
6615
|
-
<ion-button size="small">{{ searchButton$ | async }}</ion-button>
|
|
6616
|
-
<ion-button size="small">{{ filterButton$ | async }}</ion-button>
|
|
6617
|
-
<ion-button size="small">{{ sortButton$ | async }}</ion-button>
|
|
6618
|
-
<ion-button size="small">{{ refreshButton$ | async }}</ion-button>
|
|
6619
|
-
</div>
|
|
6620
|
-
</div>
|
|
6621
|
-
|
|
6622
|
-
<div class="divider"></div>
|
|
6623
|
-
|
|
6624
|
-
<!-- Global states demonstration -->
|
|
6625
|
-
<div class="section">
|
|
6626
|
-
<h3>Global States</h3>
|
|
6627
|
-
<div class="state-messages">
|
|
6628
|
-
<div class="state-item loading">
|
|
6629
|
-
<val-text
|
|
6630
|
-
[props]="{ content: loadingText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6631
|
-
></val-text>
|
|
6632
|
-
</div>
|
|
6633
|
-
<div class="state-item success">
|
|
6634
|
-
<val-text
|
|
6635
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6636
|
-
></val-text>
|
|
6637
|
-
</div>
|
|
6638
|
-
<div class="state-item error">
|
|
6639
|
-
<val-text
|
|
6640
|
-
[props]="{ content: errorText$ | async, color: 'danger', size: 'small', bold: false }"
|
|
6641
|
-
></val-text>
|
|
6642
|
-
</div>
|
|
6643
|
-
<div class="state-item warning">
|
|
6644
|
-
<val-text
|
|
6645
|
-
[props]="{ content: warningText$ | async, color: 'warning', size: 'small', bold: false }"
|
|
6646
|
-
></val-text>
|
|
6647
|
-
</div>
|
|
6648
|
-
<div class="state-item info">
|
|
6649
|
-
<val-text
|
|
6650
|
-
[props]="{ content: infoText$ | async, color: 'primary', size: 'small', bold: false }"
|
|
6651
|
-
></val-text>
|
|
6652
|
-
</div>
|
|
6653
|
-
<div class="state-item no-data">
|
|
6654
|
-
<val-text
|
|
6655
|
-
[props]="{ content: noDataText$ | async, color: 'medium', size: 'small', bold: false }"
|
|
6656
|
-
></val-text>
|
|
6657
|
-
</div>
|
|
6658
|
-
</div>
|
|
6659
|
-
</div>
|
|
6660
|
-
|
|
6661
|
-
<div class="divider"></div>
|
|
6662
|
-
|
|
6663
|
-
<!-- Form with global placeholders and labels -->
|
|
6664
|
-
<div class="section">
|
|
6665
|
-
<h3>Form with Global Content</h3>
|
|
6666
|
-
<form class="example-form">
|
|
6667
|
-
<ion-item>
|
|
6668
|
-
<ion-label position="stacked">Name ({{ requiredText$ | async }})</ion-label>
|
|
6669
|
-
<ion-input [(ngModel)]="formData.name" [placeholder]="'Enter your name' + '...'" name="name"> </ion-input>
|
|
6670
|
-
</ion-item>
|
|
6671
|
-
|
|
6672
|
-
<ion-item>
|
|
6673
|
-
<ion-label position="stacked">Email ({{ optionalText$ | async }})</ion-label>
|
|
6674
|
-
<ion-input [(ngModel)]="formData.email" [placeholder]="'Enter your email' + '...'" name="email">
|
|
6675
|
-
</ion-input>
|
|
6676
|
-
</ion-item>
|
|
6677
|
-
|
|
6678
|
-
<ion-item>
|
|
6679
|
-
<ion-label position="stacked">Message</ion-label>
|
|
6680
|
-
<ion-textarea [(ngModel)]="formData.message" [placeholder]="searchPlaceholder$ | async" name="message">
|
|
6681
|
-
</ion-textarea>
|
|
6682
|
-
</ion-item>
|
|
6683
|
-
</form>
|
|
6684
|
-
</div>
|
|
6685
|
-
|
|
6686
|
-
<div class="divider"></div>
|
|
6687
|
-
|
|
6688
|
-
<!-- Global confirmations with interpolation -->
|
|
6689
|
-
<div class="section">
|
|
6690
|
-
<h3>Confirmations with Interpolation</h3>
|
|
6691
|
-
<div class="confirmation-examples">
|
|
6692
|
-
<p><strong>Delete Confirmation:</strong></p>
|
|
6693
|
-
<val-text
|
|
6694
|
-
[props]="{ content: deleteConfirmation$ | async, color: 'danger', size: 'medium', bold: false }"
|
|
6695
|
-
></val-text>
|
|
6696
|
-
|
|
6697
|
-
<br /><br />
|
|
6698
|
-
<p><strong>General Confirmation:</strong></p>
|
|
6699
|
-
<val-text
|
|
6700
|
-
[props]="{ content: areYouSureText$ | async, color: 'warning', size: 'medium', bold: false }"
|
|
6701
|
-
></val-text>
|
|
6702
|
-
|
|
6703
|
-
<br /><br />
|
|
6704
|
-
<p><strong>Unsaved Changes:</strong></p>
|
|
6705
|
-
<val-text
|
|
6706
|
-
[props]="{ content: unsavedChangesText$ | async, color: 'medium', size: 'medium', bold: false }"
|
|
6707
|
-
></val-text>
|
|
6708
|
-
</div>
|
|
6709
|
-
</div>
|
|
6710
|
-
|
|
6711
|
-
<div class="divider"></div>
|
|
6712
|
-
|
|
6713
|
-
<!-- Mixed content: Global + Component specific -->
|
|
6714
|
-
<div class="section">
|
|
6715
|
-
<h3>Mixed Content Example</h3>
|
|
6716
|
-
<div class="mixed-content">
|
|
6717
|
-
<!-- Component-specific content -->
|
|
6718
|
-
<val-text [props]="componentDescriptionProps"></val-text>
|
|
6719
|
-
|
|
6720
|
-
<br /><br />
|
|
6721
|
-
|
|
6722
|
-
<!-- Action buttons mixing global and component content -->
|
|
6723
|
-
<div class="action-buttons">
|
|
6724
|
-
<ion-button color="primary" (click)="performAction()">
|
|
6725
|
-
{{ saveButton$ | async }}
|
|
6726
|
-
</ion-button>
|
|
6727
|
-
<ion-button fill="outline" (click)="cancelAction()">
|
|
6728
|
-
{{ cancelButton$ | async }}
|
|
6729
|
-
</ion-button>
|
|
6730
|
-
</div>
|
|
6731
|
-
|
|
6732
|
-
<!-- Status message using global content -->
|
|
6733
|
-
<div *ngIf="actionPerformed" class="status-message">
|
|
6734
|
-
<val-text
|
|
6735
|
-
[props]="{ content: successText$ | async, color: 'success', size: 'small', bold: false }"
|
|
6736
|
-
></val-text>
|
|
6737
|
-
</div>
|
|
6738
|
-
</div>
|
|
6739
|
-
</div>
|
|
6740
|
-
|
|
6741
|
-
<!-- Demo of synchronous global content access -->
|
|
6742
|
-
<div class="section">
|
|
6743
|
-
<h3>Synchronous Access Example</h3>
|
|
6744
|
-
<p>
|
|
6745
|
-
OK button text (sync): <strong>{{ getOkTextSync() }}</strong>
|
|
6746
|
-
</p>
|
|
6747
|
-
<p>
|
|
6748
|
-
Cancel button text (sync): <strong>{{ getCancelTextSync() }}</strong>
|
|
6749
|
-
</p>
|
|
6750
|
-
</div>
|
|
6751
|
-
</ion-card-content>
|
|
6752
|
-
</ion-card>
|
|
6753
|
-
`, 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"] }]
|
|
6754
|
-
}] });
|
|
6755
|
-
|
|
6756
|
-
/**
|
|
6757
|
-
* Reactive Content Example Component
|
|
6758
|
-
*
|
|
6759
|
-
* This component demonstrates various ways to use the new reactive content system with ContentService:
|
|
6760
|
-
* 1. Direct reactive content binding with val-text
|
|
6761
|
-
* 2. Content with interpolation (dynamic values)
|
|
6762
|
-
* 3. Multiple content keys retrieved at once
|
|
6763
|
-
* 4. Using the scoped content helper (forComponent)
|
|
6764
|
-
* 5. Language switching functionality
|
|
6765
|
-
*
|
|
6766
|
-
* The component automatically updates all text when the language changes,
|
|
6767
|
-
* using the simplified ContentService API that eliminates the need for manual
|
|
6768
|
-
* LangService injection and utility function imports.
|
|
6769
|
-
*
|
|
6770
|
-
* @example Usage patterns:
|
|
6771
|
-
* ```typescript
|
|
6772
|
-
* // Simple injection
|
|
6773
|
-
* content = inject(ContentService);
|
|
6774
|
-
*
|
|
6775
|
-
* // Scoped helper for this component
|
|
6776
|
-
* componentContent = this.content.forComponent('MyComponent');
|
|
6777
|
-
*
|
|
6778
|
-
* // Get reactive content
|
|
6779
|
-
* title$ = this.componentContent.get('title');
|
|
6780
|
-
* multipleTexts$ = this.componentContent.getMultiple(['title', 'subtitle']);
|
|
6781
|
-
* ```
|
|
6782
|
-
* without requiring manual subscriptions or change detection triggers.
|
|
6783
|
-
*/
|
|
6784
|
-
class ReactiveContentExampleComponent {
|
|
6785
|
-
constructor() {
|
|
6786
|
-
// Use the new ContentService with inject
|
|
6787
|
-
this.content = inject(ContentService);
|
|
6788
|
-
// Create a scoped content helper for this component
|
|
6789
|
-
this.componentContent = this.content.forComponent('ReactiveContentExample');
|
|
6790
|
-
// State for confirmation dialog
|
|
6791
|
-
this.showConfirmation = false;
|
|
6792
|
-
// Example 1: Simple reactive content props for val-text
|
|
6793
|
-
this.titleProps = {
|
|
6794
|
-
contentKey: 'title',
|
|
6795
|
-
contentClass: 'ReactiveContentExample',
|
|
6796
|
-
contentFallback: 'Default Title',
|
|
6797
|
-
color: 'primary',
|
|
6798
|
-
size: 'xlarge',
|
|
6799
|
-
bold: true,
|
|
6620
|
+
this.markdownLinksProps = {
|
|
6621
|
+
content: 'Consulta [la documentación de Angular](https://angular.io/docs) y ve a [configuración del perfil](/profile/settings) para más opciones.',
|
|
6622
|
+
size: 'medium',
|
|
6623
|
+
color: 'dark',
|
|
6624
|
+
bold: false,
|
|
6625
|
+
processLinks: true,
|
|
6626
|
+
linkConfig: {
|
|
6627
|
+
openExternalInNewTab: true,
|
|
6628
|
+
openInternalInNewTab: false,
|
|
6629
|
+
processMarkdownLinks: true,
|
|
6630
|
+
linkClass: 'markdown-link',
|
|
6631
|
+
externalLinkClass: 'markdown-external',
|
|
6632
|
+
internalLinkClass: 'markdown-internal',
|
|
6633
|
+
},
|
|
6800
6634
|
};
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
6804
|
-
|
|
6805
|
-
contentInterpolation: { name: 'Developer', count: 3 },
|
|
6806
|
-
contentFallback: 'Hello Developer',
|
|
6807
|
-
color: 'secondary',
|
|
6808
|
-
size: 'large',
|
|
6635
|
+
this.mixedFormatsProps = {
|
|
6636
|
+
content: 'Aquí hay [documentación oficial](https://angular.io/docs), un enlace directo https://github.com/angular/angular, y una ruta interna /dashboard/analytics. ¡Todos funcionan!',
|
|
6637
|
+
size: 'medium',
|
|
6638
|
+
color: 'dark',
|
|
6809
6639
|
bold: false,
|
|
6640
|
+
processLinks: true,
|
|
6641
|
+
linkConfig: {
|
|
6642
|
+
openExternalInNewTab: true,
|
|
6643
|
+
openInternalInNewTab: false,
|
|
6644
|
+
processMarkdownLinks: true,
|
|
6645
|
+
linkClass: 'mixed-link',
|
|
6646
|
+
externalLinkClass: 'mixed-external',
|
|
6647
|
+
internalLinkClass: 'mixed-internal',
|
|
6648
|
+
},
|
|
6810
6649
|
};
|
|
6811
6650
|
}
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
-
|
|
6816
|
-
this.multipleContent$ = this.componentContent.getMultiple(['description', 'dynamicText']);
|
|
6817
|
-
// Button text reactive - using the new simplified API with options
|
|
6818
|
-
this.buttonText$ = this.componentContent.get('buttonText');
|
|
6819
|
-
// Global content observables using unified fromContent method
|
|
6820
|
-
this.saveButton$ = this.content.fromContent({ key: 'save' });
|
|
6821
|
-
this.cancelButton$ = this.content.fromContent({ key: 'cancel' });
|
|
6822
|
-
this.deleteButton$ = this.content.fromContent({ key: 'delete' });
|
|
6823
|
-
this.okButton$ = this.content.fromContent({ key: 'ok' });
|
|
6824
|
-
this.loadingText$ = this.content.fromContent({ key: 'loading' });
|
|
6825
|
-
// Global content with interpolation using unified method
|
|
6826
|
-
this.deleteConfirmationText$ = this.content.fromContent({
|
|
6827
|
-
key: 'deleteConfirmation',
|
|
6828
|
-
interpolation: { itemName: 'este elemento' },
|
|
6829
|
-
});
|
|
6830
|
-
// Example of synchronous global content access
|
|
6831
|
-
console.log('Global save text:', this.content.getText('save'));
|
|
6832
|
-
console.log('Global cancel text:', this.content.getGlobalText('cancel'));
|
|
6833
|
-
// Example of using new scoped helper with interpolation
|
|
6834
|
-
const greetingWithNewAPI$ = this.componentContent.get('greeting', {
|
|
6835
|
-
interpolation: { name: 'Developer', count: 3 },
|
|
6836
|
-
fallback: 'Hello!',
|
|
6837
|
-
});
|
|
6838
|
-
console.log('New unified API works!', greetingWithNewAPI$);
|
|
6839
|
-
}
|
|
6840
|
-
/**
|
|
6841
|
-
* Toggle between Spanish and English
|
|
6842
|
-
*/
|
|
6843
|
-
toggleLanguage() {
|
|
6844
|
-
const currentLang = this.content.currentLang;
|
|
6845
|
-
const newLang = currentLang === LangOption.ES ? LangOption.EN : LangOption.ES;
|
|
6846
|
-
this.content.setLang(newLang);
|
|
6847
|
-
}
|
|
6848
|
-
/**
|
|
6849
|
-
* Show delete confirmation dialog
|
|
6850
|
-
*/
|
|
6851
|
-
showDeleteConfirmation() {
|
|
6852
|
-
this.showConfirmation = true;
|
|
6853
|
-
}
|
|
6854
|
-
/**
|
|
6855
|
-
* Hide delete confirmation dialog
|
|
6856
|
-
*/
|
|
6857
|
-
hideDeleteConfirmation() {
|
|
6858
|
-
this.showConfirmation = false;
|
|
6859
|
-
}
|
|
6860
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReactiveContentExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6861
|
-
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: `
|
|
6862
|
-
<ion-card>
|
|
6863
|
-
<ion-card-header>
|
|
6864
|
-
<ion-card-title>
|
|
6865
|
-
<!-- Example 1: Direct reactive content using val-text -->
|
|
6866
|
-
<val-text [props]="titleProps"></val-text>
|
|
6867
|
-
</ion-card-title>
|
|
6868
|
-
</ion-card-header>
|
|
6651
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6652
|
+
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: `
|
|
6653
|
+
<div class="link-examples">
|
|
6654
|
+
<h2>Ejemplos de Procesamiento de Enlaces</h2>
|
|
6869
6655
|
|
|
6870
|
-
<
|
|
6871
|
-
|
|
6872
|
-
<val-text [props]="
|
|
6873
|
-
|
|
6874
|
-
<div class="example-divider"></div>
|
|
6875
|
-
|
|
6876
|
-
<!-- Example 3: Multiple content keys -->
|
|
6877
|
-
<div *ngIf="multipleContent$ | async as content">
|
|
6878
|
-
<val-text
|
|
6879
|
-
[props]="{
|
|
6880
|
-
content: content['description'],
|
|
6881
|
-
color: 'medium',
|
|
6882
|
-
size: 'medium',
|
|
6883
|
-
bold: false,
|
|
6884
|
-
}"
|
|
6885
|
-
></val-text>
|
|
6886
|
-
|
|
6887
|
-
<br /><br />
|
|
6888
|
-
|
|
6889
|
-
<val-text
|
|
6890
|
-
[props]="{
|
|
6891
|
-
content: content['dynamicText'],
|
|
6892
|
-
color: 'primary',
|
|
6893
|
-
size: 'small',
|
|
6894
|
-
bold: true,
|
|
6895
|
-
}"
|
|
6896
|
-
></val-text>
|
|
6897
|
-
</div>
|
|
6898
|
-
|
|
6899
|
-
<div class="example-divider"></div>
|
|
6900
|
-
|
|
6901
|
-
<!-- Example 4: Using content helper -->
|
|
6902
|
-
<val-text
|
|
6903
|
-
[props]="{
|
|
6904
|
-
content: componentContent.getText('welcomeMessage'),
|
|
6905
|
-
color: 'success',
|
|
6906
|
-
size: 'large',
|
|
6907
|
-
bold: true,
|
|
6908
|
-
}"
|
|
6909
|
-
></val-text>
|
|
6910
|
-
|
|
6911
|
-
<div class="example-divider"></div>
|
|
6912
|
-
|
|
6913
|
-
<!-- Example 5: Global content - buttons using global text -->
|
|
6914
|
-
<div class="button-group">
|
|
6915
|
-
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
6916
|
-
{{ saveButton$ | async }}
|
|
6917
|
-
</ion-button>
|
|
6918
|
-
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
6919
|
-
{{ cancelButton$ | async }}
|
|
6920
|
-
</ion-button>
|
|
6921
|
-
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
6922
|
-
{{ deleteButton$ | async }}
|
|
6923
|
-
</ion-button>
|
|
6924
|
-
</div>
|
|
6656
|
+
<div class="example-section">
|
|
6657
|
+
<h3>Texto sin procesamiento de enlaces:</h3>
|
|
6658
|
+
<val-text [props]="basicTextProps"></val-text>
|
|
6659
|
+
</div>
|
|
6925
6660
|
|
|
6926
|
-
|
|
6661
|
+
<div class="example-section">
|
|
6662
|
+
<h3>Texto con procesamiento básico de enlaces:</h3>
|
|
6663
|
+
<val-text [props]="basicLinksProps"></val-text>
|
|
6664
|
+
</div>
|
|
6927
6665
|
|
|
6928
|
-
|
|
6929
|
-
<
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
content: deleteConfirmationText$ | async,
|
|
6933
|
-
color: 'warning',
|
|
6934
|
-
size: 'medium',
|
|
6935
|
-
bold: true,
|
|
6936
|
-
}"
|
|
6937
|
-
></val-text>
|
|
6938
|
-
<br /><br />
|
|
6939
|
-
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
6940
|
-
{{ okButton$ | async }}
|
|
6941
|
-
</ion-button>
|
|
6942
|
-
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
6943
|
-
{{ cancelButton$ | async }}
|
|
6944
|
-
</ion-button>
|
|
6945
|
-
</div>
|
|
6666
|
+
<div class="example-section">
|
|
6667
|
+
<h3>Enlaces con configuración personalizada:</h3>
|
|
6668
|
+
<val-text [props]="customLinksProps"></val-text>
|
|
6669
|
+
</div>
|
|
6946
6670
|
|
|
6947
|
-
|
|
6671
|
+
<div class="example-section">
|
|
6672
|
+
<h3>Enlaces internos y externos mezclados:</h3>
|
|
6673
|
+
<val-text [props]="mixedLinksProps"></val-text>
|
|
6674
|
+
</div>
|
|
6948
6675
|
|
|
6949
|
-
|
|
6950
|
-
<
|
|
6951
|
-
|
|
6952
|
-
|
|
6676
|
+
<div class="example-section">
|
|
6677
|
+
<h3>Enlaces sin abrir en nueva pestaña:</h3>
|
|
6678
|
+
<val-text [props]="sameTabLinksProps"></val-text>
|
|
6679
|
+
</div>
|
|
6953
6680
|
|
|
6954
|
-
|
|
6955
|
-
<
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
<strong>{{ currentLanguage$ | async }}</strong>
|
|
6959
|
-
</p>
|
|
6681
|
+
<div class="example-section">
|
|
6682
|
+
<h3>Enlaces estilo Markdown [texto](url):</h3>
|
|
6683
|
+
<val-text [props]="markdownLinksProps"></val-text>
|
|
6684
|
+
</div>
|
|
6960
6685
|
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
size: 'small',
|
|
6968
|
-
bold: false,
|
|
6969
|
-
}"
|
|
6970
|
-
></val-text>
|
|
6971
|
-
</p>
|
|
6972
|
-
</div>
|
|
6973
|
-
</ion-card-content>
|
|
6974
|
-
</ion-card>
|
|
6975
|
-
`, 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 }); }
|
|
6686
|
+
<div class="example-section">
|
|
6687
|
+
<h3>Mezcla de enlaces directos y Markdown:</h3>
|
|
6688
|
+
<val-text [props]="mixedFormatsProps"></val-text>
|
|
6689
|
+
</div>
|
|
6690
|
+
</div>
|
|
6691
|
+
`, 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"] }] }); }
|
|
6976
6692
|
}
|
|
6977
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type:
|
|
6693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, decorators: [{
|
|
6978
6694
|
type: Component,
|
|
6979
|
-
args: [{ selector: 'val-
|
|
6980
|
-
<
|
|
6981
|
-
<
|
|
6982
|
-
<ion-card-title>
|
|
6983
|
-
<!-- Example 1: Direct reactive content using val-text -->
|
|
6984
|
-
<val-text [props]="titleProps"></val-text>
|
|
6985
|
-
</ion-card-title>
|
|
6986
|
-
</ion-card-header>
|
|
6987
|
-
|
|
6988
|
-
<ion-card-content>
|
|
6989
|
-
<!-- Example 2: Reactive content with interpolation -->
|
|
6990
|
-
<val-text [props]="greetingProps"></val-text>
|
|
6991
|
-
|
|
6992
|
-
<div class="example-divider"></div>
|
|
6993
|
-
|
|
6994
|
-
<!-- Example 3: Multiple content keys -->
|
|
6995
|
-
<div *ngIf="multipleContent$ | async as content">
|
|
6996
|
-
<val-text
|
|
6997
|
-
[props]="{
|
|
6998
|
-
content: content['description'],
|
|
6999
|
-
color: 'medium',
|
|
7000
|
-
size: 'medium',
|
|
7001
|
-
bold: false,
|
|
7002
|
-
}"
|
|
7003
|
-
></val-text>
|
|
7004
|
-
|
|
7005
|
-
<br /><br />
|
|
7006
|
-
|
|
7007
|
-
<val-text
|
|
7008
|
-
[props]="{
|
|
7009
|
-
content: content['dynamicText'],
|
|
7010
|
-
color: 'primary',
|
|
7011
|
-
size: 'small',
|
|
7012
|
-
bold: true,
|
|
7013
|
-
}"
|
|
7014
|
-
></val-text>
|
|
7015
|
-
</div>
|
|
7016
|
-
|
|
7017
|
-
<div class="example-divider"></div>
|
|
7018
|
-
|
|
7019
|
-
<!-- Example 4: Using content helper -->
|
|
7020
|
-
<val-text
|
|
7021
|
-
[props]="{
|
|
7022
|
-
content: componentContent.getText('welcomeMessage'),
|
|
7023
|
-
color: 'success',
|
|
7024
|
-
size: 'large',
|
|
7025
|
-
bold: true,
|
|
7026
|
-
}"
|
|
7027
|
-
></val-text>
|
|
7028
|
-
|
|
7029
|
-
<div class="example-divider"></div>
|
|
7030
|
-
|
|
7031
|
-
<!-- Example 5: Global content - buttons using global text -->
|
|
7032
|
-
<div class="button-group">
|
|
7033
|
-
<ion-button [fill]="'solid'" [color]="'primary'">
|
|
7034
|
-
{{ saveButton$ | async }}
|
|
7035
|
-
</ion-button>
|
|
7036
|
-
<ion-button [fill]="'outline'" [color]="'secondary'">
|
|
7037
|
-
{{ cancelButton$ | async }}
|
|
7038
|
-
</ion-button>
|
|
7039
|
-
<ion-button [fill]="'outline'" [color]="'danger'" (click)="showDeleteConfirmation()">
|
|
7040
|
-
{{ deleteButton$ | async }}
|
|
7041
|
-
</ion-button>
|
|
7042
|
-
</div>
|
|
6695
|
+
args: [{ selector: 'val-link-processing-example', standalone: true, imports: [TextComponent], template: `
|
|
6696
|
+
<div class="link-examples">
|
|
6697
|
+
<h2>Ejemplos de Procesamiento de Enlaces</h2>
|
|
7043
6698
|
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
<val-text
|
|
7049
|
-
[props]="{
|
|
7050
|
-
content: deleteConfirmationText$ | async,
|
|
7051
|
-
color: 'warning',
|
|
7052
|
-
size: 'medium',
|
|
7053
|
-
bold: true,
|
|
7054
|
-
}"
|
|
7055
|
-
></val-text>
|
|
7056
|
-
<br /><br />
|
|
7057
|
-
<ion-button [fill]="'solid'" [color]="'danger'" size="small" (click)="hideDeleteConfirmation()">
|
|
7058
|
-
{{ okButton$ | async }}
|
|
7059
|
-
</ion-button>
|
|
7060
|
-
<ion-button [fill]="'clear'" [color]="'medium'" size="small" (click)="hideDeleteConfirmation()">
|
|
7061
|
-
{{ cancelButton$ | async }}
|
|
7062
|
-
</ion-button>
|
|
7063
|
-
</div>
|
|
6699
|
+
<div class="example-section">
|
|
6700
|
+
<h3>Texto sin procesamiento de enlaces:</h3>
|
|
6701
|
+
<val-text [props]="basicTextProps"></val-text>
|
|
6702
|
+
</div>
|
|
7064
6703
|
|
|
7065
|
-
|
|
6704
|
+
<div class="example-section">
|
|
6705
|
+
<h3>Texto con procesamiento básico de enlaces:</h3>
|
|
6706
|
+
<val-text [props]="basicLinksProps"></val-text>
|
|
6707
|
+
</div>
|
|
7066
6708
|
|
|
7067
|
-
|
|
7068
|
-
<
|
|
7069
|
-
|
|
7070
|
-
|
|
6709
|
+
<div class="example-section">
|
|
6710
|
+
<h3>Enlaces con configuración personalizada:</h3>
|
|
6711
|
+
<val-text [props]="customLinksProps"></val-text>
|
|
6712
|
+
</div>
|
|
7071
6713
|
|
|
7072
|
-
|
|
7073
|
-
<
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
<strong>{{ currentLanguage$ | async }}</strong>
|
|
7077
|
-
</p>
|
|
6714
|
+
<div class="example-section">
|
|
6715
|
+
<h3>Enlaces internos y externos mezclados:</h3>
|
|
6716
|
+
<val-text [props]="mixedLinksProps"></val-text>
|
|
6717
|
+
</div>
|
|
7078
6718
|
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
content: loadingText$ | async,
|
|
7084
|
-
color: 'medium',
|
|
7085
|
-
size: 'small',
|
|
7086
|
-
bold: false,
|
|
7087
|
-
}"
|
|
7088
|
-
></val-text>
|
|
7089
|
-
</p>
|
|
7090
|
-
</div>
|
|
7091
|
-
</ion-card-content>
|
|
7092
|
-
</ion-card>
|
|
7093
|
-
`, 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"] }]
|
|
7094
|
-
}], ctorParameters: () => [] });
|
|
6719
|
+
<div class="example-section">
|
|
6720
|
+
<h3>Enlaces sin abrir en nueva pestaña:</h3>
|
|
6721
|
+
<val-text [props]="sameTabLinksProps"></val-text>
|
|
6722
|
+
</div>
|
|
7095
6723
|
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
* global content to create a comprehensive content management system.
|
|
7101
|
-
*/
|
|
7102
|
-
const globalContentExampleData = {
|
|
7103
|
-
title: {
|
|
7104
|
-
es: 'Ejemplo de Contenido Global',
|
|
7105
|
-
en: 'Global Content Example',
|
|
7106
|
-
},
|
|
7107
|
-
languageLabel: {
|
|
7108
|
-
es: 'Idioma:',
|
|
7109
|
-
en: 'Language:',
|
|
7110
|
-
},
|
|
7111
|
-
description: {
|
|
7112
|
-
es: 'Este ejemplo demuestra cómo usar contenido global y específico del componente de manera conjunta.',
|
|
7113
|
-
en: 'This example shows how to use global and component-specific content together.',
|
|
7114
|
-
},
|
|
7115
|
-
};
|
|
7116
|
-
var GlobalContentExample = new TextContent(globalContentExampleData);
|
|
6724
|
+
<div class="example-section">
|
|
6725
|
+
<h3>Enlaces estilo Markdown [texto](url):</h3>
|
|
6726
|
+
<val-text [props]="markdownLinksProps"></val-text>
|
|
6727
|
+
</div>
|
|
7117
6728
|
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
const exampleComponentContent = {
|
|
7126
|
-
es: {
|
|
7127
|
-
title: 'Ejemplo de Contenido Reactivo',
|
|
7128
|
-
subtitle: 'Este es un subtítulo que cambia automáticamente',
|
|
7129
|
-
description: 'Esta descripción se actualiza cuando cambias el idioma sin necesidad de recargar la página.',
|
|
7130
|
-
greeting: 'Hola {name}, tienes {count} mensajes nuevos',
|
|
7131
|
-
welcomeMessage: 'Bienvenido a la biblioteca de componentes Valtech',
|
|
7132
|
-
dynamicText: 'Este texto se actualiza automáticamente cuando cambias el idioma',
|
|
7133
|
-
buttonText: 'Cambiar Idioma',
|
|
7134
|
-
loadingText: 'Cargando...',
|
|
7135
|
-
errorMessage: 'Error: No se pudo cargar el contenido',
|
|
7136
|
-
successMessage: 'Contenido cargado exitosamente',
|
|
7137
|
-
confirmDialog: '¿Estás seguro de que quieres continuar?',
|
|
7138
|
-
cancelButton: 'Cancelar',
|
|
7139
|
-
acceptButton: 'Aceptar',
|
|
7140
|
-
},
|
|
7141
|
-
en: {
|
|
7142
|
-
title: 'Reactive Content Example',
|
|
7143
|
-
subtitle: 'This is a subtitle that changes automatically',
|
|
7144
|
-
description: 'This description updates when you change the language without needing to reload the page.',
|
|
7145
|
-
greeting: 'Hello {name}, you have {count} new messages',
|
|
7146
|
-
welcomeMessage: 'Welcome to the Valtech component library',
|
|
7147
|
-
dynamicText: 'This text updates automatically when you change the language',
|
|
7148
|
-
buttonText: 'Change Language',
|
|
7149
|
-
loadingText: 'Loading...',
|
|
7150
|
-
errorMessage: 'Error: Could not load content',
|
|
7151
|
-
successMessage: 'Content loaded successfully',
|
|
7152
|
-
confirmDialog: 'Are you sure you want to continue?',
|
|
7153
|
-
cancelButton: 'Cancel',
|
|
7154
|
-
acceptButton: 'Accept',
|
|
7155
|
-
},
|
|
7156
|
-
};
|
|
7157
|
-
// Export the content as a TextContent instance
|
|
7158
|
-
var ReactiveContentExample = new TextContent(exampleComponentContent);
|
|
6729
|
+
<div class="example-section">
|
|
6730
|
+
<h3>Mezcla de enlaces directos y Markdown:</h3>
|
|
6731
|
+
<val-text [props]="mixedFormatsProps"></val-text>
|
|
6732
|
+
</div>
|
|
6733
|
+
</div>
|
|
6734
|
+
`, 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"] }]
|
|
6735
|
+
}] });
|
|
7159
6736
|
|
|
7160
|
-
const text
|
|
6737
|
+
const text = {
|
|
7161
6738
|
es: {
|
|
7162
6739
|
spanish: 'Español',
|
|
7163
6740
|
english: 'Inglés',
|
|
@@ -7167,21 +6744,7 @@ const text$1 = {
|
|
|
7167
6744
|
english: 'English',
|
|
7168
6745
|
},
|
|
7169
6746
|
};
|
|
7170
|
-
var LangSettings = new TextContent(text
|
|
7171
|
-
|
|
7172
|
-
const text = {
|
|
7173
|
-
es: {
|
|
7174
|
-
light: 'Siempre claro',
|
|
7175
|
-
dark: 'Siempre oscuro',
|
|
7176
|
-
auto: 'Automático',
|
|
7177
|
-
},
|
|
7178
|
-
en: {
|
|
7179
|
-
light: 'Always light',
|
|
7180
|
-
dark: 'Always dark',
|
|
7181
|
-
auto: 'System settings',
|
|
7182
|
-
},
|
|
7183
|
-
};
|
|
7184
|
-
var ThemeSettings = new TextContent(text);
|
|
6747
|
+
var LangSettings = new TextContent(text);
|
|
7185
6748
|
|
|
7186
6749
|
/**
|
|
7187
6750
|
* Global content that can be used across all components.
|
|
@@ -7220,9 +6783,6 @@ const globalContentData = {
|
|
|
7220
6783
|
areYouSure: '¿Estás seguro?',
|
|
7221
6784
|
deleteConfirmation: '¿Estás seguro de que deseas eliminar {itemName}?',
|
|
7222
6785
|
unsavedChanges: 'Tienes cambios sin guardar. ¿Deseas continuar?',
|
|
7223
|
-
// Common form labels
|
|
7224
|
-
required: 'Requerido',
|
|
7225
|
-
optional: 'Opcional',
|
|
7226
6786
|
// Common placeholders
|
|
7227
6787
|
searchPlaceholder: 'Buscar...',
|
|
7228
6788
|
},
|
|
@@ -7257,9 +6817,6 @@ const globalContentData = {
|
|
|
7257
6817
|
areYouSure: 'Are you sure?',
|
|
7258
6818
|
deleteConfirmation: 'Are you sure you want to delete {itemName}?',
|
|
7259
6819
|
unsavedChanges: 'You have unsaved changes. Do you want to continue?',
|
|
7260
|
-
// Common form labels
|
|
7261
|
-
required: 'Required',
|
|
7262
|
-
optional: 'Optional',
|
|
7263
6820
|
// Common placeholders
|
|
7264
6821
|
searchPlaceholder: 'Search...',
|
|
7265
6822
|
},
|
|
@@ -7268,9 +6825,6 @@ const GlobalContent = new TextContent(globalContentData);
|
|
|
7268
6825
|
const content = {
|
|
7269
6826
|
_global: GlobalContent,
|
|
7270
6827
|
LangSettings,
|
|
7271
|
-
ThemeSettings,
|
|
7272
|
-
ReactiveContentExample,
|
|
7273
|
-
GlobalContentExample,
|
|
7274
6828
|
};
|
|
7275
6829
|
|
|
7276
6830
|
/**
|
|
@@ -7328,5 +6882,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7328
6882
|
* Generated bundle index. Do not edit.
|
|
7329
6883
|
*/
|
|
7330
6884
|
|
|
7331
|
-
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,
|
|
6885
|
+
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 };
|
|
7332
6886
|
//# sourceMappingURL=valtech-components.mjs.map
|