Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

116 строки
3.1 KiB

  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. /*browser:true*/
  6. /* @api */
  7. define([
  8. 'jquery',
  9. 'uiComponent'
  10. ], function ($, Class) {
  11. 'use strict';
  12. return Class.extend({
  13. defaults: {
  14. $selector: null,
  15. selector: 'edit_form',
  16. fieldset: '',
  17. active: false,
  18. imports: {
  19. onActiveChange: 'active'
  20. }
  21. },
  22. /**
  23. * Set list of observable attributes
  24. * @returns {exports.initObservable}
  25. */
  26. initObservable: function () {
  27. var self = this,
  28. paymentSelector = '[name="payment[method]"][value="' + this.getCode() + '"]:checked';
  29. self.$selector = $('#' + self.selector);
  30. this._super()
  31. .observe(['active']);
  32. if (self.$selector.find(paymentSelector).length !== 0) {
  33. this.active(true);
  34. }
  35. $('#' + self.fieldset).find('[name="payment[token_switcher]"]')
  36. .on('click', this.rememberTokenSwitcher.bind(this));
  37. // re-init payment method events
  38. self.$selector.off('changePaymentMethod.' + this.getCode())
  39. .on('changePaymentMethod.' + this.getCode(), this.changePaymentMethod.bind(this));
  40. if (this.active()) {
  41. this.chooseTokenSwitcher();
  42. }
  43. return this;
  44. },
  45. /**
  46. * Enable/disable current payment method
  47. * @param {Object} event
  48. * @param {String} method
  49. * @returns {exports.changePaymentMethod}
  50. */
  51. changePaymentMethod: function (event, method) {
  52. this.active(method === this.getCode());
  53. return this;
  54. },
  55. /**
  56. * Save last chosen token switcher
  57. * @param {Object} event
  58. * @returns {exports.rememberTokenSwitcher}
  59. */
  60. rememberTokenSwitcher: function (event) {
  61. $('#' + this.selector).data('lastTokenSwitcherId', event.target.id);
  62. return this;
  63. },
  64. /**
  65. * Select token switcher
  66. * @returns {exports.chooseTokenSwitcher}
  67. */
  68. chooseTokenSwitcher: function () {
  69. var lastTokenSwitcherId = $('#' + this.selector).data('lastTokenSwitcherId');
  70. if (lastTokenSwitcherId) {
  71. $('#' + lastTokenSwitcherId).trigger('click');
  72. } else {
  73. $('#' + this.fieldset + ' input:radio:first').trigger('click');
  74. }
  75. return this;
  76. },
  77. /**
  78. * Triggered when payment changed
  79. * @param {Boolean} isActive
  80. */
  81. onActiveChange: function (isActive) {
  82. if (!isActive) {
  83. this.$selector.trigger('setVaultNotActive.' + this.getCode());
  84. return;
  85. }
  86. this.chooseTokenSwitcher();
  87. window.order.addExcludedPaymentMethod(this.getCode());
  88. },
  89. /**
  90. * Get payment method code
  91. * @returns {String}
  92. */
  93. getCode: function () {
  94. return this.code;
  95. }
  96. });
  97. });