Skip to content

Commit fa46985

Browse files
authored
Merge pull request #939 from modx-pro/vanillajs-patch
Не большой патч для Ванильного JS
2 parents 3815eb3 + 3eafeba commit fa46985

1 file changed

Lines changed: 23 additions & 17 deletions

File tree

assets/components/minishop2/js/web/vanilajs/modules/msorder.class.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
export default class MsOrder {
2+
static hiddenClassName = 'ms-hidden'
3+
24
constructor (minishop) {
35
this.minishop = minishop
46

@@ -16,6 +18,8 @@ export default class MsOrder {
1618
this.paymentInput = 'input[name="payment"]'
1719
this.paymentInputUniquePrefix = '#payment_'
1820
this.deliveryInputUniquePrefix = '#delivery_'
21+
this.errorClassName = 'error'
22+
this.requiredClassName = 'required'
1923

2024
this.orderCost = document.querySelector('#ms2_order_cost')
2125
this.cartCost = document.querySelector('#ms2_order_cart_cost')
@@ -79,7 +83,7 @@ export default class MsOrder {
7983

8084
const checked = paymentInputs.filter(el => el.checked && (el.offsetWidth > 0 || el.offsetHeight > 0))
8185
const visible = paymentInputs.filter(el => (el.offsetWidth > 0 || el.offsetHeight > 0))
82-
if (!checked.length) {
86+
if (!checked.length && visible[0]) {
8387
visible[0].checked = true
8488
}
8589
}
@@ -112,16 +116,16 @@ export default class MsOrder {
112116
}
113117

114118
field.value = response.data[key] || ''
115-
field.classList.remove('error')
116-
field.closest(this.inputParent).classList.remove('error')
119+
field.classList.remove(this.errorClassName)
120+
field.closest(this.inputParent).classList.remove(this.errorClassName)
117121
}
118122

119123
this.callbacks.add.response.error = () => {
120124
const field = this.order.querySelector(`[name="${key}"]`)
121125
if (['checkbox', 'radio'].includes(field.type)) {
122-
field.closest(this.inputParent).classList.add('error')
126+
field.closest(this.inputParent).classList.add(this.errorClassName)
123127
} else {
124-
field.classList.add('error')
128+
field.classList.add(this.errorClassName)
125129
}
126130
}
127131

@@ -195,8 +199,8 @@ export default class MsOrder {
195199

196200
if (this.order.elements) {
197201
Array.from(this.order.elements).forEach(el => {
198-
el.classList.remove('error')
199-
el.closest(this.inputParent)?.classList.remove('error')
202+
el.classList.remove(this.errorClassName)
203+
el.closest(this.inputParent)?.classList.remove(this.errorClassName)
200204
})
201205
}
202206

@@ -206,9 +210,9 @@ export default class MsOrder {
206210
const field = this.order.querySelector(`[name="${key}"]`)
207211

208212
if (['checkbox', 'radio'].includes(field.type)) {
209-
field.closest(this.inputParent).classList.add('error')
213+
field.closest(this.inputParent).classList.add(this.errorClassName)
210214
} else {
211-
field.classList.add('error')
215+
field.classList.add(this.errorClassName)
212216
}
213217
}
214218
}
@@ -223,22 +227,22 @@ export default class MsOrder {
223227

224228
if (this.order.elements.length) {
225229
Array.from(this.order.elements).forEach(el => {
226-
el.classList.remove('required')
227-
el.closest(this.inputParent)?.classList.remove('required')
230+
el.classList.remove(this.requiredClassName)
231+
el.closest(this.inputParent)?.classList.remove(this.requiredClassName)
228232
})
229233
}
230234

231235
for (const name of requires) {
232-
this.order.elements[name]?.classList.add('required')
233-
this.order.elements[name]?.closest(this.inputParent)?.classList.add('required')
236+
this.order.elements[name]?.classList.add(this.requiredClassName)
237+
this.order.elements[name]?.closest(this.inputParent)?.classList.add(this.requiredClassName)
234238
}
235239
}
236240

237241
this.callbacks.getrequired.response.error = () => {
238242
if (this.order.elements.length) {
239243
Array.from(this.order.elements).forEach(el => {
240-
el.classList.remove('required')
241-
el.closest(this.inputParent)?.classList.remove('required')
244+
el.classList.remove(this.requiredClassName)
245+
el.closest(this.inputParent)?.classList.remove(this.requiredClassName)
242246
})
243247
}
244248
}
@@ -250,11 +254,13 @@ export default class MsOrder {
250254
}
251255

252256
static hide (node) {
253-
node.classList.add('ms-hidden')
257+
if (!node) return
258+
node.classList.add(MsOrder.hiddenClassName)
254259
node.checked = false
255260
}
256261

257262
static show (node) {
258-
node.classList.remove('ms-hidden')
263+
if (!node) return
264+
node.classList.remove(MsOrder.hiddenClassName)
259265
}
260266
}

0 commit comments

Comments
 (0)