Skip to content

Commit 71bcce8

Browse files
authored
Merge pull request #325 from mercadopago/release/6.6.0
Release v6.6.0
2 parents 04aeb7d + 657aa16 commit 71bcce8

File tree

62 files changed

+3566
-2865
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+3566
-2865
lines changed

CHANGELOG.md

+15
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [6.6.0] - 2023-01-11
9+
10+
### Added
11+
- Added manual notification sync
12+
- Added payment ids to order metadata on callback
13+
- Added select-id and hidden-id attributes to document
14+
15+
### Changed
16+
- Changed user permissions needed for security
17+
18+
### Fixed
19+
- Fixed order amount with gateway discount
20+
- Fixed css class assignment to nonexistent element
21+
- Fixed selection of installments when there is an inversion of checkouts
22+
823
## [6.5.0] - 2022-12-22
924

1025
### Added

assets/css/global.css

+86-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
@import url('https://fonts.googleapis.com/css2?family=Lato&display=swap');
22

3+
.mp-card-body {
4+
flex: 1 1 auto;
5+
padding: 1rem 1rem;
6+
}
7+
8+
.mp-text-center {
9+
text-align: center !important;
10+
}
11+
12+
.mp-alert {
13+
position: relative;
14+
padding: 1rem 1rem;
15+
margin-bottom: 1rem;
16+
border: 1px solid transparent;
17+
border-radius: 0.25rem;
18+
font-family: 'Lato', sans-serif;
19+
font-size: 14px;
20+
}
21+
22+
.mp-alert-danger {
23+
color: #842029;
24+
background-color: #f8d7da;
25+
border-color: #f5c2c7;
26+
}
27+
28+
.mp-alert-success {
29+
color: #0f5132;
30+
background-color: #d1e7dd;
31+
border-color: #badbcc;
32+
}
33+
334
.mp-alert-checkout-test-mode {
435
margin-bottom: 16px;
536
display: flex;
@@ -48,14 +79,57 @@
4879
color: rgba(0, 0, 0, 0.7);
4980
}
5081

51-
5282
.mp-checkout-error-container {
5383
width: 100%;
5484
display: none;
5585
}
5686

57-
/* LOADER */
87+
.mp-alert-description-button {
88+
font-family: 'Lato', sans-serif;
89+
padding: 0 8px;
90+
font-size: 14px;
91+
text-decoration: none;
92+
border-radius: 6px;
93+
font-weight: 600;
94+
cursor: pointer;
95+
border-color: transparent;
96+
text-align: center;
97+
display: inline-flex;
98+
align-items: center;
99+
justify-content: center;
100+
min-width: 120px;
101+
height: 36px;
102+
}
103+
104+
.mp-alert-description-button.primary {
105+
color: #fff;
106+
background-color: #009ee3;
107+
margin-right: 8px;
108+
}
109+
110+
.mp-alert-description-button.primary:hover {
111+
color: #fff;
112+
background-color: #007eb5;
113+
}
114+
115+
.mp-alert-description-button.secondary {
116+
color: #009ee3;
117+
background-color: rgba(71,154,209,.15);
118+
}
119+
120+
.mp-alert-description-button.secondary:hover {
121+
color: #32b3ff;
122+
background-color: rgba(71,154,209,.2);
123+
}
58124

125+
.mp-alert-description-button.secondary:focus {
126+
color: #32b3ff;
127+
background-color: rgba(71,154,209,.2);
128+
border-color: rgba(71,154,209,.2);
129+
box-shadow: 0 0 0 1px;
130+
}
131+
132+
/* LOADER */
59133
.mp-loader-container {
60134
width: auto;
61135
height: 120px;
@@ -68,7 +142,16 @@
68142
width: 30px !important;
69143
height: 30px;
70144
border: 4px solid #f3f3f3;
71-
border-top: 4px solid #3498db;
145+
border-top: 4px solid #009ee3;
146+
border-radius: 50%;
147+
animation: spin 0.5s linear infinite;
148+
}
149+
150+
.mp-small-loader {
151+
width: 12px !important;
152+
height: 12px;
153+
border: 3px solid rgba(71,154,209,.2);
154+
border-top: 3px solid #009ee3;
72155
border-radius: 50%;
73156
animation: spin 0.5s linear infinite;
74157
}
@@ -92,5 +175,4 @@
92175
-webkit-transform: rotate(360deg);
93176
}
94177
}
95-
96178
/* END LOADER */

