mirror of
https://codeberg.org/nobody/LocalCDN.git
synced 2025-03-13 01:50:06 +01:00
Angular Stripe Checkout v5.1.0 (#71)
This commit is contained in:
parent
2553eb8536
commit
02e4563957
@ -42,6 +42,9 @@ var files = {
|
||||
// Angular Payments
|
||||
'resources/angular-payments/1.0.7/angular-payments.jsm': true,
|
||||
|
||||
// Angular Stripe Checkout
|
||||
'resources/angular-stripe-checkout/5.1.0/angular-stripe-checkout.jsm': true,
|
||||
|
||||
// AngularJS
|
||||
'resources/angularjs/1.7.9/angular-animate.min.jsm': true,
|
||||
'resources/angularjs/1.7.9/angular-aria.min.jsm': true,
|
||||
|
@ -193,6 +193,7 @@ var mappings = {
|
||||
'angular@{version}/angular.': resources.angular,
|
||||
'angular@{version}/angular.min.': resources.angular,
|
||||
'angular-payments@{version}/lib/angular-payments.js': resources.angularPayments,
|
||||
'angular-stripe-checkout@{version}/angular-stripe-checkout.js': resources.angularStripeCheckout,
|
||||
'animate.css@{version}/animate.min.css': resources.animateCSS,
|
||||
'backbone@{version}/backbone.': resources.backbone,
|
||||
'backbone@{version}/backbone-min.': resources.backbone,
|
||||
|
@ -126,6 +126,11 @@ var resources = {
|
||||
'path': 'resources/angular-payments/{version}/angular-payments.jsm',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
// Angular Stripe Checkout
|
||||
'angularStripeCheckout': {
|
||||
'path': 'resources/angular-stripe-checkout/{version}/angular-stripe-checkout.jsm',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
// Animate CSS
|
||||
'animateCSS': {
|
||||
'path': 'resources/animate.css/{version}/animate.min.css',
|
||||
|
@ -250,6 +250,8 @@ helpers.determineResourceName = function (filename) {
|
||||
return 'Angular UI Router';
|
||||
case 'angular-payments.jsm':
|
||||
return 'Angular Payments';
|
||||
case 'angular-stripe-checkout.jsm':
|
||||
return 'Angular Stripe Checkout';
|
||||
case 'animate.min.css':
|
||||
return 'Animate CSS'
|
||||
case 'backbone-min.jsm':
|
||||
@ -461,6 +463,8 @@ helpers.setLastVersion = function (type, version) {
|
||||
version = '0.4.18';
|
||||
} else if (type.includes('/angular-payments@1.')) {
|
||||
version = '1.0.7';
|
||||
} else if (type.includes('/angular-stripe-checkout@5.')) {
|
||||
version = '5.1.0';
|
||||
} else if (type.includes('/angular-ui-bootstrap/0.')) {
|
||||
version = '0.14.3';
|
||||
} else if (type.includes('/angular-ui-bootstrap/1.')) {
|
||||
|
@ -38,6 +38,7 @@
|
||||
<li>Added AngularJS v1.4.14 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||
<li>Fixed typo in AngularUI Bootstrap (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||
<li>Added Angular Payments v1.0.7 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||
<li>Added Angular Stripe Checkout v5.1.0 (<a href="https://gitlab.com/nobody42/localcdn/-/issues/71">#71</a>)</li>
|
||||
</ul>
|
||||
<div class="topic-label">
|
||||
Please update your uBlock/uMatrix rules
|
||||
|
@ -0,0 +1,216 @@
|
||||
(function() {
|
||||
/* global StripeCheckout */
|
||||
'use strict';
|
||||
|
||||
var MODULE_NAME = 'stripe.checkout';
|
||||
var STRIPE_CHECKOUT_URL = 'https://checkout.stripe.com/checkout.js';
|
||||
|
||||
var OPTIONS = {
|
||||
address: ['data-address', 'boolean'],
|
||||
alipay: ['data-alipay', 'boolean-or-auto'],
|
||||
alipayReusable: ['data-alipay-reusable', 'boolean'],
|
||||
allowRememberMe: ['data-allow-remember-me', 'boolean'],
|
||||
amount: ['data-amount', 'number'],
|
||||
billingAddress: ['data-billing-address', 'boolean'],
|
||||
bitcoin: ['data-bitcoin', 'boolean'],
|
||||
currency: ['data-currency', 'string'],
|
||||
description: ['data-description', 'string'],
|
||||
email: ['data-email', 'string'],
|
||||
image: ['data-image', 'string'],
|
||||
key: ['data-key', 'string'],
|
||||
label: ['data-label', 'string'],
|
||||
locale: ['data-locale', 'string'],
|
||||
name: ['data-name', 'string'],
|
||||
color: ['data-color', 'string'],
|
||||
panelLabel: ['data-panel-label', 'string'],
|
||||
shippingAddress: ['data-shipping-address', 'boolean'],
|
||||
zipCode: ['data-zip-code', 'boolean']
|
||||
};
|
||||
|
||||
|
||||
var angular;
|
||||
|
||||
if (typeof module !== 'undefined' && typeof module.exports === 'object') {
|
||||
angular = require('angular');
|
||||
module.exports = MODULE_NAME;
|
||||
} else {
|
||||
angular = window.angular;
|
||||
}
|
||||
|
||||
var extend = angular.extend;
|
||||
|
||||
angular.module(MODULE_NAME,[])
|
||||
.directive('stripeCheckout',StripeCheckoutDirective)
|
||||
.provider('StripeCheckout',StripeCheckoutProvider);
|
||||
|
||||
|
||||
StripeCheckoutDirective.$inject = ['$parse', 'StripeCheckout'];
|
||||
|
||||
function StripeCheckoutDirective($parse, StripeCheckout) {
|
||||
return { link: link };
|
||||
|
||||
function link(scope, el, attrs) {
|
||||
var handler;
|
||||
|
||||
StripeCheckout.load()
|
||||
.then(function() {
|
||||
handler = StripeCheckout.configure(getOptions(el));
|
||||
});
|
||||
|
||||
el.on('click',function() {
|
||||
if (handler)
|
||||
handler.open(getOptions(el)).then(function(result) {
|
||||
var callback = $parse(attrs.stripeCheckout)(scope);
|
||||
if (typeof callback === 'function')
|
||||
callback.apply(null,result);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function StripeCheckoutProvider() {
|
||||
var defaults = {};
|
||||
|
||||
this.defaults = function(options) {
|
||||
extend(defaults,options);
|
||||
};
|
||||
|
||||
|
||||
this.load = function(StripeCheckout) {
|
||||
return StripeCheckout.load();
|
||||
};
|
||||
|
||||
this.load.$inject = ['StripeCheckout'];
|
||||
|
||||
|
||||
this.$get = function($document, $q) {
|
||||
return new StripeCheckoutService($document,$q,defaults);
|
||||
};
|
||||
|
||||
this.$get.$inject = ['$document', '$q'];
|
||||
}
|
||||
|
||||
|
||||
function StripeCheckoutService($document, $q, providerDefaults) {
|
||||
var defaults = {};
|
||||
var promise;
|
||||
|
||||
this.configure = function(options) {
|
||||
return new StripeHandlerWrapper($q,extend({},
|
||||
providerDefaults,
|
||||
defaults,
|
||||
options
|
||||
));
|
||||
};
|
||||
|
||||
this.load = function() {
|
||||
if (!promise)
|
||||
promise = loadLibrary($document,$q);
|
||||
|
||||
return promise;
|
||||
};
|
||||
|
||||
this.defaults = function(options) {
|
||||
extend(defaults,options);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
function StripeHandlerWrapper($q, options) {
|
||||
var deferred, success;
|
||||
|
||||
var handler = StripeCheckout.configure(extend({},options,{
|
||||
token: function(token, args) {
|
||||
if (options.token) options.token(token,args);
|
||||
|
||||
success = true;
|
||||
deferred.resolve([token, args]);
|
||||
},
|
||||
|
||||
closed: function() {
|
||||
if (options.closed) options.closed();
|
||||
if (!success) deferred.reject();
|
||||
}
|
||||
}));
|
||||
|
||||
this.open = function(openOptions) {
|
||||
deferred = $q.defer();
|
||||
success = false;
|
||||
|
||||
handler.open(openOptions);
|
||||
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
this.close = function() {
|
||||
success = false;
|
||||
|
||||
handler.close();
|
||||
|
||||
if (options.closed) options.closed();
|
||||
if (deferred) deferred.reject();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
function getOptions(el) {
|
||||
var opt, def, val, options = {};
|
||||
|
||||
for (opt in OPTIONS) {
|
||||
if (!OPTIONS.hasOwnProperty(opt))
|
||||
continue;
|
||||
|
||||
def = OPTIONS[opt];
|
||||
val = parseValue(el.attr(def[0]),def[1]);
|
||||
|
||||
if (val != null)
|
||||
options[opt] = val;
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
function loadLibrary($document, $q) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
var doc = $document[0];
|
||||
var script = doc.createElement('script');
|
||||
script.src = STRIPE_CHECKOUT_URL;
|
||||
|
||||
script.onload = function () {
|
||||
deferred.resolve();
|
||||
};
|
||||
|
||||
script.onreadystatechange = function () {
|
||||
var rs = this.readyState;
|
||||
if (rs === 'loaded' || rs === 'complete')
|
||||
deferred.resolve();
|
||||
};
|
||||
|
||||
script.onerror = function () {
|
||||
deferred.reject(new Error('Unable to load checkout.js'));
|
||||
};
|
||||
|
||||
var container = doc.getElementsByTagName('head')[0];
|
||||
container.appendChild(script);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function parseValue(value, type) {
|
||||
if (type === 'boolean') {
|
||||
return value && value !== 'false';
|
||||
} else if (type === 'number') {
|
||||
return value && Number(value);
|
||||
} else if (type === 'boolean-or-auto') {
|
||||
if (value === 'auto')
|
||||
return value;
|
||||
else
|
||||
return parseValue(value,'boolean');
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
})();
|
Loading…
x
Reference in New Issue
Block a user