UNPKG

enketo-core

Version:

Extensible Enketo form engine

41 lines (35 loc) 1.18 kB
import Widget from '../../js/widget'; /** * Column (select) Widgets. Adds a filler if the last row contains two elements. * The filler avoids the last radiobutton or checkbox to not be lined up correctly below the second column. * * @augments Widget */ class Columns extends Widget { /** * @type {string} */ static get selector() { return '.question.or-appearance-columns'; } _init() { this.element.querySelectorAll('.option-wrapper').forEach((wrapper) => { const COLUMNS = 3; let fillers = COLUMNS - (wrapper.querySelectorAll('label').length % COLUMNS); while (fillers < COLUMNS && fillers > 0) { wrapper.append( document .createRange() .createContextualFragment( '<label class="filler"></label>' ) ); fillers--; } // if added to correct question type, add initialized class this.question.classList.add('or-columns-initialized'); }); } } export default Columns;