PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.9.1
ووسلام – همگام سازی ووکامرس و باسلام v1.9.1
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.9.1, at assets/js/round.js

147 lines 4.3 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 let clampedNotice = false;
85
86 toggles.forEach(function (toggle) {
87 const toggleGroup =
88 toggle.closest(".basalam-form-group") ||
89 toggle.closest(".basalam-form-group-full");
90
91 if (!toggleGroup) {
92 return;
93 }
94
95 const toggleInput =
96 toggleGroup.querySelector('[data-role="increase-price-input"]') ||
97 toggleGroup.querySelector(
98 'input.percentage-input[type="text"][name="sync_basalam_settings[increase_price_value]"]'
99 );
100 const toggleHidden =
101 toggleGroup.querySelector('[data-role="increase-price-hidden"]') ||
102 toggleGroup.querySelector(
103 'input[type="hidden"][name="sync_basalam_settings[increase_price_value]"]'
104 );
105
106 if (!toggleInput || !toggleHidden) {
107 return;
108 }
109
110 if (toggle.checked) {
111 toggleHidden.value = "-1";
112 return;
113 }
114
115 const rawValue = toggleInput.value.replace(/[^\d]/g, "");
116 let numberValue = parseInt(rawValue, 10) || 0;
117
118 if (numberValue > 35 && numberValue <= 100) {
119 clampedNotice = true;
120 numberValue = 35;
121 toggleInput.value = numberValue.toLocaleString("en-US");
122 const unitEl = toggleGroup.querySelector(".percentage-unit");
123 if (unitEl) {
124 unitEl.textContent = "درصد";
125 }
126 }
127
128 toggleHidden.value = rawValue === "" ? "" : String(numberValue);
129 });
130
131 if (clampedNotice) {
132 BasalamToast.info(
133 "�
134 قدار افزایش قی�
135 ت در حالت درصد ن�
136 ی‌تواند بیشتر از ۳۵٪ باشد. �
137 قدار وارد شده به ۳۵ درصد تغییر داده شد و ذخیره �
138 یشود."
139 );
140 }
141 });
142
143 form.dataset.increasePriceBound = "1";
144 }
145 });
146 });
147