PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.8.6
ووسلام – همگام سازی ووکامرس و باسلام v1.8.6
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / assets / js / round.js

round.js in ووسلام – همگام سازی ووکامرس و باسلام 1.8.6, at assets/js/round.js

122 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 document.addEventListener("DOMContentLoaded", function () {
2 const groups = document.querySelectorAll(
3 ".basalam-form-group, .basalam-form-group-full"
4 );
5
6 groups.forEach(function (group) {
7 const checkbox = group.querySelector(".toggle-percentage");
8 if (!checkbox) {
9 return;
10 }
11
12 const input =
13 group.querySelector('[data-role="increase-price-input"]') ||
14 group.querySelector(
15 'input.percentage-input[type="text"][name="sync_basalam_settings[increase_price_value]"]'
16 );
17 const unit = group.querySelector(".percentage-unit");
18 const hiddenInput =
19 group.querySelector('[data-role="increase-price-hidden"]') ||
20 group.querySelector(
21 'input[type="hidden"][name="sync_basalam_settings[increase_price_value]"]'
22 );
23
24 if (!input || !unit || !hiddenInput) {
25 return;
26 }
27
28 const normalizeInput = function () {
29 const rawValue = input.value.replace(/[^\d]/g, "");
30 const numberValue = parseInt(rawValue, 10) || 0;
31
32 input.value = rawValue === "" ? "" : numberValue.toLocaleString("en-US");
33 unit.textContent = numberValue <= 100 ? "درصد" : "تو�
34 ان";
35
36 return rawValue === "" ? "" : String(numberValue);
37 };
38
39 const updateHiddenValue = function (value) {
40 if (hiddenInput.value === String(value)) {
41 return;
42 }
43
44 hiddenInput.value = String(value);
45 hiddenInput.dispatchEvent(new Event("input", { bubbles: true }));
46 hiddenInput.dispatchEvent(new Event("change", { bubbles: true }));
47 };
48
49 const syncHiddenInput = function () {
50 if (checkbox.checked) {
51 updateHiddenValue("-1");
52 return;
53 }
54
55 updateHiddenValue(normalizeInput());
56 };
57
58 input.disabled = checkbox.checked;
59 syncHiddenInput();
60
61 input.addEventListener("input", function () {
62 if (!checkbox.checked) {
63 syncHiddenInput();
64 }
65 });
66
67 checkbox.addEventListener("change", function () {
68 input.disabled = checkbox.checked;
69
70 if (checkbox.checked) {
71 input.value = "";
72 updateHiddenValue("-1");
73 unit.textContent = "درصد";
74 return;
75 }
76
77 syncHiddenInput();
78 });
79
80 const form = group.closest("form");
81 if (form && !form.dataset.increasePriceBound) {
82 form.addEventListener("submit", function () {
83 const toggles = form.querySelectorAll(".toggle-percentage");
84
85 toggles.forEach(function (toggle) {
86 const toggleGroup =
87 toggle.closest(".basalam-form-group") ||
88 toggle.closest(".basalam-form-group-full");
89
90 if (!toggleGroup) {
91 return;
92 }
93
94 const toggleInput =
95 toggleGroup.querySelector('[data-role="increase-price-input"]') ||
96 toggleGroup.querySelector(
97 'input.percentage-input[type="text"][name="sync_basalam_settings[increase_price_value]"]'
98 );
99 const toggleHidden =
100 toggleGroup.querySelector('[data-role="increase-price-hidden"]') ||
101 toggleGroup.querySelector(
102 'input[type="hidden"][name="sync_basalam_settings[increase_price_value]"]'
103 );
104
105 if (!toggleInput || !toggleHidden) {
106 return;
107 }
108
109 if (toggle.checked) {
110 toggleHidden.value = "-1";
111 return;
112 }
113
114 toggleHidden.value = toggleInput.value.replace(/[^\d]/g, "");
115 });
116 });
117
118 form.dataset.increasePriceBound = "1";
119 }
120 });
121 });
122