1 ( function( $, undef ){
4 var _before = '<a tabindex="0" class="wp-color-result" />',
5 _after = '<div class="wp-picker-holder" />',
6 _wrap = '<div class="wp-picker-container" />',
7 _button = '<input type="button" class="button button-small hidden" />';
9 // jQuery UI Widget constructor
19 // bail early for IE < 8
20 if ( $.browser.msie && parseInt( $.browser.version, 10 ) < 8 )
23 var el = self.element;
24 $.extend( self.options, el.data() );
26 self.initialValue = el.val();
28 // Set up HTML structure, hide things
29 el.addClass( 'wp-color-picker' ).hide().wrap( _wrap );
30 self.wrap = el.parent();
31 self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( "title", wpColorPickerL10n.pick ).attr( "data-current", wpColorPickerL10n.current );
32 self.pickerContainer = $( _after ).insertAfter( el );
33 self.button = $( _button );
35 if ( self.options.defaultColor )
36 self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
38 self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
40 el.wrap('<span class="wp-picker-input-wrap" />').after(self.button);
43 target: self.pickerContainer,
47 palettes: self.options.palettes,
48 change: function( event, ui ) {
49 self.toggler.css( { backgroundColor: ui.color.toString() } );
50 // check for a custom cb
51 if ( $.isFunction( self.options.change ) )
52 self.options.change.call( this, event, ui );
55 el.val( self.initialValue );
57 if ( ! self.options.hide )
60 _addListeners: function() {
63 self.toggler.click( function( event ){
64 event.stopPropagation();
65 self.element.toggle().iris( 'toggle' );
66 self.button.toggleClass('hidden');
67 self.toggler.toggleClass( 'wp-picker-open' );
69 // close picker when you click outside it
70 if ( self.toggler.hasClass( 'wp-picker-open' ) )
71 $( "body" ).on( 'click', { wrap: self.wrap, toggler: self.toggler }, self._bodyListener );
73 $( "body" ).off( 'click', self._bodyListener );
76 self.element.change(function( event ) {
80 if ( val === '' || val === '#' ) {
81 self.toggler.css('backgroundColor', '');
82 // fire clear callback if we have one
83 if ( $.isFunction( self.options.clear ) )
84 self.options.clear.call( this, event );
88 // open a keyboard-focused closed picker with space or enter
89 self.toggler.on('keyup', function( e ) {
90 if ( e.keyCode === 13 || e.keyCode === 32 ) {
92 self.toggler.trigger('click').next().focus();
96 self.button.click( function( event ) {
98 if ( me.hasClass( 'wp-picker-clear' ) ) {
99 self.element.val( '' );
100 self.toggler.css('backgroundColor', '');
101 if ( $.isFunction( self.options.clear ) )
102 self.options.clear.call( this, event );
103 } else if ( me.hasClass( 'wp-picker-default' ) ) {
104 self.element.val( self.options.defaultColor ).change();
108 _bodyListener: function( event ) {
109 if ( ! event.data.wrap.find( event.target ).length )
110 event.data.toggler.click();
112 // $("#input").wpColorPicker('color') returns the current color
113 // $("#input").wpColorPicker('color', '#bada55') to set
114 color: function( newColor ) {
115 if ( newColor === undef )
116 return this.element.iris( "option", "color" );
118 this.element.iris( "option", "color", newColor );
120 //$("#input").wpColorPicker('defaultColor') returns the current default color
121 //$("#input").wpColorPicker('defaultColor', newDefaultColor) to set
122 defaultColor: function( newDefaultColor ) {
123 if ( newDefaultColor === undef )
124 return this.options.defaultColor;
126 this.options.defaultColor = newDefaultColor;
130 $.widget( 'wp.wpColorPicker', ColorPicker );