@godaddy/react
Version:
The `createCheckoutSession` function creates a new checkout session with GoDaddy's commerce API.
41 lines (39 loc) • 1.57 kB
JavaScript
import { H as Button, Q as useIsPaymentDisabled, h as usePayPalProvider, o as useCheckoutContext, rt as useGoDaddyContext } from "./checkout-B7yB0DfE.js";
import "./utils-DWBfAHfx.js";
import { useCallback, useState } from "react";
import { useFormContext } from "react-hook-form";
import { jsx } from "react/jsx-runtime";
//#region src/components/checkout/payment/checkout-buttons/credit-card/paypal.tsx
function PayPalCreditCardCheckoutButton() {
const { t } = useGoDaddyContext();
const { isConfirmingCheckout } = useCheckoutContext();
const isPaymentDisabled = useIsPaymentDisabled();
const form = useFormContext();
const { cardFieldsRef, isCardFieldsReady } = usePayPalProvider();
const [isProcessing, setIsProcessing] = useState(false);
const handleSubmit = useCallback(async () => {
try {
setIsProcessing(true);
if (!await form.trigger()) {
const firstError = Object.keys(form.formState.errors)[0];
if (firstError) form.setFocus(firstError);
return;
}
if (!cardFieldsRef.current || !cardFieldsRef.current.isEligible()) return;
await cardFieldsRef.current.submit();
} catch (_error) {} finally {
setIsProcessing(false);
}
}, [form, cardFieldsRef]);
if (!isCardFieldsReady || !cardFieldsRef.current) return null;
return /* @__PURE__ */ jsx(Button, {
className: "w-full",
size: "lg",
type: "button",
onClick: handleSubmit,
disabled: isConfirmingCheckout || isPaymentDisabled || !isCardFieldsReady || isProcessing,
children: t.payment.payNow
});
}
//#endregion
export { PayPalCreditCardCheckoutButton };