UNPKG

@react-vant-next/campaign

Version:

React Mobile UI Components based on Vant UI - Next Generation

58 lines (53 loc) 3.17 kB
'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