UNPKG

@olo/pay-react-native

Version:
98 lines 6.02 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // Copyright © 2022 Olo Inc. All rights reserved. // This software is made available under the Olo Pay SDK License (See LICENSE.md file) import React, { useCallback, useImperativeHandle } from 'react'; import { forwardRef, useRef } from 'react'; import { Platform, requireNativeComponent, StyleSheet, View } from 'react-native'; import usePaymentCardDetailsFormManager from '../hooks/usePaymentCardDetailsFormManager'; import { sharedComponentStyles } from './styles/sharedStyles'; import { sharedComponentValues } from './definitions/sharedValues'; const CardDetailsNative = requireNativeComponent('PaymentCardDetailsForm'); const ViewManagerMethods = usePaymentCardDetailsFormManager(); export const PaymentCardDetailsForm = /*#__PURE__*/forwardRef(({ cardStyles, componentStyles, isEnabled, onFormComplete, viewProps, placeholders, ...props }, ref) => { const inputRef = useRef(null); const onFormCompleteEventHandler = useCallback(event => { const cardEvent = event.nativeEvent; const formComplete = { isValid: cardEvent.isValid }; onFormComplete === null || onFormComplete === void 0 || onFormComplete(formComplete); }, [onFormComplete]); const createPaymentMethod = async () => { try { return await ViewManagerMethods.createPaymentMethod(inputRef); } catch (error) { throw error; } }; const blur = async () => { return await ViewManagerMethods.blur(inputRef); }; const clear = async () => { return await ViewManagerMethods.clear(inputRef); }; const focus = async () => { return await ViewManagerMethods.focus(inputRef); }; useImperativeHandle(ref, () => ({ blur, clear, createPaymentMethod, focus })); return /*#__PURE__*/React.createElement(View, _extends({ style: componentStyles }, viewProps), /*#__PURE__*/React.createElement(CardDetailsNative, _extends({ style: [defaultStyles.cardDetailsForm, cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.styles], ref: inputRef, onFormCompleteEvent: onFormCompleteEventHandler, isEnabled: isEnabled, placeholders: { number: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.number) ?? sharedComponentValues.defaultValues.formNumberPlaceholder, expiration: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.expiration) ?? sharedComponentValues.defaultValues.expirationPlaceholder, cvv: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.cvv) ?? sharedComponentValues.defaultValues.cvvPlaceholder, postalCode: (placeholders === null || placeholders === void 0 ? void 0 : placeholders.postalCode) ?? sharedComponentValues.defaultValues.postalCodePlaceholder }, cardStyles: { backgroundColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.backgroundColor) ?? sharedComponentStyles.defaultStyles.backgroundColor, cursorColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.cursorColor) ?? sharedComponentStyles.defaultStyles.cursorColor, // Android Only borderColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.borderColor) ?? sharedComponentStyles.defaultStyles.borderColor, borderWidth: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.borderWidth) ?? sharedComponentStyles.defaultStyles.borderWidth, cornerRadius: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.cornerRadius) ?? sharedComponentStyles.defaultStyles.cornerRadius, textColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.textColor) ?? sharedComponentStyles.defaultStyles.textColor, placeholderColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.placeholderColor) ?? sharedComponentStyles.defaultStyles.placeholderColor, fontSize: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.fontSize) ?? sharedComponentStyles.defaultStyles.fontSize, textPaddingLeft: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.textPaddingLeft) ?? sharedComponentStyles.defaultStyles.paddingLeft, textPaddingRight: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.textPaddingRight) ?? sharedComponentStyles.defaultStyles.paddingRight, fieldDividerColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.fieldDividerColor) ?? sharedComponentStyles.defaultStyles.dividerColor, fieldDividerWidth: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.fieldDividerWidth) ?? sharedComponentStyles.defaultStyles.dividerWidth, focusedPlaceholderColor: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.focusedPlaceholderColor) ?? sharedComponentStyles.defaultStyles.focusedPlaceholderColor, cardElevation: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.cardElevation) ?? sharedComponentStyles.defaultStyles.cardElevation, fontFamily: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.fontFamily) ?? sharedComponentStyles.defaultStyles.fontFamily, fontWeight: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.fontWeight) ?? sharedComponentStyles.defaultStyles.fontWeight, italic: (cardStyles === null || cardStyles === void 0 ? void 0 : cardStyles.italic) ?? sharedComponentStyles.defaultStyles.italic } }, props))); }); const defaultStyles = StyleSheet.create({ cardDetailsForm: { ...Platform.select({ android: { minHeight: 310 }, default: { minHeight: 190 } }) } }); //# sourceMappingURL=PaymentCardDetailsForm.js.map