@betterstore/react 0.2.42 → 0.2.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @betterstore/sdk
2
2
 
3
+ ## 0.2.43
4
+
5
+ ### Patch Changes
6
+
7
+ - variant handeling bug fixes
8
+
3
9
  ## 0.2.42
4
10
 
5
11
  ### Patch Changes
@@ -9,11 +9,11 @@ interface PaymentFormProps {
9
9
  onDoubleBack: () => void;
10
10
  contactEmail: string;
11
11
  shippingAddress: string;
12
- shippingProvider: string;
12
+ shippingName: string;
13
13
  shippingPrice: string;
14
14
  checkoutAppearance?: AppearanceConfig;
15
15
  fonts?: StripeElementsOptions["fonts"];
16
16
  locale?: StripeElementLocale;
17
17
  }
18
- export default function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingProvider, shippingPrice, checkoutAppearance, fonts, locale, }: PaymentFormProps): React.JSX.Element;
18
+ export default function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingName, shippingPrice, checkoutAppearance, fonts, locale, }: PaymentFormProps): React.JSX.Element;
19
19
  export {};
package/dist/index.cjs.js CHANGED
@@ -3274,7 +3274,7 @@ const CheckoutEmbed$2 = {
3274
3274
  day: "den",
3275
3275
  days: "dny",
3276
3276
  estimatedDeliveryDate: "Odhadované datum dodání:",
3277
- shipTo: "Ship to:",
3277
+ address: "Adresa:",
3278
3278
  shipping: "Doprava:",
3279
3279
  title: "Přeprava",
3280
3280
  description: {
@@ -3341,7 +3341,7 @@ const CheckoutEmbed$1 = {
3341
3341
  Shipping: {
3342
3342
  title: "Shipping",
3343
3343
  change: "Change",
3344
- shipTo: "Ship to:",
3344
+ address: "Address:",
3345
3345
  contact: "Contact:",
3346
3346
  button: "Continue to checkout",
3347
3347
  back: "Back to information",
@@ -18547,12 +18547,12 @@ function deepEqual(object1, object2) {
18547
18547
  }
18548
18548
 
18549
18549
  const useDeepEqualEffect = (effect, deps) => {
18550
- const ref = React.useRef(deps);
18550
+ const ref = React__namespace.useRef(deps);
18551
18551
  if (!deepEqual(deps, ref.current)) {
18552
18552
  ref.current = deps;
18553
18553
  }
18554
18554
  // eslint-disable-next-line react-hooks/exhaustive-deps
18555
- React.useEffect(effect, ref.current);
18555
+ React__namespace.useEffect(effect, ref.current);
18556
18556
  };
18557
18557
 
18558
18558
  /**
@@ -20537,6 +20537,7 @@ function useForm(props = {}) {
20537
20537
  ...data,
20538
20538
  isReady: true,
20539
20539
  }));
20540
+ control._formState.isReady = true;
20540
20541
  return sub;
20541
20542
  }, [control]);
20542
20543
  React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);
@@ -34241,7 +34242,7 @@ function PaymentElement({ paymentSecret, checkoutAppearance, locale, fonts, onSu
34241
34242
  }
34242
34243
  var PaymentElement$1 = React.memo(PaymentElement);
34243
34244
 
34244
- function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingProvider, shippingPrice, checkoutAppearance, fonts, locale, }) {
34245
+ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingName, shippingPrice, checkoutAppearance, fonts, locale, }) {
34245
34246
  const [isSubmitting, setIsSubmitting] = React.useState(false);
34246
34247
  const { t } = useTranslation();
34247
34248
  return (React.createElement("div", { className: "space-y-6" },
@@ -34257,7 +34258,7 @@ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack,
34257
34258
  React.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
34258
34259
  React.createElement("div", { className: "flex items-center justify-between text-sm" },
34259
34260
  React.createElement("p", null,
34260
- React.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipTo")),
34261
+ React.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
34261
34262
  " ",
34262
34263
  React.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
34263
34264
  React.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
@@ -34266,7 +34267,7 @@ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack,
34266
34267
  React.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipping")),
34267
34268
  " ",
34268
34269
  React.createElement("span", { className: "text-muted-foreground" },
34269
- shippingProvider,
34270
+ shippingName,
34270
34271
  " \u00B7 ",
34271
34272
  shippingPrice)),
34272
34273
  React.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
@@ -34354,7 +34355,7 @@ function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, cont
34354
34355
  React.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change"))),
34355
34356
  React.createElement("div", { className: "flex items-center justify-between text-sm" },
34356
34357
  React.createElement("p", null,
34357
- React.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipTo")),
34358
+ React.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
34358
34359
  " ",
34359
34360
  React.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
34360
34361
  React.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
@@ -34472,6 +34473,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34472
34473
  React.useEffect(() => {
34473
34474
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
34474
34475
  if (customer && !((_a = formData.customer) === null || _a === void 0 ? void 0 : _a.email)) {
34476
+ const step = customer.id ? "shipping" : "customer";
34475
34477
  setFormData(Object.assign(Object.assign({}, formData), { customerId: customer.id, customer: {
34476
34478
  firstName: (_d = (_c = (_b = customer.address) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.split(" ")[0]) !== null && _d !== void 0 ? _d : "",
34477
34479
  lastName: (_g = (_f = (_e = customer.address) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.split(" ")[1]) !== null && _g !== void 0 ? _g : "",
@@ -34486,6 +34488,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34486
34488
  countryCode: (_x = (_w = customer.address) === null || _w === void 0 ? void 0 : _w.countryCode) !== null && _x !== void 0 ? _x : "",
34487
34489
  },
34488
34490
  } }));
34491
+ setStep(step);
34489
34492
  }
34490
34493
  }, [customer]);
34491
34494
  React.useEffect(() => {
@@ -34580,7 +34583,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34580
34583
  step === "shipping" && formData.customer && (React.createElement(motion.div, Object.assign({ key: "shipping" }, motionSettings, { className: "absolute w-full" }),
34581
34584
  React.createElement(ShippingMethodForm, { setFormData: setFormData, formData: formData, shippingRates: shippingRates, initialData: formData.shipping, onSubmit: handleShippingSubmit, onBack: handleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), currency: currency, exchangeRate: exchangeRate, locale: locale, countryCode: formData.customer.address.countryCode }))),
34582
34585
  step === "payment" && formData.customer && formData.shipping && (React.createElement(motion.div, Object.assign({ key: "payment" }, motionSettings, { className: "absolute w-full" }),
34583
- React.createElement(PaymentForm, { locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), shippingProvider: formData.shipping.provider, shippingPrice: storeHelpers.formatPrice(formData.shipping.price, currency, exchangeRate) }))))));
34586
+ React.createElement(PaymentForm, { locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), shippingName: formData.shipping.name, shippingPrice: storeHelpers.formatPrice(formData.shipping.price, currency, exchangeRate) }))))));
34584
34587
  }
34585
34588
 
34586
34589
  function CheckoutFormLoading() {
@@ -34609,7 +34612,13 @@ function CheckoutSummary({ lineItems, shipping, tax, currency, cancelUrl, exchan
34609
34612
  const { t } = useTranslation();
34610
34613
  const subtotal = lineItems.reduce((acc, item) => {
34611
34614
  var _a, _b;
34612
- const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => variant.variantOptions === item.variantOptions);
34615
+ const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => {
34616
+ if (!variant.variantOptions || !item.variantOptions)
34617
+ return false;
34618
+ if (variant.variantOptions.length !== item.variantOptions.length)
34619
+ return false;
34620
+ return variant.variantOptions.every((vOpt) => item.variantOptions.some((iOpt) => vOpt.name === iOpt.name && vOpt.value === iOpt.value));
34621
+ });
34613
34622
  const productItem = variant || item.product;
34614
34623
  return acc + ((_b = productItem === null || productItem === void 0 ? void 0 : productItem.priceInCents) !== null && _b !== void 0 ? _b : 0) * item.quantity;
34615
34624
  }, 0);
@@ -34653,7 +34662,13 @@ function CheckoutSummary({ lineItems, shipping, tax, currency, cancelUrl, exchan
34653
34662
  grid: isOpen,
34654
34663
  }) }, lineItems.map((item, index) => {
34655
34664
  var _a, _b, _c, _d, _e;
34656
- const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => variant.variantOptions === item.variantOptions);
34665
+ const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => {
34666
+ if (!variant.variantOptions || !item.variantOptions)
34667
+ return false;
34668
+ if (variant.variantOptions.length !== item.variantOptions.length)
34669
+ return false;
34670
+ return variant.variantOptions.every((vOpt) => item.variantOptions.some((iOpt) => vOpt.name === iOpt.name && vOpt.value === iOpt.value));
34671
+ });
34657
34672
  const productItem = variant || item.product;
34658
34673
  return (React.createElement("div", { key: index, className: "flex items-center" },
34659
34674
  React.createElement("div", { className: "relative" },
package/dist/index.mjs CHANGED
@@ -3251,7 +3251,7 @@ const CheckoutEmbed$2 = {
3251
3251
  day: "den",
3252
3252
  days: "dny",
3253
3253
  estimatedDeliveryDate: "Odhadované datum dodání:",
3254
- shipTo: "Ship to:",
3254
+ address: "Adresa:",
3255
3255
  shipping: "Doprava:",
3256
3256
  title: "Přeprava",
3257
3257
  description: {
@@ -3318,7 +3318,7 @@ const CheckoutEmbed$1 = {
3318
3318
  Shipping: {
3319
3319
  title: "Shipping",
3320
3320
  change: "Change",
3321
- shipTo: "Ship to:",
3321
+ address: "Address:",
3322
3322
  contact: "Contact:",
3323
3323
  button: "Continue to checkout",
3324
3324
  back: "Back to information",
@@ -18524,12 +18524,12 @@ function deepEqual(object1, object2) {
18524
18524
  }
18525
18525
 
18526
18526
  const useDeepEqualEffect = (effect, deps) => {
18527
- const ref = useRef(deps);
18527
+ const ref = React.useRef(deps);
18528
18528
  if (!deepEqual(deps, ref.current)) {
18529
18529
  ref.current = deps;
18530
18530
  }
18531
18531
  // eslint-disable-next-line react-hooks/exhaustive-deps
18532
- useEffect(effect, ref.current);
18532
+ React.useEffect(effect, ref.current);
18533
18533
  };
18534
18534
 
18535
18535
  /**
@@ -20514,6 +20514,7 @@ function useForm(props = {}) {
20514
20514
  ...data,
20515
20515
  isReady: true,
20516
20516
  }));
20517
+ control._formState.isReady = true;
20517
20518
  return sub;
20518
20519
  }, [control]);
20519
20520
  React__default.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);
@@ -34218,7 +34219,7 @@ function PaymentElement({ paymentSecret, checkoutAppearance, locale, fonts, onSu
34218
34219
  }
34219
34220
  var PaymentElement$1 = memo$1(PaymentElement);
34220
34221
 
34221
- function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingProvider, shippingPrice, checkoutAppearance, fonts, locale, }) {
34222
+ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingName, shippingPrice, checkoutAppearance, fonts, locale, }) {
34222
34223
  const [isSubmitting, setIsSubmitting] = useState(false);
34223
34224
  const { t } = useTranslation();
34224
34225
  return (React__default.createElement("div", { className: "space-y-6" },
@@ -34234,7 +34235,7 @@ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack,
34234
34235
  React__default.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
34235
34236
  React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
34236
34237
  React__default.createElement("p", null,
34237
- React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipTo")),
34238
+ React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
34238
34239
  " ",
34239
34240
  React__default.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
34240
34241
  React__default.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
@@ -34243,7 +34244,7 @@ function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack,
34243
34244
  React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipping")),
34244
34245
  " ",
34245
34246
  React__default.createElement("span", { className: "text-muted-foreground" },
34246
- shippingProvider,
34247
+ shippingName,
34247
34248
  " \u00B7 ",
34248
34249
  shippingPrice)),
34249
34250
  React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
@@ -34331,7 +34332,7 @@ function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, cont
34331
34332
  React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change"))),
34332
34333
  React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
34333
34334
  React__default.createElement("p", null,
34334
- React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipTo")),
34335
+ React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
34335
34336
  " ",
34336
34337
  React__default.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
34337
34338
  React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
@@ -34449,6 +34450,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34449
34450
  useEffect(() => {
34450
34451
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
34451
34452
  if (customer && !((_a = formData.customer) === null || _a === void 0 ? void 0 : _a.email)) {
34453
+ const step = customer.id ? "shipping" : "customer";
34452
34454
  setFormData(Object.assign(Object.assign({}, formData), { customerId: customer.id, customer: {
34453
34455
  firstName: (_d = (_c = (_b = customer.address) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.split(" ")[0]) !== null && _d !== void 0 ? _d : "",
34454
34456
  lastName: (_g = (_f = (_e = customer.address) === null || _e === void 0 ? void 0 : _e.name) === null || _f === void 0 ? void 0 : _f.split(" ")[1]) !== null && _g !== void 0 ? _g : "",
@@ -34463,6 +34465,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34463
34465
  countryCode: (_x = (_w = customer.address) === null || _w === void 0 ? void 0 : _w.countryCode) !== null && _x !== void 0 ? _x : "",
34464
34466
  },
34465
34467
  } }));
34468
+ setStep(step);
34466
34469
  }
34467
34470
  }, [customer]);
34468
34471
  useEffect(() => {
@@ -34557,7 +34560,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
34557
34560
  step === "shipping" && formData.customer && (React__default.createElement(motion.div, Object.assign({ key: "shipping" }, motionSettings, { className: "absolute w-full" }),
34558
34561
  React__default.createElement(ShippingMethodForm, { setFormData: setFormData, formData: formData, shippingRates: shippingRates, initialData: formData.shipping, onSubmit: handleShippingSubmit, onBack: handleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), currency: currency, exchangeRate: exchangeRate, locale: locale, countryCode: formData.customer.address.countryCode }))),
34559
34562
  step === "payment" && formData.customer && formData.shipping && (React__default.createElement(motion.div, Object.assign({ key: "payment" }, motionSettings, { className: "absolute w-full" }),
34560
- React__default.createElement(PaymentForm, { locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), shippingProvider: formData.shipping.provider, shippingPrice: storeHelpers.formatPrice(formData.shipping.price, currency, exchangeRate) }))))));
34563
+ React__default.createElement(PaymentForm, { locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), shippingName: formData.shipping.name, shippingPrice: storeHelpers.formatPrice(formData.shipping.price, currency, exchangeRate) }))))));
34561
34564
  }
34562
34565
 
34563
34566
  function CheckoutFormLoading() {
@@ -34586,7 +34589,13 @@ function CheckoutSummary({ lineItems, shipping, tax, currency, cancelUrl, exchan
34586
34589
  const { t } = useTranslation();
34587
34590
  const subtotal = lineItems.reduce((acc, item) => {
34588
34591
  var _a, _b;
34589
- const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => variant.variantOptions === item.variantOptions);
34592
+ const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => {
34593
+ if (!variant.variantOptions || !item.variantOptions)
34594
+ return false;
34595
+ if (variant.variantOptions.length !== item.variantOptions.length)
34596
+ return false;
34597
+ return variant.variantOptions.every((vOpt) => item.variantOptions.some((iOpt) => vOpt.name === iOpt.name && vOpt.value === iOpt.value));
34598
+ });
34590
34599
  const productItem = variant || item.product;
34591
34600
  return acc + ((_b = productItem === null || productItem === void 0 ? void 0 : productItem.priceInCents) !== null && _b !== void 0 ? _b : 0) * item.quantity;
34592
34601
  }, 0);
@@ -34630,7 +34639,13 @@ function CheckoutSummary({ lineItems, shipping, tax, currency, cancelUrl, exchan
34630
34639
  grid: isOpen,
34631
34640
  }) }, lineItems.map((item, index) => {
34632
34641
  var _a, _b, _c, _d, _e;
34633
- const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => variant.variantOptions === item.variantOptions);
34642
+ const variant = (_a = item.product) === null || _a === void 0 ? void 0 : _a.productVariants.find((variant) => {
34643
+ if (!variant.variantOptions || !item.variantOptions)
34644
+ return false;
34645
+ if (variant.variantOptions.length !== item.variantOptions.length)
34646
+ return false;
34647
+ return variant.variantOptions.every((vOpt) => item.variantOptions.some((iOpt) => vOpt.name === iOpt.name && vOpt.value === iOpt.value));
34648
+ });
34634
34649
  const productItem = variant || item.product;
34635
34650
  return (React__default.createElement("div", { key: index, className: "flex items-center" },
34636
34651
  React__default.createElement("div", { className: "relative" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betterstore/react",
3
- "version": "0.2.42",
3
+ "version": "0.2.43",
4
4
  "description": "E-commerce for Developers",
5
5
  "private": false,
6
6
  "publishConfig": {