FieldSet.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:8k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.1.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ /**
  2.  * @class Ext.form.FieldSet
  3.  * @extends Ext.Panel
  4.  * Standard container used for grouping items within a {@link Ext.form.FormPanel form}.
  5.  * <pre><code>
  6. var form = new Ext.FormPanel({
  7.     title: 'Simple Form with FieldSets',
  8.     labelWidth: 75, // label settings here cascade unless overridden
  9.     url: 'save-form.php',
  10.     frame:true,
  11.     bodyStyle:'padding:5px 5px 0',
  12.     width: 700,
  13.     renderTo: document.body,
  14.     layout:'column', // arrange items in columns
  15.     defaults: {      // defaults applied to items
  16.         layout: 'form',
  17.         border: false,
  18.         bodyStyle: 'padding:4px'
  19.     },
  20.     items: [{
  21.         // Fieldset in Column 1
  22.         xtype:'fieldset',
  23.         columnWidth: 0.5,
  24.         title: 'Fieldset 1',
  25.         collapsible: true,
  26.         autoHeight:true,
  27.         defaults: {
  28.             anchor: '-20' // leave room for error icon
  29.         },
  30.         defaultType: 'textfield',
  31.         items :[{
  32.                 fieldLabel: 'Field 1'
  33.             }, {
  34.                 fieldLabel: 'Field 2'
  35.             }, {
  36.                 fieldLabel: 'Field 3'
  37.             }
  38.         ]
  39.     },{
  40.         // Fieldset in Column 2 - Panel inside
  41.         xtype:'fieldset',
  42.         title: 'Show Panel', // title, header, or checkboxToggle creates fieldset header
  43.         autoHeight:true,
  44.         columnWidth: 0.5,
  45.         checkboxToggle: true,
  46.         collapsed: true, // fieldset initially collapsed
  47.         layout:'anchor',
  48.         items :[{
  49.             xtype: 'panel',
  50.             anchor: '100%',
  51.             title: 'Panel inside a fieldset',
  52.             frame: true,
  53.             height: 100
  54.         }]
  55.     }]
  56. });
  57.  * </code></pre>
  58.  * @constructor
  59.  * @param {Object} config Configuration options
  60.  * @xtype fieldset
  61.  */
  62. Ext.form.FieldSet = Ext.extend(Ext.Panel, {
  63.     /**
  64.      * @cfg {Mixed} checkboxToggle <tt>true</tt> to render a checkbox into the fieldset frame just
  65.      * in front of the legend to expand/collapse the fieldset when the checkbox is toggled. (defaults
  66.      * to <tt>false</tt>).
  67.      * <p>A {@link Ext.DomHelper DomHelper} element spec may also be specified to create the checkbox.
  68.      * If <tt>true</tt> is specified, the default DomHelper config object used to create the element
  69.      * is:</p><pre><code>
  70.      * {tag: 'input', type: 'checkbox', name: this.checkboxName || this.id+'-checkbox'}
  71.      * </code></pre>   
  72.      */
  73.     /**
  74.      * @cfg {String} checkboxName The name to assign to the fieldset's checkbox if <tt>{@link #checkboxToggle} = true</tt>
  75.      * (defaults to <tt>'[checkbox id]-checkbox'</tt>).
  76.      */
  77.     /**
  78.      * @cfg {Boolean} collapsible
  79.      * <tt>true</tt> to make the fieldset collapsible and have the expand/collapse toggle button automatically
  80.      * rendered into the legend element, <tt>false</tt> to keep the fieldset statically sized with no collapse
  81.      * button (defaults to <tt>false</tt>). Another option is to configure <tt>{@link #checkboxToggle}</tt>.
  82.      */
  83.     /**
  84.      * @cfg {Number} labelWidth The width of labels. This property cascades to child containers.
  85.      */
  86.     /**
  87.      * @cfg {String} itemCls A css class to apply to the <tt>x-form-item</tt> of fields (see 
  88.      * {@link Ext.layout.FormLayout}.{@link Ext.layout.FormLayout#fieldTpl fieldTpl} for details).
  89.      * This property cascades to child containers.
  90.      */
  91.     /**
  92.      * @cfg {String} baseCls The base CSS class applied to the fieldset (defaults to <tt>'x-fieldset'</tt>).
  93.      */
  94.     baseCls : 'x-fieldset',
  95.     /**
  96.      * @cfg {String} layout The {@link Ext.Container#layout} to use inside the fieldset (defaults to <tt>'form'</tt>).
  97.      */
  98.     layout : 'form',
  99.     /**
  100.      * @cfg {Boolean} animCollapse
  101.      * <tt>true</tt> to animate the transition when the panel is collapsed, <tt>false</tt> to skip the
  102.      * animation (defaults to <tt>false</tt>).
  103.      */
  104.     animCollapse : false,
  105.     // private
  106.     onRender : function(ct, position){
  107.         if(!this.el){
  108.             this.el = document.createElement('fieldset');
  109.             this.el.id = this.id;
  110.             if (this.title || this.header || this.checkboxToggle) {
  111.                 this.el.appendChild(document.createElement('legend')).className = 'x-fieldset-header';
  112.             }
  113.         }
  114.         Ext.form.FieldSet.superclass.onRender.call(this, ct, position);
  115.         if(this.checkboxToggle){
  116.             var o = typeof this.checkboxToggle == 'object' ?
  117.                     this.checkboxToggle :
  118.                     {tag: 'input', type: 'checkbox', name: this.checkboxName || this.id+'-checkbox'};
  119.             this.checkbox = this.header.insertFirst(o);
  120.             this.checkbox.dom.checked = !this.collapsed;
  121.             this.mon(this.checkbox, 'click', this.onCheckClick, this);
  122.         }
  123.     },
  124.     // private
  125.     onCollapse : function(doAnim, animArg){
  126.         if(this.checkbox){
  127.             this.checkbox.dom.checked = false;
  128.         }
  129.         Ext.form.FieldSet.superclass.onCollapse.call(this, doAnim, animArg);
  130.     },
  131.     // private
  132.     onExpand : function(doAnim, animArg){
  133.         if(this.checkbox){
  134.             this.checkbox.dom.checked = true;
  135.         }
  136.         Ext.form.FieldSet.superclass.onExpand.call(this, doAnim, animArg);
  137.     },
  138.     /**
  139.      * This function is called by the fieldset's checkbox when it is toggled (only applies when
  140.      * checkboxToggle = true).  This method should never be called externally, but can be
  141.      * overridden to provide custom behavior when the checkbox is toggled if needed.
  142.      */
  143.     onCheckClick : function(){
  144.         this[this.checkbox.dom.checked ? 'expand' : 'collapse']();
  145.     }
  146.     /**
  147.      * @cfg {String/Number} activeItem
  148.      * @hide
  149.      */
  150.     /**
  151.      * @cfg {Mixed} applyTo
  152.      * @hide
  153.      */
  154.     /**
  155.      * @cfg {Boolean} bodyBorder
  156.      * @hide
  157.      */
  158.     /**
  159.      * @cfg {Boolean} border
  160.      * @hide
  161.      */
  162.     /**
  163.      * @cfg {Boolean/Number} bufferResize
  164.      * @hide
  165.      */
  166.     /**
  167.      * @cfg {Boolean} collapseFirst
  168.      * @hide
  169.      */
  170.     /**
  171.      * @cfg {String} defaultType
  172.      * @hide
  173.      */
  174.     /**
  175.      * @cfg {String} disabledClass
  176.      * @hide
  177.      */
  178.     /**
  179.      * @cfg {String} elements
  180.      * @hide
  181.      */
  182.     /**
  183.      * @cfg {Boolean} floating
  184.      * @hide
  185.      */
  186.     /**
  187.      * @cfg {Boolean} footer
  188.      * @hide
  189.      */
  190.     /**
  191.      * @cfg {Boolean} frame
  192.      * @hide
  193.      */
  194.     /**
  195.      * @cfg {Boolean} header
  196.      * @hide
  197.      */
  198.     /**
  199.      * @cfg {Boolean} headerAsText
  200.      * @hide
  201.      */
  202.     /**
  203.      * @cfg {Boolean} hideCollapseTool
  204.      * @hide
  205.      */
  206.     /**
  207.      * @cfg {String} iconCls
  208.      * @hide
  209.      */
  210.     /**
  211.      * @cfg {Boolean/String} shadow
  212.      * @hide
  213.      */
  214.     /**
  215.      * @cfg {Number} shadowOffset
  216.      * @hide
  217.      */
  218.     /**
  219.      * @cfg {Boolean} shim
  220.      * @hide
  221.      */
  222.     /**
  223.      * @cfg {Object/Array} tbar
  224.      * @hide
  225.      */
  226.     /**
  227.      * @cfg {Array} tools
  228.      * @hide
  229.      */
  230.     /**
  231.      * @cfg {Ext.Template/Ext.XTemplate} toolTemplate
  232.      * @hide
  233.      */
  234.     /**
  235.      * @cfg {String} xtype
  236.      * @hide
  237.      */
  238.     /**
  239.      * @property header
  240.      * @hide
  241.      */
  242.     /**
  243.      * @property footer
  244.      * @hide
  245.      */
  246.     /**
  247.      * @method focus
  248.      * @hide
  249.      */
  250.     /**
  251.      * @method getBottomToolbar
  252.      * @hide
  253.      */
  254.     /**
  255.      * @method getTopToolbar
  256.      * @hide
  257.      */
  258.     /**
  259.      * @method setIconClass
  260.      * @hide
  261.      */
  262.     /**
  263.      * @event activate
  264.      * @hide
  265.      */
  266.     /**
  267.      * @event beforeclose
  268.      * @hide
  269.      */
  270.     /**
  271.      * @event bodyresize
  272.      * @hide
  273.      */
  274.     /**
  275.      * @event close
  276.      * @hide
  277.      */
  278.     /**
  279.      * @event deactivate
  280.      * @hide
  281.      */
  282. });
  283. Ext.reg('fieldset', Ext.form.FieldSet);