@react-vant-next/campaign
Version:
React Mobile UI Components based on Vant UI - Next Generation
58 lines (53 loc) • 3.17 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var ui = require('@react-vant-next/ui');
var utils = require('@react-vant-next/utils');
var cls = require('clsx');
var React = require('react');
function getDate(timeStamp) {
const date = new Date(timeStamp * 1000);
return `${date.getFullYear()}.${utils.padZero(date.getMonth() + 1)}.${utils.padZero(date.getDate())}`;
}
function formatDiscount(discount) {
return (discount / 10).toFixed(discount % 10 === 0 ? 0 : 1);
}
function formatAmount(amount) {
return (amount / 100).toFixed(amount % 100 === 0 ? 0 : amount % 10 === 0 ? 1 : 2);
}
const [bem] = utils.createNamespace("coupon");
const Coupon = (p) => {
const props = utils.mergeProps(p, {
currency: "¥",
});
const { locale } = React.use(ui.ConfigProviderContext);
const validPeriod = React.useMemo(() => {
const { startAt, endAt } = props.coupon;
return `${getDate(startAt)} - ${getDate(endAt)}`;
}, [props.coupon]);
const faceAmount = React.useMemo(() => {
const { coupon, currency } = props;
if (coupon.valueDesc) {
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [coupon.valueDesc, " ", jsxRuntime.jsx("span", { children: coupon.unitDesc || "" })] }));
}
if (coupon.denominations) {
const denominations = formatAmount(coupon.denominations);
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { children: currency }), " ", "$", denominations] }));
}
if (coupon.discount) {
return locale.vanCoupon.discount(+formatDiscount(coupon.discount));
}
return "";
}, [props.coupon, props.coupon]);
const conditionMessage = React.useMemo(() => {
const condition = formatAmount(props.coupon.originCondition || 0);
return condition === "0"
? locale.vanCoupon.unlimited
: locale.vanCoupon.condition(+condition);
}, [props.coupon.originCondition]);
const { chosen, coupon, disabled } = props;
const description = (disabled && coupon.reason) || coupon.description;
return (jsxRuntime.jsxs("div", { className: cls(props.className, bem({ disabled })), style: props.style, onClick: props.onClick, children: [jsxRuntime.jsxs("div", { className: cls(bem("content")), children: [jsxRuntime.jsxs("div", { className: cls(bem("head")), children: [jsxRuntime.jsx("h2", { className: cls(bem("amount")), children: faceAmount }), jsxRuntime.jsx("p", { className: cls(bem("condition")), children: coupon.condition || conditionMessage })] }), jsxRuntime.jsxs("div", { className: cls(bem("body")), children: [jsxRuntime.jsx("p", { className: cls(bem("name")), children: coupon.name }), jsxRuntime.jsx("p", { className: cls(bem("valid")), children: validPeriod }), !disabled && (jsxRuntime.jsx(ui.Checkbox, { className: cls(bem("corner")), checked: chosen }))] })] }), description && jsxRuntime.jsx("p", { className: cls(bem("description")), children: description })] }));
};
exports.default = Coupon;
//# sourceMappingURL=Coupon.js.map