Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / src / widgets / menu / DateMenu.js
1 /*!
2  * Ext JS Library 3.0.0
3  * Copyright(c) 2006-2009 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 /**\r
8  * @class Ext.menu.DateMenu\r
9  * @extends Ext.menu.Menu\r
10  * A menu containing a {@link Ext.DatePicker} Component.\r
11  * @xtype datemenu\r
12  */\r
13  Ext.menu.DateMenu = Ext.extend(Ext.menu.Menu, {\r
14     /** \r
15      * @cfg {Boolean} enableScrolling\r
16      * @hide \r
17      */\r
18     enableScrolling: false,\r
19     \r
20     /** \r
21      * @cfg {Boolean} hideOnClick\r
22      * False to continue showing the menu after a date is selected, defaults to true.\r
23      */\r
24     hideOnClick: true,\r
25     \r
26     /** \r
27      * @cfg {Number} maxHeight\r
28      * @hide \r
29      */\r
30     /** \r
31      * @cfg {Number} scrollIncrement\r
32      * @hide \r
33      */\r
34     /**\r
35      * @property picker\r
36      * @type DatePicker\r
37      * The {@link Ext.DatePicker} instance for this DateMenu\r
38      */\r
39     cls: 'x-date-menu',\r
40     \r
41     /**\r
42      * @event click\r
43      * @hide\r
44      */\r
45     \r
46     /**\r
47      * @event itemclick\r
48      * @hide\r
49      */\r
50 \r
51     initComponent: function(){\r
52         this.on('beforeshow', this.onBeforeShow, this);\r
53         if(this.strict = (Ext.isIE7 && Ext.isStrict)){\r
54             this.on('show', this.onShow, this, {single: true, delay: 20});\r
55         }\r
56         Ext.apply(this, {\r
57             plain: true,\r
58             showSeparator: false,\r
59             items: this.picker = new Ext.DatePicker(Ext.apply({\r
60                 internalRender: this.strict || !Ext.isIE,\r
61                 ctCls: 'x-menu-date-item'\r
62             }, this.initialConfig))\r
63         });\r
64         this.picker.purgeListeners();\r
65         Ext.menu.DateMenu.superclass.initComponent.call(this);\r
66         this.relayEvents(this.picker, ["select"]);\r
67         this.on('select', this.menuHide, this);\r
68         if(this.handler){\r
69             this.on('select', this.handler, this.scope || this);\r
70         }\r
71     },\r
72 \r
73     menuHide: function() {\r
74         if(this.hideOnClick){\r
75             this.hide(true);\r
76         }\r
77     },\r
78 \r
79     onBeforeShow: function(){\r
80         if(this.picker){\r
81             this.picker.hideMonthPicker(true);\r
82         }\r
83     },\r
84 \r
85     onShow: function(){\r
86         var el = this.picker.getEl();\r
87         el.setWidth(el.getWidth()); //nasty hack for IE7 strict mode\r
88     }\r
89  });\r
90  Ext.reg('datemenu', Ext.menu.DateMenu);