UNPKG

@vendasta/store

Version:

Components and data for Store

60 lines 7.76 kB
import { Pipe } from '@angular/core'; import { DiscountType } from '@vendasta/billing'; import { formatDate, formatting } from './format-date.pipe'; import { formatDisplayPrice } from '@vendasta/core/shared'; import * as i0 from "@angular/core"; /* * Format a discount for display. * * Usage: * discount | formatDiscount * Examples: * {{ { amount: 100, discountType: 'FIXED_AMOUNT', start: '2019-12-12' } | formatDiscount: 'USD' }} * formats to: $1.00 off starting 2019-12-12 * * {{ { amount: 15, discountType: 'PERCENT', start: '2019-08-01' end: '2019-09-01' } | formatDiscount: 'USD' }} * formats to: 15% off starting 2019-08-01 to 2019-09-01 */ export class FormatDiscountPipe { transform(discount, currency) { if (!discount) { return 'N/A'; } const amount = formatDiscountAmount(discount.amount, discount.discountType, currency); let off = 'off'; switch (discount.discountType) { case DiscountType.FIXED_NUMBER_OF_UNITS: { off = 'free units'; if (discount.resetEachPeriod) { off += ' per period'; } break; } case DiscountType.FIXED_AMOUNT_PER_UNIT: { off = 'off each unit'; break; } } const start = formatDate(discount.start, formatting.date, '', true); const dateRange = discount.end.valueOf() !== new Date('0001-01-01T00:00:00Z').valueOf() ? `${start} to ${formatDate(discount.end, formatting.date, '', true)}` : start; return `${amount} ${off} starting ${dateRange}`; } } FormatDiscountPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FormatDiscountPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); FormatDiscountPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FormatDiscountPipe, name: "formatDiscount" }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: FormatDiscountPipe, decorators: [{ type: Pipe, args: [{ name: 'formatDiscount' }] }] }); function formatDiscountAmount(amount, rule, currency) { if ([DiscountType.FIXED_AMOUNT, DiscountType.FIXED_AMOUNT_PER_UNIT].includes(rule)) { return formatDisplayPrice(amount, currency, null, true, false, true, false); } else if (rule === DiscountType.PERCENT_AMOUNT) { return amount.toString() + '%'; } return amount.toString(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWRpc2NvdW50LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3N0b3JlL3NyYy9saWIvc2hhcmVkL2Zvcm1hdC1kaXNjb3VudC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBWSxZQUFZLEVBQVksTUFBTSxtQkFBbUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUUzRDs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsU0FBUyxDQUFDLFFBQWtCLEVBQUUsUUFBa0I7UUFDOUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFdEYsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFFBQVEsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUM3QixLQUFLLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN2QyxHQUFHLEdBQUcsWUFBWSxDQUFDO2dCQUNuQixJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7b0JBQzVCLEdBQUcsSUFBSSxhQUFhLENBQUM7aUJBQ3RCO2dCQUNELE1BQU07YUFDUDtZQUNELEtBQUssWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3ZDLEdBQUcsR0FBRyxlQUFlLENBQUM7Z0JBQ3RCLE1BQU07YUFDUDtTQUNGO1FBRUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQ2IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNuRSxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDdEUsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVaLE9BQU8sR0FBRyxNQUFNLElBQUksR0FBRyxhQUFhLFNBQVMsRUFBRSxDQUFDO0lBQ2xELENBQUM7OytHQTlCVSxrQkFBa0I7NkdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOztBQWtDaEMsU0FBUyxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsSUFBa0IsRUFBRSxRQUFrQjtJQUNsRixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbEYsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM3RTtTQUFNLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQyxjQUFjLEVBQUU7UUFDL0MsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO0tBQ2hDO0lBQ0QsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc2NvdW50LCBEaXNjb3VudFR5cGUsIEN1cnJlbmN5IH0gZnJvbSAnQHZlbmRhc3RhL2JpbGxpbmcnO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSwgZm9ybWF0dGluZyB9IGZyb20gJy4vZm9ybWF0LWRhdGUucGlwZSc7XG5pbXBvcnQgeyBmb3JtYXREaXNwbGF5UHJpY2UgfSBmcm9tICdAdmVuZGFzdGEvY29yZS9zaGFyZWQnO1xuXG4vKlxuICogRm9ybWF0IGEgZGlzY291bnQgZm9yIGRpc3BsYXkuXG4gKlxuICogVXNhZ2U6XG4gKiAgIGRpc2NvdW50IHwgZm9ybWF0RGlzY291bnRcbiAqIEV4YW1wbGVzOlxuICogICB7eyB7IGFtb3VudDogMTAwLCBkaXNjb3VudFR5cGU6ICdGSVhFRF9BTU9VTlQnLCBzdGFydDogJzIwMTktMTItMTInIH0gfCBmb3JtYXREaXNjb3VudDogJ1VTRCcgfX1cbiAqICAgZm9ybWF0cyB0bzogJDEuMDAgb2ZmIHN0YXJ0aW5nIDIwMTktMTItMTJcbiAqXG4gKiAgIHt7IHsgYW1vdW50OiAxNSwgZGlzY291bnRUeXBlOiAnUEVSQ0VOVCcsIHN0YXJ0OiAnMjAxOS0wOC0wMScgZW5kOiAnMjAxOS0wOS0wMScgfSB8IGZvcm1hdERpc2NvdW50OiAnVVNEJyB9fVxuICogICBmb3JtYXRzIHRvOiAxNSUgb2ZmIHN0YXJ0aW5nIDIwMTktMDgtMDEgdG8gMjAxOS0wOS0wMVxuICovXG5AUGlwZSh7IG5hbWU6ICdmb3JtYXREaXNjb3VudCcgfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXREaXNjb3VudFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKGRpc2NvdW50OiBEaXNjb3VudCwgY3VycmVuY3k6IEN1cnJlbmN5KTogc3RyaW5nIHtcbiAgICBpZiAoIWRpc2NvdW50KSB7XG4gICAgICByZXR1cm4gJ04vQSc7XG4gICAgfVxuXG4gICAgY29uc3QgYW1vdW50ID0gZm9ybWF0RGlzY291bnRBbW91bnQoZGlzY291bnQuYW1vdW50LCBkaXNjb3VudC5kaXNjb3VudFR5cGUsIGN1cnJlbmN5KTtcblxuICAgIGxldCBvZmYgPSAnb2ZmJztcbiAgICBzd2l0Y2ggKGRpc2NvdW50LmRpc2NvdW50VHlwZSkge1xuICAgICAgY2FzZSBEaXNjb3VudFR5cGUuRklYRURfTlVNQkVSX09GX1VOSVRTOiB7XG4gICAgICAgIG9mZiA9ICdmcmVlIHVuaXRzJztcbiAgICAgICAgaWYgKGRpc2NvdW50LnJlc2V0RWFjaFBlcmlvZCkge1xuICAgICAgICAgIG9mZiArPSAnIHBlciBwZXJpb2QnO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBEaXNjb3VudFR5cGUuRklYRURfQU1PVU5UX1BFUl9VTklUOiB7XG4gICAgICAgIG9mZiA9ICdvZmYgZWFjaCB1bml0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBmb3JtYXREYXRlKGRpc2NvdW50LnN0YXJ0LCBmb3JtYXR0aW5nLmRhdGUsICcnLCB0cnVlKTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPVxuICAgICAgZGlzY291bnQuZW5kLnZhbHVlT2YoKSAhPT0gbmV3IERhdGUoJzAwMDEtMDEtMDFUMDA6MDA6MDBaJykudmFsdWVPZigpXG4gICAgICAgID8gYCR7c3RhcnR9IHRvICR7Zm9ybWF0RGF0ZShkaXNjb3VudC5lbmQsIGZvcm1hdHRpbmcuZGF0ZSwgJycsIHRydWUpfWBcbiAgICAgICAgOiBzdGFydDtcblxuICAgIHJldHVybiBgJHthbW91bnR9ICR7b2ZmfSBzdGFydGluZyAke2RhdGVSYW5nZX1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdERpc2NvdW50QW1vdW50KGFtb3VudDogbnVtYmVyLCBydWxlOiBEaXNjb3VudFR5cGUsIGN1cnJlbmN5OiBDdXJyZW5jeSk6IHN0cmluZyB7XG4gIGlmIChbRGlzY291bnRUeXBlLkZJWEVEX0FNT1VOVCwgRGlzY291bnRUeXBlLkZJWEVEX0FNT1VOVF9QRVJfVU5JVF0uaW5jbHVkZXMocnVsZSkpIHtcbiAgICByZXR1cm4gZm9ybWF0RGlzcGxheVByaWNlKGFtb3VudCwgY3VycmVuY3ksIG51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7XG4gIH0gZWxzZSBpZiAocnVsZSA9PT0gRGlzY291bnRUeXBlLlBFUkNFTlRfQU1PVU5UKSB7XG4gICAgcmV0dXJuIGFtb3VudC50b1N0cmluZygpICsgJyUnO1xuICB9XG4gIHJldHVybiBhbW91bnQudG9TdHJpbmcoKTtcbn1cbiJdfQ==