2024-12-16 16:00:27 +01:00
|
|
|
import { useState, useCallback } from '@wordpress/element';
|
2024-12-08 09:33:49 +01:00
|
|
|
import SettingsBlock from './SettingsBlock';
|
|
|
|
import PaymentMethodItemBlock from './PaymentMethodItemBlock';
|
|
|
|
|
2025-01-02 13:55:32 +01:00
|
|
|
const PaymentMethodsBlock = ( {
|
|
|
|
paymentMethods,
|
|
|
|
className = '',
|
|
|
|
onTriggerModal,
|
|
|
|
} ) => {
|
2025-01-09 00:16:12 +01:00
|
|
|
const [ selectedMethods, setSelectedMethods ] = useState( {} );
|
2024-12-16 16:00:27 +01:00
|
|
|
|
|
|
|
const handleSelect = useCallback( ( methodId, isSelected ) => {
|
2025-01-09 00:16:12 +01:00
|
|
|
setSelectedMethods( ( prev ) => ( {
|
|
|
|
...prev,
|
|
|
|
[ methodId ]: isSelected,
|
|
|
|
} ) );
|
2024-12-16 16:00:27 +01:00
|
|
|
}, [] );
|
|
|
|
|
2025-01-09 00:16:12 +01:00
|
|
|
if ( ! paymentMethods?.length ) {
|
2024-12-08 09:33:49 +01:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<SettingsBlock
|
|
|
|
className={ `ppcp-r-settings-block__payment-methods ${ className }` }
|
2024-12-17 11:50:32 +01:00
|
|
|
>
|
|
|
|
{ paymentMethods.map( ( paymentMethod ) => (
|
|
|
|
<PaymentMethodItemBlock
|
|
|
|
key={ paymentMethod.id }
|
|
|
|
{ ...paymentMethod }
|
2025-01-09 00:16:12 +01:00
|
|
|
isSelected={ Boolean(
|
|
|
|
selectedMethods[ paymentMethod.id ]
|
|
|
|
) }
|
2024-12-17 11:50:32 +01:00
|
|
|
onSelect={ ( checked ) =>
|
|
|
|
handleSelect( paymentMethod.id, checked )
|
|
|
|
}
|
2025-01-02 13:55:32 +01:00
|
|
|
onTriggerModal={ () =>
|
|
|
|
onTriggerModal?.( paymentMethod.id )
|
|
|
|
}
|
2024-12-17 11:50:32 +01:00
|
|
|
/>
|
|
|
|
) ) }
|
|
|
|
</SettingsBlock>
|
2024-12-08 09:33:49 +01:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default PaymentMethodsBlock;
|