mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 10:55:00 +08:00
Add memoizing and improve the code quality of the card change button
This commit is contained in:
parent
4b2da479f3
commit
c2831c2ab0
1 changed files with 58 additions and 0 deletions
|
@ -0,0 +1,58 @@
|
|||
import { createElement, useEffect, createRoot } from '@wordpress/element';
|
||||
|
||||
const CardChangeButton = ( { onChangeButtonClick } ) =>
|
||||
createElement(
|
||||
'button',
|
||||
{
|
||||
className: 'wc-block-checkout-axo-block-card__edit',
|
||||
'aria-label': 'Change billing details',
|
||||
type: 'button',
|
||||
onClick: onChangeButtonClick,
|
||||
},
|
||||
'Change'
|
||||
);
|
||||
|
||||
const CardChangeButtonManager = ( { onChangeButtonClick } ) => {
|
||||
useEffect( () => {
|
||||
const radioLabelElement = document.getElementById(
|
||||
'ppcp-axo-block-radio-label'
|
||||
);
|
||||
|
||||
if ( radioLabelElement ) {
|
||||
if (
|
||||
! radioLabelElement.querySelector(
|
||||
'.wc-block-checkout-axo-block-card__edit'
|
||||
)
|
||||
) {
|
||||
const buttonContainer = document.createElement( 'div' );
|
||||
radioLabelElement.appendChild( buttonContainer );
|
||||
|
||||
const root = createRoot( buttonContainer );
|
||||
root.render(
|
||||
createElement( CardChangeButton, { onChangeButtonClick } )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return () => {
|
||||
const button = document.querySelector(
|
||||
'.wc-block-checkout-axo-block-card__edit'
|
||||
);
|
||||
if ( button && button.parentNode ) {
|
||||
button.parentNode.remove();
|
||||
}
|
||||
};
|
||||
}, [ onChangeButtonClick ] );
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
export const injectCardChangeButton = ( onChangeButtonClick ) => {
|
||||
const container = document.createElement( 'div' );
|
||||
document.body.appendChild( container );
|
||||
createRoot( container ).render(
|
||||
createElement( CardChangeButtonManager, { onChangeButtonClick } )
|
||||
);
|
||||
};
|
||||
|
||||
export default CardChangeButtonManager;
|
Loading…
Add table
Add a link
Reference in a new issue