Sha256: e9bd005b554f0470f623dfbe56170f5ae49d42606b4d553c6391148829bb3f9a
Contents?: true
Size: 1.87 KB
Versions: 9
Compression:
Stored size: 1.87 KB
Contents
/** * Gumby RadioBtn */ !function() { 'use strict'; function RadioBtn($el) { this.$el = $el; this.$input = this.$el.find('input[type=radio]'); var scope = this; // listen for click event and custom gumby check event this.$el.on(Gumby.click, function(e) { // prevent propagation e.stopImmediatePropagation(); // prevent radio button checking, we'll do that manually e.preventDefault(); // do nothing if radio is disabled if (scope.$input.is('[disabled]')) { return; } // check radio button scope.update(); }).on('gumby.check', function() { scope.update(); }); // update any .checked checkboxes on load if(scope.$el.hasClass('checked')) { scope.update(); } } // check radio button, uncheck all others in name group RadioBtn.prototype.update = function() { var $span = this.$el.find('span'), // the group of radio buttons group = 'input[name="'+this.$input.attr('name')+'"]'; // uncheck radio buttons in same group - uncheck input, remove checked class, remove <i> $('.radio').has(group).removeClass('checked') .find('input').prop('checked', false).end() .find('i').remove(); // check this radio button - check input, add checked class, append <i> this.$input.prop('checked', true); $span.append('<i class="icon-dot" />'); this.$el.addClass('checked').trigger('gumby.onChange'); }; // add initialisation Gumby.addInitalisation('radiobtns', function() { $('.radio').each(function() { var $this = $(this); // this element has already been initialized if($this.data('isRadioBtn')) { return true; } // mark element as initialized $this.data('isRadioBtn', true); new RadioBtn($this); }); }); // register UI module Gumby.UIModule({ module: 'radiobtn', events: ['onChange', 'check'], init: function() { Gumby.initialize('radiobtns'); } }); }();
Version data entries
9 entries across 9 versions & 1 rubygems