| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-form-field-Radio'>/**</span> * @docauthor Robert Dougan <rob@sencha.com> * * Single radio field. Similar to checkbox, but automatically handles making sure only one radio is checked * at a time within a group of radios with the same name. * * # Labeling * * In addition to the {@link Ext.form.Labelable standard field labeling options}, radio buttons * may be given an optional {@link #boxLabel} which will be displayed immediately to the right of the input. Also * see {@link Ext.form.RadioGroup} for a convenient method of grouping related radio buttons. * * # Values * * The main value of a Radio field is a boolean, indicating whether or not the radio is checked. * * The following values will check the radio: * * - `true` * - `'true'` * - `'1'` * - `'on'` * * Any other value will uncheck it. * * In addition to the main boolean value, you may also specify a separate {@link #inputValue}. This will be sent * as the parameter value when the form is {@link Ext.form.Basic#submit submitted}. You will want to set this * value if you have multiple radio buttons with the same {@link #name}, as is almost always the case. * * # Example usage * *     @example *     Ext.create('Ext.form.Panel', { *         title      : 'Order Form', *         width      : 300, *         bodyPadding: 10, *         renderTo   : Ext.getBody(), *         items: [ *             { *                 xtype      : 'fieldcontainer', *                 fieldLabel : 'Size', *                 defaultType: 'radiofield', *                 defaults: { *                     flex: 1 *                 }, *                 layout: 'hbox', *                 items: [ *                     { *                         boxLabel  : 'M', *                         name      : 'size', *                         inputValue: 'm', *                         id        : 'radio1' *                     }, { *                         boxLabel  : 'L', *                         name      : 'size', *                         inputValue: 'l', *                         id        : 'radio2' *                     }, { *                         boxLabel  : 'XL', *                         name      : 'size', *                         inputValue: 'xl', *                         id        : 'radio3' *                     } *                 ] *             }, *             { *                 xtype      : 'fieldcontainer', *                 fieldLabel : 'Color', *                 defaultType: 'radiofield', *                 defaults: { *                     flex: 1 *                 }, *                 layout: 'hbox', *                 items: [ *                     { *                         boxLabel  : 'Blue', *                         name      : 'color', *                         inputValue: 'blue', *                         id        : 'radio4' *                     }, { *                         boxLabel  : 'Grey', *                         name      : 'color', *                         inputValue: 'grey', *                         id        : 'radio5' *                     }, { *                         boxLabel  : 'Black', *                         name      : 'color', *                         inputValue: 'black', *                         id        : 'radio6' *                     } *                 ] *             } *         ], *         bbar: [ *             { *                 text: 'Smaller Size', *                 handler: function() { *                     var radio1 = Ext.getCmp('radio1'), *                         radio2 = Ext.getCmp('radio2'), *                         radio3 = Ext.getCmp('radio3'); * *                     //if L is selected, change to M *                     if (radio2.getValue()) { *                         radio1.setValue(true); *                         return; *                     } * *                     //if XL is selected, change to L *                     if (radio3.getValue()) { *                         radio2.setValue(true); *                         return; *                     } * *                     //if nothing is set, set size to S *                     radio1.setValue(true); *                 } *             }, *             { *                 text: 'Larger Size', *                 handler: function() { *                     var radio1 = Ext.getCmp('radio1'), *                         radio2 = Ext.getCmp('radio2'), *                         radio3 = Ext.getCmp('radio3'); * *                     //if M is selected, change to L *                     if (radio1.getValue()) { *                         radio2.setValue(true); *                         return; *                     } * *                     //if L is selected, change to XL *                     if (radio2.getValue()) { *                         radio3.setValue(true); *                         return; *                     } * *                     //if nothing is set, set size to XL *                     radio3.setValue(true); *                 } *             }, *             '-', *             { *                 text: 'Select color', *                 menu: { *                     indent: false, *                     items: [ *                         { *                             text: 'Blue', *                             handler: function() { *                                 var radio = Ext.getCmp('radio4'); *                                 radio.setValue(true); *                             } *                         }, *                         { *                             text: 'Grey', *                             handler: function() { *                                 var radio = Ext.getCmp('radio5'); *                                 radio.setValue(true); *                             } *                         }, *                         { *                             text: 'Black', *                             handler: function() { *                                 var radio = Ext.getCmp('radio6'); *                                 radio.setValue(true); *                             } *                         } *                     ] *                 } *             } *         ] *     }); */Ext.define('Ext.form.field.Radio', {    extend:'Ext.form.field.Checkbox',    alias: ['widget.radiofield', 'widget.radio'],    alternateClassName: 'Ext.form.Radio',    requires: ['Ext.form.RadioManager'],<span id='Ext-form-field-Radio-property-isRadio'>    /**</span>     * @property {Boolean} isRadio     * `true` in this class to identify an object as an instantiated Radio, or subclass thereof.     */    isRadio: true,<span id='Ext-form-field-Radio-cfg-uncheckedValue'>    /**</span>     * @cfg {String} uncheckedValue     * @private     */    // private    inputType: 'radio',    ariaRole: 'radio',        formId: null,<span id='Ext-form-field-Radio-method-getGroupValue'>    /**</span>     * If this radio is part of a group, it will return the selected value     * @return {String}     */    getGroupValue: function() {        var selected = this.getManager().getChecked(this.name, this.getFormId());        return selected ? selected.inputValue : null;    },<span id='Ext-form-field-Radio-method-onBoxClick'>    /**</span>     * @private Handle click on the radio button     */    onBoxClick: function(e) {        var me = this;        if (!me.disabled && !me.readOnly) {            this.setValue(true);        }    },        onRemoved: function(){        this.callParent(arguments);        this.formId = null;    },<span id='Ext-form-field-Radio-method-setValue'>    /**</span>     * Sets either the checked/unchecked status of this Radio, or, if a string value is passed, checks a sibling Radio     * of the same name whose value is the value specified.     * @param {String/Boolean} value Checked value, or the value of the sibling radio button to check.     * @return {Ext.form.field.Radio} this     */    setValue: function(v) {        var me = this,            active;        if (Ext.isBoolean(v)) {            me.callParent(arguments);        } else {            active = me.getManager().getWithValue(me.name, v, me.getFormId()).getAt(0);            if (active) {                active.setValue(true);            }        }        return me;    },<span id='Ext-form-field-Radio-method-getSubmitValue'>    /**</span>     * Returns the submit value for the checkbox which can be used when submitting forms.     * @return {Boolean/Object} True if checked, null if not.     */    getSubmitValue: function() {        return this.checked ? this.inputValue : null;    },    getModelData: function() {        return this.getSubmitData();    },    // inherit docs    onChange: function(newVal, oldVal) {        var me = this,            r, rLen, radio, radios;        me.callParent(arguments);        if (newVal) {            radios = me.getManager().getByName(me.name, me.getFormId()).items;            rLen   = radios.length;            for (r = 0; r < rLen; r++) {                radio = radios[r];                if (radio !== me) {                    radio.setValue(false);                }            }        }    },    // inherit docs    getManager: function() {        return Ext.form.RadioManager;    }});</pre></body></html>
 |