/*!
 * Ext JS Library 3.3.0
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
/** * @class Ext.menu.DateMenu * @extends Ext.menu.Menu *

A menu containing an {@link Ext.DatePicker} Component.

*

Notes:

* @xtype datemenu */ Ext.menu.DateMenu = Ext.extend(Ext.menu.Menu, {
/** * @cfg {Boolean} enableScrolling * @hide */ enableScrolling : false,
/** * @cfg {Function} handler * Optional. A function that will handle the select event of this menu. * The handler is passed the following parameters:
*/
/** * @cfg {Object} scope * The scope (this reference) in which the {@link #handler} * function will be called. Defaults to this DateMenu instance. */
/** * @cfg {Boolean} hideOnClick * False to continue showing the menu after a date is selected, defaults to true. */ hideOnClick : true,
/** * @cfg {String} pickerId * An id to assign to the underlying date picker. Defaults to null. */ pickerId : null,
/** * @cfg {Number} maxHeight * @hide */
/** * @cfg {Number} scrollIncrement * @hide */
/** * The {@link Ext.DatePicker} instance for this DateMenu * @property picker * @type DatePicker */ cls : 'x-date-menu',
/** * @event click * @hide */
/** * @event itemclick * @hide */ initComponent : function(){ this.on('beforeshow', this.onBeforeShow, this); if(this.strict = (Ext.isIE7 && Ext.isStrict)){ this.on('show', this.onShow, this, {single: true, delay: 20}); } Ext.apply(this, { plain: true, showSeparator: false, items: this.picker = new Ext.DatePicker(Ext.applyIf({ internalRender: this.strict || !Ext.isIE, ctCls: 'x-menu-date-item', id: this.pickerId }, this.initialConfig)) }); this.picker.purgeListeners(); Ext.menu.DateMenu.superclass.initComponent.call(this);
/** * @event select * Fires when a date is selected from the {@link #picker Ext.DatePicker} * @param {DatePicker} picker The {@link #picker Ext.DatePicker} * @param {Date} date The selected date */ this.relayEvents(this.picker, ['select']); this.on('show', this.picker.focus, this.picker); this.on('select', this.menuHide, this); if(this.handler){ this.on('select', this.handler, this.scope || this); } }, menuHide : function() { if(this.hideOnClick){ this.hide(true); } }, onBeforeShow : function(){ if(this.picker){ this.picker.hideMonthPicker(true); } }, onShow : function(){ var el = this.picker.getEl(); el.setWidth(el.getWidth()); //nasty hack for IE7 strict mode } }); Ext.reg('datemenu', Ext.menu.DateMenu);