assets/css/global.min.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/mp-plugins-components.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/mp-plugins-components.min.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/js/payment_status_metabox.js

+90-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,94 @@
1-
window.addEventListener("load", () => {
2-
const orderDataElement = document.getElementById("woocommerce-order-data");
3-
const paymentStatusMetaboxElement = document.getElementById("mp-payment-status-metabox");
1+
/* globals jQuery, ajaxurl, mp_payment_status_metabox_vars */
2+
(function () {
3+
let can_update_order = true;
4+
5+
window.addEventListener('load', () => {
6+
const syncPaymentStatusButton = document.getElementById('mp-sync-payment-status-button');
7+
8+
if (syncPaymentStatusButton) {
9+
syncPaymentStatusButton.onclick = () => update_order();
10+
}
11+
12+
const orderDataElement = document.getElementById('woocommerce-order-data');
13+
const paymentStatusMetaboxElement = document.getElementById('mp-payment-status-metabox');
414
const paymentStatusMetaboxTitle = document.querySelector('#mp-payment-status-metabox > div.postbox-header > h2');
515

616
if (orderDataElement && paymentStatusMetaboxElement) {
7-
orderDataElement.after(paymentStatusMetaboxElement);
8-
paymentStatusMetaboxTitle.style.fontFamily = "'Lato', sans-serif";
9-
paymentStatusMetaboxTitle.style.fontSize = "18px";
17+
orderDataElement.after(paymentStatusMetaboxElement);
18+
paymentStatusMetaboxTitle.style.fontFamily = '"Lato", sans-serif';
19+
paymentStatusMetaboxTitle.style.fontSize = '18px';
20+
}
21+
});
22+
23+
function update_order() {
24+
canShowLoader(true);
25+
26+
if (can_update_order) {
27+
can_update_order = false;
28+
29+
jQuery
30+
.post(
31+
ajaxurl,
32+
{
33+
action: 'mp_sync_payment_status',
34+
nonce: mp_payment_status_metabox_vars.nonce,
35+
post_id: mp_payment_status_metabox_vars.post_id,
36+
},
37+
function () {
38+
}
39+
)
40+
.done(function (response) {
41+
show_message(response.data, 'success');
42+
})
43+
.fail(function (error) {
44+
show_message(error.responseJSON.data, 'error');
45+
});
46+
}
47+
}
48+
49+
function show_message(message, type) {
50+
const div = document.createElement('div');
51+
52+
const container = document.getElementById('mp-payment-status-container');
53+
const content = document.getElementById('mp-payment-status-content');
54+
55+
const isTypeError = type === 'error';
56+
57+
isTypeError
58+
? (div.className = 'mp-alert mp-alert-danger mp-text-center mp-card-body')
59+
: (div.className = 'mp-alert mp-alert-success mp-text-center mp-card-body');
60+
61+
div.appendChild(document.createTextNode(message));
62+
container.insertBefore(div, content);
63+
64+
if (isTypeError) {
65+
canShowLoader(false);
66+
setTimeout(clearMessage, 3000, type);
67+
can_update_order = true;
68+
return;
1069
}
11-
});
70+
71+
location.reload();
72+
}
73+
74+
function clearMessage() {
75+
document.querySelector('.mp-alert').remove();
76+
}
77+
78+
function canShowLoader(flag) {
79+
const text = document.querySelector('#mp-sync-payment-status-button span');
80+
const loader = document.querySelector('.mp-small-loader');
81+
82+
if (text && loader) {
83+
if (flag) {
84+
text.style.display = 'none';
85+
loader.style.display = 'block';
86+
} else {
87+
text.style.display = 'block';
88+
loader.style.display = 'none';
89+
}
90+
}
91+
}
92+
93+
})();
94+

