valtech-components 4.0.134 → 4.0.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/request-form/request-form.component.mjs +21 -3
- package/esm2022/lib/components/organisms/request-modal/request-modal.component.mjs +85 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +409 -311
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/request-modal/request-modal.component.d.ts +40 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
|
56
56
|
* Current version of valtech-components.
|
|
57
57
|
* This is automatically updated during the publish process.
|
|
58
58
|
*/
|
|
59
|
-
const VERSION = '4.0.
|
|
59
|
+
const VERSION = '4.0.136';
|
|
60
60
|
|
|
61
61
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
62
62
|
let isRefreshing = false;
|
|
@@ -35362,6 +35362,413 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
35362
35362
|
type: Output
|
|
35363
35363
|
}] } });
|
|
35364
35364
|
|
|
35365
|
+
class RequestService {
|
|
35366
|
+
constructor(config, http) {
|
|
35367
|
+
this.config = config;
|
|
35368
|
+
this.http = http;
|
|
35369
|
+
}
|
|
35370
|
+
get baseUrl() {
|
|
35371
|
+
return `${this.config.apiUrl}/v2/requests`;
|
|
35372
|
+
}
|
|
35373
|
+
get typesUrl() {
|
|
35374
|
+
return `${this.config.apiUrl}/v2/request-types`;
|
|
35375
|
+
}
|
|
35376
|
+
// ── Requests ──
|
|
35377
|
+
createRequest(payload) {
|
|
35378
|
+
return this.http.post(this.baseUrl, payload);
|
|
35379
|
+
}
|
|
35380
|
+
createAnonymousRequest(payload) {
|
|
35381
|
+
return this.http.post(`${this.baseUrl}/anonymous`, payload);
|
|
35382
|
+
}
|
|
35383
|
+
listRequests(params) {
|
|
35384
|
+
const qs = this.buildQueryString(params);
|
|
35385
|
+
return this.http.get(`${this.baseUrl}${qs}`);
|
|
35386
|
+
}
|
|
35387
|
+
listMyRequests(params) {
|
|
35388
|
+
const qs = this.buildQueryString(params);
|
|
35389
|
+
return this.http.get(`${this.baseUrl}/my${qs}`);
|
|
35390
|
+
}
|
|
35391
|
+
getRequest(id) {
|
|
35392
|
+
return this.http
|
|
35393
|
+
.get(`${this.baseUrl}/${id}`)
|
|
35394
|
+
.pipe(map$1(r => r.request));
|
|
35395
|
+
}
|
|
35396
|
+
updateRequest(id, payload) {
|
|
35397
|
+
return this.http
|
|
35398
|
+
.put(`${this.baseUrl}/${id}`, payload)
|
|
35399
|
+
.pipe(map$1(r => r.request));
|
|
35400
|
+
}
|
|
35401
|
+
transition(id, payload) {
|
|
35402
|
+
return this.http.post(`${this.baseUrl}/${id}/transition`, payload);
|
|
35403
|
+
}
|
|
35404
|
+
// ── Comments ──
|
|
35405
|
+
addComment(requestId, payload) {
|
|
35406
|
+
return this.http
|
|
35407
|
+
.post(`${this.baseUrl}/${requestId}/comments`, payload)
|
|
35408
|
+
.pipe(map$1(r => r.comment));
|
|
35409
|
+
}
|
|
35410
|
+
listComments(requestId) {
|
|
35411
|
+
return this.http.get(`${this.baseUrl}/${requestId}/comments`);
|
|
35412
|
+
}
|
|
35413
|
+
// ── Request Types ──
|
|
35414
|
+
listRequestTypes() {
|
|
35415
|
+
return this.http.get(this.typesUrl);
|
|
35416
|
+
}
|
|
35417
|
+
getRequestType(typeId) {
|
|
35418
|
+
return this.http.get(`${this.typesUrl}/${typeId}`);
|
|
35419
|
+
}
|
|
35420
|
+
createRequestType(payload) {
|
|
35421
|
+
return this.http
|
|
35422
|
+
.post(this.typesUrl, payload)
|
|
35423
|
+
.pipe(map$1(r => r.typeConfig));
|
|
35424
|
+
}
|
|
35425
|
+
updateRequestType(typeId, payload) {
|
|
35426
|
+
return this.http
|
|
35427
|
+
.put(`${this.typesUrl}/${typeId}`, payload)
|
|
35428
|
+
.pipe(map$1(r => r.typeConfig));
|
|
35429
|
+
}
|
|
35430
|
+
deleteRequestType(typeId) {
|
|
35431
|
+
return this.http.delete(`${this.typesUrl}/${typeId}`);
|
|
35432
|
+
}
|
|
35433
|
+
// ── Helpers ──
|
|
35434
|
+
buildQueryString(params) {
|
|
35435
|
+
if (!params)
|
|
35436
|
+
return '';
|
|
35437
|
+
const qs = new URLSearchParams();
|
|
35438
|
+
if (params.type)
|
|
35439
|
+
qs.set('type', params.type);
|
|
35440
|
+
if (params.status)
|
|
35441
|
+
qs.set('status', params.status);
|
|
35442
|
+
if (params.limit != null)
|
|
35443
|
+
qs.set('limit', String(params.limit));
|
|
35444
|
+
if (params.nextToken)
|
|
35445
|
+
qs.set('nextToken', params.nextToken);
|
|
35446
|
+
const str = qs.toString();
|
|
35447
|
+
return str ? `?${str}` : '';
|
|
35448
|
+
}
|
|
35449
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35450
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, providedIn: 'root' }); }
|
|
35451
|
+
}
|
|
35452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, decorators: [{
|
|
35453
|
+
type: Injectable,
|
|
35454
|
+
args: [{ providedIn: 'root' }]
|
|
35455
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
35456
|
+
type: Inject,
|
|
35457
|
+
args: [VALTECH_AUTH_CONFIG]
|
|
35458
|
+
}] }, { type: i1$3.HttpClient }] });
|
|
35459
|
+
|
|
35460
|
+
const REQUEST_FORM_I18N = {
|
|
35461
|
+
es: {
|
|
35462
|
+
title: 'Título',
|
|
35463
|
+
titlePlaceholder: 'Describe brevemente tu solicitud',
|
|
35464
|
+
titleValidation: 'El título debe tener al menos 3 caracteres',
|
|
35465
|
+
description: 'Descripción',
|
|
35466
|
+
descriptionPlaceholder: 'Añade más detalles aquí',
|
|
35467
|
+
descriptionValidation: 'La descripción es demasiado larga',
|
|
35468
|
+
submit: 'Enviar',
|
|
35469
|
+
attachmentsLabel: 'Archivos adjuntos (opcional)',
|
|
35470
|
+
attachmentsHint: 'Imágenes (JPG/PNG/WebP) o PDF, máx 5 MB cada uno. Hasta 5 archivos.',
|
|
35471
|
+
success: 'Solicitud enviada exitosamente',
|
|
35472
|
+
error: 'Error al enviar la solicitud',
|
|
35473
|
+
},
|
|
35474
|
+
en: {
|
|
35475
|
+
title: 'Title',
|
|
35476
|
+
titlePlaceholder: 'Briefly describe your request',
|
|
35477
|
+
titleValidation: 'Title must be at least 3 characters',
|
|
35478
|
+
description: 'Description',
|
|
35479
|
+
descriptionPlaceholder: 'Add more details here',
|
|
35480
|
+
descriptionValidation: 'Description is too long',
|
|
35481
|
+
submit: 'Submit',
|
|
35482
|
+
attachmentsLabel: 'Attachments (optional)',
|
|
35483
|
+
attachmentsHint: 'Images (JPG/PNG/WebP) or PDF, max 5 MB each. Up to 5 files.',
|
|
35484
|
+
success: 'Request submitted successfully',
|
|
35485
|
+
error: 'Error submitting the request',
|
|
35486
|
+
},
|
|
35487
|
+
};
|
|
35488
|
+
class RequestFormComponent {
|
|
35489
|
+
constructor() {
|
|
35490
|
+
this.props = { type: '' };
|
|
35491
|
+
this.onSubmit = new EventEmitter();
|
|
35492
|
+
this.onCancel = new EventEmitter();
|
|
35493
|
+
this.i18n = inject(I18nService);
|
|
35494
|
+
this.requestService = inject(RequestService);
|
|
35495
|
+
this.feedbackService = inject(FeedbackService);
|
|
35496
|
+
this.isSubmitting = signal(false);
|
|
35497
|
+
this.isSuccess = signal(false);
|
|
35498
|
+
this.error = signal(null);
|
|
35499
|
+
this.currentAttachments = [];
|
|
35500
|
+
addIcons({ checkmarkCircleOutline, closeCircleOutline });
|
|
35501
|
+
if (!this.i18n.hasNamespace('RequestForm')) {
|
|
35502
|
+
this.i18n.registerDefaults('RequestForm', REQUEST_FORM_I18N);
|
|
35503
|
+
}
|
|
35504
|
+
}
|
|
35505
|
+
ngOnInit() {
|
|
35506
|
+
this.formProps = this.buildFormProps();
|
|
35507
|
+
}
|
|
35508
|
+
buildFormProps() {
|
|
35509
|
+
return {
|
|
35510
|
+
name: '',
|
|
35511
|
+
sections: [
|
|
35512
|
+
{
|
|
35513
|
+
name: '',
|
|
35514
|
+
order: 0,
|
|
35515
|
+
fields: [
|
|
35516
|
+
{
|
|
35517
|
+
token: 'request-title',
|
|
35518
|
+
name: 'title',
|
|
35519
|
+
label: this.props.titleLabel ?? this.t('title'),
|
|
35520
|
+
hint: '',
|
|
35521
|
+
placeholder: this.props.titlePlaceholder ?? this.t('titlePlaceholder'),
|
|
35522
|
+
type: InputType.TEXT,
|
|
35523
|
+
order: 1,
|
|
35524
|
+
validators: [Validators.required, Validators.minLength(3), Validators.maxLength(300)],
|
|
35525
|
+
errors: {
|
|
35526
|
+
required: this.t('titleValidation'),
|
|
35527
|
+
minlength: this.t('titleValidation'),
|
|
35528
|
+
maxlength: this.t('titleValidation'),
|
|
35529
|
+
},
|
|
35530
|
+
state: ComponentStates.ENABLED,
|
|
35531
|
+
},
|
|
35532
|
+
{
|
|
35533
|
+
token: 'request-description',
|
|
35534
|
+
name: 'description',
|
|
35535
|
+
label: this.props.descriptionLabel ?? this.t('description'),
|
|
35536
|
+
hint: '',
|
|
35537
|
+
placeholder: this.props.descriptionPlaceholder ?? this.t('descriptionPlaceholder'),
|
|
35538
|
+
type: InputType.TEXTAREA,
|
|
35539
|
+
order: 2,
|
|
35540
|
+
validators: [Validators.maxLength(5000)],
|
|
35541
|
+
errors: { maxlength: this.t('descriptionValidation') },
|
|
35542
|
+
state: ComponentStates.ENABLED,
|
|
35543
|
+
},
|
|
35544
|
+
],
|
|
35545
|
+
},
|
|
35546
|
+
],
|
|
35547
|
+
actions: {
|
|
35548
|
+
type: 'submit',
|
|
35549
|
+
color: 'dark',
|
|
35550
|
+
fill: 'solid',
|
|
35551
|
+
shape: 'round',
|
|
35552
|
+
expand: 'block',
|
|
35553
|
+
text: this.props.submitButtonText ?? this.t('submit'),
|
|
35554
|
+
state: ComponentStates.ENABLED,
|
|
35555
|
+
},
|
|
35556
|
+
state: ComponentStates.ENABLED,
|
|
35557
|
+
};
|
|
35558
|
+
}
|
|
35559
|
+
async handleFormSubmit(submitted) {
|
|
35560
|
+
if (this.isSubmitting())
|
|
35561
|
+
return;
|
|
35562
|
+
if (this.currentAttachments.some(a => a.status === 'uploading'))
|
|
35563
|
+
return;
|
|
35564
|
+
this.isSubmitting.set(true);
|
|
35565
|
+
this.error.set(null);
|
|
35566
|
+
this.isSuccess.set(false);
|
|
35567
|
+
this.formProps.state = ComponentStates.WORKING;
|
|
35568
|
+
this.formProps.actions.state = ComponentStates.WORKING;
|
|
35569
|
+
try {
|
|
35570
|
+
const title = submitted.fields['title'].trim();
|
|
35571
|
+
const description = submitted.fields['description']?.trim() ?? '';
|
|
35572
|
+
const attachmentUrls = this.currentAttachments.filter(a => a.status === 'ready').map(a => a.url);
|
|
35573
|
+
const result = await firstValueFrom(this.requestService.createRequest({
|
|
35574
|
+
type: this.props.type,
|
|
35575
|
+
title,
|
|
35576
|
+
fields: {
|
|
35577
|
+
...(description ? { description } : {}),
|
|
35578
|
+
...(attachmentUrls.length ? { attachmentUrls } : {}),
|
|
35579
|
+
},
|
|
35580
|
+
}));
|
|
35581
|
+
this.isSuccess.set(true);
|
|
35582
|
+
this.onSubmit.emit({
|
|
35583
|
+
requestId: result.requestId,
|
|
35584
|
+
request: result.request,
|
|
35585
|
+
type: this.props.type,
|
|
35586
|
+
title,
|
|
35587
|
+
attachmentUrls,
|
|
35588
|
+
});
|
|
35589
|
+
}
|
|
35590
|
+
catch (err) {
|
|
35591
|
+
this.error.set(err.error?.message || err.message || this.t('error'));
|
|
35592
|
+
}
|
|
35593
|
+
finally {
|
|
35594
|
+
this.isSubmitting.set(false);
|
|
35595
|
+
this.formProps.state = ComponentStates.ENABLED;
|
|
35596
|
+
this.formProps.actions.state = ComponentStates.ENABLED;
|
|
35597
|
+
}
|
|
35598
|
+
}
|
|
35599
|
+
onAttachmentsChange(items) {
|
|
35600
|
+
this.currentAttachments = items;
|
|
35601
|
+
}
|
|
35602
|
+
onCancelClick() {
|
|
35603
|
+
this.onCancel.emit();
|
|
35604
|
+
}
|
|
35605
|
+
t(key) {
|
|
35606
|
+
return this.i18n.t(key, 'RequestForm');
|
|
35607
|
+
}
|
|
35608
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35609
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RequestFormComponent, isStandalone: true, selector: "val-request-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: `
|
|
35610
|
+
<div class="request-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
|
|
35611
|
+
<val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
|
|
35612
|
+
@if (props.showAttachments !== false) {
|
|
35613
|
+
<val-attachment-uploader
|
|
35614
|
+
[props]="{
|
|
35615
|
+
title: t('attachmentsLabel'),
|
|
35616
|
+
hint: t('attachmentsHint'),
|
|
35617
|
+
maxFiles: 5,
|
|
35618
|
+
}"
|
|
35619
|
+
(attachmentsChange)="onAttachmentsChange($event)"
|
|
35620
|
+
/>
|
|
35621
|
+
}
|
|
35622
|
+
|
|
35623
|
+
@if (error()) {
|
|
35624
|
+
<div class="request-alert error">
|
|
35625
|
+
<ion-icon name="close-circle-outline" aria-hidden="true" />
|
|
35626
|
+
<span>{{ error() }}</span>
|
|
35627
|
+
</div>
|
|
35628
|
+
}
|
|
35629
|
+
|
|
35630
|
+
@if (isSuccess()) {
|
|
35631
|
+
<div class="request-alert success">
|
|
35632
|
+
<ion-icon name="checkmark-circle-outline" aria-hidden="true" />
|
|
35633
|
+
<span>{{ props.successMessage || t('success') }}</span>
|
|
35634
|
+
</div>
|
|
35635
|
+
}
|
|
35636
|
+
</val-form>
|
|
35637
|
+
|
|
35638
|
+
@if (props.cancelButtonText) {
|
|
35639
|
+
<ion-button fill="outline" color="medium" expand="block" class="cancel-button" (click)="onCancelClick()">
|
|
35640
|
+
{{ props.cancelButtonText }}
|
|
35641
|
+
</ion-button>
|
|
35642
|
+
}
|
|
35643
|
+
</div>
|
|
35644
|
+
`, isInline: true, styles: [".request-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.request-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:1.25rem}}.cancel-button{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { 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"] }] }); }
|
|
35645
|
+
}
|
|
35646
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormComponent, decorators: [{
|
|
35647
|
+
type: Component,
|
|
35648
|
+
args: [{ selector: 'val-request-form', standalone: true, imports: [CommonModule, FormComponent, AttachmentUploaderComponent, IonButton, IonIcon], template: `
|
|
35649
|
+
<div class="request-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
|
|
35650
|
+
<val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
|
|
35651
|
+
@if (props.showAttachments !== false) {
|
|
35652
|
+
<val-attachment-uploader
|
|
35653
|
+
[props]="{
|
|
35654
|
+
title: t('attachmentsLabel'),
|
|
35655
|
+
hint: t('attachmentsHint'),
|
|
35656
|
+
maxFiles: 5,
|
|
35657
|
+
}"
|
|
35658
|
+
(attachmentsChange)="onAttachmentsChange($event)"
|
|
35659
|
+
/>
|
|
35660
|
+
}
|
|
35661
|
+
|
|
35662
|
+
@if (error()) {
|
|
35663
|
+
<div class="request-alert error">
|
|
35664
|
+
<ion-icon name="close-circle-outline" aria-hidden="true" />
|
|
35665
|
+
<span>{{ error() }}</span>
|
|
35666
|
+
</div>
|
|
35667
|
+
}
|
|
35668
|
+
|
|
35669
|
+
@if (isSuccess()) {
|
|
35670
|
+
<div class="request-alert success">
|
|
35671
|
+
<ion-icon name="checkmark-circle-outline" aria-hidden="true" />
|
|
35672
|
+
<span>{{ props.successMessage || t('success') }}</span>
|
|
35673
|
+
</div>
|
|
35674
|
+
}
|
|
35675
|
+
</val-form>
|
|
35676
|
+
|
|
35677
|
+
@if (props.cancelButtonText) {
|
|
35678
|
+
<ion-button fill="outline" color="medium" expand="block" class="cancel-button" (click)="onCancelClick()">
|
|
35679
|
+
{{ props.cancelButtonText }}
|
|
35680
|
+
</ion-button>
|
|
35681
|
+
}
|
|
35682
|
+
</div>
|
|
35683
|
+
`, styles: [".request-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.request-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:1.25rem}}.cancel-button{margin-top:8px}\n"] }]
|
|
35684
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
35685
|
+
type: Input
|
|
35686
|
+
}], onSubmit: [{
|
|
35687
|
+
type: Output
|
|
35688
|
+
}], onCancel: [{
|
|
35689
|
+
type: Output
|
|
35690
|
+
}] } });
|
|
35691
|
+
|
|
35692
|
+
/**
|
|
35693
|
+
* `val-request-modal`
|
|
35694
|
+
*
|
|
35695
|
+
* Modal canónico para crear una solicitud (ticket de soporte, etc.): envuelve
|
|
35696
|
+
* `val-request-form` en el shell de modal de la lib (Regla #5 — header con botón
|
|
35697
|
+
* "Cerrar", sin `ion-title`). Antes cada app duplicaba este `ion-modal` +
|
|
35698
|
+
* `ion-header` + `val-request-form` a mano (ej. `support-ticket-modal` de web).
|
|
35699
|
+
*
|
|
35700
|
+
* Patrón declarativo `[isOpen]` + `(dismissed)` — el padre controla la
|
|
35701
|
+
* visibilidad. El tipo de solicitud y demás opciones se pasan por `formProps`
|
|
35702
|
+
* (default `{ type: 'support_ticket' }`).
|
|
35703
|
+
*
|
|
35704
|
+
* @example
|
|
35705
|
+
* ```html
|
|
35706
|
+
* <val-request-modal
|
|
35707
|
+
* [isOpen]="ticketOpen()"
|
|
35708
|
+
* [formProps]="{ type: 'support_ticket' }"
|
|
35709
|
+
* (submitted)="onTicketCreated($event)"
|
|
35710
|
+
* (dismissed)="ticketOpen.set(false)" />
|
|
35711
|
+
* ```
|
|
35712
|
+
*/
|
|
35713
|
+
class RequestModalComponent {
|
|
35714
|
+
constructor() {
|
|
35715
|
+
/** Controla la visibilidad del modal (el padre la maneja). */
|
|
35716
|
+
this.isOpen = false;
|
|
35717
|
+
/** Config del `val-request-form` (tipo de solicitud, labels, etc.). */
|
|
35718
|
+
this.formProps = { type: 'support_ticket' };
|
|
35719
|
+
/** Override del texto del botón cerrar (default: i18n `_global.close`). */
|
|
35720
|
+
this.closeLabel = '';
|
|
35721
|
+
/** Se emite al cerrar el modal (X o backdrop). */
|
|
35722
|
+
this.dismissed = new EventEmitter();
|
|
35723
|
+
/** Se emite cuando el formulario se envía con éxito. */
|
|
35724
|
+
this.submitted = new EventEmitter();
|
|
35725
|
+
}
|
|
35726
|
+
close() {
|
|
35727
|
+
this.isOpen = false;
|
|
35728
|
+
this.dismissed.emit();
|
|
35729
|
+
}
|
|
35730
|
+
onFormSubmit(event) {
|
|
35731
|
+
this.submitted.emit(event);
|
|
35732
|
+
}
|
|
35733
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RequestModalComponent, isStandalone: true, selector: "val-request-modal", inputs: { isOpen: "isOpen", formProps: "formProps", closeLabel: "closeLabel" }, outputs: { dismissed: "dismissed", submitted: "submitted" }, ngImport: i0, template: `
|
|
35735
|
+
<ion-modal [isOpen]="isOpen" (didDismiss)="close()">
|
|
35736
|
+
<ng-template>
|
|
35737
|
+
<val-modal-shell [closeLabel]="closeLabel" (close)="close()">
|
|
35738
|
+
<val-request-form [props]="formProps" (onSubmit)="onFormSubmit($event)" />
|
|
35739
|
+
</val-modal-shell>
|
|
35740
|
+
</ng-template>
|
|
35741
|
+
</ion-modal>
|
|
35742
|
+
`, isInline: true, dependencies: [{ kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalShellComponent, selector: "val-modal-shell", inputs: ["title", "subtitle", "closeLabel", "showClose"], outputs: ["close"] }, { kind: "component", type: RequestFormComponent, selector: "val-request-form", inputs: ["props"], outputs: ["onSubmit", "onCancel"] }] }); }
|
|
35743
|
+
}
|
|
35744
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestModalComponent, decorators: [{
|
|
35745
|
+
type: Component,
|
|
35746
|
+
args: [{
|
|
35747
|
+
selector: 'val-request-modal',
|
|
35748
|
+
standalone: true,
|
|
35749
|
+
imports: [IonModal, ModalShellComponent, RequestFormComponent],
|
|
35750
|
+
template: `
|
|
35751
|
+
<ion-modal [isOpen]="isOpen" (didDismiss)="close()">
|
|
35752
|
+
<ng-template>
|
|
35753
|
+
<val-modal-shell [closeLabel]="closeLabel" (close)="close()">
|
|
35754
|
+
<val-request-form [props]="formProps" (onSubmit)="onFormSubmit($event)" />
|
|
35755
|
+
</val-modal-shell>
|
|
35756
|
+
</ng-template>
|
|
35757
|
+
</ion-modal>
|
|
35758
|
+
`,
|
|
35759
|
+
}]
|
|
35760
|
+
}], propDecorators: { isOpen: [{
|
|
35761
|
+
type: Input
|
|
35762
|
+
}], formProps: [{
|
|
35763
|
+
type: Input
|
|
35764
|
+
}], closeLabel: [{
|
|
35765
|
+
type: Input
|
|
35766
|
+
}], dismissed: [{
|
|
35767
|
+
type: Output
|
|
35768
|
+
}], submitted: [{
|
|
35769
|
+
type: Output
|
|
35770
|
+
}] } });
|
|
35771
|
+
|
|
35365
35772
|
/**
|
|
35366
35773
|
* `val-cookie-banner` — bottom/top fixed banner asking the user to choose
|
|
35367
35774
|
* a cookie consent option. Presentational only: emits events on each
|
|
@@ -65437,315 +65844,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
65437
65844
|
type: Output
|
|
65438
65845
|
}] } });
|
|
65439
65846
|
|
|
65440
|
-
class RequestService {
|
|
65441
|
-
constructor(config, http) {
|
|
65442
|
-
this.config = config;
|
|
65443
|
-
this.http = http;
|
|
65444
|
-
}
|
|
65445
|
-
get baseUrl() {
|
|
65446
|
-
return `${this.config.apiUrl}/v2/requests`;
|
|
65447
|
-
}
|
|
65448
|
-
get typesUrl() {
|
|
65449
|
-
return `${this.config.apiUrl}/v2/request-types`;
|
|
65450
|
-
}
|
|
65451
|
-
// ── Requests ──
|
|
65452
|
-
createRequest(payload) {
|
|
65453
|
-
return this.http.post(this.baseUrl, payload);
|
|
65454
|
-
}
|
|
65455
|
-
createAnonymousRequest(payload) {
|
|
65456
|
-
return this.http.post(`${this.baseUrl}/anonymous`, payload);
|
|
65457
|
-
}
|
|
65458
|
-
listRequests(params) {
|
|
65459
|
-
const qs = this.buildQueryString(params);
|
|
65460
|
-
return this.http.get(`${this.baseUrl}${qs}`);
|
|
65461
|
-
}
|
|
65462
|
-
listMyRequests(params) {
|
|
65463
|
-
const qs = this.buildQueryString(params);
|
|
65464
|
-
return this.http.get(`${this.baseUrl}/my${qs}`);
|
|
65465
|
-
}
|
|
65466
|
-
getRequest(id) {
|
|
65467
|
-
return this.http
|
|
65468
|
-
.get(`${this.baseUrl}/${id}`)
|
|
65469
|
-
.pipe(map$1(r => r.request));
|
|
65470
|
-
}
|
|
65471
|
-
updateRequest(id, payload) {
|
|
65472
|
-
return this.http
|
|
65473
|
-
.put(`${this.baseUrl}/${id}`, payload)
|
|
65474
|
-
.pipe(map$1(r => r.request));
|
|
65475
|
-
}
|
|
65476
|
-
transition(id, payload) {
|
|
65477
|
-
return this.http.post(`${this.baseUrl}/${id}/transition`, payload);
|
|
65478
|
-
}
|
|
65479
|
-
// ── Comments ──
|
|
65480
|
-
addComment(requestId, payload) {
|
|
65481
|
-
return this.http
|
|
65482
|
-
.post(`${this.baseUrl}/${requestId}/comments`, payload)
|
|
65483
|
-
.pipe(map$1(r => r.comment));
|
|
65484
|
-
}
|
|
65485
|
-
listComments(requestId) {
|
|
65486
|
-
return this.http.get(`${this.baseUrl}/${requestId}/comments`);
|
|
65487
|
-
}
|
|
65488
|
-
// ── Request Types ──
|
|
65489
|
-
listRequestTypes() {
|
|
65490
|
-
return this.http.get(this.typesUrl);
|
|
65491
|
-
}
|
|
65492
|
-
getRequestType(typeId) {
|
|
65493
|
-
return this.http.get(`${this.typesUrl}/${typeId}`);
|
|
65494
|
-
}
|
|
65495
|
-
createRequestType(payload) {
|
|
65496
|
-
return this.http
|
|
65497
|
-
.post(this.typesUrl, payload)
|
|
65498
|
-
.pipe(map$1(r => r.typeConfig));
|
|
65499
|
-
}
|
|
65500
|
-
updateRequestType(typeId, payload) {
|
|
65501
|
-
return this.http
|
|
65502
|
-
.put(`${this.typesUrl}/${typeId}`, payload)
|
|
65503
|
-
.pipe(map$1(r => r.typeConfig));
|
|
65504
|
-
}
|
|
65505
|
-
deleteRequestType(typeId) {
|
|
65506
|
-
return this.http.delete(`${this.typesUrl}/${typeId}`);
|
|
65507
|
-
}
|
|
65508
|
-
// ── Helpers ──
|
|
65509
|
-
buildQueryString(params) {
|
|
65510
|
-
if (!params)
|
|
65511
|
-
return '';
|
|
65512
|
-
const qs = new URLSearchParams();
|
|
65513
|
-
if (params.type)
|
|
65514
|
-
qs.set('type', params.type);
|
|
65515
|
-
if (params.status)
|
|
65516
|
-
qs.set('status', params.status);
|
|
65517
|
-
if (params.limit != null)
|
|
65518
|
-
qs.set('limit', String(params.limit));
|
|
65519
|
-
if (params.nextToken)
|
|
65520
|
-
qs.set('nextToken', params.nextToken);
|
|
65521
|
-
const str = qs.toString();
|
|
65522
|
-
return str ? `?${str}` : '';
|
|
65523
|
-
}
|
|
65524
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
65525
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, providedIn: 'root' }); }
|
|
65526
|
-
}
|
|
65527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestService, decorators: [{
|
|
65528
|
-
type: Injectable,
|
|
65529
|
-
args: [{ providedIn: 'root' }]
|
|
65530
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
65531
|
-
type: Inject,
|
|
65532
|
-
args: [VALTECH_AUTH_CONFIG]
|
|
65533
|
-
}] }, { type: i1$3.HttpClient }] });
|
|
65534
|
-
|
|
65535
|
-
const REQUEST_FORM_I18N = {
|
|
65536
|
-
es: {
|
|
65537
|
-
title: 'Título',
|
|
65538
|
-
titlePlaceholder: 'Describe brevemente tu solicitud',
|
|
65539
|
-
titleValidation: 'El título debe tener al menos 3 caracteres',
|
|
65540
|
-
description: 'Descripción',
|
|
65541
|
-
descriptionPlaceholder: 'Añade más detalles aquí',
|
|
65542
|
-
descriptionValidation: 'La descripción es demasiado larga',
|
|
65543
|
-
submit: 'Enviar',
|
|
65544
|
-
success: 'Solicitud enviada exitosamente',
|
|
65545
|
-
error: 'Error al enviar la solicitud',
|
|
65546
|
-
},
|
|
65547
|
-
en: {
|
|
65548
|
-
title: 'Title',
|
|
65549
|
-
titlePlaceholder: 'Briefly describe your request',
|
|
65550
|
-
titleValidation: 'Title must be at least 3 characters',
|
|
65551
|
-
description: 'Description',
|
|
65552
|
-
descriptionPlaceholder: 'Add more details here',
|
|
65553
|
-
descriptionValidation: 'Description is too long',
|
|
65554
|
-
submit: 'Submit',
|
|
65555
|
-
success: 'Request submitted successfully',
|
|
65556
|
-
error: 'Error submitting the request',
|
|
65557
|
-
},
|
|
65558
|
-
};
|
|
65559
|
-
class RequestFormComponent {
|
|
65560
|
-
constructor() {
|
|
65561
|
-
this.props = { type: '' };
|
|
65562
|
-
this.onSubmit = new EventEmitter();
|
|
65563
|
-
this.onCancel = new EventEmitter();
|
|
65564
|
-
this.i18n = inject(I18nService);
|
|
65565
|
-
this.requestService = inject(RequestService);
|
|
65566
|
-
this.feedbackService = inject(FeedbackService);
|
|
65567
|
-
this.isSubmitting = signal(false);
|
|
65568
|
-
this.isSuccess = signal(false);
|
|
65569
|
-
this.error = signal(null);
|
|
65570
|
-
this.currentAttachments = [];
|
|
65571
|
-
addIcons({ checkmarkCircleOutline, closeCircleOutline });
|
|
65572
|
-
if (!this.i18n.hasNamespace('RequestForm')) {
|
|
65573
|
-
this.i18n.registerDefaults('RequestForm', REQUEST_FORM_I18N);
|
|
65574
|
-
}
|
|
65575
|
-
}
|
|
65576
|
-
ngOnInit() {
|
|
65577
|
-
this.formProps = this.buildFormProps();
|
|
65578
|
-
}
|
|
65579
|
-
buildFormProps() {
|
|
65580
|
-
return {
|
|
65581
|
-
name: '',
|
|
65582
|
-
sections: [
|
|
65583
|
-
{
|
|
65584
|
-
name: '',
|
|
65585
|
-
order: 0,
|
|
65586
|
-
fields: [
|
|
65587
|
-
{
|
|
65588
|
-
token: 'request-title',
|
|
65589
|
-
name: 'title',
|
|
65590
|
-
label: this.props.titleLabel ?? this.t('title'),
|
|
65591
|
-
hint: '',
|
|
65592
|
-
placeholder: this.props.titlePlaceholder ?? this.t('titlePlaceholder'),
|
|
65593
|
-
type: InputType.TEXT,
|
|
65594
|
-
order: 1,
|
|
65595
|
-
validators: [Validators.required, Validators.minLength(3), Validators.maxLength(300)],
|
|
65596
|
-
errors: {
|
|
65597
|
-
required: this.t('titleValidation'),
|
|
65598
|
-
minlength: this.t('titleValidation'),
|
|
65599
|
-
maxlength: this.t('titleValidation'),
|
|
65600
|
-
},
|
|
65601
|
-
state: ComponentStates.ENABLED,
|
|
65602
|
-
},
|
|
65603
|
-
{
|
|
65604
|
-
token: 'request-description',
|
|
65605
|
-
name: 'description',
|
|
65606
|
-
label: this.props.descriptionLabel ?? this.t('description'),
|
|
65607
|
-
hint: '',
|
|
65608
|
-
placeholder: this.props.descriptionPlaceholder ?? this.t('descriptionPlaceholder'),
|
|
65609
|
-
type: InputType.TEXTAREA,
|
|
65610
|
-
order: 2,
|
|
65611
|
-
validators: [Validators.maxLength(5000)],
|
|
65612
|
-
errors: { maxlength: this.t('descriptionValidation') },
|
|
65613
|
-
state: ComponentStates.ENABLED,
|
|
65614
|
-
},
|
|
65615
|
-
],
|
|
65616
|
-
},
|
|
65617
|
-
],
|
|
65618
|
-
actions: {
|
|
65619
|
-
type: 'submit',
|
|
65620
|
-
color: 'dark',
|
|
65621
|
-
fill: 'solid',
|
|
65622
|
-
shape: 'round',
|
|
65623
|
-
expand: 'block',
|
|
65624
|
-
text: this.props.submitButtonText ?? this.t('submit'),
|
|
65625
|
-
state: ComponentStates.ENABLED,
|
|
65626
|
-
},
|
|
65627
|
-
state: ComponentStates.ENABLED,
|
|
65628
|
-
};
|
|
65629
|
-
}
|
|
65630
|
-
async handleFormSubmit(submitted) {
|
|
65631
|
-
if (this.isSubmitting())
|
|
65632
|
-
return;
|
|
65633
|
-
if (this.currentAttachments.some(a => a.status === 'uploading'))
|
|
65634
|
-
return;
|
|
65635
|
-
this.isSubmitting.set(true);
|
|
65636
|
-
this.error.set(null);
|
|
65637
|
-
this.isSuccess.set(false);
|
|
65638
|
-
this.formProps.state = ComponentStates.WORKING;
|
|
65639
|
-
this.formProps.actions.state = ComponentStates.WORKING;
|
|
65640
|
-
try {
|
|
65641
|
-
const title = submitted.fields['title'].trim();
|
|
65642
|
-
const description = submitted.fields['description']?.trim() ?? '';
|
|
65643
|
-
const attachmentUrls = this.currentAttachments.filter(a => a.status === 'ready').map(a => a.url);
|
|
65644
|
-
const result = await firstValueFrom(this.requestService.createRequest({
|
|
65645
|
-
type: this.props.type,
|
|
65646
|
-
title,
|
|
65647
|
-
fields: {
|
|
65648
|
-
...(description ? { description } : {}),
|
|
65649
|
-
...(attachmentUrls.length ? { attachmentUrls } : {}),
|
|
65650
|
-
},
|
|
65651
|
-
}));
|
|
65652
|
-
this.isSuccess.set(true);
|
|
65653
|
-
this.onSubmit.emit({
|
|
65654
|
-
requestId: result.requestId,
|
|
65655
|
-
request: result.request,
|
|
65656
|
-
type: this.props.type,
|
|
65657
|
-
title,
|
|
65658
|
-
attachmentUrls,
|
|
65659
|
-
});
|
|
65660
|
-
}
|
|
65661
|
-
catch (err) {
|
|
65662
|
-
this.error.set(err.error?.message || err.message || this.t('error'));
|
|
65663
|
-
}
|
|
65664
|
-
finally {
|
|
65665
|
-
this.isSubmitting.set(false);
|
|
65666
|
-
this.formProps.state = ComponentStates.ENABLED;
|
|
65667
|
-
this.formProps.actions.state = ComponentStates.ENABLED;
|
|
65668
|
-
}
|
|
65669
|
-
}
|
|
65670
|
-
onAttachmentsChange(items) {
|
|
65671
|
-
this.currentAttachments = items;
|
|
65672
|
-
}
|
|
65673
|
-
onCancelClick() {
|
|
65674
|
-
this.onCancel.emit();
|
|
65675
|
-
}
|
|
65676
|
-
t(key) {
|
|
65677
|
-
return this.i18n.t(key, 'RequestForm');
|
|
65678
|
-
}
|
|
65679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65680
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RequestFormComponent, isStandalone: true, selector: "val-request-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: `
|
|
65681
|
-
<div class="request-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
|
|
65682
|
-
<val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
|
|
65683
|
-
@if (props.showAttachments !== false) {
|
|
65684
|
-
<val-attachment-uploader [props]="{ maxFiles: 5 }" (attachmentsChange)="onAttachmentsChange($event)" />
|
|
65685
|
-
}
|
|
65686
|
-
|
|
65687
|
-
@if (error()) {
|
|
65688
|
-
<div class="request-alert error">
|
|
65689
|
-
<ion-icon name="close-circle-outline" aria-hidden="true" />
|
|
65690
|
-
<span>{{ error() }}</span>
|
|
65691
|
-
</div>
|
|
65692
|
-
}
|
|
65693
|
-
|
|
65694
|
-
@if (isSuccess()) {
|
|
65695
|
-
<div class="request-alert success">
|
|
65696
|
-
<ion-icon name="checkmark-circle-outline" aria-hidden="true" />
|
|
65697
|
-
<span>{{ props.successMessage || t('success') }}</span>
|
|
65698
|
-
</div>
|
|
65699
|
-
}
|
|
65700
|
-
</val-form>
|
|
65701
|
-
|
|
65702
|
-
@if (props.cancelButtonText) {
|
|
65703
|
-
<ion-button fill="outline" color="medium" expand="block" class="cancel-button" (click)="onCancelClick()">
|
|
65704
|
-
{{ props.cancelButtonText }}
|
|
65705
|
-
</ion-button>
|
|
65706
|
-
}
|
|
65707
|
-
</div>
|
|
65708
|
-
`, isInline: true, styles: [".request-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.request-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:1.25rem}}.cancel-button{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { 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"] }] }); }
|
|
65709
|
-
}
|
|
65710
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestFormComponent, decorators: [{
|
|
65711
|
-
type: Component,
|
|
65712
|
-
args: [{ selector: 'val-request-form', standalone: true, imports: [CommonModule, FormComponent, AttachmentUploaderComponent, IonButton, IonIcon], template: `
|
|
65713
|
-
<div class="request-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
|
|
65714
|
-
<val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
|
|
65715
|
-
@if (props.showAttachments !== false) {
|
|
65716
|
-
<val-attachment-uploader [props]="{ maxFiles: 5 }" (attachmentsChange)="onAttachmentsChange($event)" />
|
|
65717
|
-
}
|
|
65718
|
-
|
|
65719
|
-
@if (error()) {
|
|
65720
|
-
<div class="request-alert error">
|
|
65721
|
-
<ion-icon name="close-circle-outline" aria-hidden="true" />
|
|
65722
|
-
<span>{{ error() }}</span>
|
|
65723
|
-
</div>
|
|
65724
|
-
}
|
|
65725
|
-
|
|
65726
|
-
@if (isSuccess()) {
|
|
65727
|
-
<div class="request-alert success">
|
|
65728
|
-
<ion-icon name="checkmark-circle-outline" aria-hidden="true" />
|
|
65729
|
-
<span>{{ props.successMessage || t('success') }}</span>
|
|
65730
|
-
</div>
|
|
65731
|
-
}
|
|
65732
|
-
</val-form>
|
|
65733
|
-
|
|
65734
|
-
@if (props.cancelButtonText) {
|
|
65735
|
-
<ion-button fill="outline" color="medium" expand="block" class="cancel-button" (click)="onCancelClick()">
|
|
65736
|
-
{{ props.cancelButtonText }}
|
|
65737
|
-
</ion-button>
|
|
65738
|
-
}
|
|
65739
|
-
</div>
|
|
65740
|
-
`, styles: [".request-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.request-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:1.25rem}}.cancel-button{margin-top:8px}\n"] }]
|
|
65741
|
-
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
65742
|
-
type: Input
|
|
65743
|
-
}], onSubmit: [{
|
|
65744
|
-
type: Output
|
|
65745
|
-
}], onCancel: [{
|
|
65746
|
-
type: Output
|
|
65747
|
-
}] } });
|
|
65748
|
-
|
|
65749
65847
|
const DEFAULT_SPLASH_SCREEN_CONFIG = {
|
|
65750
65848
|
fadeOutDuration: 300,
|
|
65751
65849
|
};
|
|
@@ -69961,5 +70059,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
69961
70059
|
* Generated bundle index. Do not edit.
|
|
69962
70060
|
*/
|
|
69963
70061
|
|
|
69964
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
|
|
70062
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
|
|
69965
70063
|
//# sourceMappingURL=valtech-components.mjs.map
|