Skip to content

Commit 2c95f23

Browse files
committed
Fix required marker placement when toggling visibility of field with error
1 parent 4c36bd6 commit 2c95f23

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

modules/custom/wxt_ext/wxt_ext_webform/js/webform_required_marker.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,18 @@
2525
function isLegendRequired(legend) {
2626
return !!legend.querySelector('span.js-form-required');
2727
}
28-
function ensureAtEnd(el, node) {
29-
if (node.parentNode !== el || el.lastElementChild !== node) {
30-
el.appendChild(node);
28+
// Place marker before any inline error badge (e.g., .label.label-danger).
29+
function ensureBeforeError(el, node) {
30+
const err = el.querySelector('strong.error');
31+
const errIsChild = err && err.parentNode === el;
32+
if (errIsChild) {
33+
if (node.parentNode !== el || node.nextElementSibling !== err) {
34+
el.insertBefore(node, err);
35+
}
36+
} else {
37+
if (node.parentNode !== el || el.lastElementChild !== node) {
38+
el.appendChild(node);
39+
}
3140
}
3241
}
3342
function addMarker(el) {
@@ -40,7 +49,7 @@
4049
strong.setAttribute('aria-hidden', 'true');
4150
strong.textContent = `(${Drupal.t('required')})`;
4251
}
43-
ensureAtEnd(el, strong);
52+
ensureBeforeError(el, strong);
4453
}
4554
function removeMarker(el) {
4655
el.classList.remove('required');

0 commit comments

Comments
 (0)