tickera-angular-components 0.0.1-dev.184 → 0.0.1-dev.186
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, makeEnvironmentProviders, PLATFORM_ID, Inject, Injectable, signal, LOCALE_ID, computed, inject, EventEmitter, Input, Output, Component, ViewEncapsulation, HostListener, Self, Optional, Injector, forwardRef, effect, untracked, ViewChild } from '@angular/core';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i1$3 from '@jsverse/transloco';
|
|
4
4
|
import { provideTransloco, TranslocoModule, TranslocoService } from '@jsverse/transloco';
|
|
5
5
|
import { from, throwError, BehaviorSubject, Subject, of, Observable, takeUntil as takeUntil$1 } from 'rxjs';
|
|
6
6
|
import * as i1$1 from '@angular/common';
|
|
@@ -5289,7 +5289,7 @@ class FormInputComponent {
|
|
|
5289
5289
|
}
|
|
5290
5290
|
return baseClasses;
|
|
5291
5291
|
}
|
|
5292
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
5292
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5293
5293
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FormInputComponent, isStandalone: true, selector: "form-input", inputs: { label: "label", type: "type", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", maxlength: "maxlength", minlength: "minlength", max: "max", min: "min", step: "step", pattern: "pattern", fieldGroupClass: "fieldGroupClass", autocomplete: "autocomplete" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [pattern]=\"pattern || ''\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"form-input\"\n [autocomplete]=\"autocomplete\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n />\n </div>\n\n @if (showError) {\n <div class=\"form-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".form-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-input-label{color:#d1d5db}}.form-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;outline:0;padding:.375rem .75rem;width:100%}.form-input::placeholder{color:#9ca3af}.form-input:focus{border-color:#1f2937}.form-input.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.form-input.error{background-color:#374151;outline-color:#ef4444}}.form-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.form-input.disabled{background-color:#374151;color:#d1d5db}}@media screen and (min-width:768px){.form-input{font-size:.875rem}}.form-input-required{color:#ef4444}.form-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
5294
5294
|
}
|
|
5295
5295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormInputComponent, decorators: [{
|
|
@@ -5299,7 +5299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
5299
5299
|
type: Self
|
|
5300
5300
|
}, {
|
|
5301
5301
|
type: Optional
|
|
5302
|
-
}] }, { type:
|
|
5302
|
+
}] }, { type: i1$3.TranslocoService }], propDecorators: { label: [{
|
|
5303
5303
|
type: Input
|
|
5304
5304
|
}], type: [{
|
|
5305
5305
|
type: Input
|
|
@@ -5404,8 +5404,8 @@ class DeleteConfirmationComponent {
|
|
|
5404
5404
|
this.deleteConfirmationForm.reset();
|
|
5405
5405
|
this.step = 'input';
|
|
5406
5406
|
}
|
|
5407
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DeleteConfirmationComponent, deps: [{ token: i1$2.FormBuilder }, { token: DeleteConfirmationService }, { token:
|
|
5408
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DeleteConfirmationComponent, isStandalone: true, selector: "delete-confirmation", ngImport: i0, template: "@if (isOpen()) {\n <app-modal\n [title]=\"title\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n [interactiveClose]=\"false\"\n >\n @if (!isFinalStep) {\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n } @else {\n <div class=\"delete-confirmation-content\" data-testid=\"delete-confirmation-final-step\">\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.finalWarning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ transloco.translate('deleteConfirmation.finalMessage', { resource: resourceName }) }}\n </p>\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onBackToInput()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"button\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.finalConfirm' | transloco\"\n (click)=\"onFinalConfirm()\"\n size=\"sm\"\n />\n </div>\n </div>\n }\n </app-modal>\n}\n", styles: [".delete-confirmation-content{display:flex;flex-direction:column;gap:1rem;animation:slideUp .3s ease-out}.delete-confirmation-instructions{font-size:.75rem;color:#4b5563;margin:0}@media(prefers-color-scheme:dark){.delete-confirmation-instructions{color:#9ca3af}}.delete-confirmation-highlight{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;margin-top:.25rem;background-color:#e5e7eb;color:#dc2626;font-weight:600;font-size:.875rem;border-radius:.375rem}@media(prefers-color-scheme:dark){.delete-confirmation-highlight{background-color:#374151}}.delete-confirmation-field{flex:1}.delete-confirmation-actions{display:flex;gap:.75rem}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: FormInputComponent, selector: "form-input", inputs: ["label", "type", "name", "id", "placeholder", "required", "readonly", "maxlength", "minlength", "max", "min", "step", "pattern", "fieldGroupClass", "autocomplete"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: AppAlertComponent, selector: "app-alert", inputs: ["type", "text", "closeable", "size"] }, { kind: "pipe", type:
|
|
5407
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DeleteConfirmationComponent, deps: [{ token: i1$2.FormBuilder }, { token: DeleteConfirmationService }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5408
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DeleteConfirmationComponent, isStandalone: true, selector: "delete-confirmation", ngImport: i0, template: "@if (isOpen()) {\n <app-modal\n [title]=\"title\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n [interactiveClose]=\"false\"\n >\n @if (!isFinalStep) {\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n } @else {\n <div class=\"delete-confirmation-content\" data-testid=\"delete-confirmation-final-step\">\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.finalWarning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ transloco.translate('deleteConfirmation.finalMessage', { resource: resourceName }) }}\n </p>\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onBackToInput()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"button\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.finalConfirm' | transloco\"\n (click)=\"onFinalConfirm()\"\n size=\"sm\"\n />\n </div>\n </div>\n }\n </app-modal>\n}\n", styles: [".delete-confirmation-content{display:flex;flex-direction:column;gap:1rem;animation:slideUp .3s ease-out}.delete-confirmation-instructions{font-size:.75rem;color:#4b5563;margin:0}@media(prefers-color-scheme:dark){.delete-confirmation-instructions{color:#9ca3af}}.delete-confirmation-highlight{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;margin-top:.25rem;background-color:#e5e7eb;color:#dc2626;font-weight:600;font-size:.875rem;border-radius:.375rem}@media(prefers-color-scheme:dark){.delete-confirmation-highlight{background-color:#374151}}.delete-confirmation-field{flex:1}.delete-confirmation-actions{display:flex;gap:.75rem}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: FormInputComponent, selector: "form-input", inputs: ["label", "type", "name", "id", "placeholder", "required", "readonly", "maxlength", "minlength", "max", "min", "step", "pattern", "fieldGroupClass", "autocomplete"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: AppAlertComponent, selector: "app-alert", inputs: ["type", "text", "closeable", "size"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
5409
5409
|
}
|
|
5410
5410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DeleteConfirmationComponent, decorators: [{
|
|
5411
5411
|
type: Component,
|
|
@@ -5418,7 +5418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
5418
5418
|
AppModalComponent,
|
|
5419
5419
|
AppAlertComponent,
|
|
5420
5420
|
], encapsulation: ViewEncapsulation.None, template: "@if (isOpen()) {\n <app-modal\n [title]=\"title\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n [interactiveClose]=\"false\"\n >\n @if (!isFinalStep) {\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n } @else {\n <div class=\"delete-confirmation-content\" data-testid=\"delete-confirmation-final-step\">\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.finalWarning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ transloco.translate('deleteConfirmation.finalMessage', { resource: resourceName }) }}\n </p>\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onBackToInput()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"button\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.finalConfirm' | transloco\"\n (click)=\"onFinalConfirm()\"\n size=\"sm\"\n />\n </div>\n </div>\n }\n </app-modal>\n}\n", styles: [".delete-confirmation-content{display:flex;flex-direction:column;gap:1rem;animation:slideUp .3s ease-out}.delete-confirmation-instructions{font-size:.75rem;color:#4b5563;margin:0}@media(prefers-color-scheme:dark){.delete-confirmation-instructions{color:#9ca3af}}.delete-confirmation-highlight{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;margin-top:.25rem;background-color:#e5e7eb;color:#dc2626;font-weight:600;font-size:.875rem;border-radius:.375rem}@media(prefers-color-scheme:dark){.delete-confirmation-highlight{background-color:#374151}}.delete-confirmation-field{flex:1}.delete-confirmation-actions{display:flex;gap:.75rem}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}\n"] }]
|
|
5421
|
-
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: DeleteConfirmationService }, { type:
|
|
5421
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: DeleteConfirmationService }, { type: i1$3.TranslocoService }] });
|
|
5422
5422
|
|
|
5423
5423
|
class AppBadgeComponent {
|
|
5424
5424
|
text = '';
|
|
@@ -5587,7 +5587,7 @@ class TextExpandableComponent {
|
|
|
5587
5587
|
this.expanded = !this.expanded;
|
|
5588
5588
|
}
|
|
5589
5589
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5590
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TextExpandableComponent, isStandalone: true, selector: "text-expandable", inputs: { text: "text", maxLength: "maxLength", fontSize: "fontSize", allowHtml: "allowHtml", maxLines: "maxLines" }, usesOnChanges: true, ngImport: i0, template: "@if (allowHtml) {\n <div class=\"text-expandable__html\" [ngClass]=\"`text-expandable__html--font-size-${fontSize}`\">\n <div\n class=\"text-expandable__html__content\"\n [class.text-expandable__html__content--clamped]=\"truncated && !expanded\"\n [style.--text-expandable-lines]=\"lines\"\n [innerHTML]=\"text\"\n ></div>\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </div>\n} @else {\n <p\n class=\"text-expandable__paragraph\"\n [ngClass]=\"`text-expandable__paragraph--font-size-${fontSize}`\"\n >\n {{ visibleText }}\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </p>\n}\n", styles: [".text-expandable__paragraph{line-height:1.625}.text-expandable__paragraph--font-size-xs{font-size:.75rem}.text-expandable__paragraph--font-size-sm{font-size:.875rem}.text-expandable__paragraph--font-size-base{font-size:1rem}.text-expandable__paragraph--font-size-lg{font-size:1.125rem}.text-expandable__paragraph--font-size-xl{font-size:1.25rem}.text-expandable__paragraph--font-size-2xl{font-size:1.5rem}.text-expandable__paragraph--font-size-3xl{font-size:1.875rem}.text-expandable__paragraph--font-size-4xl{font-size:2.25rem}.text-expandable__paragraph--font-size-5xl{font-size:3rem}.text-expandable__paragraph--font-size-6xl{font-size:3.75rem}.text-expandable__html{line-height:1.625}.text-expandable__html--font-size-xs{font-size:.75rem}.text-expandable__html--font-size-sm{font-size:.875rem}.text-expandable__html--font-size-base{font-size:1rem}.text-expandable__html--font-size-lg{font-size:1.125rem}.text-expandable__html--font-size-xl{font-size:1.25rem}.text-expandable__html--font-size-2xl{font-size:1.5rem}.text-expandable__html--font-size-3xl{font-size:1.875rem}.text-expandable__html--font-size-4xl{font-size:2.25rem}.text-expandable__html--font-size-5xl{font-size:3rem}.text-expandable__html--font-size-6xl{font-size:3.75rem}.text-expandable__html__content--clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--text-expandable-lines);overflow:hidden}.text-expandable__toggle{display:inline;margin-left:.25rem;padding:0;border:0;background:transparent;font-size:.875rem;font-weight:600;color:#2563eb;cursor:pointer;vertical-align:baseline}.text-expandable__toggle:hover{color:#1e40af;text-decoration:underline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type:
|
|
5590
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TextExpandableComponent, isStandalone: true, selector: "text-expandable", inputs: { text: "text", maxLength: "maxLength", fontSize: "fontSize", allowHtml: "allowHtml", maxLines: "maxLines" }, usesOnChanges: true, ngImport: i0, template: "@if (allowHtml) {\n <div class=\"text-expandable__html\" [ngClass]=\"`text-expandable__html--font-size-${fontSize}`\">\n <div\n class=\"text-expandable__html__content\"\n [class.text-expandable__html__content--clamped]=\"truncated && !expanded\"\n [style.--text-expandable-lines]=\"lines\"\n [innerHTML]=\"text\"\n ></div>\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </div>\n} @else {\n <p\n class=\"text-expandable__paragraph\"\n [ngClass]=\"`text-expandable__paragraph--font-size-${fontSize}`\"\n >\n {{ visibleText }}\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </p>\n}\n", styles: [".text-expandable__paragraph{line-height:1.625}.text-expandable__paragraph--font-size-xs{font-size:.75rem}.text-expandable__paragraph--font-size-sm{font-size:.875rem}.text-expandable__paragraph--font-size-base{font-size:1rem}.text-expandable__paragraph--font-size-lg{font-size:1.125rem}.text-expandable__paragraph--font-size-xl{font-size:1.25rem}.text-expandable__paragraph--font-size-2xl{font-size:1.5rem}.text-expandable__paragraph--font-size-3xl{font-size:1.875rem}.text-expandable__paragraph--font-size-4xl{font-size:2.25rem}.text-expandable__paragraph--font-size-5xl{font-size:3rem}.text-expandable__paragraph--font-size-6xl{font-size:3.75rem}.text-expandable__html{line-height:1.625}.text-expandable__html--font-size-xs{font-size:.75rem}.text-expandable__html--font-size-sm{font-size:.875rem}.text-expandable__html--font-size-base{font-size:1rem}.text-expandable__html--font-size-lg{font-size:1.125rem}.text-expandable__html--font-size-xl{font-size:1.25rem}.text-expandable__html--font-size-2xl{font-size:1.5rem}.text-expandable__html--font-size-3xl{font-size:1.875rem}.text-expandable__html--font-size-4xl{font-size:2.25rem}.text-expandable__html--font-size-5xl{font-size:3rem}.text-expandable__html--font-size-6xl{font-size:3.75rem}.text-expandable__html__content--clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--text-expandable-lines);overflow:hidden}.text-expandable__toggle{display:inline;margin-left:.25rem;padding:0;border:0;background:transparent;font-size:.875rem;font-weight:600;color:#2563eb;cursor:pointer;vertical-align:baseline}.text-expandable__toggle:hover{color:#1e40af;text-decoration:underline}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
5591
5591
|
}
|
|
5592
5592
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextExpandableComponent, decorators: [{
|
|
5593
5593
|
type: Component,
|
|
@@ -5613,7 +5613,7 @@ class ShowTypeBadgeComponent {
|
|
|
5613
5613
|
return this.show.show_type ? SHOW_TYPE_COLORS[this.show.show_type] : SHOW_TYPE_COLORS['DEFAULT'];
|
|
5614
5614
|
}
|
|
5615
5615
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowTypeBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5616
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ShowTypeBadgeComponent, isStandalone: true, selector: "show-type-badge", inputs: { show: "show", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`show.showTypes.${show.show_type}` | transloco\"\n [backgroundColor]=\"this.showTypeColor.bg\"\n [textColor]=\"this.showTypeColor.text\"\n size=\"xs\"\n class=\"show-card__badge\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type:
|
|
5616
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: ShowTypeBadgeComponent, isStandalone: true, selector: "show-type-badge", inputs: { show: "show", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`show.showTypes.${show.show_type}` | transloco\"\n [backgroundColor]=\"this.showTypeColor.bg\"\n [textColor]=\"this.showTypeColor.text\"\n size=\"xs\"\n class=\"show-card__badge\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
5617
5617
|
}
|
|
5618
5618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowTypeBadgeComponent, decorators: [{
|
|
5619
5619
|
type: Component,
|
|
@@ -5639,7 +5639,7 @@ class ShowCardComponent {
|
|
|
5639
5639
|
return new Date(date);
|
|
5640
5640
|
}
|
|
5641
5641
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5642
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ShowCardComponent, isStandalone: true, selector: "show-card", inputs: { show: "show", linkText: "linkText", linkUrlFn: "linkUrlFn", linkQueryParams: "linkQueryParams" }, ngImport: i0, template: "<div class=\"show-card\">\n <div class=\"show-card__image\">\n <show-type-badge [show]=\"show\" class=\"show-card__badge\" />\n\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <img\n [src]=\"`https://placehold.co/400x400/1f2937/737373?text=${show.title}`\"\n class=\"show-card__image-placeholder\"\n />\n }\n </div>\n\n <div class=\"show-card__info\">\n <p class=\"show-card__title\">\n {{ show.title }}\n </p>\n\n @if (show.next_performance) {\n <div class=\"show-card__datetime\">\n <span class=\"show-card__datetime-title\">\n {{ 'show.next_performance' | transloco }}\n </span>\n\n <br />\n\n <span class=\"show-card__date\">\n {{ show.next_performance.start_time | date: `EEEE` | titlecase }}\n {{ show.next_performance.start_time | date: `dd 'de' MMMM, hh:mm a` }}\n </span>\n </div>\n }\n\n @if (show.days_of_week && show.days_of_week.length > 0) {\n <div class=\"show-card__days\">\n @for (day of show.days_of_week; track $index) {\n <app-badge\n [text]=\"`common.daysOfWeekByNumber.${day}` | transloco\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n @if (show.unique_start_times && show.unique_start_times.length > 0) {\n <div class=\"show-card__times\">\n @for (time of show.unique_start_times; track $index) {\n <app-badge\n [text]=\"dateService.formatDate(formatTimeDate(time), 'hh:mm a')\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n <app-link-button\n class=\"show-card__link\"\n [route]=\"linkUrlFn ? linkUrlFn(show) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-calendar-line\"\n variant=\"primary\"\n size=\"sm\"\n />\n </div>\n</div>\n", styles: [".show-card{align-items:center;background-color:#171717;border-radius:.5rem;display:flex;flex-direction:column;gap:0;justify-content:space-between;overflow:hidden;padding:0;position:relative;transition:all .2s ease-in-out;max-width:320px;width:100%}.show-card:hover{border-color:#525252}.show-card--selected{background-color:#262626;border-color:#ef4444;box-shadow:0 0 0 1px #ef444480,0 0 16px #ef444459}.show-card--selected:hover{border-color:#ef4444}.show-card__image{aspect-ratio:1/1;display:flex;border-radius:.125rem;overflow:hidden;position:relative;width:100%}.show-card__image-img{object-fit:cover;object-position:center;max-height:100%;max-width:100%;margin-left:auto;margin-right:auto}.show-card__image-placeholder{display:flex;background-color:#1f2937;height:100%;width:100%}.show-card__badge{position:absolute;left:1rem;top:1rem}.show-card__info{display:flex;flex-direction:column;flex:1;gap:.5rem;padding:1.5rem;width:100%}.show-card__title{color:#e5e7eb;font-size:1.5rem;font-weight:800;line-height:130%;margin:0}.show-card__datetime{line-height:1}.show-card__datetime-title{color:#a3a3a3;font-size:.75rem;font-weight:700;width:100%}.show-card__date{color:#a3a3a3;font-size:.875rem}.show-card__days,.show-card__times{color:#a3a3a3;display:flex;flex-flow:row wrap;font-size:.875rem;gap:.25rem}.show-card__times{margin-bottom:.5rem}.show-card__link{margin-top:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppLinkButtonComponent, selector: "app-link-button", inputs: ["disabled", "loading", "target", "text", "icon", "loadingText", "route", "queryParams", "size", "variant", "tooltip"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: ShowTypeBadgeComponent, selector: "show-type-badge", inputs: ["show", "size"] }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type:
|
|
5642
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ShowCardComponent, isStandalone: true, selector: "show-card", inputs: { show: "show", linkText: "linkText", linkUrlFn: "linkUrlFn", linkQueryParams: "linkQueryParams" }, ngImport: i0, template: "<div class=\"show-card\">\n <div class=\"show-card__image\">\n <show-type-badge [show]=\"show\" class=\"show-card__badge\" />\n\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <img\n [src]=\"`https://placehold.co/400x400/1f2937/737373?text=${show.title}`\"\n class=\"show-card__image-placeholder\"\n />\n }\n </div>\n\n <div class=\"show-card__info\">\n <p class=\"show-card__title\">\n {{ show.title }}\n </p>\n\n @if (show.next_performance) {\n <div class=\"show-card__datetime\">\n <span class=\"show-card__datetime-title\">\n {{ 'show.next_performance' | transloco }}\n </span>\n\n <br />\n\n <span class=\"show-card__date\">\n {{ show.next_performance.start_time | date: `EEEE` | titlecase }}\n {{ show.next_performance.start_time | date: `dd 'de' MMMM, hh:mm a` }}\n </span>\n </div>\n }\n\n @if (show.days_of_week && show.days_of_week.length > 0) {\n <div class=\"show-card__days\">\n @for (day of show.days_of_week; track $index) {\n <app-badge\n [text]=\"`common.daysOfWeekByNumber.${day}` | transloco\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n @if (show.unique_start_times && show.unique_start_times.length > 0) {\n <div class=\"show-card__times\">\n @for (time of show.unique_start_times; track $index) {\n <app-badge\n [text]=\"dateService.formatDate(formatTimeDate(time), 'hh:mm a')\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n <app-link-button\n class=\"show-card__link\"\n [route]=\"linkUrlFn ? linkUrlFn(show) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-calendar-line\"\n variant=\"primary\"\n size=\"sm\"\n />\n </div>\n</div>\n", styles: [".show-card{align-items:center;background-color:#171717;border-radius:.5rem;display:flex;flex-direction:column;gap:0;justify-content:space-between;overflow:hidden;padding:0;position:relative;transition:all .2s ease-in-out;max-width:320px;width:100%}.show-card:hover{border-color:#525252}.show-card--selected{background-color:#262626;border-color:#ef4444;box-shadow:0 0 0 1px #ef444480,0 0 16px #ef444459}.show-card--selected:hover{border-color:#ef4444}.show-card__image{aspect-ratio:1/1;display:flex;border-radius:.125rem;overflow:hidden;position:relative;width:100%}.show-card__image-img{object-fit:cover;object-position:center;max-height:100%;max-width:100%;margin-left:auto;margin-right:auto}.show-card__image-placeholder{display:flex;background-color:#1f2937;height:100%;width:100%}.show-card__badge{position:absolute;left:1rem;top:1rem}.show-card__info{display:flex;flex-direction:column;flex:1;gap:.5rem;padding:1.5rem;width:100%}.show-card__title{color:#e5e7eb;font-size:1.5rem;font-weight:800;line-height:130%;margin:0}.show-card__datetime{line-height:1}.show-card__datetime-title{color:#a3a3a3;font-size:.75rem;font-weight:700;width:100%}.show-card__date{color:#a3a3a3;font-size:.875rem}.show-card__days,.show-card__times{color:#a3a3a3;display:flex;flex-flow:row wrap;font-size:.875rem;gap:.25rem}.show-card__times{margin-bottom:.5rem}.show-card__link{margin-top:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppLinkButtonComponent, selector: "app-link-button", inputs: ["disabled", "loading", "target", "text", "icon", "loadingText", "route", "queryParams", "size", "variant", "tooltip"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: ShowTypeBadgeComponent, selector: "show-type-badge", inputs: ["show", "size"] }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
5643
5643
|
}
|
|
5644
5644
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowCardComponent, decorators: [{
|
|
5645
5645
|
type: Component,
|
|
@@ -5701,13 +5701,288 @@ class LanguageSwitcherComponent {
|
|
|
5701
5701
|
this.transloco.setActiveLang(lang);
|
|
5702
5702
|
setStoredLanguage(lang);
|
|
5703
5703
|
}
|
|
5704
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token:
|
|
5704
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5705
5705
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: LanguageSwitcherComponent, isStandalone: true, selector: "language-switcher", ngImport: i0, template: "<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n", styles: [".lang-switcher{display:flex;align-items:center;gap:.25rem}.lang-switcher-btn{cursor:pointer;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:.125rem;transition:all .15s ease-in-out;border:none;background:transparent}.lang-switcher-btn.active{background-color:#1f2937;color:#fff}@media(prefers-color-scheme:dark){.lang-switcher-btn.active{background-color:#374151}}.lang-switcher-btn.inactive{color:#9ca3af}.lang-switcher-btn.inactive:hover{color:#fff}@media(prefers-color-scheme:dark){.lang-switcher-btn.inactive{color:#6b7280}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1$1.UpperCasePipe, name: "uppercase" }] });
|
|
5706
5706
|
}
|
|
5707
5707
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
5708
5708
|
type: Component,
|
|
5709
5709
|
args: [{ selector: 'language-switcher', standalone: true, imports: [CommonModule, TranslocoModule], template: "<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n", styles: [".lang-switcher{display:flex;align-items:center;gap:.25rem}.lang-switcher-btn{cursor:pointer;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:.125rem;transition:all .15s ease-in-out;border:none;background:transparent}.lang-switcher-btn.active{background-color:#1f2937;color:#fff}@media(prefers-color-scheme:dark){.lang-switcher-btn.active{background-color:#374151}}.lang-switcher-btn.inactive{color:#9ca3af}.lang-switcher-btn.inactive:hover{color:#fff}@media(prefers-color-scheme:dark){.lang-switcher-btn.inactive{color:#6b7280}}\n"] }]
|
|
5710
|
-
}], ctorParameters: () => [{ type:
|
|
5710
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }] });
|
|
5711
|
+
|
|
5712
|
+
// Reglas de formato/longitud por tipo de documento de identidad colombiano (QTN-44).
|
|
5713
|
+
const IDENTITY_DOCUMENT_RULES = {
|
|
5714
|
+
CC: { digitsOnly: true, minLength: 6, maxLength: 10 },
|
|
5715
|
+
TI: { digitsOnly: true, minLength: 10, maxLength: 11 },
|
|
5716
|
+
RC: { digitsOnly: true, minLength: 10, maxLength: 11 },
|
|
5717
|
+
NIT: { digitsOnly: true, minLength: 9, maxLength: 10 },
|
|
5718
|
+
CE: { digitsOnly: false, minLength: null, maxLength: 15 },
|
|
5719
|
+
PA: { digitsOnly: false, minLength: null, maxLength: 12 },
|
|
5720
|
+
};
|
|
5721
|
+
// Pesos primos y tabla de conversión del algoritmo de dígito de verificación (DV)
|
|
5722
|
+
// del NIT, según el módulo 11 de la DIAN.
|
|
5723
|
+
const NIT_CHECK_DIGIT_WEIGHTS = [3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71];
|
|
5724
|
+
const NIT_CHECK_DIGIT_TABLE = {
|
|
5725
|
+
0: 0,
|
|
5726
|
+
1: 1,
|
|
5727
|
+
2: 9,
|
|
5728
|
+
3: 8,
|
|
5729
|
+
4: 7,
|
|
5730
|
+
5: 6,
|
|
5731
|
+
6: 5,
|
|
5732
|
+
7: 4,
|
|
5733
|
+
8: 3,
|
|
5734
|
+
9: 2,
|
|
5735
|
+
10: 1,
|
|
5736
|
+
};
|
|
5737
|
+
/**
|
|
5738
|
+
* Campo de documento de identidad (QTN-44).
|
|
5739
|
+
*
|
|
5740
|
+
* Componente compartido que, dado un `documentType` (CC, CE, PA, NIT, TI, RC),
|
|
5741
|
+
* aplica automáticamente el formato y las validaciones correspondientes a los
|
|
5742
|
+
* lineamientos de documentos de identidad de Colombia: solo dígitos y rango de
|
|
5743
|
+
* longitud para CC/TI/RC/NIT, alfanumérico con longitud máxima para CE/PA, y
|
|
5744
|
+
* validación opcional del dígito de verificación (DV) para NIT.
|
|
5745
|
+
*
|
|
5746
|
+
* Sigue el mismo patrón que `NumberInputComponent`: standalone,
|
|
5747
|
+
* `ControlValueAccessor` + `Validator` vía `NG_VALUE_ACCESSOR`/`NG_VALIDATORS`.
|
|
5748
|
+
*/
|
|
5749
|
+
class IdentityDocumentInputComponent {
|
|
5750
|
+
transloco;
|
|
5751
|
+
injector;
|
|
5752
|
+
elementRef;
|
|
5753
|
+
label = '';
|
|
5754
|
+
name = '';
|
|
5755
|
+
id = '';
|
|
5756
|
+
placeholder = '';
|
|
5757
|
+
required = false;
|
|
5758
|
+
readonly = false;
|
|
5759
|
+
fieldGroupClass = '';
|
|
5760
|
+
documentType = '';
|
|
5761
|
+
// Solo aplica cuando documentType === 'NIT'. Ver validateNitWithCheckDigit().
|
|
5762
|
+
validateCheckDigit = false;
|
|
5763
|
+
value = null;
|
|
5764
|
+
disabled = false;
|
|
5765
|
+
onChange = () => { };
|
|
5766
|
+
onTouched = () => { };
|
|
5767
|
+
_ngControl;
|
|
5768
|
+
constructor(transloco, injector, elementRef) {
|
|
5769
|
+
this.transloco = transloco;
|
|
5770
|
+
this.injector = injector;
|
|
5771
|
+
this.elementRef = elementRef;
|
|
5772
|
+
}
|
|
5773
|
+
get ngControl() {
|
|
5774
|
+
if (this._ngControl === undefined) {
|
|
5775
|
+
this._ngControl = this.injector.get(NgControl, null, { self: true });
|
|
5776
|
+
}
|
|
5777
|
+
return this._ngControl;
|
|
5778
|
+
}
|
|
5779
|
+
ngOnChanges(changes) {
|
|
5780
|
+
if (changes['documentType'] || changes['validateCheckDigit']) {
|
|
5781
|
+
this.ngControl?.control?.updateValueAndValidity();
|
|
5782
|
+
}
|
|
5783
|
+
}
|
|
5784
|
+
get rule() {
|
|
5785
|
+
return this.documentType ? IDENTITY_DOCUMENT_RULES[this.documentType] : null;
|
|
5786
|
+
}
|
|
5787
|
+
get isDigitsOnly() {
|
|
5788
|
+
return this.rule?.digitsOnly ?? false;
|
|
5789
|
+
}
|
|
5790
|
+
get inputMode() {
|
|
5791
|
+
return this.isDigitsOnly ? 'numeric' : 'text';
|
|
5792
|
+
}
|
|
5793
|
+
// Longitud máxima permitida en el input. Para NIT con validateCheckDigit
|
|
5794
|
+
// habilitado, se reserva un carácter adicional para el DV.
|
|
5795
|
+
get maxLength() {
|
|
5796
|
+
const baseMax = this.rule?.maxLength ?? null;
|
|
5797
|
+
if (baseMax === null)
|
|
5798
|
+
return null;
|
|
5799
|
+
if (this.documentType === 'NIT' && this.validateCheckDigit) {
|
|
5800
|
+
return baseMax + 1;
|
|
5801
|
+
}
|
|
5802
|
+
return baseMax;
|
|
5803
|
+
}
|
|
5804
|
+
writeValue(value) {
|
|
5805
|
+
this.value = value === null || value === undefined ? null : String(value);
|
|
5806
|
+
}
|
|
5807
|
+
registerOnChange(fn) {
|
|
5808
|
+
this.onChange = fn;
|
|
5809
|
+
}
|
|
5810
|
+
registerOnTouched(fn) {
|
|
5811
|
+
this.onTouched = fn;
|
|
5812
|
+
}
|
|
5813
|
+
setDisabledState(isDisabled) {
|
|
5814
|
+
this.disabled = isDisabled;
|
|
5815
|
+
}
|
|
5816
|
+
// Bloquea a nivel de tecleo cualquier carácter no numérico cuando el tipo
|
|
5817
|
+
// de documento exige solo dígitos (CC, TI, RC, NIT). El saneo real (por si
|
|
5818
|
+
// llega texto vía pegado) ocurre en onInput().
|
|
5819
|
+
onKeyDown(event) {
|
|
5820
|
+
if (!this.isDigitsOnly)
|
|
5821
|
+
return;
|
|
5822
|
+
if (event.ctrlKey || event.metaKey || event.altKey)
|
|
5823
|
+
return;
|
|
5824
|
+
if (event.key.length > 1)
|
|
5825
|
+
return; // Backspace, Delete, Tab, ArrowLeft, etc.
|
|
5826
|
+
if (!/^[0-9]$/.test(event.key)) {
|
|
5827
|
+
event.preventDefault();
|
|
5828
|
+
}
|
|
5829
|
+
}
|
|
5830
|
+
onInput(rawValue) {
|
|
5831
|
+
let next = rawValue ?? '';
|
|
5832
|
+
if (this.isDigitsOnly) {
|
|
5833
|
+
next = next.replace(/[^0-9]/g, '');
|
|
5834
|
+
}
|
|
5835
|
+
else {
|
|
5836
|
+
next = next.replace(/[^A-Za-z0-9]/g, '');
|
|
5837
|
+
}
|
|
5838
|
+
if (this.maxLength !== null) {
|
|
5839
|
+
next = next.slice(0, this.maxLength);
|
|
5840
|
+
}
|
|
5841
|
+
this.value = next;
|
|
5842
|
+
this.onChange(next);
|
|
5843
|
+
this.onTouched();
|
|
5844
|
+
}
|
|
5845
|
+
validate(control) {
|
|
5846
|
+
const rawValue = control.value;
|
|
5847
|
+
if (rawValue === null || rawValue === undefined || rawValue === '')
|
|
5848
|
+
return null;
|
|
5849
|
+
if (!this.documentType || !this.rule)
|
|
5850
|
+
return null;
|
|
5851
|
+
const value = String(rawValue);
|
|
5852
|
+
if (this.isDigitsOnly && !/^[0-9]+$/.test(value)) {
|
|
5853
|
+
return { pattern: true };
|
|
5854
|
+
}
|
|
5855
|
+
if (!this.isDigitsOnly && !/^[A-Za-z0-9]+$/.test(value)) {
|
|
5856
|
+
return { pattern: true };
|
|
5857
|
+
}
|
|
5858
|
+
if (this.documentType === 'NIT' && this.validateCheckDigit) {
|
|
5859
|
+
return this.validateNitWithCheckDigit(value);
|
|
5860
|
+
}
|
|
5861
|
+
return this.validateLength(value, this.rule.minLength, this.rule.maxLength);
|
|
5862
|
+
}
|
|
5863
|
+
validateLength(value, minLength, maxLength) {
|
|
5864
|
+
if (minLength !== null && value.length < minLength) {
|
|
5865
|
+
return { minlength: { requiredLength: minLength, actualLength: value.length } };
|
|
5866
|
+
}
|
|
5867
|
+
if (maxLength !== null && value.length > maxLength) {
|
|
5868
|
+
return { maxlength: { requiredLength: maxLength, actualLength: value.length } };
|
|
5869
|
+
}
|
|
5870
|
+
return null;
|
|
5871
|
+
}
|
|
5872
|
+
validateNitWithCheckDigit(value) {
|
|
5873
|
+
if (value.length < 2) {
|
|
5874
|
+
return { pattern: true };
|
|
5875
|
+
}
|
|
5876
|
+
const base = value.slice(0, -1);
|
|
5877
|
+
const dv = value.slice(-1);
|
|
5878
|
+
const lengthError = this.validateLength(base, this.rule?.minLength ?? null, this.rule?.maxLength ?? null);
|
|
5879
|
+
if (lengthError)
|
|
5880
|
+
return lengthError;
|
|
5881
|
+
const expectedDv = IdentityDocumentInputComponent.computeNitCheckDigit(base);
|
|
5882
|
+
if (String(expectedDv) !== dv) {
|
|
5883
|
+
return { invalidCheckDigit: { expected: expectedDv, actual: dv } };
|
|
5884
|
+
}
|
|
5885
|
+
return null;
|
|
5886
|
+
}
|
|
5887
|
+
// Algoritmo del dígito de verificación (DV) del NIT — DIAN, módulo 11.
|
|
5888
|
+
static computeNitCheckDigit(nit) {
|
|
5889
|
+
const digits = nit.split('').reverse();
|
|
5890
|
+
let sum = 0;
|
|
5891
|
+
for (let i = 0; i < digits.length; i++) {
|
|
5892
|
+
const weight = NIT_CHECK_DIGIT_WEIGHTS[i] ?? 0;
|
|
5893
|
+
sum += Number(digits[i]) * weight;
|
|
5894
|
+
}
|
|
5895
|
+
const remainder = sum % 11;
|
|
5896
|
+
return NIT_CHECK_DIGIT_TABLE[remainder];
|
|
5897
|
+
}
|
|
5898
|
+
get inputId() {
|
|
5899
|
+
return this.id || this.name;
|
|
5900
|
+
}
|
|
5901
|
+
get showError() {
|
|
5902
|
+
if (!this.ngControl || !this.ngControl.control)
|
|
5903
|
+
return false;
|
|
5904
|
+
const control = this.ngControl.control;
|
|
5905
|
+
const dirty = control.dirty;
|
|
5906
|
+
const touched = control.touched;
|
|
5907
|
+
return control.invalid ? dirty || touched : false;
|
|
5908
|
+
}
|
|
5909
|
+
get errorMessage() {
|
|
5910
|
+
if (!this.ngControl?.errors)
|
|
5911
|
+
return '';
|
|
5912
|
+
const errors = this.ngControl.errors;
|
|
5913
|
+
const errorKey = Object.keys(errors)[0];
|
|
5914
|
+
if (errorKey === 'minlength') {
|
|
5915
|
+
return this.transloco.translate('formErrors.minlength', {
|
|
5916
|
+
length: errors[errorKey].requiredLength,
|
|
5917
|
+
});
|
|
5918
|
+
}
|
|
5919
|
+
if (errorKey === 'maxlength') {
|
|
5920
|
+
return this.transloco.translate('formErrors.maxlength', {
|
|
5921
|
+
length: errors[errorKey].requiredLength,
|
|
5922
|
+
});
|
|
5923
|
+
}
|
|
5924
|
+
if (errorKey === 'invalidCheckDigit') {
|
|
5925
|
+
return this.transloco.translate('formErrors.invalidCheckDigit');
|
|
5926
|
+
}
|
|
5927
|
+
return this.transloco.translate(`formErrors.${errorKey}`);
|
|
5928
|
+
}
|
|
5929
|
+
get fieldGroupClasses() {
|
|
5930
|
+
let baseClasses = '';
|
|
5931
|
+
if (this.fieldGroupClass) {
|
|
5932
|
+
baseClasses += ` ${this.fieldGroupClass}`;
|
|
5933
|
+
}
|
|
5934
|
+
else {
|
|
5935
|
+
baseClasses += ' w-full';
|
|
5936
|
+
}
|
|
5937
|
+
return baseClasses;
|
|
5938
|
+
}
|
|
5939
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IdentityDocumentInputComponent, deps: [{ token: i1$3.TranslocoService }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5940
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: IdentityDocumentInputComponent, isStandalone: true, selector: "identity-document-input", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", fieldGroupClass: "fieldGroupClass", documentType: "documentType", validateCheckDigit: "validateCheckDigit" }, providers: [
|
|
5941
|
+
{
|
|
5942
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5943
|
+
useExisting: forwardRef(() => IdentityDocumentInputComponent),
|
|
5944
|
+
multi: true,
|
|
5945
|
+
},
|
|
5946
|
+
{
|
|
5947
|
+
provide: NG_VALIDATORS,
|
|
5948
|
+
useExisting: forwardRef(() => IdentityDocumentInputComponent),
|
|
5949
|
+
multi: true,
|
|
5950
|
+
},
|
|
5951
|
+
], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"identity-document-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"identity-document-input-required\">*</span>\n }\n </label>\n }\n\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [inputMode]=\"inputMode\"\n [attr.maxlength]=\"maxLength\"\n [value]=\"value ?? ''\"\n (input)=\"onInput($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"identity-document-input\"\n />\n\n @if (showError) {\n <div class=\"identity-document-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".identity-document-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.identity-document-input-label{color:#d1d5db}}.identity-document-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;outline:0;padding:.375rem .75rem;width:100%}.identity-document-input::placeholder{color:#9ca3af}.identity-document-input:focus{border-color:#1f2937}.identity-document-input.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.identity-document-input.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.identity-document-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.identity-document-input.disabled{background-color:#374151;color:#d1d5db}}@media(prefers-color-scheme:dark){.identity-document-input{background-color:#1f2937;border-color:#4b5563;color:#f3f4f6}.identity-document-input::placeholder{color:#6b7280}}@media(min-width:768px){.identity-document-input{font-size:.875rem}}.identity-document-input-required{color:#ef4444}.identity-document-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
5952
|
+
}
|
|
5953
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: IdentityDocumentInputComponent, decorators: [{
|
|
5954
|
+
type: Component,
|
|
5955
|
+
args: [{ selector: 'identity-document-input', standalone: true, imports: [CommonModule, ReactiveFormsModule], providers: [
|
|
5956
|
+
{
|
|
5957
|
+
provide: NG_VALUE_ACCESSOR,
|
|
5958
|
+
useExisting: forwardRef(() => IdentityDocumentInputComponent),
|
|
5959
|
+
multi: true,
|
|
5960
|
+
},
|
|
5961
|
+
{
|
|
5962
|
+
provide: NG_VALIDATORS,
|
|
5963
|
+
useExisting: forwardRef(() => IdentityDocumentInputComponent),
|
|
5964
|
+
multi: true,
|
|
5965
|
+
},
|
|
5966
|
+
], template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"identity-document-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"identity-document-input-required\">*</span>\n }\n </label>\n }\n\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [inputMode]=\"inputMode\"\n [attr.maxlength]=\"maxLength\"\n [value]=\"value ?? ''\"\n (input)=\"onInput($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"identity-document-input\"\n />\n\n @if (showError) {\n <div class=\"identity-document-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".identity-document-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.identity-document-input-label{color:#d1d5db}}.identity-document-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;outline:0;padding:.375rem .75rem;width:100%}.identity-document-input::placeholder{color:#9ca3af}.identity-document-input:focus{border-color:#1f2937}.identity-document-input.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.identity-document-input.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.identity-document-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.identity-document-input.disabled{background-color:#374151;color:#d1d5db}}@media(prefers-color-scheme:dark){.identity-document-input{background-color:#1f2937;border-color:#4b5563;color:#f3f4f6}.identity-document-input::placeholder{color:#6b7280}}@media(min-width:768px){.identity-document-input{font-size:.875rem}}.identity-document-input-required{color:#ef4444}.identity-document-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"] }]
|
|
5967
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }, { type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { label: [{
|
|
5968
|
+
type: Input
|
|
5969
|
+
}], name: [{
|
|
5970
|
+
type: Input
|
|
5971
|
+
}], id: [{
|
|
5972
|
+
type: Input
|
|
5973
|
+
}], placeholder: [{
|
|
5974
|
+
type: Input
|
|
5975
|
+
}], required: [{
|
|
5976
|
+
type: Input
|
|
5977
|
+
}], readonly: [{
|
|
5978
|
+
type: Input
|
|
5979
|
+
}], fieldGroupClass: [{
|
|
5980
|
+
type: Input
|
|
5981
|
+
}], documentType: [{
|
|
5982
|
+
type: Input
|
|
5983
|
+
}], validateCheckDigit: [{
|
|
5984
|
+
type: Input
|
|
5985
|
+
}] } });
|
|
5711
5986
|
|
|
5712
5987
|
class FormSelectComponent {
|
|
5713
5988
|
ngControl;
|
|
@@ -5778,8 +6053,8 @@ class FormSelectComponent {
|
|
|
5778
6053
|
}
|
|
5779
6054
|
return baseClasses;
|
|
5780
6055
|
}
|
|
5781
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormSelectComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
5782
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FormSelectComponent, isStandalone: true, selector: "form-select", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly", options: "options", fieldGroupClass: "fieldGroupClass", showDefaultOption: "showDefaultOption", defaultOptionLabel: "defaultOptionLabel" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption && this.defaultOptionLabel) {\n <option [value]=\"null\" disabled selected>{{ this.defaultOptionLabel }}</option>\n } @else if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ 'common.selectOption' | transloco }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".form-select-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-select-label{color:#d1d5db}}.form-select{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;padding:.375rem 2.5rem .375rem .75rem;outline:1px solid #d1d5db;outline-offset:1px;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right .75rem center;background-size:1em}.form-select::-ms-expand{display:none}@-moz-document url-prefix(){.form-select{text-indent:.01px;text-overflow:\"\";padding-right:.75rem}}.form-select:focus{outline:2px solid #4f46e5;outline-offset:2px}.form-select.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.form-select.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.form-select.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.form-select.disabled{background-color:#374151;color:#d1d5db}}@media(min-width:768px){.form-select{font-size:.875rem}}.form-select-required{color:#ef4444}.form-select-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type:
|
|
6056
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormSelectComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6057
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FormSelectComponent, isStandalone: true, selector: "form-select", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly", options: "options", fieldGroupClass: "fieldGroupClass", showDefaultOption: "showDefaultOption", defaultOptionLabel: "defaultOptionLabel" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption && this.defaultOptionLabel) {\n <option [value]=\"null\" disabled selected>{{ this.defaultOptionLabel }}</option>\n } @else if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ 'common.selectOption' | transloco }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".form-select-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-select-label{color:#d1d5db}}.form-select{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;padding:.375rem 2.5rem .375rem .75rem;outline:1px solid #d1d5db;outline-offset:1px;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right .75rem center;background-size:1em}.form-select::-ms-expand{display:none}@-moz-document url-prefix(){.form-select{text-indent:.01px;text-overflow:\"\";padding-right:.75rem}}.form-select:focus{outline:2px solid #4f46e5;outline-offset:2px}.form-select.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.form-select.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.form-select.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.form-select.disabled{background-color:#374151;color:#d1d5db}}@media(min-width:768px){.form-select{font-size:.875rem}}.form-select-required{color:#ef4444}.form-select-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
5783
6058
|
}
|
|
5784
6059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormSelectComponent, decorators: [{
|
|
5785
6060
|
type: Component,
|
|
@@ -5788,7 +6063,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
5788
6063
|
type: Self
|
|
5789
6064
|
}, {
|
|
5790
6065
|
type: Optional
|
|
5791
|
-
}] }, { type:
|
|
6066
|
+
}] }, { type: i1$3.TranslocoService }], propDecorators: { label: [{
|
|
5792
6067
|
type: Input
|
|
5793
6068
|
}], name: [{
|
|
5794
6069
|
type: Input
|
|
@@ -5892,7 +6167,7 @@ class FormTextareaComponent {
|
|
|
5892
6167
|
}
|
|
5893
6168
|
return baseClasses;
|
|
5894
6169
|
}
|
|
5895
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormTextareaComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
6170
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormTextareaComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
5896
6171
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FormTextareaComponent, isStandalone: true, selector: "form-textarea", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", minlength: "minlength", maxlength: "maxlength", rows: "rows", cols: "cols", fieldGroupClass: "fieldGroupClass" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-textarea-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-textarea-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <textarea\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"form-textarea\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n ></textarea>\n </div>\n\n @if (showError) {\n <div class=\"form-textarea-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".form-textarea-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-textarea-label{color:#d1d5db}}.form-textarea{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;padding:.375rem .75rem;outline:1px solid #d1d5db;outline-offset:1px;width:100%}.form-textarea::placeholder{color:#9ca3af}.form-textarea:focus{outline:2px solid #4f46e5;outline-offset:2px}.form-textarea.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.form-textarea.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.form-textarea.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.form-textarea.disabled{background-color:#374151;color:#d1d5db}}@media(min-width:768px){.form-textarea{font-size:.875rem}}.form-textarea-required{color:#ef4444}.form-textarea-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
5897
6172
|
}
|
|
5898
6173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormTextareaComponent, decorators: [{
|
|
@@ -5902,7 +6177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
5902
6177
|
type: Self
|
|
5903
6178
|
}, {
|
|
5904
6179
|
type: Optional
|
|
5905
|
-
}] }, { type:
|
|
6180
|
+
}] }, { type: i1$3.TranslocoService }], propDecorators: { label: [{
|
|
5906
6181
|
type: Input
|
|
5907
6182
|
}], name: [{
|
|
5908
6183
|
type: Input
|
|
@@ -6095,7 +6370,7 @@ class NumberInputComponent {
|
|
|
6095
6370
|
return null;
|
|
6096
6371
|
return num > this.max ? { max: { max: this.max, actual: num } } : null;
|
|
6097
6372
|
}
|
|
6098
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NumberInputComponent, deps: [{ token:
|
|
6373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NumberInputComponent, deps: [{ token: i1$3.TranslocoService }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
6099
6374
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: NumberInputComponent, isStandalone: true, selector: "number-input", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", min: "min", max: "max", step: "step", fieldGroupClass: "fieldGroupClass" }, providers: [
|
|
6100
6375
|
{
|
|
6101
6376
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -6115,7 +6390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
6115
6390
|
},
|
|
6116
6391
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => NumberInputComponent), multi: true },
|
|
6117
6392
|
], template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"number-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"number-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"number-input-group\" [class.error]=\"showError\">\n <button\n type=\"button\"\n class=\"number-input-button\"\n [attr.aria-label]=\"transloco.translate('numberInput.decrement')\"\n [disabled]=\"!canDecrement\"\n (click)=\"decrement()\"\n >\n <i class=\"ri-subtract-line\"></i>\n </button>\n\n <input\n type=\"number\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value ?? ''\"\n (input)=\"onInput($event.target.value)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n class=\"number-input\"\n />\n\n <button\n type=\"button\"\n class=\"number-input-button\"\n [attr.aria-label]=\"transloco.translate('numberInput.increment')\"\n [disabled]=\"!canIncrement\"\n (click)=\"increment()\"\n >\n <i class=\"ri-add-line\"></i>\n </button>\n </div>\n\n @if (showError) {\n <div class=\"number-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".number-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.number-input-label{color:#d1d5db}}.number-input-group{display:flex;align-items:stretch}.number-input-group.error .number-input{outline-color:#ef4444}@media(prefers-color-scheme:dark){.number-input-group.error .number-input{background-color:#374151;color:#fff;outline-color:#ef4444}}.number-input-group.error .number-input-button{border-color:#ef4444}@media(prefers-color-scheme:dark){.number-input-group.error .number-input-button{background-color:#374151;color:#fff}}.number-input-button{align-items:center;background-color:#fff;border:1px solid #d1d5db;color:#4b5563;cursor:pointer;display:flex;justify-content:center;padding:0;width:2.5rem;transition:background-color .15s ease}.number-input-button:first-child{border-radius:.375rem 0 0 .375rem;margin-right:-1px}.number-input-button:last-child{border-radius:0 .375rem .375rem 0;margin-left:-1px}.number-input-button i{font-size:1.125rem;line-height:1}.number-input-button:hover:not(:disabled){background-color:#f3f4f6;color:#111827}.number-input-button:disabled{background-color:#e5e7eb;color:#9ca3af;cursor:not-allowed}@media(prefers-color-scheme:dark){.number-input-button{background-color:#1f2937;border-color:#4b5563;color:#d1d5db}.number-input-button:hover:not(:disabled){background-color:#374151;color:#fff}.number-input-button:disabled{background-color:#374151;color:#6b7280}}.number-input{background-color:#fff;border:1px solid #d1d5db;color:#111827;display:block;font-weight:500;outline:1px solid #d1d5db;outline-offset:-1px;padding:.375rem .75rem;text-align:center;width:100%}.number-input::placeholder{color:#9ca3af}.number-input:focus{outline:2px solid #4f46e5;outline-offset:-2px}.number-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.number-input.disabled{background-color:#374151;color:#d1d5db}}.number-input::-webkit-inner-spin-button,.number-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-input[type=number]{-moz-appearance:textfield;appearance:textfield}@media(prefers-color-scheme:dark){.number-input{background-color:#1f2937;border-color:#4b5563;color:#f3f4f6}.number-input::placeholder{color:#6b7280}}@media(min-width:768px){.number-input{font-size:.875rem}}.number-input-required{color:#ef4444}.number-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"] }]
|
|
6118
|
-
}], ctorParameters: () => [{ type:
|
|
6393
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }, { type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { label: [{
|
|
6119
6394
|
type: Input
|
|
6120
6395
|
}], name: [{
|
|
6121
6396
|
type: Input
|
|
@@ -6299,7 +6574,7 @@ class PhoneInputComponent {
|
|
|
6299
6574
|
const dialDigits = this.dialCode.replace('+', '');
|
|
6300
6575
|
return digits.startsWith(dialDigits) ? digits.slice(dialDigits.length) : digits;
|
|
6301
6576
|
}
|
|
6302
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PhoneInputComponent, deps: [{ token:
|
|
6577
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i1$3.TranslocoService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
6303
6578
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: PhoneInputComponent, isStandalone: true, selector: "phone-input", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", maxNationalDigits: "maxNationalDigits", minNationalDigits: "minNationalDigits", defaultCountry: "defaultCountry", fieldGroupClass: "fieldGroupClass" }, providers: [
|
|
6304
6579
|
{
|
|
6305
6580
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -6319,7 +6594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
6319
6594
|
},
|
|
6320
6595
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => PhoneInputComponent), multi: true },
|
|
6321
6596
|
], template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"phone-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"phone-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"phone-input-field\">\n <div class=\"phone-prefix-wrapper\">\n <ng-select\n class=\"phone-prefix-select\"\n [items]=\"phoneOptions\"\n bindValue=\"isoCode\"\n bindLabel=\"search\"\n [searchable]=\"true\"\n [clearable]=\"false\"\n [virtualScroll]=\"true\"\n placeholder=\"\"\n [disabled]=\"disabled || readonly\"\n [ngModel]=\"selectedIso\"\n (ngModelChange)=\"onCountryChange($event)\"\n >\n <ng-template ng-label-tmp let-item=\"item\">\n {{ flag(item.isoCode) }} {{ item.dialCode }}\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n {{ flag(item.isoCode) }} {{ item.name }} ({{ item.dialCode }})\n </ng-template>\n </ng-select>\n </div>\n\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"effectivePlaceholder\"\n [required]=\"required\"\n [attr.minlength]=\"minNationalDigits\"\n [attr.maxlength]=\"maxNationalDigits\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [value]=\"nationalNumber\"\n [class.error]=\"showError\"\n [class.disabled]=\"disabled || readonly\"\n [attr.inputmode]=\"'numeric'\"\n [autocomplete]=\"'tel-national'\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n class=\"phone-input form-input\"\n />\n </div>\n\n @if (showError) {\n <div class=\"phone-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".phone-input-group{width:100%}.phone-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}.phone-input-field{position:relative}.phone-prefix-wrapper{align-items:stretch;bottom:0;display:flex;left:0;position:absolute;top:0;z-index:10}.phone-prefix-wrapper .ng-select.phone-prefix-select{width:6rem}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container{background-color:transparent;border:none;border-radius:0;border-right:1px solid #d1d5db;box-shadow:none;height:100%;min-height:0}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container .ng-value-container{align-items:center;padding:0 .25rem 0 .5rem;white-space:nowrap}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container .ng-value-container .ng-placeholder{color:#9ca3af}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container .ng-value-container .ng-value{color:#374151;display:inline-flex;font-size:.75rem;height:auto;line-height:normal}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container .ng-value-container .ng-value .ng-value-label{color:#374151;font-size:.75rem;white-space:nowrap}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-select-container .ng-value-container .ng-input>input{color:#111827;font-size:.75rem;padding-left:.5rem;height:100%}.phone-prefix-wrapper .ng-select.phone-prefix-select .ng-arrow-wrapper{padding-right:.25rem}.phone-prefix-wrapper .ng-select.phone-prefix-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{outline:none}.form-input.phone-input{padding-left:7rem}.phone-input-required{color:#ef4444}.phone-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}.ng-select.ng-select-opened>.ng-select-container{background-color:#fff;border-color:#d1d5db}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{border-top-color:#6b7280}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#d1d5db;outline:2px solid #4f46e5;outline-offset:2px}.ng-select.ng-select-disabled>.ng-select-container{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}.ng-select.error>.ng-select-container{outline:2px solid #ef4444;outline-offset:2px}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{color:#111827;background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;min-height:0}.ng-select .ng-select-container .ng-value-container{padding:.375rem 0 .375rem .75rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#9ca3af}.ng-select.ng-select-single .ng-select-container{display:flex;gap:.25rem;height:auto;height:33px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:50%;transform:translateY(-50%);left:.75rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input>input{font-size:.75rem;height:20px}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{height:auto;line-height:100%}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:.75rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{gap:.25rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{font-size:.75rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{align-items:center;background-color:#eef2ff;border-radius:.125rem;display:flex;color:#4338ca;flex-flow:row nowrap;font-size:.75rem;height:22px;line-height:100%;gap:.25rem;overflow:hidden;padding:.25rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{font-size:.75rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#e0e7ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{color:#6b7280;background-color:#f3f4f6}.ng-select .ng-clear-wrapper{align-items:center;color:#9ca3af;display:flex;flex-flow:column nowrap;justify-content:center}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#ef4444}.ng-select .ng-spinner-loader{border-top-color:#4f46e533;border-right-color:#4f46e533;border-bottom-color:#4f46e533;border-left-color:#4f46e5}.ng-select .ng-arrow-wrapper .ng-arrow{border-top-color:#9ca3af}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#4b5563}@media(prefers-color-scheme:dark){.ng-select.ng-select-opened>.ng-select-container{background-color:#1f2937;border-color:#4b5563}.ng-select.ng-select-disabled>.ng-select-container{background-color:#374151;color:#d1d5db}.ng-select .ng-select-container{color:#fff;background-color:#1f2937;border-color:#4b5563}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#6b7280}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{color:#a5b4fc;background-color:#4f46e533}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{color:#9ca3af;background-color:#374151}}.ng-dropdown-panel{background-color:#fff;border:1px solid #e5e7eb;border-radius:.375rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.ng-dropdown-panel.ng-select-bottom{margin-top:.25rem}.ng-dropdown-panel.ng-select-top{margin-bottom:.25rem}.ng-dropdown-panel .ng-dropdown-header,.ng-dropdown-panel .ng-dropdown-footer{border-color:#e5e7eb;padding:.5rem}.ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar{width:4px;height:4px}.ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-track{background:transparent}.ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:9999px}.ng-dropdown-panel .ng-dropdown-panel-items::-webkit-scrollbar-thumb:hover{background:#9ca3af}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{font-weight:500;color:#6b7280}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f9fafb;font-size:.75rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{color:#374151;background-color:#eef2ff;font-weight:600;font-size:.75rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff!important;color:#111827!important;font-size:.75rem!important;padding:.5rem .75rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{color:#4338ca!important;background-color:#eef2ff!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f9fafb!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#d1d5db!important}@media(prefers-color-scheme:dark){.ng-dropdown-panel{background-color:#1f2937;border-color:#374151}.ng-dropdown-panel .ng-dropdown-header,.ng-dropdown-panel .ng-dropdown-footer{border-color:#374151}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{color:#9ca3af}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#374151}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected{color:#fff;background-color:#4f46e533}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#1f2937!important;color:#f3f4f6!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{color:#a5b4fc;background-color:#4f46e533}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#374151!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#4b5563!important}}\n", ".form-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-input-label{color:#d1d5db}}.form-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;outline:0;padding:.375rem .75rem;width:100%}.form-input::placeholder{color:#9ca3af}.form-input:focus{border-color:#1f2937}.form-input.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.form-input.error{background-color:#374151;outline-color:#ef4444}}.form-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.form-input.disabled{background-color:#374151;color:#d1d5db}}@media screen and (min-width:768px){.form-input{font-size:.875rem}}.form-input-required{color:#ef4444}.form-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"] }]
|
|
6322
|
-
}], ctorParameters: () => [{ type:
|
|
6597
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }, { type: i0.Injector }], propDecorators: { label: [{
|
|
6323
6598
|
type: Input
|
|
6324
6599
|
}], name: [{
|
|
6325
6600
|
type: Input
|
|
@@ -6437,7 +6712,7 @@ class FormEditorComponent {
|
|
|
6437
6712
|
}
|
|
6438
6713
|
return baseClasses;
|
|
6439
6714
|
}
|
|
6440
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormEditorComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
6715
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormEditorComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
6441
6716
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FormEditorComponent, isStandalone: true, selector: "form-editor", inputs: { label: "label", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", toolbar: "toolbar", fieldGroupClass: "fieldGroupClass" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-editor-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-editor-required\">*</span>\n }\n </label>\n }\n\n @if (isBrowser) {\n <div class=\"form-editor-wrapper\" [class.disabled]=\"disabled\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholder\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n [disabled]=\"disabled\"\n ></ngx-editor-menu>\n </ngx-editor>\n </div>\n }\n\n @if (showError) {\n <div class=\"form-editor-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".form-editor-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.form-editor-label{color:#d1d5db}}.form-editor-wrapper{position:relative}.form-editor-wrapper.disabled{opacity:.5;pointer-events:none;cursor:not-allowed}.form-editor-required{color:#ef4444}.form-editor-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: NgxEditorMenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }] });
|
|
6442
6717
|
}
|
|
6443
6718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FormEditorComponent, decorators: [{
|
|
@@ -6453,7 +6728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
6453
6728
|
type: Self
|
|
6454
6729
|
}, {
|
|
6455
6730
|
type: Optional
|
|
6456
|
-
}] }, { type:
|
|
6731
|
+
}] }, { type: i1$3.TranslocoService }, { type: undefined, decorators: [{
|
|
6457
6732
|
type: Inject,
|
|
6458
6733
|
args: [PLATFORM_ID]
|
|
6459
6734
|
}] }], propDecorators: { label: [{
|
|
@@ -6729,7 +7004,7 @@ class DateInputComponent {
|
|
|
6729
7004
|
}
|
|
6730
7005
|
return baseClasses;
|
|
6731
7006
|
}
|
|
6732
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
7007
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
6733
7008
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DateInputComponent, isStandalone: true, selector: "date-input", inputs: { label: "label", type: "type", includeTime: "includeTime", name: "name", id: "id", placeholder: "placeholder", required: "required", readonly: "readonly", min: "min", max: "max", fieldGroupClass: "fieldGroupClass", dateFormat: "dateFormat" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"date-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"date-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"includeTime ? 'datetime-local' : type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled\"\n class=\"date-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n [readonly]=\"readonly\"\n />\n </div>\n\n @if (showError) {\n <div class=\"date-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n", styles: [".date-input-label{color:#374151;display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.date-input-label{color:#d1d5db}}.date-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;display:block;padding:.375rem .75rem;outline:1px solid #d1d5db;outline-offset:1px;width:100%}.date-input::placeholder{color:#9ca3af}.date-input:focus{outline:2px solid #4f46e5;outline-offset:2px}.date-input.error{outline-color:#ef4444}@media(prefers-color-scheme:dark){.date-input.error{background-color:#374151;color:#fff;outline-color:#ef4444}}.date-input.disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed}@media(prefers-color-scheme:dark){.date-input.disabled{background-color:#374151;color:#d1d5db}}@media(min-width:768px){.date-input{font-size:.875rem}}.date-input-required{color:#ef4444}.date-input-error-message{color:#ef4444;font-size:.75rem;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
|
|
6734
7009
|
}
|
|
6735
7010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
@@ -6739,7 +7014,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
6739
7014
|
type: Self
|
|
6740
7015
|
}, {
|
|
6741
7016
|
type: Optional
|
|
6742
|
-
}] }, { type:
|
|
7017
|
+
}] }, { type: i1$3.TranslocoService }], propDecorators: { label: [{
|
|
6743
7018
|
type: Input
|
|
6744
7019
|
}], type: [{
|
|
6745
7020
|
type: Input
|
|
@@ -7143,8 +7418,8 @@ class FileUploadComponent {
|
|
|
7143
7418
|
}
|
|
7144
7419
|
return baseClasses;
|
|
7145
7420
|
}
|
|
7146
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token:
|
|
7147
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FileUploadComponent, isStandalone: true, selector: "file-upload", inputs: { label: "label", name: "name", id: "id", required: "required", readonly: "readonly", fieldGroupClass: "fieldGroupClass", config: "config", accept: "accept" }, outputs: { fileSelected: "fileSelected", fileRemoved: "fileRemoved", validationError: "validationError" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n \u2022 {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n", styles: [".file-upload-label{display:block;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:500;color:#374151;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.file-upload-label{color:#d1d5db}}.file-upload-required{color:#ef4444}.file-upload-container{position:relative;width:100%}.file-upload-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.file-upload-content{display:flex;flex-direction:column;align-items:center;gap:.5rem}.file-upload-icon{font-size:1.875rem;color:#9ca3af}.file-upload-text{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem;color:#4b5563}.file-upload-primary-text{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500;margin:0}.file-upload-secondary-text{color:#6b7280;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;margin-top:.25rem;margin-bottom:0}.file-upload-area{border:2px dashed #d1d5db;border-radius:.5rem;padding:1.5rem;text-align:center;transition:all .2s ease-in-out;cursor:pointer}.file-upload-area:hover:not(.disabled):not(.drag-over){border-color:#9ca3af;background-color:#f9fafb}.file-upload-area.drag-over{border-color:#60a5fa;background-color:#eff6ff}.file-upload-area.disabled{border-color:#e5e7eb;background-color:#f9fafb;cursor:not-allowed}.file-upload-list{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.file-upload-error{color:#ef4444;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;margin-top:.25rem}.file-upload-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;color:#6b7280}@media(prefers-color-scheme:dark){.file-upload-legend{color:#9ca3af}}.file-upload-legend-item{display:flex;align-items:center;gap:.25rem}.file-upload-legend-icon-blue{color:#3b82f6}.file-upload-legend-icon-red{color:#ef4444}.file-upload-legend-icon-green{color:#10b981}.file-upload-legend-icon-word{color:#2563eb}.file-upload-legend-icon-gray{color:#6b7280}.file-upload-legend-icon-muted{color:#9ca3af}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.file-upload-drag-active{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.file-upload-file-list{max-height:15rem;overflow-y:auto}.file-upload-file-list::-webkit-scrollbar{width:.5rem}.file-upload-file-list::-webkit-scrollbar-track{background-color:#f3f4f6;border-radius:9999px}.file-upload-file-list::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:9999px}.file-upload-file-list::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.file-type-icon--image{color:#3b82f6}.file-type-icon--pdf{color:#ef4444}.file-type-icon--excel{color:#10b981}.file-type-icon--word{color:#2563eb}.file-type-icon--text{color:#6b7280}.file-type-icon--default{color:#9ca3af}@media(max-width:640px){.file-upload-area{padding:1rem}.file-upload-icon{font-size:1.25rem}.file-upload-text{font-size:.75rem}}@media(prefers-color-scheme:dark){.file-upload-area{border-color:#4b5563;background-color:#1f2937}.file-upload-area:hover:not(.disabled):not(.drag-over){border-color:#6b7280;background-color:#374151}.file-upload-area.drag-over{border-color:#60a5fa;background-color:#eff6ff}.file-upload-area.disabled{border-color:#374151;background-color:#111827}.file-upload-text{color:#d1d5db}.file-upload-primary-text{color:#f3f4f6}.file-upload-secondary-text{color:#9ca3af}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FileUploadPreviewComponent, selector: "file-upload-preview", inputs: ["file"], outputs: ["remove"] }, { kind: "pipe", type:
|
|
7421
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FileUploadComponent, isStandalone: true, selector: "file-upload", inputs: { label: "label", name: "name", id: "id", required: "required", readonly: "readonly", fieldGroupClass: "fieldGroupClass", config: "config", accept: "accept" }, outputs: { fileSelected: "fileSelected", fileRemoved: "fileRemoved", validationError: "validationError" }, ngImport: i0, template: "<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n \u2022 {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n", styles: [".file-upload-label{display:block;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:500;color:#374151;margin-bottom:.25rem}@media(prefers-color-scheme:dark){.file-upload-label{color:#d1d5db}}.file-upload-required{color:#ef4444}.file-upload-container{position:relative;width:100%}.file-upload-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.file-upload-content{display:flex;flex-direction:column;align-items:center;gap:.5rem}.file-upload-icon{font-size:1.875rem;color:#9ca3af}.file-upload-text{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem;color:#4b5563}.file-upload-primary-text{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500;margin:0}.file-upload-secondary-text{color:#6b7280;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;margin-top:.25rem;margin-bottom:0}.file-upload-area{border:2px dashed #d1d5db;border-radius:.5rem;padding:1.5rem;text-align:center;transition:all .2s ease-in-out;cursor:pointer}.file-upload-area:hover:not(.disabled):not(.drag-over){border-color:#9ca3af;background-color:#f9fafb}.file-upload-area.drag-over{border-color:#60a5fa;background-color:#eff6ff}.file-upload-area.disabled{border-color:#e5e7eb;background-color:#f9fafb;cursor:not-allowed}.file-upload-list{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.file-upload-error{color:#ef4444;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;margin-top:.25rem}.file-upload-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;color:#6b7280}@media(prefers-color-scheme:dark){.file-upload-legend{color:#9ca3af}}.file-upload-legend-item{display:flex;align-items:center;gap:.25rem}.file-upload-legend-icon-blue{color:#3b82f6}.file-upload-legend-icon-red{color:#ef4444}.file-upload-legend-icon-green{color:#10b981}.file-upload-legend-icon-word{color:#2563eb}.file-upload-legend-icon-gray{color:#6b7280}.file-upload-legend-icon-muted{color:#9ca3af}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.file-upload-drag-active{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.file-upload-file-list{max-height:15rem;overflow-y:auto}.file-upload-file-list::-webkit-scrollbar{width:.5rem}.file-upload-file-list::-webkit-scrollbar-track{background-color:#f3f4f6;border-radius:9999px}.file-upload-file-list::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:9999px}.file-upload-file-list::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.file-type-icon--image{color:#3b82f6}.file-type-icon--pdf{color:#ef4444}.file-type-icon--excel{color:#10b981}.file-type-icon--word{color:#2563eb}.file-type-icon--text{color:#6b7280}.file-type-icon--default{color:#9ca3af}@media(max-width:640px){.file-upload-area{padding:1rem}.file-upload-icon{font-size:1.25rem}.file-upload-text{font-size:.75rem}}@media(prefers-color-scheme:dark){.file-upload-area{border-color:#4b5563;background-color:#1f2937}.file-upload-area:hover:not(.disabled):not(.drag-over){border-color:#6b7280;background-color:#374151}.file-upload-area.drag-over{border-color:#60a5fa;background-color:#eff6ff}.file-upload-area.disabled{border-color:#374151;background-color:#111827}.file-upload-text{color:#d1d5db}.file-upload-primary-text{color:#f3f4f6}.file-upload-secondary-text{color:#9ca3af}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FileUploadPreviewComponent, selector: "file-upload-preview", inputs: ["file"], outputs: ["remove"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
7148
7423
|
}
|
|
7149
7424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
7150
7425
|
type: Component,
|
|
@@ -7159,7 +7434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
7159
7434
|
type: Self
|
|
7160
7435
|
}, {
|
|
7161
7436
|
type: Optional
|
|
7162
|
-
}] }, { type:
|
|
7437
|
+
}] }, { type: i1$3.TranslocoService }], propDecorators: { label: [{
|
|
7163
7438
|
type: Input
|
|
7164
7439
|
}], name: [{
|
|
7165
7440
|
type: Input
|
|
@@ -7437,8 +7712,8 @@ class ChangePasswordFormComponent {
|
|
|
7437
7712
|
},
|
|
7438
7713
|
});
|
|
7439
7714
|
}
|
|
7440
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChangePasswordFormComponent, deps: [{ token: i1$2.FormBuilder }, { token: ChangePasswordFormService }, { token: CustomerService }, { token: AdminService }, { token: ToastService }, { token:
|
|
7441
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ChangePasswordFormComponent, isStandalone: true, selector: "change-password-form", providers: [AdminService, CustomerService], ngImport: i0, template: "@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n", styles: [".change-password-form-body{display:flex;flex-direction:column;gap:1rem}.change-password-form-field{flex:1}.change-password-form-actions{display:flex;gap:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: FormInputComponent, selector: "form-input", inputs: ["label", "type", "name", "id", "placeholder", "required", "readonly", "maxlength", "minlength", "max", "min", "step", "pattern", "fieldGroupClass", "autocomplete"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "pipe", type:
|
|
7715
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChangePasswordFormComponent, deps: [{ token: i1$2.FormBuilder }, { token: ChangePasswordFormService }, { token: CustomerService }, { token: AdminService }, { token: ToastService }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7716
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ChangePasswordFormComponent, isStandalone: true, selector: "change-password-form", providers: [AdminService, CustomerService], ngImport: i0, template: "@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n", styles: [".change-password-form-body{display:flex;flex-direction:column;gap:1rem}.change-password-form-field{flex:1}.change-password-form-actions{display:flex;gap:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: FormInputComponent, selector: "form-input", inputs: ["label", "type", "name", "id", "placeholder", "required", "readonly", "maxlength", "minlength", "max", "min", "step", "pattern", "fieldGroupClass", "autocomplete"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
7442
7717
|
}
|
|
7443
7718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChangePasswordFormComponent, decorators: [{
|
|
7444
7719
|
type: Component,
|
|
@@ -7450,7 +7725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
7450
7725
|
FormInputComponent,
|
|
7451
7726
|
AppModalComponent,
|
|
7452
7727
|
], providers: [AdminService, CustomerService], encapsulation: ViewEncapsulation.None, template: "@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n", styles: [".change-password-form-body{display:flex;flex-direction:column;gap:1rem}.change-password-form-field{flex:1}.change-password-form-actions{display:flex;gap:.75rem}\n"] }]
|
|
7453
|
-
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: ChangePasswordFormService }, { type: CustomerService }, { type: AdminService }, { type: ToastService }, { type:
|
|
7728
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: ChangePasswordFormService }, { type: CustomerService }, { type: AdminService }, { type: ToastService }, { type: i1$3.TranslocoService }] });
|
|
7454
7729
|
|
|
7455
7730
|
class AdminSelectComponent {
|
|
7456
7731
|
platformId;
|
|
@@ -8946,7 +9221,7 @@ class PerformanceTicketStatusBadgeComponent {
|
|
|
8946
9221
|
return PERFORMANCE_TICKET_STATUS_COLORS[this.ticket.status];
|
|
8947
9222
|
}
|
|
8948
9223
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceTicketStatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8949
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PerformanceTicketStatusBadgeComponent, isStandalone: true, selector: "performance-ticket-status-badge", inputs: { ticket: "ticket", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`performance.ticketStatus.${ticket.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type:
|
|
9224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PerformanceTicketStatusBadgeComponent, isStandalone: true, selector: "performance-ticket-status-badge", inputs: { ticket: "ticket", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`performance.ticketStatus.${ticket.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
8950
9225
|
}
|
|
8951
9226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceTicketStatusBadgeComponent, decorators: [{
|
|
8952
9227
|
type: Component,
|
|
@@ -8965,7 +9240,7 @@ class PerformanceStatusBadgeComponent {
|
|
|
8965
9240
|
return PERFORMANCE_STATUS_COLORS[this.performance.status];
|
|
8966
9241
|
}
|
|
8967
9242
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceStatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8968
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PerformanceStatusBadgeComponent, isStandalone: true, selector: "performance-status-badge", inputs: { performance: "performance", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`performance.status.${performance.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type:
|
|
9243
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PerformanceStatusBadgeComponent, isStandalone: true, selector: "performance-status-badge", inputs: { performance: "performance", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`performance.status.${performance.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
8969
9244
|
}
|
|
8970
9245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceStatusBadgeComponent, decorators: [{
|
|
8971
9246
|
type: Component,
|
|
@@ -9962,13 +10237,13 @@ class OrderStatusBadgeComponent {
|
|
|
9962
10237
|
get statusColors() {
|
|
9963
10238
|
return ORDER_STATUS_COLORS[this.order.status] ?? null;
|
|
9964
10239
|
}
|
|
9965
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderStatusBadgeComponent, deps: [{ token:
|
|
9966
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: OrderStatusBadgeComponent, isStandalone: true, selector: "order-status-badge", inputs: { order: "order", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`order.status.${order.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type:
|
|
10240
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderStatusBadgeComponent, deps: [{ token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10241
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: OrderStatusBadgeComponent, isStandalone: true, selector: "order-status-badge", inputs: { order: "order", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`order.status.${order.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
9967
10242
|
}
|
|
9968
10243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderStatusBadgeComponent, decorators: [{
|
|
9969
10244
|
type: Component,
|
|
9970
10245
|
args: [{ selector: 'order-status-badge', standalone: true, imports: [CommonModule, TranslocoModule, AppBadgeComponent], template: "<app-badge\n [text]=\"`order.status.${order.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n" }]
|
|
9971
|
-
}], ctorParameters: () => [{ type:
|
|
10246
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }], propDecorators: { order: [{
|
|
9972
10247
|
type: Input,
|
|
9973
10248
|
args: [{ required: true }]
|
|
9974
10249
|
}], size: [{
|
|
@@ -10012,8 +10287,8 @@ class OrderInformationComponent {
|
|
|
10012
10287
|
},
|
|
10013
10288
|
});
|
|
10014
10289
|
}
|
|
10015
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderInformationComponent, deps: [{ token:
|
|
10016
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderInformationComponent, isStandalone: true, selector: "order-information", inputs: { order: "order", showPayButton: "showPayButton", createMpPreference: "createMpPreference" }, outputs: { paymentLinkCreated: "paymentLinkCreated" }, ngImport: i0, template: "@if (!!order) {\n <div class=\"order-information\">\n <div class=\"order-information__header\">\n <div>\n <p class=\"order-information__header-id\">Orden #{{ order.id }}</p>\n <p class=\"order-information__header-uuid\">{{ order.uuid }}</p>\n </div>\n\n <div class=\"order-information__header-actions\">\n <order-status-badge [order]=\"order\" size=\"xs\" />\n\n @if (showMpButton) {\n <app-button\n [text]=\"'order.mpPayButton' | transloco\"\n [loadingText]=\"'order.mpPayButtonLoading' | transloco\"\n [loading]=\"isLoading\"\n variant=\"secondary\"\n size=\"xs\"\n icon=\"ri-wallet-3-line\"\n (clicked)=\"payWithMercadoPago()\"\n />\n }\n </div>\n </div>\n\n <div class=\"order-information__content\">\n @if (order.show_snapshot && order.show_snapshot['title']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Evento</p>\n <p class=\"order-information__content-item-value\">\n {{ order.show_snapshot['title'] }}\n </p>\n </div>\n }\n\n @if (order.performance_snapshot && order.performance_snapshot['start_time']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la funci\u00F3n</p>\n <p class=\"order-information__content-item-value\">\n {{ order.performance_snapshot['start_time'] | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la compra</p>\n <p class=\"order-information__content-item-value\">\n {{ order.created_at | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n\n @if (order.payment_method) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">M\u00E9todo de pago</p>\n <p class=\"order-information__content-item-value\">\n {{ `order.paymentMethods.${order.payment_method}` | transloco }}\n </p>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Tarifa de servicio</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.service_fee | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n @if (!!order.discount_amount && order.discount_amount > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Descuento</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.discount_amount | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Total</p>\n @if (order.total_discounted && order.total_discounted >= 0) {\n <p class=\"order-information__content-item-total_discounted\">\n <span class=\"discounted\">\n ${{ order.total_discounted | currency: 'COP' : '' : '1.0-2' }}\n </span>\n <span class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </span>\n </p>\n } @else {\n <p class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </p>\n }\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">T\u00E9rminos aceptados</p>\n <app-badge\n [text]=\"order.terms_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.terms_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.terms_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Procesamiento de datos aceptado</p>\n <app-badge\n [text]=\"order.data_processing_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.data_processing_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.data_processing_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n @if (order.comments) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Comentarios</p>\n <p class=\"order-information__content-item-value\">{{ order.comments }}</p>\n </div>\n }\n\n @if (order.address_notes) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Notas de direcci\u00F3n</p>\n <p class=\"order-information__content-item-value\">{{ order.address_notes }}</p>\n </div>\n }\n </div>\n </div>\n}\n", styles: [".order-information{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-information__header{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;flex-flow:row wrap;gap:.75rem;justify-content:space-between;padding:1rem;width:100%}.order-information__header-id{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-information__header-uuid{color:#9ca3af;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;margin:0;word-break:break-all}.order-information__header-actions{display:inline-flex;flex-flow:row wrap;gap:1rem}.order-information__content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}@media(min-width:768px){.order-information__content{grid-template-columns:repeat(3,minmax(0,1fr))}}.order-information__content-item{align-items:flex-start;display:flex;flex-flow:column nowrap;position:relative;width:100%}.order-information__content-item-title{color:#9ca3af;font-size:.75rem;margin:0;text-transform:uppercase}.order-information__content-item-value{color:#111827;font-weight:500;font-size:.875rem;margin:0}.order-information__content-item-value.total{font-weight:700}.order-information__content-item-total_discounted{display:flex;flex-flow:row nowrap;gap:.25rem;margin:0;width:100%}.order-information__content-item-total_discounted .discounted{color:#111827;font-size:.875rem;font-weight:700}.order-information__content-item-total_discounted .total{color:#9ca3af;margin:0;text-decoration:line-through}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: OrderStatusBadgeComponent, selector: "order-status-badge", inputs: ["order", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type:
|
|
10290
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderInformationComponent, deps: [{ token: i1$3.TranslocoService }, { token: ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10291
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderInformationComponent, isStandalone: true, selector: "order-information", inputs: { order: "order", showPayButton: "showPayButton", createMpPreference: "createMpPreference" }, outputs: { paymentLinkCreated: "paymentLinkCreated" }, ngImport: i0, template: "@if (!!order) {\n <div class=\"order-information\">\n <div class=\"order-information__header\">\n <div>\n <p class=\"order-information__header-id\">Orden #{{ order.id }}</p>\n <p class=\"order-information__header-uuid\">{{ order.uuid }}</p>\n </div>\n\n <div class=\"order-information__header-actions\">\n <order-status-badge [order]=\"order\" size=\"xs\" />\n\n @if (showMpButton) {\n <app-button\n [text]=\"'order.mpPayButton' | transloco\"\n [loadingText]=\"'order.mpPayButtonLoading' | transloco\"\n [loading]=\"isLoading\"\n variant=\"secondary\"\n size=\"xs\"\n icon=\"ri-wallet-3-line\"\n (clicked)=\"payWithMercadoPago()\"\n />\n }\n </div>\n </div>\n\n <div class=\"order-information__content\">\n @if (order.show_snapshot && order.show_snapshot['title']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Evento</p>\n <p class=\"order-information__content-item-value\">\n {{ order.show_snapshot['title'] }}\n </p>\n </div>\n }\n\n @if (order.performance_snapshot && order.performance_snapshot['start_time']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la funci\u00F3n</p>\n <p class=\"order-information__content-item-value\">\n {{ order.performance_snapshot['start_time'] | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la compra</p>\n <p class=\"order-information__content-item-value\">\n {{ order.created_at | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n\n @if (order.payment_method) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">M\u00E9todo de pago</p>\n <p class=\"order-information__content-item-value\">\n {{ `order.paymentMethods.${order.payment_method}` | transloco }}\n </p>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Tarifa de servicio</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.service_fee | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n @if (!!order.discount_amount && order.discount_amount > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Descuento</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.discount_amount | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Total</p>\n @if (order.total_discounted && order.total_discounted >= 0) {\n <p class=\"order-information__content-item-total_discounted\">\n <span class=\"discounted\">\n ${{ order.total_discounted | currency: 'COP' : '' : '1.0-2' }}\n </span>\n <span class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </span>\n </p>\n } @else {\n <p class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </p>\n }\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">T\u00E9rminos aceptados</p>\n <app-badge\n [text]=\"order.terms_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.terms_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.terms_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Procesamiento de datos aceptado</p>\n <app-badge\n [text]=\"order.data_processing_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.data_processing_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.data_processing_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n @if (order.comments) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Comentarios</p>\n <p class=\"order-information__content-item-value\">{{ order.comments }}</p>\n </div>\n }\n\n @if (order.address_notes) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Notas de direcci\u00F3n</p>\n <p class=\"order-information__content-item-value\">{{ order.address_notes }}</p>\n </div>\n }\n </div>\n </div>\n}\n", styles: [".order-information{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-information__header{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;flex-flow:row wrap;gap:.75rem;justify-content:space-between;padding:1rem;width:100%}.order-information__header-id{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-information__header-uuid{color:#9ca3af;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;margin:0;word-break:break-all}.order-information__header-actions{display:inline-flex;flex-flow:row wrap;gap:1rem}.order-information__content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}@media(min-width:768px){.order-information__content{grid-template-columns:repeat(3,minmax(0,1fr))}}.order-information__content-item{align-items:flex-start;display:flex;flex-flow:column nowrap;position:relative;width:100%}.order-information__content-item-title{color:#9ca3af;font-size:.75rem;margin:0;text-transform:uppercase}.order-information__content-item-value{color:#111827;font-weight:500;font-size:.875rem;margin:0}.order-information__content-item-value.total{font-weight:700}.order-information__content-item-total_discounted{display:flex;flex-flow:row nowrap;gap:.25rem;margin:0;width:100%}.order-information__content-item-total_discounted .discounted{color:#111827;font-size:.875rem;font-weight:700}.order-information__content-item-total_discounted .total{color:#9ca3af;margin:0;text-decoration:line-through}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: OrderStatusBadgeComponent, selector: "order-status-badge", inputs: ["order", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
10017
10292
|
}
|
|
10018
10293
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderInformationComponent, decorators: [{
|
|
10019
10294
|
type: Component,
|
|
@@ -10024,7 +10299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10024
10299
|
AppBadgeComponent,
|
|
10025
10300
|
AppButtonComponent,
|
|
10026
10301
|
], encapsulation: ViewEncapsulation.None, template: "@if (!!order) {\n <div class=\"order-information\">\n <div class=\"order-information__header\">\n <div>\n <p class=\"order-information__header-id\">Orden #{{ order.id }}</p>\n <p class=\"order-information__header-uuid\">{{ order.uuid }}</p>\n </div>\n\n <div class=\"order-information__header-actions\">\n <order-status-badge [order]=\"order\" size=\"xs\" />\n\n @if (showMpButton) {\n <app-button\n [text]=\"'order.mpPayButton' | transloco\"\n [loadingText]=\"'order.mpPayButtonLoading' | transloco\"\n [loading]=\"isLoading\"\n variant=\"secondary\"\n size=\"xs\"\n icon=\"ri-wallet-3-line\"\n (clicked)=\"payWithMercadoPago()\"\n />\n }\n </div>\n </div>\n\n <div class=\"order-information__content\">\n @if (order.show_snapshot && order.show_snapshot['title']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Evento</p>\n <p class=\"order-information__content-item-value\">\n {{ order.show_snapshot['title'] }}\n </p>\n </div>\n }\n\n @if (order.performance_snapshot && order.performance_snapshot['start_time']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la funci\u00F3n</p>\n <p class=\"order-information__content-item-value\">\n {{ order.performance_snapshot['start_time'] | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la compra</p>\n <p class=\"order-information__content-item-value\">\n {{ order.created_at | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n\n @if (order.payment_method) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">M\u00E9todo de pago</p>\n <p class=\"order-information__content-item-value\">\n {{ `order.paymentMethods.${order.payment_method}` | transloco }}\n </p>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Tarifa de servicio</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.service_fee | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n @if (!!order.discount_amount && order.discount_amount > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Descuento</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.discount_amount | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Total</p>\n @if (order.total_discounted && order.total_discounted >= 0) {\n <p class=\"order-information__content-item-total_discounted\">\n <span class=\"discounted\">\n ${{ order.total_discounted | currency: 'COP' : '' : '1.0-2' }}\n </span>\n <span class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </span>\n </p>\n } @else {\n <p class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </p>\n }\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">T\u00E9rminos aceptados</p>\n <app-badge\n [text]=\"order.terms_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.terms_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.terms_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Procesamiento de datos aceptado</p>\n <app-badge\n [text]=\"order.data_processing_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.data_processing_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.data_processing_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n @if (order.comments) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Comentarios</p>\n <p class=\"order-information__content-item-value\">{{ order.comments }}</p>\n </div>\n }\n\n @if (order.address_notes) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Notas de direcci\u00F3n</p>\n <p class=\"order-information__content-item-value\">{{ order.address_notes }}</p>\n </div>\n }\n </div>\n </div>\n}\n", styles: [".order-information{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-information__header{align-items:center;border-bottom:1px solid #f3f4f6;display:flex;flex-flow:row wrap;gap:.75rem;justify-content:space-between;padding:1rem;width:100%}.order-information__header-id{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-information__header-uuid{color:#9ca3af;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;margin:0;word-break:break-all}.order-information__header-actions{display:inline-flex;flex-flow:row wrap;gap:1rem}.order-information__content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding:1rem}@media(min-width:768px){.order-information__content{grid-template-columns:repeat(3,minmax(0,1fr))}}.order-information__content-item{align-items:flex-start;display:flex;flex-flow:column nowrap;position:relative;width:100%}.order-information__content-item-title{color:#9ca3af;font-size:.75rem;margin:0;text-transform:uppercase}.order-information__content-item-value{color:#111827;font-weight:500;font-size:.875rem;margin:0}.order-information__content-item-value.total{font-weight:700}.order-information__content-item-total_discounted{display:flex;flex-flow:row nowrap;gap:.25rem;margin:0;width:100%}.order-information__content-item-total_discounted .discounted{color:#111827;font-size:.875rem;font-weight:700}.order-information__content-item-total_discounted .total{color:#9ca3af;margin:0;text-decoration:line-through}\n"] }]
|
|
10027
|
-
}], ctorParameters: () => [{ type:
|
|
10302
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }, { type: ToastService }], propDecorators: { order: [{
|
|
10028
10303
|
type: Input,
|
|
10029
10304
|
args: [{ required: true }]
|
|
10030
10305
|
}], showPayButton: [{
|
|
@@ -10045,13 +10320,13 @@ class OrderItemTypeBadgeComponent {
|
|
|
10045
10320
|
get statusColors() {
|
|
10046
10321
|
return ORDER_ITEM_TYPES_COLORS[this.item.item_type] ?? null;
|
|
10047
10322
|
}
|
|
10048
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemTypeBadgeComponent, deps: [{ token:
|
|
10049
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: OrderItemTypeBadgeComponent, isStandalone: true, selector: "order-item-type-badge", inputs: { item: "item", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`order.itemType.${item.item_type}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type:
|
|
10323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemTypeBadgeComponent, deps: [{ token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10324
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: OrderItemTypeBadgeComponent, isStandalone: true, selector: "order-item-type-badge", inputs: { item: "item", size: "size" }, ngImport: i0, template: "<app-badge\n [text]=\"`order.itemType.${item.item_type}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
10050
10325
|
}
|
|
10051
10326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemTypeBadgeComponent, decorators: [{
|
|
10052
10327
|
type: Component,
|
|
10053
10328
|
args: [{ selector: 'order-item-type-badge', standalone: true, imports: [CommonModule, TranslocoModule, AppBadgeComponent], template: "<app-badge\n [text]=\"`order.itemType.${item.item_type}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n" }]
|
|
10054
|
-
}], ctorParameters: () => [{ type:
|
|
10329
|
+
}], ctorParameters: () => [{ type: i1$3.TranslocoService }], propDecorators: { item: [{
|
|
10055
10330
|
type: Input,
|
|
10056
10331
|
args: [{ required: true }]
|
|
10057
10332
|
}], size: [{
|
|
@@ -10330,7 +10605,7 @@ class OrderDiscountAppliedComponent {
|
|
|
10330
10605
|
return ORDER_DISCOUNT_COLORS[this.discountInfo.type] ?? { text: '', bg: '' };
|
|
10331
10606
|
}
|
|
10332
10607
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderDiscountAppliedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10333
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderDiscountAppliedComponent, isStandalone: true, selector: "order-discount-applied", inputs: { order: "order" }, ngImport: i0, template: "@if (hasDiscount) {\n <div class=\"order-discount-applied\">\n <div class=\"order-discount-applied__content\">\n <div class=\"order-discount-applied__content-item discount-icon\">\n <div class=\"order-discount-applied__content-item-icon-wrapper\">\n <i class=\"order-discount-applied__content-item-icon\" [class]=\"discountInfo.icon\"></i>\n </div>\n </div>\n\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Tipo de descuento</p>\n <app-badge\n [text]=\"'order.discountTypes.' + discountInfo.type | transloco\"\n [backgroundColor]=\"badgeColors.bg\"\n [textColor]=\"badgeColors.text\"\n size=\"xs\"\n />\n </div>\n\n @if (discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">C\u00F3digo</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.code }}</p>\n </div>\n }\n\n @if (discountInfo.name && discountInfo.name !== discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Nombre</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.name }}</p>\n </div>\n }\n\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Valor del descuento</p>\n <p class=\"order-discount-applied__content-item-value\">\n ${{ discountInfo.value | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n </div>\n </div>\n}\n", styles: [".order-discount-applied{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-discount-applied__content{display:flex;flex-flow:row wrap;gap:1rem;padding:1rem}.order-discount-applied__content-item{align-items:flex-start;display:flex;flex-flow:column nowrap;flex:1 1 calc(50% - 1rem);position:relative}@media(min-width:768px){.order-discount-applied__content-item{flex:1 1 0}}.order-discount-applied__content-item.discount-icon{flex:0 0 auto;justify-content:center;width:auto}@media(min-width:768px){.order-discount-applied__content-item.discount-icon{flex:0 0 auto}}.order-discount-applied__content-item-title{color:#9ca3af;font-size:.75rem;margin:0;text-transform:uppercase}.order-discount-applied__content-item-value{color:#111827;font-weight:500;font-size:.875rem;margin:0}.order-discount-applied__content-item-icon-wrapper{align-items:center;border-radius:.375rem;border:1px solid #e5e7eb;display:flex;height:2.5rem;justify-content:center;width:2.5rem}.order-discount-applied__content-item-icon-wrapper i{font-size:1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type:
|
|
10608
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderDiscountAppliedComponent, isStandalone: true, selector: "order-discount-applied", inputs: { order: "order" }, ngImport: i0, template: "@if (hasDiscount) {\n <div class=\"order-discount-applied\">\n <div class=\"order-discount-applied__content\">\n <div class=\"order-discount-applied__content-item discount-icon\">\n <div class=\"order-discount-applied__content-item-icon-wrapper\">\n <i class=\"order-discount-applied__content-item-icon\" [class]=\"discountInfo.icon\"></i>\n </div>\n </div>\n\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Tipo de descuento</p>\n <app-badge\n [text]=\"'order.discountTypes.' + discountInfo.type | transloco\"\n [backgroundColor]=\"badgeColors.bg\"\n [textColor]=\"badgeColors.text\"\n size=\"xs\"\n />\n </div>\n\n @if (discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">C\u00F3digo</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.code }}</p>\n </div>\n }\n\n @if (discountInfo.name && discountInfo.name !== discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Nombre</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.name }}</p>\n </div>\n }\n\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Valor del descuento</p>\n <p class=\"order-discount-applied__content-item-value\">\n ${{ discountInfo.value | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n </div>\n </div>\n}\n", styles: [".order-discount-applied{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-discount-applied__content{display:flex;flex-flow:row wrap;gap:1rem;padding:1rem}.order-discount-applied__content-item{align-items:flex-start;display:flex;flex-flow:column nowrap;flex:1 1 calc(50% - 1rem);position:relative}@media(min-width:768px){.order-discount-applied__content-item{flex:1 1 0}}.order-discount-applied__content-item.discount-icon{flex:0 0 auto;justify-content:center;width:auto}@media(min-width:768px){.order-discount-applied__content-item.discount-icon{flex:0 0 auto}}.order-discount-applied__content-item-title{color:#9ca3af;font-size:.75rem;margin:0;text-transform:uppercase}.order-discount-applied__content-item-value{color:#111827;font-weight:500;font-size:.875rem;margin:0}.order-discount-applied__content-item-icon-wrapper{align-items:center;border-radius:.375rem;border:1px solid #e5e7eb;display:flex;height:2.5rem;justify-content:center;width:2.5rem}.order-discount-applied__content-item-icon-wrapper i{font-size:1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
10334
10609
|
}
|
|
10335
10610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderDiscountAppliedComponent, decorators: [{
|
|
10336
10611
|
type: Component,
|
|
@@ -10430,7 +10705,7 @@ class OrderTransactionDetailsModalComponent {
|
|
|
10430
10705
|
this.modalService.close();
|
|
10431
10706
|
}
|
|
10432
10707
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderTransactionDetailsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10433
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderTransactionDetailsModalComponent, isStandalone: true, selector: "order-transaction-details-modal", inputs: { isOpen: "isOpen", transaction: "transaction" }, ngImport: i0, template: "<app-modal\n [isOpen]=\"modalIsOpen\"\n (closeModal)=\"onClose()\"\n [title]=\"'order.transactionDetails.title' | transloco\"\n size=\"lg\"\n>\n @if (selectedTransaction(); as tx) {\n <div class=\"order-transaction-details\">\n <div class=\"order-transaction-details__grid\">\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.id' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.id }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.paymentMethod' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.status' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.amount' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n ${{ tx.amount | number: '1.0-2' }} {{ tx.currency }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.currency' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.currency }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayId' | transloco }}\n </span>\n <span class=\"order-transaction-details__value gateway-id\">\n {{ tx.gateway_transaction_id }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.createdAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.created_at | date: 'medium' }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.updatedAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.updated_at | date: 'medium' }}</span>\n </div>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayResponse' | transloco }}\n </span>\n @if (gatewayResponse) {\n <pre class=\"order-transaction-details__json\">{{ gatewayResponse }}</pre>\n } @else {\n <span class=\"order-transaction-details__value\">\u2014</span>\n }\n </div>\n </div>\n }\n</app-modal>\n", styles: [".order-transaction-details{display:flex;flex-direction:column;gap:1.5rem}.order-transaction-details__grid{display:grid;gap:1rem 1.5rem;grid-template-columns:repeat(2,minmax(0,1fr))}.order-transaction-details__item{display:flex;flex-direction:column;gap:.25rem}.order-transaction-details__label{color:#6b7280;font-size:.75rem;font-weight:700;text-transform:uppercase}.order-transaction-details__value{color:#374151;font-size:.875rem}@media(prefers-color-scheme:dark){.order-transaction-details__value{color:#d1d5db}}.order-transaction-details__json{background-color:#f9fafb;border:1px solid #f3f4f6;border-radius:.375rem;color:#374151;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;line-height:1.625;margin:0;max-height:20rem;overflow:auto;padding:.75rem 1rem;white-space:pre-wrap;word-break:break-word}@media(prefers-color-scheme:dark){.order-transaction-details__json{background-color:#111827}}@media(prefers-color-scheme:dark){.order-transaction-details__json{border-color:#374151}}@media(prefers-color-scheme:dark){.order-transaction-details__json{color:#d1d5db}}.order-transaction-details .gateway-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type:
|
|
10708
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderTransactionDetailsModalComponent, isStandalone: true, selector: "order-transaction-details-modal", inputs: { isOpen: "isOpen", transaction: "transaction" }, ngImport: i0, template: "<app-modal\n [isOpen]=\"modalIsOpen\"\n (closeModal)=\"onClose()\"\n [title]=\"'order.transactionDetails.title' | transloco\"\n size=\"lg\"\n>\n @if (selectedTransaction(); as tx) {\n <div class=\"order-transaction-details\">\n <div class=\"order-transaction-details__grid\">\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.id' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.id }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.paymentMethod' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.status' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.amount' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n ${{ tx.amount | number: '1.0-2' }} {{ tx.currency }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.currency' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.currency }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayId' | transloco }}\n </span>\n <span class=\"order-transaction-details__value gateway-id\">\n {{ tx.gateway_transaction_id }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.createdAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.created_at | date: 'medium' }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.updatedAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.updated_at | date: 'medium' }}</span>\n </div>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayResponse' | transloco }}\n </span>\n @if (gatewayResponse) {\n <pre class=\"order-transaction-details__json\">{{ gatewayResponse }}</pre>\n } @else {\n <span class=\"order-transaction-details__value\">\u2014</span>\n }\n </div>\n </div>\n }\n</app-modal>\n", styles: [".order-transaction-details{display:flex;flex-direction:column;gap:1.5rem}.order-transaction-details__grid{display:grid;gap:1rem 1.5rem;grid-template-columns:repeat(2,minmax(0,1fr))}.order-transaction-details__item{display:flex;flex-direction:column;gap:.25rem}.order-transaction-details__label{color:#6b7280;font-size:.75rem;font-weight:700;text-transform:uppercase}.order-transaction-details__value{color:#374151;font-size:.875rem}@media(prefers-color-scheme:dark){.order-transaction-details__value{color:#d1d5db}}.order-transaction-details__json{background-color:#f9fafb;border:1px solid #f3f4f6;border-radius:.375rem;color:#374151;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;line-height:1.625;margin:0;max-height:20rem;overflow:auto;padding:.75rem 1rem;white-space:pre-wrap;word-break:break-word}@media(prefers-color-scheme:dark){.order-transaction-details__json{background-color:#111827}}@media(prefers-color-scheme:dark){.order-transaction-details__json{border-color:#374151}}@media(prefers-color-scheme:dark){.order-transaction-details__json{color:#d1d5db}}.order-transaction-details .gateway-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }] });
|
|
10434
10709
|
}
|
|
10435
10710
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderTransactionDetailsModalComponent, decorators: [{
|
|
10436
10711
|
type: Component,
|
|
@@ -10460,7 +10735,7 @@ class OrderTransactionsComponent {
|
|
|
10460
10735
|
this.transactionDetailsModalService.open(transaction);
|
|
10461
10736
|
}
|
|
10462
10737
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderTransactionsComponent, deps: [{ token: OrderTransactionDetailsModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10463
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderTransactionsComponent, isStandalone: true, selector: "order-transactions", inputs: { order: "order" }, ngImport: i0, template: "@if (hasTransactions) {\n <div class=\"order-transactions\">\n <div class=\"order-transactions__header\">\n <p class=\"order-transactions__header-title\">\n Transacciones ({{ transactions.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-transactions__table-container\">\n <table class=\"order-transactions__table\">\n <thead class=\"order-transactions__table-head\">\n <tr class=\"order-transactions__table-head-row\">\n <th class=\"order-transactions__table-head-cell\">Medio de pago</th>\n <th class=\"order-transactions__table-head-cell\">Estado</th>\n <th class=\"order-transactions__table-head-cell text-right\">Valor</th>\n <th class=\"order-transactions__table-head-cell\">ID transacci\u00F3n</th>\n <th class=\"order-transactions__table-head-cell text-right\">Acciones</th>\n </tr>\n </thead>\n <tbody class=\"order-transactions__table-body\">\n @for (tx of transactions; track tx.id) {\n <tr class=\"order-transactions__table-body-row\">\n <td class=\"order-transactions__table-body-cell\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n ${{ tx.amount | number: '1.0-2' }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n {{ tx.gateway_transaction_id }}\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n <app-button\n icon=\"ri-eye-line\"\n variant=\"tertiary\"\n size=\"xs\"\n (clicked)=\"openTransaction(tx)\"\n [title]=\"'order.transactionDetails.actions.view' | transloco\"\n />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <order-transaction-details-modal />\n}\n", styles: [".order-transactions{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-transactions__header{align-items:center;display:flex;padding:1rem;width:100%}.order-transactions__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-transactions__table-container{overflow-x:auto}.order-transactions__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-transactions__table-head-row{background-color:#f9fafb;text-align:left}.order-transactions__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-transactions__table-head-cell.text-right{text-align:right}.order-transactions__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-transactions__table-body-row{transition:all .4s ease}.order-transactions__table-body-row:hover{background-color:#f9fafb}.order-transactions__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-transactions__table-body-cell.text-right{text-align:right}.order-transactions__table-body-cell .gateway-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: OrderTransactionDetailsModalComponent, selector: "order-transaction-details-modal", inputs: ["isOpen", "transaction"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type:
|
|
10738
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderTransactionsComponent, isStandalone: true, selector: "order-transactions", inputs: { order: "order" }, ngImport: i0, template: "@if (hasTransactions) {\n <div class=\"order-transactions\">\n <div class=\"order-transactions__header\">\n <p class=\"order-transactions__header-title\">\n Transacciones ({{ transactions.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-transactions__table-container\">\n <table class=\"order-transactions__table\">\n <thead class=\"order-transactions__table-head\">\n <tr class=\"order-transactions__table-head-row\">\n <th class=\"order-transactions__table-head-cell\">Medio de pago</th>\n <th class=\"order-transactions__table-head-cell\">Estado</th>\n <th class=\"order-transactions__table-head-cell text-right\">Valor</th>\n <th class=\"order-transactions__table-head-cell\">ID transacci\u00F3n</th>\n <th class=\"order-transactions__table-head-cell text-right\">Acciones</th>\n </tr>\n </thead>\n <tbody class=\"order-transactions__table-body\">\n @for (tx of transactions; track tx.id) {\n <tr class=\"order-transactions__table-body-row\">\n <td class=\"order-transactions__table-body-cell\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n ${{ tx.amount | number: '1.0-2' }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n {{ tx.gateway_transaction_id }}\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n <app-button\n icon=\"ri-eye-line\"\n variant=\"tertiary\"\n size=\"xs\"\n (clicked)=\"openTransaction(tx)\"\n [title]=\"'order.transactionDetails.actions.view' | transloco\"\n />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <order-transaction-details-modal />\n}\n", styles: [".order-transactions{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-transactions__header{align-items:center;display:flex;padding:1rem;width:100%}.order-transactions__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-transactions__table-container{overflow-x:auto}.order-transactions__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-transactions__table-head-row{background-color:#f9fafb;text-align:left}.order-transactions__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-transactions__table-head-cell.text-right{text-align:right}.order-transactions__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-transactions__table-body-row{transition:all .4s ease}.order-transactions__table-body-row:hover{background-color:#f9fafb}.order-transactions__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-transactions__table-body-cell.text-right{text-align:right}.order-transactions__table-body-cell .gateway-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: OrderTransactionDetailsModalComponent, selector: "order-transaction-details-modal", inputs: ["isOpen", "transaction"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
10464
10739
|
}
|
|
10465
10740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderTransactionsComponent, decorators: [{
|
|
10466
10741
|
type: Component,
|
|
@@ -10497,7 +10772,7 @@ class VipCardStatusBadgeComponent {
|
|
|
10497
10772
|
return `vipCard.status.${this.card.status}`;
|
|
10498
10773
|
}
|
|
10499
10774
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipCardStatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10500
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VipCardStatusBadgeComponent, isStandalone: true, selector: "vip-card-status-badge", inputs: { card: "card" }, ngImport: i0, template: "<app-badge [text]=\"statusTranslationKey | transloco\" [color]=\"statusColor\" size=\"xs\" />\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type:
|
|
10775
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VipCardStatusBadgeComponent, isStandalone: true, selector: "vip-card-status-badge", inputs: { card: "card" }, ngImport: i0, template: "<app-badge [text]=\"statusTranslationKey | transloco\" [color]=\"statusColor\" size=\"xs\" />\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1$3.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None });
|
|
10501
10776
|
}
|
|
10502
10777
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipCardStatusBadgeComponent, decorators: [{
|
|
10503
10778
|
type: Component,
|
|
@@ -10611,7 +10886,7 @@ class VipRechargeModalComponent {
|
|
|
10611
10886
|
data_processing_accepted: !!value.data_processing_accepted,
|
|
10612
10887
|
});
|
|
10613
10888
|
}
|
|
10614
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipRechargeModalComponent, deps: [{ token: i1$2.FormBuilder }, { token:
|
|
10889
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipRechargeModalComponent, deps: [{ token: i1$2.FormBuilder }, { token: i1$3.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10615
10890
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: VipRechargeModalComponent, isStandalone: true, selector: "vip-recharge-modal", inputs: { title: "title", submitLabel: "submitLabel", loading: "loading", amountStep: "amountStep", minAmount: "minAmount", maxAmount: "maxAmount", isOpen: "isOpen", restrictToMercadoPago: "restrictToMercadoPago" }, outputs: { closeModal: "closeModal", confirm: "confirm" }, usesOnChanges: true, ngImport: i0, template: "<app-modal [isOpen]=\"isOpen\" [title]=\"title\" size=\"md\" (closeModal)=\"onClose()\">\n <form [formGroup]=\"rechargeForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"vip-recharge-modal\">\n @if (restrictToMercadoPago) {\n <div class=\"vip-recharge-modal-payment-locked\">\n <span class=\"vip-recharge-modal-payment-locked-label\">M\u00E9todo de pago</span>\n <span class=\"vip-recharge-modal-payment-locked-value\">Mercado Pago</span>\n </div>\n } @else {\n <async-select\n label=\"M\u00E9todo de pago\"\n placeholder=\"Selecciona un m\u00E9todo de pago\"\n name=\"payment_method\"\n class=\"flex-1\"\n [required]=\"true\"\n [items]=\"paymentMethodOptions\"\n formControlName=\"payment_method\"\n />\n }\n\n <div>\n <number-input\n formControlName=\"amount\"\n label=\"Monto\"\n type=\"number\"\n [min]=\"minAmount\"\n [max]=\"maxAmount\"\n [step]=\"amountStep\"\n [required]=\"true\"\n placeholder=\"Ingresa el monto a recargar\"\n />\n\n <p class=\"vip-recharge-modal-hint\">\n Monto m\u00EDnimo: {{ minAmount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n </div>\n\n <div class=\"vip-recharge-modal-notice\">\n Esta acci\u00F3n generar\u00E1 una orden de compra por el monto indicado. El saldo solo se acreditar\u00E1\n a la Tarjeta VIP una vez se confirme el pago de esa orden.\n </div>\n\n <div class=\"vip-recharge-modal-terms\">\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_terms_accepted\"\n formControlName=\"terms_accepted\"\n />\n <label for=\"vip_recharge_terms_accepted\" class=\"vip-recharge-modal-terms-label\">\n Acepto los t\u00E9rminos y condiciones y la pol\u00EDtica de privacidad\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_data_processing_accepted\"\n formControlName=\"data_processing_accepted\"\n />\n <label for=\"vip_recharge_data_processing_accepted\" class=\"vip-recharge-modal-terms-label\">\n Autorizo el tratamiento de mis datos personales\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_order_notice_accepted\"\n formControlName=\"order_notice_accepted\"\n />\n <label for=\"vip_recharge_order_notice_accepted\" class=\"vip-recharge-modal-terms-label\">\n Entiendo que esto generar\u00E1 una orden de compra y que el saldo se activar\u00E1 solo cuando se\n confirme el pago\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"vip-recharge-modal-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n size=\"sm\"\n (clicked)=\"onClose()\"\n />\n\n <app-button\n type=\"submit\"\n size=\"sm\"\n variant=\"primary\"\n [text]=\"submitLabel\"\n [loading]=\"loading\"\n [disabled]=\"rechargeForm.invalid\"\n />\n </div>\n </form>\n</app-modal>\n", styles: [".vip-recharge-modal{display:flex;flex-flow:column;gap:1rem;width:100%}.vip-recharge-modal-hint{display:inline-flex;margin-top:1rem;font-size:12px;color:#6b7280}.vip-recharge-modal-payment-locked{display:flex;flex-direction:column;gap:2px}.vip-recharge-modal-payment-locked-label{font-size:.75rem;color:#6b7280}.vip-recharge-modal-payment-locked-value{font-size:.875rem;font-weight:600;color:#374151}.vip-recharge-modal-notice{background-color:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:.375rem;padding:.75rem;font-size:.75rem;line-height:1.4}.vip-recharge-modal-terms{display:flex;flex-flow:column;gap:.5rem}.vip-recharge-modal-terms-row{display:flex;align-items:center;gap:.5rem}.vip-recharge-modal-terms-label{font-size:.875rem;color:#374151}.vip-recharge-modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: NumberInputComponent, selector: "number-input", inputs: ["label", "name", "id", "placeholder", "required", "readonly", "min", "max", "step", "fieldGroupClass"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: AsyncSelectComponent, selector: "async-select", inputs: ["config", "items", "parentId", "label", "placeholder", "name", "required", "multiple", "clearable", "searchable", "loading", "virtualScroll", "notFoundText", "bindLabel", "bindValue", "disabled"] }, { kind: "component", type: ToggleSwitchComponent, selector: "toggle-switch", inputs: ["label", "name", "id", "required", "disabled", "size", "fieldGroupClass", "description"], outputs: ["toggleClick"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }], encapsulation: i0.ViewEncapsulation.None });
|
|
10616
10891
|
}
|
|
10617
10892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipRechargeModalComponent, decorators: [{
|
|
@@ -10625,7 +10900,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10625
10900
|
AsyncSelectComponent,
|
|
10626
10901
|
ToggleSwitchComponent,
|
|
10627
10902
|
], encapsulation: ViewEncapsulation.None, template: "<app-modal [isOpen]=\"isOpen\" [title]=\"title\" size=\"md\" (closeModal)=\"onClose()\">\n <form [formGroup]=\"rechargeForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"vip-recharge-modal\">\n @if (restrictToMercadoPago) {\n <div class=\"vip-recharge-modal-payment-locked\">\n <span class=\"vip-recharge-modal-payment-locked-label\">M\u00E9todo de pago</span>\n <span class=\"vip-recharge-modal-payment-locked-value\">Mercado Pago</span>\n </div>\n } @else {\n <async-select\n label=\"M\u00E9todo de pago\"\n placeholder=\"Selecciona un m\u00E9todo de pago\"\n name=\"payment_method\"\n class=\"flex-1\"\n [required]=\"true\"\n [items]=\"paymentMethodOptions\"\n formControlName=\"payment_method\"\n />\n }\n\n <div>\n <number-input\n formControlName=\"amount\"\n label=\"Monto\"\n type=\"number\"\n [min]=\"minAmount\"\n [max]=\"maxAmount\"\n [step]=\"amountStep\"\n [required]=\"true\"\n placeholder=\"Ingresa el monto a recargar\"\n />\n\n <p class=\"vip-recharge-modal-hint\">\n Monto m\u00EDnimo: {{ minAmount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n </div>\n\n <div class=\"vip-recharge-modal-notice\">\n Esta acci\u00F3n generar\u00E1 una orden de compra por el monto indicado. El saldo solo se acreditar\u00E1\n a la Tarjeta VIP una vez se confirme el pago de esa orden.\n </div>\n\n <div class=\"vip-recharge-modal-terms\">\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_terms_accepted\"\n formControlName=\"terms_accepted\"\n />\n <label for=\"vip_recharge_terms_accepted\" class=\"vip-recharge-modal-terms-label\">\n Acepto los t\u00E9rminos y condiciones y la pol\u00EDtica de privacidad\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_data_processing_accepted\"\n formControlName=\"data_processing_accepted\"\n />\n <label for=\"vip_recharge_data_processing_accepted\" class=\"vip-recharge-modal-terms-label\">\n Autorizo el tratamiento de mis datos personales\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_order_notice_accepted\"\n formControlName=\"order_notice_accepted\"\n />\n <label for=\"vip_recharge_order_notice_accepted\" class=\"vip-recharge-modal-terms-label\">\n Entiendo que esto generar\u00E1 una orden de compra y que el saldo se activar\u00E1 solo cuando se\n confirme el pago\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"vip-recharge-modal-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n size=\"sm\"\n (clicked)=\"onClose()\"\n />\n\n <app-button\n type=\"submit\"\n size=\"sm\"\n variant=\"primary\"\n [text]=\"submitLabel\"\n [loading]=\"loading\"\n [disabled]=\"rechargeForm.invalid\"\n />\n </div>\n </form>\n</app-modal>\n", styles: [".vip-recharge-modal{display:flex;flex-flow:column;gap:1rem;width:100%}.vip-recharge-modal-hint{display:inline-flex;margin-top:1rem;font-size:12px;color:#6b7280}.vip-recharge-modal-payment-locked{display:flex;flex-direction:column;gap:2px}.vip-recharge-modal-payment-locked-label{font-size:.75rem;color:#6b7280}.vip-recharge-modal-payment-locked-value{font-size:.875rem;font-weight:600;color:#374151}.vip-recharge-modal-notice{background-color:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:.375rem;padding:.75rem;font-size:.75rem;line-height:1.4}.vip-recharge-modal-terms{display:flex;flex-flow:column;gap:.5rem}.vip-recharge-modal-terms-row{display:flex;align-items:center;gap:.5rem}.vip-recharge-modal-terms-label{font-size:.875rem;color:#374151}.vip-recharge-modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:1rem}\n"] }]
|
|
10628
|
-
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type:
|
|
10903
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i1$3.TranslocoService }], propDecorators: { title: [{
|
|
10629
10904
|
type: Input
|
|
10630
10905
|
}], submitLabel: [{
|
|
10631
10906
|
type: Input
|
|
@@ -10680,5 +10955,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10680
10955
|
* Generated bundle index. Do not edit.
|
|
10681
10956
|
*/
|
|
10682
10957
|
|
|
10683
|
-
export { ADMIN_API_ROUTES, ADMISSION_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, AdmissionQueueService, ApiService, AppAlertComponent, AppBadgeComponent, AppBreadcumbComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, BrowserZoomLockService, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, ConfirmationOrderModalComponent, ConfirmationOrderModalService, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CouponStatus, CreatorType, CustomerSelectComponent, CustomerService, DEFAULT_STAGE_CONFIG, DOCUMENT_TYPES_OPTIONS, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FeedbackModalComponent, FeedbackModalService, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondPurchaseStatus, GiftBondStatus, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MembershipStatus, MinTodayValidator, MustMatchValidator, NumberInputComponent, ORDER_DISCOUNT_COLORS, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderBillingInfoComponent, OrderDiscountAppliedComponent, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, OrderTransactionDetailsModalComponent, OrderTransactionDetailsModalService, OrderTransactionsComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, PERFORMANCE_STATUS_COLORS, PERFORMANCE_TICKET_STATUS_COLORS, PHONE_COUNTRIES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PRODUCT_CATEGORIES_API_ROUTES, PRODUCT_TAGS_API_ROUTES, PRODUCT_TYPES_API_ROUTES, PaymentMethod, PerformanceBookingDataService, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStatusBadgeComponent, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformanceTicketStatusBadgeComponent, PerformancesListEventsService, PhoneInputComponent, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, PurchaseLimitService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatAvailabilitySseService, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, ShowTypeBadgeComponent, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapFloorSelectorComponent, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, VIP_CARDS_API_ROUTES, VipBalanceCardComponent, VipCardService, VipCardStatus, VipCardStatusBadgeComponent, VipRechargeModalComponent, VipTransactionType, VipTransactionsTableComponent, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, emailValidator, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, phoneCountryFlag, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, ticketCanOpenQr, tintColor, transformImageToFile, transformUrlParams };
|
|
10958
|
+
export { ADMIN_API_ROUTES, ADMISSION_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, AdmissionQueueService, ApiService, AppAlertComponent, AppBadgeComponent, AppBreadcumbComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, BrowserZoomLockService, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, ConfirmationOrderModalComponent, ConfirmationOrderModalService, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CouponStatus, CreatorType, CustomerSelectComponent, CustomerService, DEFAULT_STAGE_CONFIG, DOCUMENT_TYPES_OPTIONS, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FeedbackModalComponent, FeedbackModalService, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondPurchaseStatus, GiftBondStatus, IdentityDocumentInputComponent, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MembershipStatus, MinTodayValidator, MustMatchValidator, NumberInputComponent, ORDER_DISCOUNT_COLORS, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderBillingInfoComponent, OrderDiscountAppliedComponent, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, OrderTransactionDetailsModalComponent, OrderTransactionDetailsModalService, OrderTransactionsComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, PERFORMANCE_STATUS_COLORS, PERFORMANCE_TICKET_STATUS_COLORS, PHONE_COUNTRIES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PRODUCT_CATEGORIES_API_ROUTES, PRODUCT_TAGS_API_ROUTES, PRODUCT_TYPES_API_ROUTES, PaymentMethod, PerformanceBookingDataService, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStatusBadgeComponent, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformanceTicketStatusBadgeComponent, PerformancesListEventsService, PhoneInputComponent, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, PurchaseLimitService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatAvailabilitySseService, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, ShowTypeBadgeComponent, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapFloorSelectorComponent, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, VIP_CARDS_API_ROUTES, VipBalanceCardComponent, VipCardService, VipCardStatus, VipCardStatusBadgeComponent, VipRechargeModalComponent, VipTransactionType, VipTransactionsTableComponent, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, emailValidator, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, phoneCountryFlag, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, ticketCanOpenQr, tintColor, transformImageToFile, transformUrlParams };
|
|
10684
10959
|
//# sourceMappingURL=tickera-angular-components.mjs.map
|