X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/src/form/CheckboxGroup.js?ds=sidebyside diff --git a/src/form/CheckboxGroup.js b/src/form/CheckboxGroup.js index 14914cde..40d00d66 100644 --- a/src/form/CheckboxGroup.js +++ b/src/form/CheckboxGroup.js @@ -1,50 +1,62 @@ +/* + +This file is part of Ext JS 4 + +Copyright (c) 2011 Sencha Inc + +Contact: http://www.sencha.com/contact + +GNU General Public License Usage +This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. + +If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact. + +*/ /** - * @class Ext.form.CheckboxGroup - * @extends Ext.form.FieldContainer - *
A {@link Ext.form.FieldContainer field container} which has a specialized layout for arranging - * {@link Ext.form.field.Checkbox} controls into columns, and provides convenience {@link Ext.form.field.Field} methods - * for {@link #getValue getting}, {@link #setValue setting}, and {@link #validate validating} the group - * of checkboxes as a whole.
- *Validation: Individual checkbox fields themselves have no default validation behavior, but + * A {@link Ext.form.FieldContainer field container} which has a specialized layout for arranging + * {@link Ext.form.field.Checkbox} controls into columns, and provides convenience + * {@link Ext.form.field.Field} methods for {@link #getValue getting}, {@link #setValue setting}, + * and {@link #validate validating} the group of checkboxes as a whole. + * + * # Validation + * + * Individual checkbox fields themselves have no default validation behavior, but * sometimes you want to require a user to select at least one of a group of checkboxes. CheckboxGroup - * allows this by setting the config {@link #allowBlank}:false; when the user does not check at + * allows this by setting the config `{@link #allowBlank}:false`; when the user does not check at * least one of the checkboxes, the entire group will be highlighted as invalid and the - * {@link #blankText error message} will be displayed according to the {@link #msgTarget} config.
- *Layout: The default layout for CheckboxGroup makes it easy to arrange the checkboxes into + * {@link #blankText error message} will be displayed according to the {@link #msgTarget} config. + * + * # Layout + * + * The default layout for CheckboxGroup makes it easy to arrange the checkboxes into * columns; see the {@link #columns} and {@link #vertical} config documentation for details. You may also * use a completely different layout by setting the {@link #layout} to one of the other supported layout * types; for instance you may wish to use a custom arrangement of hbox and vbox containers. In that case - * the checkbox components at any depth will still be managed by the CheckboxGroup's validation.
- * {@img Ext.form.RadioGroup/Ext.form.RadioGroup.png Ext.form.RadioGroup component} - *Example usage:
- *
-Ext.create('Ext.form.Panel', {
- title: 'RadioGroup Example',
- width: 300,
- height: 125,
- bodyPadding: 10,
- renderTo: Ext.getBody(),
- items:[{
- xtype: 'radiogroup',
- fieldLabel: 'Two Columns',
- // Arrange radio buttons into two columns, distributed vertically
- columns: 2,
- vertical: true,
- items: [
- {boxLabel: 'Item 1', name: 'rb', inputValue: '1'},
- {boxLabel: 'Item 2', name: 'rb', inputValue: '2', checked: true},
- {boxLabel: 'Item 3', name: 'rb', inputValue: '3'},
- {boxLabel: 'Item 4', name: 'rb', inputValue: '4'},
- {boxLabel: 'Item 5', name: 'rb', inputValue: '5'},
- {boxLabel: 'Item 6', name: 'rb', inputValue: '6'}
- ]
- }]
-});
- *
- * @constructor
- * Creates a new CheckboxGroup
- * @param {Object} config Configuration options
- * @xtype checkboxgroup
+ * the checkbox components at any depth will still be managed by the CheckboxGroup's validation.
+ *
+ * @example
+ * Ext.create('Ext.form.Panel', {
+ * title: 'Checkbox Group',
+ * width: 300,
+ * height: 125,
+ * bodyPadding: 10,
+ * renderTo: Ext.getBody(),
+ * items:[{
+ * xtype: 'checkboxgroup',
+ * fieldLabel: 'Two Columns',
+ * // Arrange radio buttons into two columns, distributed vertically
+ * columns: 2,
+ * vertical: true,
+ * items: [
+ * { boxLabel: 'Item 1', name: 'rb', inputValue: '1' },
+ * { boxLabel: 'Item 2', name: 'rb', inputValue: '2', checked: true },
+ * { boxLabel: 'Item 3', name: 'rb', inputValue: '3' },
+ * { boxLabel: 'Item 4', name: 'rb', inputValue: '4' },
+ * { boxLabel: 'Item 5', name: 'rb', inputValue: '5' },
+ * { boxLabel: 'Item 6', name: 'rb', inputValue: '6' }
+ * ]
+ * }]
+ * });
*/
Ext.define('Ext.form.CheckboxGroup', {
extend:'Ext.form.FieldContainer',
@@ -60,42 +72,45 @@ Ext.define('Ext.form.CheckboxGroup', {
*/
/**
- * @cfg {Array} items An Array of {@link Ext.form.field.Checkbox Checkbox}es or Checkbox config objects
- * to arrange in the group.
+ * @cfg {Ext.form.field.Checkbox[]/Object[]} items
+ * An Array of {@link Ext.form.field.Checkbox Checkbox}es or Checkbox config objects to arrange in the group.
*/
/**
- * @cfg {String/Number/Array} columns Specifies the number of columns to use when displaying grouped
- * checkbox/radio controls using automatic layout. This config can take several types of values:
- * The controls will be rendered one per column on one row and the width - * of each column will be evenly distributed based on the width of the overall field container. This is the default.
If you specific a number (e.g., 3) that number of columns will be - * created and the contained controls will be automatically distributed based on the value of {@link #vertical}.
You can also specify an array of column widths, mixing integer - * (fixed width) and float (percentage width) values as needed (e.g., [100, .25, .75]). Any integer values will - * be rendered first, then any float values will be calculated as a percentage of the remaining space. Float - * values do not have to add up to 1 (100%) although if you want the controls to take up the entire field - * container you should do so.
Sets the value(s) of all checkboxes in the group. The expected format is an Object of - * name-value pairs corresponding to the names of the checkboxes in the group. Each pair can - * have either a single or multiple values:
- *setValue
method of the
- * checkbox with that name. See the rules in {@link Ext.form.field.Checkbox#setValue} for accepted values.If a checkbox's name is not in the mapping at all, it will be unchecked.
- *An example:
- *var myCheckboxGroup = new Ext.form.CheckboxGroup({
- columns: 3,
- items: [{
- name: 'cb1',
- boxLabel: 'Single 1'
- }, {
- name: 'cb2',
- boxLabel: 'Single 2'
- }, {
- name: 'cb3',
- boxLabel: 'Single 3'
- }, {
- name: 'cbGroup',
- boxLabel: 'Grouped 1'
- inputValue: 'value1'
- }, {
- name: 'cbGroup',
- boxLabel: 'Grouped 2'
- inputValue: 'value2'
- }, {
- name: 'cbGroup',
- boxLabel: 'Grouped 3'
- inputValue: 'value3'
- }]
-});
-
-myCheckboxGroup.setValue({
- cb1: true,
- cb3: false,
- cbGroup: ['value1', 'value3']
-});
- * The above code will cause the checkbox named 'cb1' to be checked, as well as the first and third - * checkboxes named 'cbGroup'. The other three checkboxes will be unchecked.
+ * Sets the value(s) of all checkboxes in the group. The expected format is an Object of name-value pairs + * corresponding to the names of the checkboxes in the group. Each pair can have either a single or multiple values: + * + * - A single Boolean or String value will be passed to the `setValue` method of the checkbox with that name. + * See the rules in {@link Ext.form.field.Checkbox#setValue} for accepted values. + * - An Array of String values will be matched against the {@link Ext.form.field.Checkbox#inputValue inputValue} + * of checkboxes in the group with that name; those checkboxes whose inputValue exists in the array will be + * checked and others will be unchecked. + * + * If a checkbox's name is not in the mapping at all, it will be unchecked. + * + * An example: + * + * var myCheckboxGroup = new Ext.form.CheckboxGroup({ + * columns: 3, + * items: [{ + * name: 'cb1', + * boxLabel: 'Single 1' + * }, { + * name: 'cb2', + * boxLabel: 'Single 2' + * }, { + * name: 'cb3', + * boxLabel: 'Single 3' + * }, { + * name: 'cbGroup', + * boxLabel: 'Grouped 1' + * inputValue: 'value1' + * }, { + * name: 'cbGroup', + * boxLabel: 'Grouped 2' + * inputValue: 'value2' + * }, { + * name: 'cbGroup', + * boxLabel: 'Grouped 3' + * inputValue: 'value3' + * }] + * }); + * + * myCheckboxGroup.setValue({ + * cb1: true, + * cb3: false, + * cbGroup: ['value1', 'value3'] + * }); + * + * The above code will cause the checkbox named 'cb1' to be checked, as well as the first and third checkboxes named + * 'cbGroup'. The other three checkboxes will be unchecked. + * * @param {Object} value The mapping of checkbox names to values. * @return {Ext.form.CheckboxGroup} this */ @@ -319,15 +338,17 @@ myCheckboxGroup.setValue({ /** - *Returns an object containing the values of all checked checkboxes within the group. Each key-value pair - * in the object corresponds to a checkbox {@link Ext.form.field.Checkbox#name name}. If there is only one checked - * checkbox with a particular name, the value of that pair will be the String - * {@link Ext.form.field.Checkbox#inputValue inputValue} of that checkbox. If there are multiple checked checkboxes - * with that name, the value of that pair will be an Array of the selected inputValues.
- *The object format returned from this method can also be passed directly to the {@link #setValue} method.
- *NOTE: In Ext 3, this method returned an array of Checkbox components; this was changed to make it more - * consistent with other field components and with the {@link #setValue} argument signature. If you need the old - * behavior in Ext 4+, use the {@link #getChecked} method instead.
+ * Returns an object containing the values of all checked checkboxes within the group. Each key-value pair in the + * object corresponds to a checkbox {@link Ext.form.field.Checkbox#name name}. If there is only one checked checkbox + * with a particular name, the value of that pair will be the String {@link Ext.form.field.Checkbox#inputValue + * inputValue} of that checkbox. If there are multiple checked checkboxes with that name, the value of that pair + * will be an Array of the selected inputValues. + * + * The object format returned from this method can also be passed directly to the {@link #setValue} method. + * + * NOTE: In Ext 3, this method returned an array of Checkbox components; this was changed to make it more consistent + * with other field components and with the {@link #setValue} argument signature. If you need the old behavior in + * Ext 4+, use the {@link #getChecked} method instead. */ getValue: function() { var values = {}; @@ -389,3 +410,4 @@ myCheckboxGroup.setValue({ }); +