import FormFieldGroup from '../Components/FormFieldGroup'; class CardView { constructor( selector, elements, manager ) { this.el = elements; this.manager = manager; this.group = new FormFieldGroup( { baseSelector: '.ppcp-axo-payment-container', contentSelector: selector, template: ( data ) => { const selectOtherPaymentMethod = () => { if ( ! this.manager.hideGatewaySelection ) { return ''; } return `

Select other payment method

`; }; if ( data.isEmpty() ) { return `
${ selectOtherPaymentMethod() }
`; } const expiry = data.value( 'expiry' ).split( '-' ); const cardIcons = { VISA: 'visa-light.svg', MASTER_CARD: 'mastercard-light.svg', AMEX: 'amex-light.svg', DISCOVER: 'discover-light.svg', DINERS: 'dinersclub-light.svg', JCB: 'jcb-light.svg', UNIONPAY: 'unionpay-light.svg', }; return `

Card Details

Edit
${ data.value( 'brand' ) }
${ data.value( 'lastDigits' ) ? '**** **** **** ' + data.value( 'lastDigits' ) : '' }
${ expiry[ 1 ] }/${ expiry[ 0 ] }
${ data.value( 'name' ) }
${ selectOtherPaymentMethod() }
`; }, fields: { brand: { valuePath: 'card.paymentSource.card.brand', }, expiry: { valuePath: 'card.paymentSource.card.expiry', }, lastDigits: { valuePath: 'card.paymentSource.card.lastDigits', }, name: { valuePath: 'card.paymentSource.card.name', }, }, } ); } activate() { this.group.activate(); } deactivate() { this.group.deactivate(); } refresh() { this.group.refresh(); } setData( data ) { this.group.setData( data ); } toSubmitData( data ) { const name = this.group.dataValue( 'name' ); const { firstName, lastName } = this.splitName( name ); data.billing_first_name = firstName; data.billing_last_name = lastName ? lastName : firstName; return this.group.toSubmitData( data ); } splitName( fullName ) { const nameParts = fullName.trim().split( ' ' ); const firstName = nameParts[ 0 ]; const lastName = nameParts.length > 1 ? nameParts[ nameParts.length - 1 ] : ''; return { firstName, lastName }; } } export default CardView;