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 `
Please fill in your card details.

Add card details

${selectOtherPaymentMethod()}
`; } const expiry = data.value('expiry').split('-'); const cardIcons = { 'VISA': 'visa-dark.svg', 'MASTER_CARD': 'mastercard-dark.svg', 'AMEX': 'amex.svg', 'DISCOVER': 'discover.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) { let nameParts = fullName.trim().split(' '); let firstName = nameParts[0]; let lastName = nameParts.length > 1 ? nameParts[nameParts.length - 1] : ''; return { firstName, lastName }; } } export default CardView;