You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

51 lines
1.8 KiB

/*
---
name: Form.CheckGroup
description: Class to represent a group of Form.Check wrapped checkboxes
authors: Bryan J Swift (@bryanjswift)
license: MIT-style license.
requires: [Core/Class.Extras, Core/Element, Core/Element.Event, Form-Replacement/Form.Check]
provides: Form.CheckGroup
...
*/
if (typeof window.Form === 'undefined') { window.Form = {}; }
Form.CheckGroup = new Class({
Implements: [Events,Options],
options: {
checkOptions: {},
initialValues: {}
},
checks: [],
initialize: function(group,options) {
if (!Form.Check) { throw 'required Class Form.Check not found'; }
this.setOptions(options);
group = $(group);
if (!group) { return this; }
var checkboxes = group.getElements('input[type=checkbox]');
checkboxes.each(this.addCheck,this);
},
addCheck: function(checkbox) {
var initialValues = this.options.initialValues[checkbox.get('name')];
var checkOptions = {};
checkOptions.checked = initialValues ? initialValues.contains(checkbox.get('value')) : checkbox.get('checked');
checkOptions.disabled = checkbox.get('disabled');
checkbox.store('Form.CheckGroup::data',this);
var check = checkbox.retrieve('Form.Check::data') || new Form.Check(checkbox, Object.append(checkOptions,this.options.checkOptions));
this.checks.push(check);
},
checkAll: function() {
this.checks.each(function(check) { if (!check.checked) { check.toggle(); } });
},
disable: function() {
this.checks.each(function(check) { check.disable(); });
this.fireEvent('disable',this);
},
enable: function() {
this.checks.each(function(check) { check.enable(); });
this.fireEvent('enable',this);
},
uncheckAll: function() {
this.checks.each(function(check) { if (check.checked) { check.toggle(); } });
}
});