{"version":3,"file":"NewCreditCardForm.mjs","names":["React","useState","useTranslation","Field","FinalField","UdpFlexbox","UdpContainerQueryGrid","UdpTextInput","UdpCheckbox","formatCreditCardNumber","formatCVC","formatExpirationDate","CreditCardAdornment","PaymentDetails","GRID_GAPS","breakpoint","NewCreditCardFormProps","isFormDisabled","paymentDetails","allowSaveMethod","NewCreditCardForm","t0","$","_c","t1","undefined","accountNumber","t","creditCardNumberInput","setCreditCardNumberInput","saveCardLabel","defaultValue","t2","t3","label","autocomplete","disabled","t4","t5","ComponentType","_temp","t6","value","t7","t8","input","meta","String","touched","error","e","onChange","target","t9","Symbol","for","0","320","t10","t11","t12","hint","t13","t14","_temp2","t15","t16","t17","t18","t19","_temp3","t20","t21","_temp4","t22"],"sources":["../../../../src/utilities/form/paymentForm/NewCreditCardForm.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field as FinalField } from 'react-final-form';\nimport { Field } from '../Field';\nimport { UdpFlexbox } from '../../../UI/fluent-web-components/UdpFlexbox';\nimport { UdpContainerQueryGrid } from '../../../UI/fluent-web-components/UdpContainerQueryGrid';\nimport { UdpTextInput } from '../../../UI/fluent-web-components/UdpTextInput';\nimport { UdpCheckbox } from '../../../UI/fluent-web-components/UdpCheckbox';\nimport {\n  formatCreditCardNumber,\n  formatCVC,\n  formatExpirationDate,\n} from './CreditCardUtils';\nimport { CreditCardAdornment } from './CreditCardAdornment';\nimport { PaymentDetails } from './AccountPayment.model';\n\n// The UdpContainerQueryGrid wrapper types gaps as numeric-only, but the\n// underlying component also accepts spacing names (\"sm\"). Cast at the use\n// site rather than changing the shared wrapper (out of scope for V2).\nconst GRID_GAPS = { 0: 'sm' } as unknown as { [breakpoint: number]: number };\n\nexport interface NewCreditCardFormProps {\n  isFormDisabled: boolean;\n  paymentDetails: PaymentDetails;\n  /** When false, hides the \"save this card\" checkbox (guest flows). */\n  allowSaveMethod?: boolean;\n}\n\n/**\n * Manual credit-card entry form. Used when the configured vendor doesn't have\n * a hosted-payment page, or when the user selected \"Other / use a different\n * card\" while saved methods were available.\n *\n * NOTE: This form collects raw PAN/CVV/expiry in our DOM. Retained for\n * testing until hosted pages are provisioned for every supported vendor.\n */\nexport const NewCreditCardForm = ({\n  isFormDisabled,\n  paymentDetails,\n  allowSaveMethod = true,\n}: NewCreditCardFormProps) => {\n  const { accountNumber } = paymentDetails || {};\n  const { t } = useTranslation();\n  const [creditCardNumberInput, setCreditCardNumberInput] = useState('');\n\n  const saveCardLabel = accountNumber\n    ? t('payments.card.saveToAccount', {\n        defaultValue: 'Save this card to account {{accountNumber}}',\n        accountNumber,\n      })\n    : t('common.save', { defaultValue: 'Save' });\n\n  return (\n    <UdpFlexbox direction=\"column\" gap=\"sm\" wrap=\"nowrap\">\n      <Field\n        component={UdpTextInput as React.ComponentType<any>}\n        ComponentProps={{\n          label: t('payments.card.cardholder', { defaultValue: 'Cardholder' }),\n          autocomplete: 'cc-name',\n          disabled: isFormDisabled,\n        }}\n        name=\"nameOnCard\"\n        initialValue=\"\"\n        required={!isFormDisabled}\n        onChange={() => {}}\n      />\n\n      <FinalField\n        name=\"cardNumber\"\n        initialValue=\"\"\n        format={formatCreditCardNumber}\n        // Raw FinalField (the brand adornment needs the render prop), so the\n        // required validation the Field wrapper would add is replicated here.\n        validate={(value): string | undefined =>\n          !isFormDisabled && !value\n            ? t('common.required', { defaultValue: 'Required' })\n            : undefined\n        }\n      >\n        {({ input, meta }) => (\n          <UdpTextInput\n            label={t('payments.card.cardNumber', { defaultValue: 'Card Number' })}\n            autocomplete=\"cc-number\"\n            value={String(input.value ?? '')}\n            error={meta.touched && meta.error ? meta.error : undefined}\n            onChange={(e) => {\n              input.onChange(e);\n              setCreditCardNumberInput(String(e.target.value ?? ''));\n            }}\n            disabled={isFormDisabled}\n            required={!isFormDisabled}\n          >\n            <div slot=\"start\">\n              <CreditCardAdornment creditCardNumberInput={creditCardNumberInput} />\n            </div>\n          </UdpTextInput>\n        )}\n      </FinalField>\n\n      <UdpContainerQueryGrid columns={{ 0: 1, 320: 2 }} gaps={GRID_GAPS}>\n        <Field\n          component={UdpTextInput as React.ComponentType<any>}\n          ComponentProps={{\n            label: t('payments.card.expiryDate', { defaultValue: 'Expiry Date' }),\n            hint: t('payments.card.expiryHint', { defaultValue: 'MM/YY' }),\n            autocomplete: 'cc-exp',\n            disabled: isFormDisabled,\n          }}\n          name=\"expiryDate\"\n          initialValue=\"\"\n          format={formatExpirationDate}\n          required={!isFormDisabled}\n          onChange={() => {}}\n        />\n\n        <Field\n          component={UdpTextInput as React.ComponentType<any>}\n          ComponentProps={{\n            label: t('payments.card.cvv', { defaultValue: 'CVV' }),\n            hint: t('payments.card.cvvHint', { defaultValue: '3-digit code on back' }),\n            autocomplete: 'cc-csc',\n            disabled: isFormDisabled,\n          }}\n          name=\"cvv\"\n          initialValue=\"\"\n          format={formatCVC}\n          required={!isFormDisabled}\n          onChange={() => {}}\n        />\n      </UdpContainerQueryGrid>\n\n      {allowSaveMethod && (\n        <Field\n          component={UdpCheckbox as React.ComponentType<any>}\n          type=\"checkbox\"\n          name=\"isSaveAsNewMethod\"\n          ComponentProps={{\n            label: saveCardLabel,\n            disabled: isFormDisabled,\n          }}\n          defaultValue={false}\n          required={false}\n          onChange={() => {}}\n        />\n      )}\n    </UdpFlexbox>\n  );\n};\n"],"mappings":"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"}