-
Notifications
You must be signed in to change notification settings - Fork 51
Description
also @rolznz , I noticed that when using <bc-pay-button>
, the bc:onpaid
event doesn’t fire when listening directly on the button element. it only fires globally on window
. This is because the event is dispatched from within launchPaymentModal
(specifically from the bc-payment
component), but it doesn't bubble up through the bc-pay-button
itself.
To improve modularity and make it easier to listen for events in scoped components or apps using Web Components (or frameworks like React/Vue), I suggest forwarding the event from bc-pay-button
like this:
const { setPaid } = launchPaymentModal({
onPaid: (response) => {
this._paid = true;
this.dispatchEvent(new CustomEvent('bc:onpaid', {
detail: response,
bubbles: true,
composed: true,
}));
},
invoice: this.invoice,
paymentMethods: this.paymentMethods,
});
This allows users to do:
payButton.addEventListener('bc:onpaid', (e) => {
console.log('got paid', e.detail);
});
instead of having to rely on a global window
listener, which can be problematic in apps with multiple buttons or more complex scopes.
Originally posted by @Dunsin-cyber in #301 (comment)