tickera-angular-components 0.0.1-dev.65 → 0.0.1-dev.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tickera-angular-components.mjs +270 -7
- package/fesm2022/tickera-angular-components.mjs.map +1 -1
- package/i18n/en.json +4 -0
- package/i18n/es.json +4 -0
- package/index.d.ts +104 -3
- package/package.json +3 -2
|
@@ -2,7 +2,7 @@ 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
3
|
import * as i2$1 from '@jsverse/transloco';
|
|
4
4
|
import { provideTransloco, TranslocoModule, TranslocoService } from '@jsverse/transloco';
|
|
5
|
-
import { from, throwError, BehaviorSubject, Subject, of } from 'rxjs';
|
|
5
|
+
import { from, throwError, BehaviorSubject, Subject, of, takeUntil as takeUntil$1 } from 'rxjs';
|
|
6
6
|
import * as i2 from '@angular/common';
|
|
7
7
|
import { DATE_PIPE_DEFAULT_OPTIONS, isPlatformBrowser, formatDate, CommonModule, DatePipe } from '@angular/common';
|
|
8
8
|
import * as i1 from '@angular/common/http';
|
|
@@ -18,6 +18,7 @@ import { DEFAULT_TOOLBAR, Editor, toHTML, NgxEditorComponent, NgxEditorMenuCompo
|
|
|
18
18
|
import * as i2$2 from '@ng-select/ng-select';
|
|
19
19
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
20
20
|
import { StageComponent, CoreShapeComponent } from 'ng2-konva';
|
|
21
|
+
import QRCode from 'qrcode';
|
|
21
22
|
|
|
22
23
|
var formErrors$1 = {
|
|
23
24
|
required: "Este campo es requerido",
|
|
@@ -107,6 +108,10 @@ var order$1 = {
|
|
|
107
108
|
internal_exchange: "Cambio interno",
|
|
108
109
|
customer_exchange: "Cambio cliente",
|
|
109
110
|
mercado_pago: "Mercado Pago"
|
|
111
|
+
},
|
|
112
|
+
itemType: {
|
|
113
|
+
PRODUCT: "Producto",
|
|
114
|
+
TICKET: "Entrada"
|
|
110
115
|
}
|
|
111
116
|
};
|
|
112
117
|
var es = {
|
|
@@ -207,6 +212,10 @@ var order = {
|
|
|
207
212
|
internal_exchange: "Internal exchange",
|
|
208
213
|
customer_exchange: "Customer exchange",
|
|
209
214
|
mercado_pago: "Mercado Pago"
|
|
215
|
+
},
|
|
216
|
+
itemType: {
|
|
217
|
+
PRODUCT: "Product",
|
|
218
|
+
TICKET: "Ticket"
|
|
210
219
|
}
|
|
211
220
|
};
|
|
212
221
|
var en = {
|
|
@@ -499,6 +508,10 @@ const ORDER_STATUS_COLORS = {
|
|
|
499
508
|
'on-hold': { text: '#ca8a04', bg: '#fef9c3' },
|
|
500
509
|
'pending-payment': { text: '#ca8a04', bg: '#fef9c3' },
|
|
501
510
|
};
|
|
511
|
+
const ORDER_ITEM_TYPES_COLORS = {
|
|
512
|
+
TICKET: { text: '#1d4ed8', bg: '#eff6ff' },
|
|
513
|
+
PRODUCT: { text: '#7e22ce', bg: '#faf5ff' },
|
|
514
|
+
};
|
|
502
515
|
|
|
503
516
|
var FileType;
|
|
504
517
|
(function (FileType) {
|
|
@@ -3601,6 +3614,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
3601
3614
|
args: [{ providedIn: 'root' }]
|
|
3602
3615
|
}] });
|
|
3603
3616
|
|
|
3617
|
+
class TicketQrService {
|
|
3618
|
+
apiService;
|
|
3619
|
+
constructor(apiService) {
|
|
3620
|
+
this.apiService = apiService;
|
|
3621
|
+
}
|
|
3622
|
+
fetchQrToken(ticketUuid) {
|
|
3623
|
+
return this.apiService.get(PERFORMANCES_API_ROUTES.ticketQrToken(ticketUuid));
|
|
3624
|
+
}
|
|
3625
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrService, deps: [{ token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3626
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrService, providedIn: 'root' });
|
|
3627
|
+
}
|
|
3628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrService, decorators: [{
|
|
3629
|
+
type: Injectable,
|
|
3630
|
+
args: [{
|
|
3631
|
+
providedIn: 'root',
|
|
3632
|
+
}]
|
|
3633
|
+
}], ctorParameters: () => [{ type: ApiService }] });
|
|
3634
|
+
|
|
3635
|
+
class TicketQrModalService {
|
|
3636
|
+
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
3637
|
+
ticketUuid = signal(null, ...(ngDevMode ? [{ debugName: "ticketUuid" }] : []));
|
|
3638
|
+
ticketDescription = signal(null, ...(ngDevMode ? [{ debugName: "ticketDescription" }] : []));
|
|
3639
|
+
open(ticketUuid, description) {
|
|
3640
|
+
this.ticketUuid.set(ticketUuid);
|
|
3641
|
+
this.ticketDescription.set(description ?? null);
|
|
3642
|
+
this.isOpen.set(true);
|
|
3643
|
+
}
|
|
3644
|
+
close() {
|
|
3645
|
+
this.isOpen.set(false);
|
|
3646
|
+
this.ticketUuid.set(null);
|
|
3647
|
+
this.ticketDescription.set(null);
|
|
3648
|
+
}
|
|
3649
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3650
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrModalService, providedIn: 'root' });
|
|
3651
|
+
}
|
|
3652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrModalService, decorators: [{
|
|
3653
|
+
type: Injectable,
|
|
3654
|
+
args: [{ providedIn: 'root' }]
|
|
3655
|
+
}] });
|
|
3656
|
+
|
|
3604
3657
|
const authInterceptor = (req, next) => {
|
|
3605
3658
|
const platformId = inject(PLATFORM_ID);
|
|
3606
3659
|
const config = inject(TICKERA_COMPONENTS_CONFIG);
|
|
@@ -4051,20 +4104,23 @@ class AppBadgeComponent {
|
|
|
4051
4104
|
text = '';
|
|
4052
4105
|
color = 'primary';
|
|
4053
4106
|
size = 'md';
|
|
4107
|
+
bordered = true;
|
|
4054
4108
|
backgroundColor = '';
|
|
4055
4109
|
textColor = '';
|
|
4056
4110
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AppBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4057
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: AppBadgeComponent, isStandalone: true, selector: "app-badge", inputs: { text: "text", color: "color", size: "size", backgroundColor: "backgroundColor", textColor: "textColor" }, ngImport: i0, template: "<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n", styles: [".badge{display:inline-flex;align-items:center;border-radius:9999px;font-weight:700;line-height:1;white-space:nowrap}.badge--primary{background-color:#dbeafe;color:#1d4ed8}.badge--secondary{background-color:#f3f4f6;color:#374151}.badge--success{background-color:#dcfce7;color:#15803d}.badge--warning{background-color:#fef9c3;color:#a16207}.badge--error{background-color:#fee2e2;color:#b91c1c}.badge--info{background-color:#e0e7ff;color:#4338ca}.badge--xs{padding:.25rem .5rem;font-size:.75rem}.badge--sm{padding:.375rem .625rem;font-size:.875rem}.badge--md{padding:.5rem .75rem;font-size:.875rem}.badge--lg{padding:.625rem .875rem;font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
4111
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: AppBadgeComponent, isStandalone: true, selector: "app-badge", inputs: { text: "text", color: "color", size: "size", bordered: "bordered", backgroundColor: "backgroundColor", textColor: "textColor" }, ngImport: i0, template: "<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [class.badge--bordered]=\"bordered\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.border-color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n", styles: [".badge{display:inline-flex;align-items:center;border-radius:9999px;font-weight:700;line-height:1;white-space:nowrap}.badge--bordered{border:1px solid}.badge--primary{background-color:#dbeafe;border-color:#1d4ed8;color:#1d4ed8}.badge--secondary{background-color:#f3f4f6;border-color:#374151;color:#374151}.badge--success{background-color:#dcfce7;border-color:#15803d;color:#15803d}.badge--warning{background-color:#fef9c3;border-color:#a16207;color:#a16207}.badge--error{background-color:#fee2e2;border-color:#b91c1c;color:#b91c1c}.badge--info{background-color:#e0e7ff;border-color:#4338ca;color:#4338ca}.badge--xs{padding:.25rem .5rem;font-size:.75rem}.badge--sm{padding:.375rem .625rem;font-size:.875rem}.badge--md{padding:.5rem .75rem;font-size:.875rem}.badge--lg{padding:.625rem .875rem;font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
4058
4112
|
}
|
|
4059
4113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AppBadgeComponent, decorators: [{
|
|
4060
4114
|
type: Component,
|
|
4061
|
-
args: [{ selector: 'app-badge', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n", styles: [".badge{display:inline-flex;align-items:center;border-radius:9999px;font-weight:700;line-height:1;white-space:nowrap}.badge--primary{background-color:#dbeafe;color:#1d4ed8}.badge--secondary{background-color:#f3f4f6;color:#374151}.badge--success{background-color:#dcfce7;color:#15803d}.badge--warning{background-color:#fef9c3;color:#a16207}.badge--error{background-color:#fee2e2;color:#b91c1c}.badge--info{background-color:#e0e7ff;color:#4338ca}.badge--xs{padding:.25rem .5rem;font-size:.75rem}.badge--sm{padding:.375rem .625rem;font-size:.875rem}.badge--md{padding:.5rem .75rem;font-size:.875rem}.badge--lg{padding:.625rem .875rem;font-size:1rem}\n"] }]
|
|
4115
|
+
args: [{ selector: 'app-badge', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [class.badge--bordered]=\"bordered\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.border-color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n", styles: [".badge{display:inline-flex;align-items:center;border-radius:9999px;font-weight:700;line-height:1;white-space:nowrap}.badge--bordered{border:1px solid}.badge--primary{background-color:#dbeafe;border-color:#1d4ed8;color:#1d4ed8}.badge--secondary{background-color:#f3f4f6;border-color:#374151;color:#374151}.badge--success{background-color:#dcfce7;border-color:#15803d;color:#15803d}.badge--warning{background-color:#fef9c3;border-color:#a16207;color:#a16207}.badge--error{background-color:#fee2e2;border-color:#b91c1c;color:#b91c1c}.badge--info{background-color:#e0e7ff;border-color:#4338ca;color:#4338ca}.badge--xs{padding:.25rem .5rem;font-size:.75rem}.badge--sm{padding:.375rem .625rem;font-size:.875rem}.badge--md{padding:.5rem .75rem;font-size:.875rem}.badge--lg{padding:.625rem .875rem;font-size:1rem}\n"] }]
|
|
4062
4116
|
}], propDecorators: { text: [{
|
|
4063
4117
|
type: Input
|
|
4064
4118
|
}], color: [{
|
|
4065
4119
|
type: Input
|
|
4066
4120
|
}], size: [{
|
|
4067
4121
|
type: Input
|
|
4122
|
+
}], bordered: [{
|
|
4123
|
+
type: Input
|
|
4068
4124
|
}], backgroundColor: [{
|
|
4069
4125
|
type: Input
|
|
4070
4126
|
}], textColor: [{
|
|
@@ -4174,7 +4230,7 @@ class ShowCardComponent {
|
|
|
4174
4230
|
return new Date(date);
|
|
4175
4231
|
}
|
|
4176
4232
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4177
|
-
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 <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\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <span class=\"show-card__image-placeholder\"></span>\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 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 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:#e5e7eb;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{display:flex;flex-flow:row wrap;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"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i2$1.TranslocoPipe, name: "transloco" }] });
|
|
4233
|
+
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 <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\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <span class=\"show-card__image-placeholder\"></span>\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 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 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:#e5e7eb;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{display:flex;flex-flow:row wrap;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"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i2$1.TranslocoPipe, name: "transloco" }] });
|
|
4178
4234
|
}
|
|
4179
4235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowCardComponent, decorators: [{
|
|
4180
4236
|
type: Component,
|
|
@@ -7120,7 +7176,7 @@ class PerformanceCardComponent {
|
|
|
7120
7176
|
return this.listEventService.selectedPerformance()?.id === this.card.id;
|
|
7121
7177
|
}
|
|
7122
7178
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceCardComponent, deps: [{ token: PerformancesListEventsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7123
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: PerformanceCardComponent, isStandalone: true, selector: "performance-card", inputs: { card: "card", linkText: "linkText", linkUrlFn: "linkUrlFn", linkQueryParams: "linkQueryParams" }, ngImport: i0, template: "<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <span class=\"performance-card-image-placeholder\"></span>\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <ul class=\"performance-card-location\">\n @if (card.hall) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-armchair-line\"></i>\n <strong>Sala:</strong>\n <span>{{ card.hall.name }}</span>\n </li>\n }\n\n @if (card.venue) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-building-4-line\"></i>\n <strong>Teatro:</strong>\n <span>{{ card.venue.name }}</span>\n </li>\n }\n </ul>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-badge\n [text]=\"`${card.available_tickets_count} entrada(s) disponible(s)`\"\n size=\"xs\"\n [color]=\"badgeColor\"\n />\n\n <div class=\"performance-card-price\">\n Desde\n\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n\n <app-link-button\n [style.width]=\"'100%'\"\n [route]=\"linkUrlFn ? linkUrlFn(card) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n", styles: [".performance-card{align-items:center;background-color:#171717;border-radius:.5rem;border:1px solid #404040;display:flex;flex-direction:column;gap:1rem;justify-content:space-between;padding:1rem 1.25rem;transition:all .2s ease-in-out}@media(min-width:640px){.performance-card{flex-direction:row}}.performance-card:hover{border-color:#525252}.performance-card--selected{background-color:#262626;border-color:#ef4444;box-shadow:0 0 0 1px #ef444480,0 0 16px #ef444459}.performance-card--selected:hover{border-color:#ef4444}.performance-card-image{display:flex;border-radius:.125rem;overflow:hidden;height:auto;min-height:6rem;width:100%}@media(min-width:640px){.performance-card-image{height:6rem;width:6rem}}.performance-card-image-img{object-fit:contain;object-position:center;max-height:100%;max-width:100%;margin-left:auto;margin-right:auto}.performance-card-image-placeholder{display:flex;background-color:#e5e7eb;height:6rem;width:100%}.performance-card-info{display:flex;flex-direction:column;flex:1;gap:.5rem;width:100%}.performance-card-title{color:#e5e7eb;font-size:1.5rem;font-weight:800;line-height:1}.performance-card--selected .performance-card-title{color:#f3f4f6}.performance-card-datetime{line-height:1}.performance-card-date{font-size:.875rem;color:#9ca3af}.performance-card-time{font-weight:800;font-size:1.125rem;color:#e5e7eb}.performance-card-meridiem{font-weight:800;font-size:.875rem;color:#fff}.performance-card--selected .performance-card-meridiem{color:#ef4444}.performance-card-price{font-size:1rem;color:#9ca3af;line-height:1}.performance-card-price-value{color:#d1d5db;font-weight:600}.performance-card-location{align-items:flex-start;display:flex;flex-flow:row wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.performance-card-location__item{color:#a3a3a3;align-self:center;display:flex;flex-flow:row nowrap;font-size:.75rem;justify-content:flex-start;gap:.25rem}.performance-card-actions{align-items:center;display:flex;flex-direction:column;gap:.5rem;width:100%}@media(min-width:640px){.performance-card-actions{max-width:200px}}\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"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "backgroundColor", "textColor"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
|
7179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: PerformanceCardComponent, isStandalone: true, selector: "performance-card", inputs: { card: "card", linkText: "linkText", linkUrlFn: "linkUrlFn", linkQueryParams: "linkQueryParams" }, ngImport: i0, template: "<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <span class=\"performance-card-image-placeholder\"></span>\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <ul class=\"performance-card-location\">\n @if (card.hall) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-armchair-line\"></i>\n <strong>Sala:</strong>\n <span>{{ card.hall.name }}</span>\n </li>\n }\n\n @if (card.venue) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-building-4-line\"></i>\n <strong>Teatro:</strong>\n <span>{{ card.venue.name }}</span>\n </li>\n }\n </ul>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-badge\n [text]=\"`${card.available_tickets_count} entrada(s) disponible(s)`\"\n size=\"xs\"\n [color]=\"badgeColor\"\n />\n\n <div class=\"performance-card-price\">\n Desde\n\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n\n <app-link-button\n [style.width]=\"'100%'\"\n [route]=\"linkUrlFn ? linkUrlFn(card) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n", styles: [".performance-card{align-items:center;background-color:#171717;border-radius:.5rem;border:1px solid #404040;display:flex;flex-direction:column;gap:1rem;justify-content:space-between;padding:1rem 1.25rem;transition:all .2s ease-in-out}@media(min-width:640px){.performance-card{flex-direction:row}}.performance-card:hover{border-color:#525252}.performance-card--selected{background-color:#262626;border-color:#ef4444;box-shadow:0 0 0 1px #ef444480,0 0 16px #ef444459}.performance-card--selected:hover{border-color:#ef4444}.performance-card-image{display:flex;border-radius:.125rem;overflow:hidden;height:auto;min-height:6rem;width:100%}@media(min-width:640px){.performance-card-image{height:6rem;width:6rem}}.performance-card-image-img{object-fit:contain;object-position:center;max-height:100%;max-width:100%;margin-left:auto;margin-right:auto}.performance-card-image-placeholder{display:flex;background-color:#e5e7eb;height:6rem;width:100%}.performance-card-info{display:flex;flex-direction:column;flex:1;gap:.5rem;width:100%}.performance-card-title{color:#e5e7eb;font-size:1.5rem;font-weight:800;line-height:1}.performance-card--selected .performance-card-title{color:#f3f4f6}.performance-card-datetime{line-height:1}.performance-card-date{font-size:.875rem;color:#9ca3af}.performance-card-time{font-weight:800;font-size:1.125rem;color:#e5e7eb}.performance-card-meridiem{font-weight:800;font-size:.875rem;color:#fff}.performance-card--selected .performance-card-meridiem{color:#ef4444}.performance-card-price{font-size:1rem;color:#9ca3af;line-height:1}.performance-card-price-value{color:#d1d5db;font-weight:600}.performance-card-location{align-items:flex-start;display:flex;flex-flow:row wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.performance-card-location__item{color:#a3a3a3;align-self:center;display:flex;flex-flow:row nowrap;font-size:.75rem;justify-content:flex-start;gap:.25rem}.performance-card-actions{align-items:center;display:flex;flex-direction:column;gap:.5rem;width:100%}@media(min-width:640px){.performance-card-actions{max-width:200px}}\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"] }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
|
|
7124
7180
|
}
|
|
7125
7181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PerformanceCardComponent, decorators: [{
|
|
7126
7182
|
type: Component,
|
|
@@ -7902,7 +7958,7 @@ class OrderStatusBadgeComponent {
|
|
|
7902
7958
|
return ORDER_STATUS_COLORS[this.order.status] ?? null;
|
|
7903
7959
|
}
|
|
7904
7960
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderStatusBadgeComponent, deps: [{ token: i2$1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7905
|
-
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", "backgroundColor", "textColor"] }, { kind: "pipe", type: i2$1.TranslocoPipe, name: "transloco" }] });
|
|
7961
|
+
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: i2$1.TranslocoPipe, name: "transloco" }] });
|
|
7906
7962
|
}
|
|
7907
7963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderStatusBadgeComponent, decorators: [{
|
|
7908
7964
|
type: Component,
|
|
@@ -7931,11 +7987,218 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
7931
7987
|
args: [{ required: true }]
|
|
7932
7988
|
}] } });
|
|
7933
7989
|
|
|
7990
|
+
class OrderItemTypeBadgeComponent {
|
|
7991
|
+
transloco;
|
|
7992
|
+
item;
|
|
7993
|
+
size = 'sm';
|
|
7994
|
+
constructor(transloco) {
|
|
7995
|
+
this.transloco = transloco;
|
|
7996
|
+
}
|
|
7997
|
+
get statusColors() {
|
|
7998
|
+
return ORDER_ITEM_TYPES_COLORS[this.item.item_type] ?? null;
|
|
7999
|
+
}
|
|
8000
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemTypeBadgeComponent, deps: [{ token: i2$1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8001
|
+
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: i2$1.TranslocoPipe, name: "transloco" }] });
|
|
8002
|
+
}
|
|
8003
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemTypeBadgeComponent, decorators: [{
|
|
8004
|
+
type: Component,
|
|
8005
|
+
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" }]
|
|
8006
|
+
}], ctorParameters: () => [{ type: i2$1.TranslocoService }], propDecorators: { item: [{
|
|
8007
|
+
type: Input,
|
|
8008
|
+
args: [{ required: true }]
|
|
8009
|
+
}], size: [{
|
|
8010
|
+
type: Input
|
|
8011
|
+
}] } });
|
|
8012
|
+
|
|
8013
|
+
class TicketQrComponent {
|
|
8014
|
+
ticketQrService;
|
|
8015
|
+
ticketUuid;
|
|
8016
|
+
qrCanvas;
|
|
8017
|
+
loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
8018
|
+
error = signal(false, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
8019
|
+
refreshing = signal(false, ...(ngDevMode ? [{ debugName: "refreshing" }] : []));
|
|
8020
|
+
countdown = signal(0, ...(ngDevMode ? [{ debugName: "countdown" }] : []));
|
|
8021
|
+
destroy$ = new Subject();
|
|
8022
|
+
refreshTimeout = null;
|
|
8023
|
+
countdownInterval = null;
|
|
8024
|
+
constructor(ticketQrService) {
|
|
8025
|
+
this.ticketQrService = ticketQrService;
|
|
8026
|
+
}
|
|
8027
|
+
ngOnInit() {
|
|
8028
|
+
this.fetchAndRender();
|
|
8029
|
+
}
|
|
8030
|
+
ngOnDestroy() {
|
|
8031
|
+
this.destroy$.next();
|
|
8032
|
+
this.destroy$.complete();
|
|
8033
|
+
this.clearTimers();
|
|
8034
|
+
}
|
|
8035
|
+
retry() {
|
|
8036
|
+
this.error.set(false);
|
|
8037
|
+
this.loading.set(true);
|
|
8038
|
+
this.clearTimers();
|
|
8039
|
+
this.fetchAndRender();
|
|
8040
|
+
}
|
|
8041
|
+
clearTimers() {
|
|
8042
|
+
if (this.refreshTimeout) {
|
|
8043
|
+
clearTimeout(this.refreshTimeout);
|
|
8044
|
+
this.refreshTimeout = null;
|
|
8045
|
+
}
|
|
8046
|
+
if (this.countdownInterval) {
|
|
8047
|
+
clearInterval(this.countdownInterval);
|
|
8048
|
+
this.countdownInterval = null;
|
|
8049
|
+
}
|
|
8050
|
+
}
|
|
8051
|
+
fetchAndRender() {
|
|
8052
|
+
this.ticketQrService
|
|
8053
|
+
.fetchQrToken(this.ticketUuid)
|
|
8054
|
+
.pipe(takeUntil$1(this.destroy$))
|
|
8055
|
+
.subscribe({
|
|
8056
|
+
next: (res) => {
|
|
8057
|
+
this.loading.set(false);
|
|
8058
|
+
this.error.set(false);
|
|
8059
|
+
this.renderQr(res.data.token);
|
|
8060
|
+
this.startCountdown(res.data.refresh_in);
|
|
8061
|
+
this.scheduleRefresh(res.data.refresh_in);
|
|
8062
|
+
},
|
|
8063
|
+
error: () => {
|
|
8064
|
+
this.loading.set(false);
|
|
8065
|
+
this.error.set(true);
|
|
8066
|
+
},
|
|
8067
|
+
});
|
|
8068
|
+
}
|
|
8069
|
+
scheduleRefresh(seconds) {
|
|
8070
|
+
this.refreshTimeout = setTimeout(() => {
|
|
8071
|
+
this.refreshing.set(true);
|
|
8072
|
+
this.ticketQrService
|
|
8073
|
+
.fetchQrToken(this.ticketUuid)
|
|
8074
|
+
.pipe(takeUntil$1(this.destroy$))
|
|
8075
|
+
.subscribe({
|
|
8076
|
+
next: (res) => {
|
|
8077
|
+
this.renderQr(res.data.token);
|
|
8078
|
+
this.error.set(false);
|
|
8079
|
+
this.startCountdown(res.data.refresh_in);
|
|
8080
|
+
setTimeout(() => {
|
|
8081
|
+
this.refreshing.set(false);
|
|
8082
|
+
this.scheduleRefresh(res.data.refresh_in);
|
|
8083
|
+
}, 300);
|
|
8084
|
+
},
|
|
8085
|
+
error: () => {
|
|
8086
|
+
this.refreshing.set(false);
|
|
8087
|
+
this.error.set(true);
|
|
8088
|
+
},
|
|
8089
|
+
});
|
|
8090
|
+
}, seconds * 1000);
|
|
8091
|
+
}
|
|
8092
|
+
startCountdown(seconds) {
|
|
8093
|
+
if (this.countdownInterval) {
|
|
8094
|
+
clearInterval(this.countdownInterval);
|
|
8095
|
+
}
|
|
8096
|
+
this.countdown.set(seconds);
|
|
8097
|
+
this.countdownInterval = setInterval(() => {
|
|
8098
|
+
this.countdown.update((v) => Math.max(0, v - 1));
|
|
8099
|
+
}, 1000);
|
|
8100
|
+
}
|
|
8101
|
+
renderQr(token) {
|
|
8102
|
+
const canvas = this.qrCanvas.nativeElement;
|
|
8103
|
+
QRCode.toCanvas(canvas, token, { width: 256, margin: 2 }, (err) => {
|
|
8104
|
+
if (err)
|
|
8105
|
+
console.error('Error rendering QR:', err);
|
|
8106
|
+
});
|
|
8107
|
+
}
|
|
8108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrComponent, deps: [{ token: TicketQrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TicketQrComponent, isStandalone: true, selector: "performance-ticket-qr", inputs: { ticketUuid: "ticketUuid" }, viewQueries: [{ propertyName: "qrCanvas", first: true, predicate: ["qrCanvas"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ticket-qr\">\n @if (loading()) {\n <div class=\"ticket-qr__loader\">\n <span class=\"ticket-qr__loader-text\">Cargando QR...</span>\n </div>\n }\n\n @if (error()) {\n <div class=\"ticket-qr__container\">\n <app-alert text=\"Error al cargar el c\u00F3digo QR\" type=\"error\" />\n <app-button text=\"Reintentar\" (clicked)=\"retry()\" [disabled]=\"loading()\" />\n </div>\n }\n\n <div [class.hidden]=\"loading() || error()\" class=\"ticket-qr__container\">\n <div class=\"transition-opacity duration-300\" [class.opacity-50]=\"refreshing()\">\n <canvas #qrCanvas class=\"ticket-qr__canvas\" width=\"256\" height=\"256\"></canvas>\n </div>\n <span class=\"ticket-qr__updating-text\">\n {{ countdown() > 0 ? `Actualizando en ${countdown()}` : '0s' }}\n </span>\n </div>\n</div>\n", styles: [".ticket-qr{align-items:center;display:flex;flex-flow:column nowrap;gap:.75rem;height:auto;padding:1rem;width:100%}.ticket-qr__loader{align-items:center;background-color:#f3f4f6;border-radius:.5rem;display:flex;flex-flow:column nowrap;height:16rem;justify-content:center;width:16rem}.ticket-qr__loader-text{color:#9ca3af;font-size:.875rem}.ticket-qr__container{align-items:center;display:flex;flex-flow:column nowrap;gap:.75rem;width:100%}.ticket-qr__container.hidden{display:none}.ticket-qr__canvas{box-shadow:0 0 10px #0003;border-radius:.5rem}.ticket-qr__updating-text{color:#9ca3af;font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon"], outputs: ["clicked"] }, { kind: "component", type: AppAlertComponent, selector: "app-alert", inputs: ["type", "text", "closeable", "size"] }] });
|
|
8110
|
+
}
|
|
8111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrComponent, decorators: [{
|
|
8112
|
+
type: Component,
|
|
8113
|
+
args: [{ selector: 'performance-ticket-qr', standalone: true, imports: [CommonModule, AppButtonComponent, AppAlertComponent], template: "<div class=\"ticket-qr\">\n @if (loading()) {\n <div class=\"ticket-qr__loader\">\n <span class=\"ticket-qr__loader-text\">Cargando QR...</span>\n </div>\n }\n\n @if (error()) {\n <div class=\"ticket-qr__container\">\n <app-alert text=\"Error al cargar el c\u00F3digo QR\" type=\"error\" />\n <app-button text=\"Reintentar\" (clicked)=\"retry()\" [disabled]=\"loading()\" />\n </div>\n }\n\n <div [class.hidden]=\"loading() || error()\" class=\"ticket-qr__container\">\n <div class=\"transition-opacity duration-300\" [class.opacity-50]=\"refreshing()\">\n <canvas #qrCanvas class=\"ticket-qr__canvas\" width=\"256\" height=\"256\"></canvas>\n </div>\n <span class=\"ticket-qr__updating-text\">\n {{ countdown() > 0 ? `Actualizando en ${countdown()}` : '0s' }}\n </span>\n </div>\n</div>\n", styles: [".ticket-qr{align-items:center;display:flex;flex-flow:column nowrap;gap:.75rem;height:auto;padding:1rem;width:100%}.ticket-qr__loader{align-items:center;background-color:#f3f4f6;border-radius:.5rem;display:flex;flex-flow:column nowrap;height:16rem;justify-content:center;width:16rem}.ticket-qr__loader-text{color:#9ca3af;font-size:.875rem}.ticket-qr__container{align-items:center;display:flex;flex-flow:column nowrap;gap:.75rem;width:100%}.ticket-qr__container.hidden{display:none}.ticket-qr__canvas{box-shadow:0 0 10px #0003;border-radius:.5rem}.ticket-qr__updating-text{color:#9ca3af;font-size:.875rem}\n"] }]
|
|
8114
|
+
}], ctorParameters: () => [{ type: TicketQrService }], propDecorators: { ticketUuid: [{
|
|
8115
|
+
type: Input,
|
|
8116
|
+
args: [{ required: true }]
|
|
8117
|
+
}], qrCanvas: [{
|
|
8118
|
+
type: ViewChild,
|
|
8119
|
+
args: ['qrCanvas', { static: true }]
|
|
8120
|
+
}] } });
|
|
8121
|
+
|
|
8122
|
+
class TicketQrModalComponent {
|
|
8123
|
+
ticketQrModalService;
|
|
8124
|
+
constructor(ticketQrModalService) {
|
|
8125
|
+
this.ticketQrModalService = ticketQrModalService;
|
|
8126
|
+
}
|
|
8127
|
+
get isOpen() {
|
|
8128
|
+
return this.ticketQrModalService.isOpen;
|
|
8129
|
+
}
|
|
8130
|
+
get ticketUuid() {
|
|
8131
|
+
return this.ticketQrModalService.ticketUuid;
|
|
8132
|
+
}
|
|
8133
|
+
get ticketDescription() {
|
|
8134
|
+
return this.ticketQrModalService.ticketDescription;
|
|
8135
|
+
}
|
|
8136
|
+
onClose() {
|
|
8137
|
+
this.ticketQrModalService.close();
|
|
8138
|
+
}
|
|
8139
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrModalComponent, deps: [{ token: TicketQrModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TicketQrModalComponent, isStandalone: true, selector: "ticket-qr-modal", ngImport: i0, template: "<app-modal title=\"C\u00F3digo QR del ticket\" [isOpen]=\"isOpen\" (closeModal)=\"onClose()\" size=\"md\">\n <div class=\"ticket-qr-modal\">\n @if (ticketDescription(); as desc) {\n <p class=\"ticket-qr-modal__description\">{{ desc }}</p>\n }\n\n @if (ticketUuid(); as uuid) {\n <performance-ticket-qr [ticketUuid]=\"uuid\" />\n }\n </div>\n</app-modal>\n", styles: [".ticket-qr-modal__description{color:#6b7280;font-weight:700;font-size:1rem;margin-bottom:1rem;text-align:center;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: TicketQrComponent, selector: "performance-ticket-qr", inputs: ["ticketUuid"] }] });
|
|
8141
|
+
}
|
|
8142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TicketQrModalComponent, decorators: [{
|
|
8143
|
+
type: Component,
|
|
8144
|
+
args: [{ selector: 'ticket-qr-modal', standalone: true, imports: [CommonModule, AppModalComponent, TicketQrComponent], template: "<app-modal title=\"C\u00F3digo QR del ticket\" [isOpen]=\"isOpen\" (closeModal)=\"onClose()\" size=\"md\">\n <div class=\"ticket-qr-modal\">\n @if (ticketDescription(); as desc) {\n <p class=\"ticket-qr-modal__description\">{{ desc }}</p>\n }\n\n @if (ticketUuid(); as uuid) {\n <performance-ticket-qr [ticketUuid]=\"uuid\" />\n }\n </div>\n</app-modal>\n", styles: [".ticket-qr-modal__description{color:#6b7280;font-weight:700;font-size:1rem;margin-bottom:1rem;text-align:center;width:100%}\n"] }]
|
|
8145
|
+
}], ctorParameters: () => [{ type: TicketQrModalService }] });
|
|
8146
|
+
|
|
8147
|
+
class OrderItemsComponent {
|
|
8148
|
+
ticketQrModalService;
|
|
8149
|
+
order;
|
|
8150
|
+
constructor(ticketQrModalService) {
|
|
8151
|
+
this.ticketQrModalService = ticketQrModalService;
|
|
8152
|
+
}
|
|
8153
|
+
get orderItems() {
|
|
8154
|
+
return this.order.order_items ?? [];
|
|
8155
|
+
}
|
|
8156
|
+
get products() {
|
|
8157
|
+
return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.PRODUCT) ?? [];
|
|
8158
|
+
}
|
|
8159
|
+
get tickets() {
|
|
8160
|
+
return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.TICKET) ?? [];
|
|
8161
|
+
}
|
|
8162
|
+
itemTotal(quantity, price) {
|
|
8163
|
+
return quantity * Number(price);
|
|
8164
|
+
}
|
|
8165
|
+
hasDiscount() {
|
|
8166
|
+
return this.order.discount_amount > 0;
|
|
8167
|
+
}
|
|
8168
|
+
get totals() {
|
|
8169
|
+
const products = this.products?.reduce((accumulator, currentProduct) => {
|
|
8170
|
+
return accumulator + currentProduct?.normal_price;
|
|
8171
|
+
}, 0);
|
|
8172
|
+
const tickets = this.tickets?.reduce((accumulator, currentTicket) => {
|
|
8173
|
+
return accumulator + currentTicket?.normal_price;
|
|
8174
|
+
}, 0);
|
|
8175
|
+
return { products, tickets };
|
|
8176
|
+
}
|
|
8177
|
+
openTicketQr(ticketUuid, description) {
|
|
8178
|
+
this.ticketQrModalService.open(ticketUuid, description);
|
|
8179
|
+
}
|
|
8180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemsComponent, deps: [{ token: TicketQrModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
8181
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderItemsComponent, isStandalone: true, selector: "order-items", inputs: { order: "order" }, ngImport: i0, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <ticket-map-widget-header [title]=\"`Art\u00EDculos (${order.order_items.length})`\" />\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (order.status === 'completed') {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed') {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f3f4f6;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f3f4f6}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f3f4f6;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon"], outputs: ["clicked"] }, { kind: "component", type: TicketQrModalComponent, selector: "ticket-qr-modal" }, { kind: "component", type: TicketMapWidgetHeaderComponent, selector: "ticket-map-widget-header", inputs: ["title"] }, { kind: "component", type: OrderItemTypeBadgeComponent, selector: "order-item-type-badge", inputs: ["item", "size"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }], encapsulation: i0.ViewEncapsulation.None });
|
|
8182
|
+
}
|
|
8183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemsComponent, decorators: [{
|
|
8184
|
+
type: Component,
|
|
8185
|
+
args: [{ selector: 'order-items', standalone: true, imports: [
|
|
8186
|
+
CommonModule,
|
|
8187
|
+
AppButtonComponent,
|
|
8188
|
+
TicketQrModalComponent,
|
|
8189
|
+
TicketMapWidgetHeaderComponent,
|
|
8190
|
+
OrderItemTypeBadgeComponent,
|
|
8191
|
+
], encapsulation: ViewEncapsulation.None, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <ticket-map-widget-header [title]=\"`Art\u00EDculos (${order.order_items.length})`\" />\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (order.status === 'completed') {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed') {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f3f4f6;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f3f4f6}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f3f4f6;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"] }]
|
|
8192
|
+
}], ctorParameters: () => [{ type: TicketQrModalService }], propDecorators: { order: [{
|
|
8193
|
+
type: Input,
|
|
8194
|
+
args: [{ required: true }]
|
|
8195
|
+
}] } });
|
|
8196
|
+
|
|
7934
8197
|
// Config
|
|
7935
8198
|
|
|
7936
8199
|
/**
|
|
7937
8200
|
* Generated bundle index. Do not edit.
|
|
7938
8201
|
*/
|
|
7939
8202
|
|
|
7940
|
-
export { ADMIN_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppBadgeComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, 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, GiftBondStatus, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MinTodayValidator, MustMatchValidator, ORDER_STATUS_COLORS, OrderInformationComponent, OrderItemType, OrderStatus, OrderStatusBadgeComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, 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, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, 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, TickeraTranslocoLoader, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, tintColor, transformImageToFile };
|
|
8203
|
+
export { ADMIN_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppBadgeComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, 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, GiftBondStatus, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MinTodayValidator, MustMatchValidator, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, 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, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, 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, TickeraTranslocoLoader, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, tintColor, transformImageToFile };
|
|
7941
8204
|
//# sourceMappingURL=tickera-angular-components.mjs.map
|