mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-04 05:44:58 +00:00
correct dir + layout (partim)
This commit is contained in:
90
Resources/public/js/ui/gumby.radiobtn.js
Normal file
90
Resources/public/js/ui/gumby.radiobtn.js
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* Gumby RadioBtn
|
||||
*/
|
||||
!function($) {
|
||||
|
||||
'use strict';
|
||||
|
||||
function RadioBtn($el) {
|
||||
|
||||
Gumby.debug('Initializing Radio Button', $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 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() {
|
||||
Gumby.debug('Check event triggered', scope.$el);
|
||||
scope.update();
|
||||
});
|
||||
|
||||
// update any prechecked on load
|
||||
if(this.$input.prop('checked') || this.$el.hasClass('checked')) {
|
||||
scope.update(true);
|
||||
}
|
||||
}
|
||||
|
||||
// check radio button, uncheck all others in name group
|
||||
RadioBtn.prototype.update = function() {
|
||||
|
||||
// already checked so no need to update
|
||||
if(this.$el.hasClass('checked') && this.$input.prop('checked') && this.$el.find('i.icon-dot').length) {
|
||||
return;
|
||||
}
|
||||
|
||||
Gumby.debug('Updating Radio Button group', this.$el);
|
||||
|
||||
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" />');
|
||||
|
||||
Gumby.debug('Triggering onCheck event', this.$el);
|
||||
|
||||
this.$el.addClass('checked').trigger('gumby.onCheck');
|
||||
};
|
||||
|
||||
// add initialisation
|
||||
Gumby.addInitalisation('radiobtn', 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: ['onCheck', 'check'],
|
||||
init: function() {
|
||||
Gumby.initialize('radiobtn');
|
||||
}
|
||||
});
|
||||
}(jQuery);
|
Reference in New Issue
Block a user