/*! * Ext JS Library 3.4.0 * Copyright(c) 2006-2011 Sencha Inc. * licensing@sencha.com * http://www.sencha.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);