/** * RadioGroup widget * * @param {H5P.jQuery} $ */ H5PEditor.RadioGroup = H5PEditor.widgets.radioGroup = (function ($) { var groupCounter = 0; /** * Creates an radio button group. * * @class H5PEditor.ImageRadioButtonGroup * @param {Object} parent * @param {Object} field * @param {Object} params * @param {function} setValue */ function RadioGroup(parent, field, params, setValue) { this.parent = parent; this.field = field; this.value = params; this.setValue = setValue; this.alignment = this.field.alignment || 'vertical'; // Setup event dispatching on change this.changes = []; this.triggerListeners = function () { // Run callbacks for (var i = 0; i < this.changes.length; i++) { this.changes[i](this.value); } }; groupCounter++; } /** * Append the field to the wrapper. * @public * @param {H5P.jQuery} $wrapper */ RadioGroup.prototype.appendTo = function ($wrapper) { var self = this; var buttons = []; var toggleSelected = function ($selectedInput) { buttons.forEach(function ($button) { $button.removeClass('checked'); }); $selectedInput.parent().addClass('checked'); }; self.$container = $(H5PEditor.createFieldMarkup( self.field, '
' )); var $buttonGroup = self.$container.find('.h5p-editor-radio-group-container'); for (var i = 0; i < self.field.options.length; i++) { var option = self.field.options[i]; var inputId = 'h5p-editor-radio-group-button-' + groupCounter + '-' + i; var isChecked = (self.value === option.value) || (self.value === undefined && this.field.default === option.value); var $button = $('