X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/c930e9176a5a85509c5b0230e2bff5c22a591432..6b044c28b5f26fb99c86c237ffad19741c0f7f3d:/src/widgets/menu/DateMenu.js diff --git a/src/widgets/menu/DateMenu.js b/src/widgets/menu/DateMenu.js index 3a879f11..290595f1 100644 --- a/src/widgets/menu/DateMenu.js +++ b/src/widgets/menu/DateMenu.js @@ -1,90 +1,125 @@ /*! - * Ext JS Library 3.0.0 - * Copyright(c) 2006-2009 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license + * Ext JS Library 3.3.1 + * Copyright(c) 2006-2010 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license */ -/** - * @class Ext.menu.DateMenu - * @extends Ext.menu.Menu - * A menu containing a {@link Ext.DatePicker} Component. - * @xtype datemenu - */ - Ext.menu.DateMenu = Ext.extend(Ext.menu.Menu, { - /** - * @cfg {Boolean} enableScrolling - * @hide - */ - enableScrolling: false, - - /** - * @cfg {Boolean} hideOnClick - * False to continue showing the menu after a date is selected, defaults to true. - */ - hideOnClick: true, - - /** - * @cfg {Number} maxHeight - * @hide - */ - /** - * @cfg {Number} scrollIncrement - * @hide - */ - /** - * @property picker - * @type DatePicker - * The {@link Ext.DatePicker} instance for this DateMenu - */ - 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.apply({ - internalRender: this.strict || !Ext.isIE, - ctCls: 'x-menu-date-item' - }, this.initialConfig)) - }); - this.picker.purgeListeners(); - Ext.menu.DateMenu.superclass.initComponent.call(this); - this.relayEvents(this.picker, ["select"]); - 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); \ No newline at end of file +/** + * @class Ext.menu.DateMenu + * @extends Ext.menu.Menu + *
A menu containing an {@link Ext.DatePicker} Component.
+ *Notes:
picker
: DatePickerdate
: Date{@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);
+
\ No newline at end of file