You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
5.7 KiB
136 lines
5.7 KiB
/*
|
|
|
|
Start: cdek-map.js
|
|
Перезапись стандартного скрипта от cdek плагина для подключения дополнительной логики обработчиков
|
|
|
|
*/
|
|
|
|
(() => {
|
|
"use strict";
|
|
var e = {
|
|
n: t => {
|
|
var o = t && t.__esModule ? () => t.default : () => t;
|
|
return e.d(o, {
|
|
a: o
|
|
}),
|
|
o
|
|
},
|
|
d: (t, o) => {
|
|
for (var n in o)
|
|
e.o(o, n) && !e.o(t, n) && Object.defineProperty(t, n, {
|
|
enumerable: !0,
|
|
get: o[n]
|
|
})
|
|
},
|
|
o: (e, t) => Object.prototype.hasOwnProperty.call(e, t)
|
|
};
|
|
const t = window.jQuery;
|
|
var o = e.n(t);
|
|
const n = window.CDEKWidget;
|
|
var i = e.n(n);
|
|
const c = window.wp.i18n,
|
|
d = window.lodash,
|
|
r = o()("#billing_city"),
|
|
a = o()("#shipping_city"),
|
|
l = "aria-small";
|
|
const h = (e, t, n) => {
|
|
console.log("Widget object:", g);
|
|
console.log("g.close is", typeof g.close);
|
|
|
|
o()(".cdek-office-code").val(n.code);
|
|
u.find("a").html(window.langData.translations["Re-select pick-up"] || "Re-select pick-up");
|
|
|
|
const i = u.parent().children(".cdek-office-info");
|
|
if (i.length === 0) {
|
|
u.before(o()('<div class="cdek-office-info"></div>').text(n.name));
|
|
} else {
|
|
i.text(n.name);
|
|
}
|
|
|
|
o()("#pvz_inp").val(n.name);
|
|
|
|
if (g && typeof g.close === "function") {
|
|
g.close();
|
|
} else {
|
|
console.warn("g.close is not available, trying fallback");
|
|
o()(".cdek-widget__popup-close").click(); // альтернатива
|
|
}
|
|
|
|
if (window.cdek.saver !== undefined) {
|
|
o().post(window.cdek.saver, {
|
|
code: n.code
|
|
});
|
|
}
|
|
};
|
|
|
|
let s, p, u, g = null;
|
|
"" === (r.val() || "") && "" === (a.val() || "") || (console.debug("[CDEK-MAP] City has value, initiating checkout update"),
|
|
o()(document.body).trigger("update_checkout"));
|
|
const v = (e, t = null) => {
|
|
if (console.debug("[CDEK-MAP] Removing selected office info"),
|
|
o()(".cdek-office-info").remove(),
|
|
e.find("a").html(window.langData.translations["Choose pick-up"] || "Choose pick-up"),
|
|
o()(".cdek-office-code").val(""),
|
|
null !== g && g.clearSelection(),
|
|
"string" == typeof t) {
|
|
console.debug("[CDEK-MAP] Rendering error message");
|
|
const e = o()(".open-pvz-btn");
|
|
e.prev().text(t),
|
|
e.remove()
|
|
}
|
|
},
|
|
f = (0,
|
|
d.debounce)((() => {
|
|
"" !== (o()("#ship-to-different-address-checkbox").is(":checked") ? a.val() : r.val()) && (console.debug("[CDEK-MAP] City or postcode changed, initiating checkout update"),
|
|
void 0 !== window.cdek.saver && o().post(window.cdek.saver, {
|
|
code: null
|
|
}),
|
|
o()(document.body).trigger("update_checkout"))
|
|
}), 500),
|
|
b = new ResizeObserver((e => {
|
|
for (const t of e)
|
|
"contentRect" in t && "target" in t && (t.contentRect.width < 160 ? p && (p = !1,
|
|
s = !0) : p || (p = !0,
|
|
s = !0),
|
|
s && (p ? t.target.hasAttribute(l) && t.target.removeAttribute(l) : t.target.hasAttribute(l) || t.target.setAttribute(l, ""),
|
|
s = !1))
|
|
}));
|
|
|
|
|
|
|
|
o()(document.body).on("input", "#billing_city, #billing_postcode, #shipping_city, #shipping_postcode", f).on("updated_checkout", (() => {
|
|
const e = document.querySelector(".open-pvz-btn");
|
|
null !== g && (console.debug("[CDEK-MAP] Clearing widget selection"),
|
|
g.clearSelection()),
|
|
e && (s = !1,
|
|
p = !0,
|
|
b.observe(e))
|
|
})).on("change", ".shipping_method", (() => o()(document.body).trigger("update_checkout"))).on("click", ".open-pvz-btn", null, (e => {
|
|
u = "A" === e.target.tagName ? o()(e.target.parentElement) : o()(e.target),
|
|
v(u);
|
|
try {
|
|
const e = JSON.parse(u.find("script").text());
|
|
if (console.debug("[CDEK-MAP] Got points from backend", e),
|
|
!e.length)
|
|
return console.warn("[CDEK-MAP] Backend points are empty"),
|
|
void v(u, window.langData.translations["There are no CDEK pick-up points available in this direction, please select another delivery method"] || "There are no CDEK pick-up points available in this direction, please select another delivery method");
|
|
null === g ? g = new(i())({
|
|
apiKey: window.cdek.key,
|
|
popup: !0,
|
|
debug: !0,
|
|
lang: window.cdek.lang,
|
|
defaultLocation: u.data("city"),
|
|
officesRaw: e,
|
|
hideDeliveryOptions: {
|
|
door: !0
|
|
},
|
|
onChoose: h
|
|
}) : (g.updateOfficesRaw(e),
|
|
g.updateLocation(u.data("city"))),
|
|
g.open()
|
|
} catch (e) {
|
|
console.error("[CDEK-MAP] SyntaxError during points parse"),
|
|
v(u, window.langData.translations["There are no CDEK pick-up points available in this direction, please select another delivery method"] || "There are no CDEK pick-up points available in this direction, please select another delivery method")
|
|
}
|
|
}))
|
|
})();
|
|
|