"use strict"; (function() { let getFieldValue = (form, id) => { let data = new FormData(form); let key = `form_fields[${id}]`; if (data.has(key)) { return data.get(key); } key = `form_fields[${id}][]` if (data.has(key)) { return data.getAll(key).join(', '); } return ""; } function initializePayPalButtons(w, $scope) { let buttons = w.querySelector(".dce-paypal-buttons") if ( typeof paypal === "undefined" ) { buttons.textContent = "There was an error loading PayPal. Is the PayPal Client ID valid?"; } else { let orderIDInput = w.querySelector("input"); let approvedMsg = w.querySelector(".dce-paypal-approved") let buttonsID = `#${buttons.getAttribute('id')}`; let staticOrderName = buttons.getAttribute('data-name'); let nameFieldId; if (! staticOrderName) { nameFieldId = buttons.getAttribute('data-name-field-id'); } let orderCurrency = buttons.getAttribute('data-currency'); let staticOrderValue = buttons.getAttribute('data-value'); let valueFieldId; if (! staticOrderValue) { valueFieldId = buttons.getAttribute('data-value-field-id'); } let descriptionTemplate = buttons.getAttribute('data-description'); let form = $scope.find('form')[0]; let sku = buttons.getAttribute('data-sku'); let height = parseInt(buttons.getAttribute('data-height')); let layout = buttons.getAttribute('data-layout'); paypal.Buttons({ style: { layout: layout, height: height, }, createOrder: function(data, actions) { let description = descriptionTemplate.replace(/\[form:([^\]]+)\]/g, (_, fn) => getFieldValue(form, fn)); let orderValue = staticOrderValue; if (! orderValue) { let fd = new FormData($scope.find('form')[0]); orderValue = fd.get(`form_fields[${valueFieldId}]`); } let orderName = staticOrderName; if (! orderName) { let fd = new FormData($scope.find('form')[0]); orderName = fd.get(`form_fields[${nameFieldId}]`); } return actions.order.create({ purchase_units: [{ items: [ { name: orderName, sku: sku, description: description, unit_amount: { currency_code: orderCurrency, value: orderValue }, quantity: '1' } ] , amount: { value: orderValue, currency_code: orderCurrency, breakdown: { item_total: { value: orderValue, currency_code: orderCurrency } } } }] }); }, onApprove: function(data, actions) { orderIDInput.value = data.orderID; // fire change event so conditions can be updated. let evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); orderIDInput.dispatchEvent(evt); buttons.style.display = "none"; approvedMsg.style.display = "block"; } }).render(buttonsID); } }; function initializeAllPayPalButtons($scope) { $scope.find('.elementor-field-type-dce_form_paypal').each((_, w) => initializePayPalButtons(w, $scope)); } jQuery(window).on('elementor/frontend/init', function() { elementorFrontend.hooks.addAction('frontend/element_ready/form.default', initializeAllPayPalButtons); }); })(); My account - Kristina Rybaltchenko === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block.

Login

Register


Your personal data will be used to support your experience throughout this website, to manage access to your account, and for other purposes described in our privacy policy.