X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/menu/ColorPicker.js diff --git a/src/menu/ColorPicker.js b/src/menu/ColorPicker.js new file mode 100644 index 00000000..8afdef8e --- /dev/null +++ b/src/menu/ColorPicker.js @@ -0,0 +1,117 @@ +/** + * @class Ext.menu.ColorPicker + * @extends Ext.menu.Menu + *

A menu containing a {@link Ext.picker.Color} Component.

+ *

Notes:

+ * {@img Ext.menu.ColorPicker/Ext.menu.ColorPicker.png Ext.menu.ColorPicker component} + * __Example Usage__ + var colorPicker = Ext.create('Ext.menu.ColorPicker', { + value: '000000' + }); + + Ext.create('Ext.menu.Menu', { + width: 100, + height: 90, + floating: false, // usually you want this set to True (default) + renderTo: Ext.getBody(), // usually rendered by it's containing component + items: [{ + text: 'choose a color', + menu: colorPicker + },{ + iconCls: 'add16', + text: 'icon item' + },{ + text: 'regular item' + }] + }); + + * @xtype colormenu + * @author Nicolas Ferrero + */ + Ext.define('Ext.menu.ColorPicker', { + extend: 'Ext.menu.Menu', + + alias: 'widget.colormenu', + + requires: [ + 'Ext.picker.Color' + ], + + /** + * @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 color picker. Defaults to null. + */ + pickerId : null, + + /** + * @cfg {Number} maxHeight + * @hide + */ + + /** + * The {@link Ext.picker.Color} instance for this ColorMenu + * @property picker + * @type ColorPicker + */ + + /** + * @event click + * @hide + */ + + /** + * @event itemclick + * @hide + */ + + initComponent : function(){ + var me = this; + + Ext.apply(me, { + plain: true, + showSeparator: false, + items: Ext.applyIf({ + cls: Ext.baseCSSPrefix + 'menu-color-item', + id: me.pickerId, + xtype: 'colorpicker' + }, me.initialConfig) + }); + + me.callParent(arguments); + + me.picker = me.down('colorpicker'); + + /** + * @event select + * Fires when a date is selected from the {@link #picker Ext.picker.Color} + * @param {Ext.picker.Color} picker The {@link #picker Ext.picker.Color} + * @param {String} color The 6-digit color hex code (without the # symbol) + */ + me.relayEvents(me.picker, ['select']); + + if (me.hideOnClick) { + me.on('select', me.hidePickerOnSelect, me); + } + }, + + /** + * Hides picker on select if hideOnClick is true + * @private + */ + hidePickerOnSelect: function() { + Ext.menu.Manager.hideAll(); + } + }); \ No newline at end of file