@vendasta/store
Version:
Components and data for Store
60 lines • 7.76 kB
JavaScript
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==