Skip to content

Commit e4a7198

Browse files
[5.1] Fix JavaScript error caused by using "switcher" layout for radio buttons in subforms (joomla#43804)
1 parent eb800de commit e4a7198

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

build/media_source/system/js/fields/joomla-field-subform.w-c.es6.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,12 @@ class JoomlaFieldSubform extends HTMLElement {
287287
// Set the id for fieldset and group label
288288
if (!countMulti) {
289289
// Look for <fieldset class="checkboxes"></fieldset> or <fieldset><div class="checkboxes"></div></fieldset>
290-
let fieldset = $el.closest('.checkboxes');
290+
let fieldset = $el.closest('.checkboxes, fieldset');
291291
// eslint-disable-next-line no-nested-ternary
292-
fieldset = fieldset.nodeName === 'FIELDSET' ? fieldset : (fieldset.parentElement.nodeName === 'FIELDSET' ? fieldset.parentElement : false);
292+
if (fieldset) {
293+
// eslint-disable-next-line no-nested-ternary
294+
fieldset = fieldset.nodeName === 'FIELDSET' ? fieldset : (fieldset.parentElement.nodeName === 'FIELDSET' ? fieldset.parentElement : false);
295+
}
293296

294297
if (fieldset) {
295298
const oldSetId = fieldset.id;
@@ -313,10 +316,17 @@ class JoomlaFieldSubform extends HTMLElement {
313316

314317
// Set the id for fieldset and group label
315318
if (!countMulti) {
316-
// Look for <fieldset class="radio"></fieldset> or <fieldset><div class="radio"></div></fieldset>
317-
let fieldset = $el.closest('.radio');
318-
// eslint-disable-next-line no-nested-ternary
319-
fieldset = fieldset.nodeName === 'FIELDSET' ? fieldset : (fieldset.parentElement.nodeName === 'FIELDSET' ? fieldset.parentElement : false);
319+
/**
320+
* Look for one of:
321+
* - <fieldset class="radio"></fieldset>
322+
* - <fieldset><div class="radio"></div></fieldset>
323+
* - <fieldset><div class="switcher"></div></fieldset>
324+
*/
325+
let fieldset = $el.closest('.radio, .switcher, fieldset');
326+
if (fieldset) {
327+
// eslint-disable-next-line no-nested-ternary
328+
fieldset = fieldset.nodeName === 'FIELDSET' ? fieldset : (fieldset.parentElement.nodeName === 'FIELDSET' ? fieldset.parentElement : false);
329+
}
320330

321331
if (fieldset) {
322332
const oldSetId = fieldset.id;

0 commit comments

Comments
 (0)