assets/js/payment_status_metabox.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/js/securityFields/elements/checkoutElements.js

+2
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ const CheckoutElements = {
2424
mpIdentificationNumber: "mp-doc-number",
2525
mpSecurityCodeInfo: "#mp-security-code-info",
2626
paymentMethodId: "#paymentMethodId",
27+
customContent: ".mp-checkout-custom-container",
28+
ticketContent: ".mp-checkout-ticket-content",
2729
};

assets/js/securityFields/elements/checkoutElements.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/js/securityFields/pageObjects/checkoutPage.js

+18-12
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,22 @@ const CheckoutPage = {
3131
return Object.keys(CheckoutElements).find(key => CheckoutElements[key] === id);
3232
},
3333

34-
setDisplayOfError(element, operator, className) {
35-
if (operator == "add") {
36-
document.querySelector(CheckoutElements[element]).classList.add(`${className}`);
37-
return;
34+
setDisplayOfError(elementName, operator, className, checkoutSelector = "customContent") {
35+
let checkoutContent = document.querySelector(CheckoutElements[checkoutSelector]);
36+
let element = checkoutContent.querySelector(CheckoutElements[elementName]);
37+
38+
if (element) {
39+
if (operator == "add") {
40+
element.classList.add(`${className}`);
41+
} else {
42+
element.classList.remove(`${className}`);
43+
}
3844
}
39-
document.querySelector(CheckoutElements[element]).classList.remove(`${className}`);
4045
},
4146

42-
setDisplayOfInputHelper(name, operator) {
43-
let divInputHelper = document.querySelector(`input-helper[input-id=${name}-helper]`);
47+
setDisplayOfInputHelper(elementName, operator, checkoutSelector = "customContent") {
48+
let checkoutContent = document.querySelector(CheckoutElements[checkoutSelector]);
49+
let divInputHelper = checkoutContent.querySelector(`input-helper[input-id=${elementName}-helper]`);
4450

4551
if (divInputHelper) {
4652
let inputHelper = divInputHelper.querySelector("div");
@@ -272,12 +278,12 @@ const CheckoutPage = {
272278

273279
verifyInstallments() {
274280
if (document.querySelector(CheckoutElements.cardInstallments).value == "") {
275-
CheckoutPage.setDisplayOfError('fcInputTableContainer', 'add', 'mp-error');
281+
CheckoutPage.setDisplayOfError("fcInputTableContainer", "add", "mp-error");
276282
this.setDisplayOfInputHelper("mp-installments", "flex");
277283
return false;
278284
}
279285

280-
CheckoutPage.setDisplayOfError('fcInputTableContainer', 'remove', 'mp-error');
286+
CheckoutPage.setDisplayOfError("fcInputTableContainer", "remove", "mp-error");
281287
this.setDisplayOfInputHelper("mp-installments", "none");
282288

283289
return true;
@@ -326,8 +332,7 @@ const CheckoutPage = {
326332
},
327333

328334
setupTaxEvents() {
329-
let choCustomContent = document.querySelector(".mp-checkout-custom-container");
330-
335+
const choCustomContent = document.querySelector(CheckoutElements.customContent);
331336
const taxesElements = choCustomContent.getElementsByClassName("mp-input-table-label");
332337

333338
for (var i = 0; i < taxesElements.length; i++) {
@@ -400,7 +405,8 @@ const CheckoutPage = {
400405
this.showInstallmentsComponent(inputTable);
401406
this.setupTaxEvents();
402407

403-
document.getElementById("more-options").addEventListener("click", () => {
408+
let customContent = document.querySelector(".mp-checkout-custom-container");
409+
customContent.querySelector("#more-options").addEventListener("click", () => {
404410
setTimeout(() => {
405411
this.setupTaxEvents();
406412
}, 300);

0 commit comments

Comments
 (0)