tickera-angular-components 0.0.1-dev.181 → 0.0.1-dev.184
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.
|
@@ -9835,6 +9835,53 @@ class ConfirmationOrderModalComponent {
|
|
|
9835
9835
|
get isOpen() {
|
|
9836
9836
|
return this.confirmationOrderModalService.modalIsOpen;
|
|
9837
9837
|
}
|
|
9838
|
+
get showTitle() {
|
|
9839
|
+
return this.bookingDataService.show()?.title ?? null;
|
|
9840
|
+
}
|
|
9841
|
+
get performanceStartTime() {
|
|
9842
|
+
return this.bookingDataService.performance()?.start_time ?? null;
|
|
9843
|
+
}
|
|
9844
|
+
get hallName() {
|
|
9845
|
+
const roomMap = this.bookingDataService.performance()?.room_map;
|
|
9846
|
+
return roomMap?.hall_name ?? roomMap?.hall?.name ?? null;
|
|
9847
|
+
}
|
|
9848
|
+
get venueName() {
|
|
9849
|
+
const roomMap = this.bookingDataService.performance()?.room_map;
|
|
9850
|
+
return roomMap?.venue_name ?? roomMap?.hall?.venue?.name ?? null;
|
|
9851
|
+
}
|
|
9852
|
+
get ticketItems() {
|
|
9853
|
+
return this.selectionService.summaryItems();
|
|
9854
|
+
}
|
|
9855
|
+
get selectedProducts() {
|
|
9856
|
+
const products = this.selectionService.products();
|
|
9857
|
+
const result = [];
|
|
9858
|
+
this.selectionService.productQuantities().forEach((quantity, id) => {
|
|
9859
|
+
if (quantity <= 0)
|
|
9860
|
+
return;
|
|
9861
|
+
const product = products.find((p) => p.id === id);
|
|
9862
|
+
if (product)
|
|
9863
|
+
result.push({ product, quantity });
|
|
9864
|
+
});
|
|
9865
|
+
return result;
|
|
9866
|
+
}
|
|
9867
|
+
ticketItemLabel(ticket) {
|
|
9868
|
+
const base = ticket.seat_label || ticket.seat_numeration || this.elementTypeLabel(ticket.element_type);
|
|
9869
|
+
return ticket.element_qty && ticket.element_qty > 1 ? `${base} (x${ticket.element_qty})` : base;
|
|
9870
|
+
}
|
|
9871
|
+
ticketItemPrice(ticket) {
|
|
9872
|
+
const unitPrice = Number(ticket.normal_price || 0);
|
|
9873
|
+
return ticket.element_qty ? unitPrice * ticket.element_qty : unitPrice;
|
|
9874
|
+
}
|
|
9875
|
+
elementTypeLabel(type) {
|
|
9876
|
+
switch (type) {
|
|
9877
|
+
case RoomMapElementType.TABLE:
|
|
9878
|
+
return 'Mesa';
|
|
9879
|
+
case RoomMapElementType.ZONE:
|
|
9880
|
+
return 'Zona general';
|
|
9881
|
+
default:
|
|
9882
|
+
return 'Entrada';
|
|
9883
|
+
}
|
|
9884
|
+
}
|
|
9838
9885
|
get selectedCount() {
|
|
9839
9886
|
return this.selectionService.selectedCount();
|
|
9840
9887
|
}
|
|
@@ -9888,11 +9935,11 @@ class ConfirmationOrderModalComponent {
|
|
|
9888
9935
|
this.onConfirm && this.onConfirm.emit();
|
|
9889
9936
|
}
|
|
9890
9937
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ConfirmationOrderModalComponent, deps: [{ token: ConfirmationOrderModalService }, { token: TicketSelectionDiscountService }, { token: TicketSelectionTotalsService }, { token: TicketSelectionService }, { token: PerformanceBookingDataService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9891
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ConfirmationOrderModalComponent, isStandalone: true, selector: "confirmation-order-modal", inputs: { modalTitle: "modalTitle", confirmButtonText: "confirmButtonText", confirmButtonTextLoading: "confirmButtonTextLoading", loading: "loading" }, outputs: { onConfirm: "onConfirm" }, ngImport: i0, template: "<app-modal
|
|
9938
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ConfirmationOrderModalComponent, isStandalone: true, selector: "confirmation-order-modal", inputs: { modalTitle: "modalTitle", confirmButtonText: "confirmButtonText", confirmButtonTextLoading: "confirmButtonTextLoading", loading: "loading" }, outputs: { onConfirm: "onConfirm" }, ngImport: i0, template: "<app-modal\n [title]=\"modalTitle\"\n [isOpen]=\"isOpen\"\n [interactiveClose]=\"false\"\n (closeModal)=\"onClose()\"\n size=\"md\"\n>\n <div class=\"confirmation-modal\">\n <p class=\"confirmation-modal__description\">\n Revise los detalles de la compra antes de confirmar.\n </p>\n\n @if (showTitle) {\n <div class=\"confirmation-modal__event\">\n <p class=\"confirmation-modal__event-title\">{{ showTitle }}</p>\n @if (performanceStartTime) {\n <p class=\"confirmation-modal__event-meta\">\n {{ performanceStartTime | date: 'EEEE d MMMM, yyyy hh:mm a' }}\n </p>\n }\n @if (hallName || venueName) {\n <p class=\"confirmation-modal__event-meta\">\n <i class=\"ri-map-pin-line\"></i>\n {{ hallName }}{{ hallName && venueName ? ' \u00B7 ' : '' }}{{ venueName }}\n </p>\n }\n </div>\n }\n\n @if (ticketItems.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (ticket of ticketItems; track ticket.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ ticketItemLabel(ticket) }}</span>\n <span>${{ ticketItemPrice(ticket) | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n @if (selectedProducts.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (entry of selectedProducts; track entry.product.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ entry.product.name }} (x{{ entry.quantity }})</span>\n <span>${{ entry.product.price * entry.quantity | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__item\">\n <span>Entradas ({{ selectedCount | number: '1.0-0' }}):</span>\n <span>${{ ticketSubtotal | number: '1.0' }}</span>\n </p>\n\n @if (productCount > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Productos ({{ productCount | number: '1.0-0' }}):</span>\n <span>${{ productSubtotal | number: '1.0' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ serviceFee | number: '1.0' }}</span>\n </p>\n }\n\n @if (coupon) {\n <p class=\"confirmation-modal__item\">\n <span>Cup\u00F3n de descuento:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ coupon.discount_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (corporateBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono corporativo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ corporateBond.value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (giftBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono de regalo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ giftBond.original_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (vipCard) {\n <p class=\"confirmation-modal__item\">\n <span>Tarjeta VIP:</span>\n <span class=\"confirmation-modal__discount\">\n -${{ vipDiscountAmount | number: '1.0-2' }} ({{\n vipCard.category_snapshot.discount_percentage\n }}%)\n </span>\n </p>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__totals\">\n <span class=\"confirmation-modal__totals-title\">Total:</span>\n\n @if (totalDiscounted || totalDiscounted === 0) {\n <span class=\"confirmation-modal__totals-discounted\">\n <span class=\"confirmation-modal__discount\">\n ${{ totalValue | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n <span class=\"confirmation-modal__price\">\n ${{ totalDiscounted | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n </span>\n } @else {\n <span class=\"confirmation-modal__price\">${{ totalValue | number: '1.0' }}</span>\n }\n </p>\n </div>\n\n <div class=\"confirmation-modal__actions\">\n <app-button\n size=\"sm\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n (click)=\"onClose()\"\n [disabled]=\"loading\"\n />\n\n <app-button\n size=\"sm\"\n variant=\"primary\"\n [text]=\"confirmButtonText\"\n [loadingText]=\"confirmButtonTextLoading\"\n [loading]=\"loading\"\n [disabled]=\"loading\"\n (click)=\"confirmOrder()\"\n />\n </div>\n</app-modal>\n", styles: [".confirmation-modal{display:flex;flex-flow:column nowrap;gap:.5rem;width:100%}.confirmation-modal__description{color:#6b7280;font-size:.875rem;margin-bottom:.5rem}.confirmation-modal__event{background-color:#f9fafb;border-radius:.375rem;margin-bottom:.5rem;padding:.75rem}.confirmation-modal__event-title{color:#1f2937;font-size:.875rem;font-weight:600;margin:0}.confirmation-modal__event-meta{align-items:center;color:#6b7280;display:flex;font-size:.75rem;gap:.25rem;margin:.25rem 0 0}.confirmation-modal__list{display:flex;flex-flow:column nowrap;gap:.25rem;margin-bottom:.5rem;max-height:140px;overflow-y:auto}.confirmation-modal__list-item{align-items:center;color:#4b5563;display:flex;flex-flow:row nowrap;font-size:.75rem;gap:.5rem;justify-content:space-between;margin:0}.confirmation-modal__list-item span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirmation-modal__list-item span:last-child{flex-shrink:0}.confirmation-modal__item{align-items:center;color:#9ca3af;display:flex;flex-flow:row wrap;font-size:.75rem;justify-content:space-between;margin:0}.confirmation-modal__discount{text-decoration:line-through}.confirmation-modal__divider{border:none;border-top:1px solid #e5e7eb;width:100%}.confirmation-modal__price{color:#4b5563;font-size:1rem;font-weight:700}.confirmation-modal__totals{align-items:center;display:flex;flex-flow:row;justify-content:space-between;margin:0;width:100%}.confirmation-modal__totals-title{color:#4b5563;font-size:1rem;font-weight:700}.confirmation-modal__totals-discounted{align-items:flex-end;display:flex;flex-flow:column}.confirmation-modal__totals-discounted .confirmation-modal__discount{color:#9ca3af;font-size:.75rem}.confirmation-modal__actions{display:flex;flex-flow:row;gap:.5rem;justify-content:flex-end;padding-top:1rem;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "interactiveClose", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }] });
|
|
9892
9939
|
}
|
|
9893
9940
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ConfirmationOrderModalComponent, decorators: [{
|
|
9894
9941
|
type: Component,
|
|
9895
|
-
args: [{ selector: 'confirmation-order-modal', standalone: true, imports: [CommonModule, AppButtonComponent, AppModalComponent], template: "<app-modal
|
|
9942
|
+
args: [{ selector: 'confirmation-order-modal', standalone: true, imports: [CommonModule, AppButtonComponent, AppModalComponent], template: "<app-modal\n [title]=\"modalTitle\"\n [isOpen]=\"isOpen\"\n [interactiveClose]=\"false\"\n (closeModal)=\"onClose()\"\n size=\"md\"\n>\n <div class=\"confirmation-modal\">\n <p class=\"confirmation-modal__description\">\n Revise los detalles de la compra antes de confirmar.\n </p>\n\n @if (showTitle) {\n <div class=\"confirmation-modal__event\">\n <p class=\"confirmation-modal__event-title\">{{ showTitle }}</p>\n @if (performanceStartTime) {\n <p class=\"confirmation-modal__event-meta\">\n {{ performanceStartTime | date: 'EEEE d MMMM, yyyy hh:mm a' }}\n </p>\n }\n @if (hallName || venueName) {\n <p class=\"confirmation-modal__event-meta\">\n <i class=\"ri-map-pin-line\"></i>\n {{ hallName }}{{ hallName && venueName ? ' \u00B7 ' : '' }}{{ venueName }}\n </p>\n }\n </div>\n }\n\n @if (ticketItems.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (ticket of ticketItems; track ticket.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ ticketItemLabel(ticket) }}</span>\n <span>${{ ticketItemPrice(ticket) | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n @if (selectedProducts.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (entry of selectedProducts; track entry.product.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ entry.product.name }} (x{{ entry.quantity }})</span>\n <span>${{ entry.product.price * entry.quantity | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__item\">\n <span>Entradas ({{ selectedCount | number: '1.0-0' }}):</span>\n <span>${{ ticketSubtotal | number: '1.0' }}</span>\n </p>\n\n @if (productCount > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Productos ({{ productCount | number: '1.0-0' }}):</span>\n <span>${{ productSubtotal | number: '1.0' }}</span>\n </p>\n }\n\n @if (serviceFee > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Tarifa de servicio:</span>\n <span>${{ serviceFee | number: '1.0' }}</span>\n </p>\n }\n\n @if (coupon) {\n <p class=\"confirmation-modal__item\">\n <span>Cup\u00F3n de descuento:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ coupon.discount_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (corporateBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono corporativo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ corporateBond.value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (giftBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono de regalo:</span>\n <span class=\"confirmation-modal__discount\">\n ${{ giftBond.original_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (vipCard) {\n <p class=\"confirmation-modal__item\">\n <span>Tarjeta VIP:</span>\n <span class=\"confirmation-modal__discount\">\n -${{ vipDiscountAmount | number: '1.0-2' }} ({{\n vipCard.category_snapshot.discount_percentage\n }}%)\n </span>\n </p>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__totals\">\n <span class=\"confirmation-modal__totals-title\">Total:</span>\n\n @if (totalDiscounted || totalDiscounted === 0) {\n <span class=\"confirmation-modal__totals-discounted\">\n <span class=\"confirmation-modal__discount\">\n ${{ totalValue | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n <span class=\"confirmation-modal__price\">\n ${{ totalDiscounted | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n </span>\n } @else {\n <span class=\"confirmation-modal__price\">${{ totalValue | number: '1.0' }}</span>\n }\n </p>\n </div>\n\n <div class=\"confirmation-modal__actions\">\n <app-button\n size=\"sm\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n (click)=\"onClose()\"\n [disabled]=\"loading\"\n />\n\n <app-button\n size=\"sm\"\n variant=\"primary\"\n [text]=\"confirmButtonText\"\n [loadingText]=\"confirmButtonTextLoading\"\n [loading]=\"loading\"\n [disabled]=\"loading\"\n (click)=\"confirmOrder()\"\n />\n </div>\n</app-modal>\n", styles: [".confirmation-modal{display:flex;flex-flow:column nowrap;gap:.5rem;width:100%}.confirmation-modal__description{color:#6b7280;font-size:.875rem;margin-bottom:.5rem}.confirmation-modal__event{background-color:#f9fafb;border-radius:.375rem;margin-bottom:.5rem;padding:.75rem}.confirmation-modal__event-title{color:#1f2937;font-size:.875rem;font-weight:600;margin:0}.confirmation-modal__event-meta{align-items:center;color:#6b7280;display:flex;font-size:.75rem;gap:.25rem;margin:.25rem 0 0}.confirmation-modal__list{display:flex;flex-flow:column nowrap;gap:.25rem;margin-bottom:.5rem;max-height:140px;overflow-y:auto}.confirmation-modal__list-item{align-items:center;color:#4b5563;display:flex;flex-flow:row nowrap;font-size:.75rem;gap:.5rem;justify-content:space-between;margin:0}.confirmation-modal__list-item span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirmation-modal__list-item span:last-child{flex-shrink:0}.confirmation-modal__item{align-items:center;color:#9ca3af;display:flex;flex-flow:row wrap;font-size:.75rem;justify-content:space-between;margin:0}.confirmation-modal__discount{text-decoration:line-through}.confirmation-modal__divider{border:none;border-top:1px solid #e5e7eb;width:100%}.confirmation-modal__price{color:#4b5563;font-size:1rem;font-weight:700}.confirmation-modal__totals{align-items:center;display:flex;flex-flow:row;justify-content:space-between;margin:0;width:100%}.confirmation-modal__totals-title{color:#4b5563;font-size:1rem;font-weight:700}.confirmation-modal__totals-discounted{align-items:flex-end;display:flex;flex-flow:column}.confirmation-modal__totals-discounted .confirmation-modal__discount{color:#9ca3af;font-size:.75rem}.confirmation-modal__actions{display:flex;flex-flow:row;gap:.5rem;justify-content:flex-end;padding-top:1rem;width:100%}\n"] }]
|
|
9896
9943
|
}], ctorParameters: () => [{ type: ConfirmationOrderModalService }, { type: TicketSelectionDiscountService }, { type: TicketSelectionTotalsService }, { type: TicketSelectionService }, { type: PerformanceBookingDataService }], propDecorators: { modalTitle: [{
|
|
9897
9944
|
type: Input
|
|
9898
9945
|
}], confirmButtonText: [{
|