CouponCell.mjs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { createVNode as _createVNode } from "vue";
  2. import { defineComponent } from "vue";
  3. import { isDef, truthProp, makeArrayProp, makeStringProp, makeNumericProp, createNamespace } from "../utils/index.mjs";
  4. import { Cell } from "../cell/index.mjs";
  5. const [name, bem, t] = createNamespace("coupon-cell");
  6. const couponCellProps = {
  7. title: String,
  8. border: truthProp,
  9. editable: truthProp,
  10. coupons: makeArrayProp(),
  11. currency: makeStringProp("\xA5"),
  12. chosenCoupon: makeNumericProp(-1)
  13. };
  14. function formatValue({
  15. coupons,
  16. chosenCoupon,
  17. currency
  18. }) {
  19. const coupon = coupons[+chosenCoupon];
  20. if (coupon) {
  21. let value = 0;
  22. if (isDef(coupon.value)) {
  23. ({
  24. value
  25. } = coupon);
  26. } else if (isDef(coupon.denominations)) {
  27. value = coupon.denominations;
  28. }
  29. return `-${currency} ${(value / 100).toFixed(2)}`;
  30. }
  31. return coupons.length === 0 ? t("noCoupon") : t("count", coupons.length);
  32. }
  33. var stdin_default = defineComponent({
  34. name,
  35. props: couponCellProps,
  36. setup(props) {
  37. return () => {
  38. const selected = props.coupons[+props.chosenCoupon];
  39. return _createVNode(Cell, {
  40. "class": bem(),
  41. "value": formatValue(props),
  42. "title": props.title || t("title"),
  43. "border": props.border,
  44. "isLink": props.editable,
  45. "valueClass": bem("value", {
  46. selected
  47. })
  48. }, null);
  49. };
  50. }
  51. });
  52. export {
  53. stdin_default as default
  54. };