From 5575697c9fc757a3f4c1d2c5033ee85b14d52fa9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Mon, 22 Nov 2021 11:07:26 +0100 Subject: [PATCH] Add a directive attribute 'selected' that update AdminStripeElements when true Filled with `PaymentCtrl.isSelected(payment_method_id)` Therefore, each time a stripe payment is selected, the one that is actually selected is linked to `AdminStripeElements.card` and `AdminStripeElements.stripe` --- .../admin/payments/controllers/payment.js.coffee | 3 +++ .../payments/directives/stripe_elements.js.coffee | 10 +++++++--- .../admin/payments/source_forms/_stripe.html.haml | 2 +- .../admin/payments/source_forms/_stripe_sca.html.haml | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/admin/payments/controllers/payment.js.coffee b/app/assets/javascripts/admin/payments/controllers/payment.js.coffee index 549ec365a1..2bf411aa9e 100644 --- a/app/assets/javascripts/admin/payments/controllers/payment.js.coffee +++ b/app/assets/javascripts/admin/payments/controllers/payment.js.coffee @@ -8,3 +8,6 @@ angular.module("admin.payments").controller "PaymentCtrl", ($scope, Payment, Sta $scope.submitted = true StatusMessage.display 'progress', t("spree.admin.payments.source_forms.stripe.submitting_payment") Payment.purchase() + + $scope.isSelected = (payment_method_id) -> + return parseInt($scope.form_data.payment_method) == payment_method_id diff --git a/app/assets/javascripts/admin/payments/directives/stripe_elements.js.coffee b/app/assets/javascripts/admin/payments/directives/stripe_elements.js.coffee index f3023f6747..fbdc2ac2da 100644 --- a/app/assets/javascripts/admin/payments/directives/stripe_elements.js.coffee +++ b/app/assets/javascripts/admin/payments/directives/stripe_elements.js.coffee @@ -4,7 +4,9 @@ angular.module('admin.payments').directive "stripeElements", ($injector, AdminSt
\
\ " - + scope: + selected: "=" + link: (scope, elem, attr)-> if $injector.has('stripeObject') stripe = $injector.get('stripeObject') @@ -32,5 +34,7 @@ angular.module('admin.payments').directive "stripeElements", ($injector, AdminSt return - AdminStripeElements.stripe = stripe - AdminStripeElements.card = card + scope.$watch "selected", (value) -> + if (value) + AdminStripeElements.stripe = stripe + AdminStripeElements.card = card diff --git a/app/views/spree/admin/payments/source_forms/_stripe.html.haml b/app/views/spree/admin/payments/source_forms/_stripe.html.haml index fc21765e2a..315791bac0 100644 --- a/app/views/spree/admin/payments/source_forms/_stripe.html.haml +++ b/app/views/spree/admin/payments/source_forms/_stripe.html.haml @@ -16,4 +16,4 @@ .three.columns = label_tag :card_details, t(:card_details) .nine.columns - %stripe-elements + %stripe-elements{selected: "isSelected(#{payment_method.id})"} diff --git a/app/views/spree/admin/payments/source_forms/_stripe_sca.html.haml b/app/views/spree/admin/payments/source_forms/_stripe_sca.html.haml index 7bc9ba3399..cd05e88c48 100644 --- a/app/views/spree/admin/payments/source_forms/_stripe_sca.html.haml +++ b/app/views/spree/admin/payments/source_forms/_stripe_sca.html.haml @@ -15,4 +15,4 @@ .three.columns = label_tag :card_details, t(:card_details) .nine.columns - %stripe-elements + %stripe-elements{selected: "isSelected(#{payment_method.id})"}