forked from tkrotoff/jquery-simplecolorpicker
/
jquery.simplecolorpicker.min.js
9 lines (9 loc) · 3.2 KB
/
jquery.simplecolorpicker.min.js
1
2
3
4
5
6
7
8
9
/*
* Very simple jQuery Color Picker
* https://github.com/tkrotoff/jquery-simplecolorpicker
*
* Copyright (C) 2012-2013 Tanguy Krotoff <tkrotoff@gmail.com>
*
* Licensed under the MIT license
*/
(function(b){var a=function(c,d){this.init("simplecolorpicker",c,d)};a.prototype={constructor:a,init:function(f,c,e){var d=this;d.type=f;d.$select=b(c);d.$select.hide();d.options=b.extend({},b.fn.simplecolorpicker.defaults,e);d.$colorList=null;if(d.options.picker===true){var g=d.$select.find("> option:selected").text();d.$icon=b('<span class="simplecolorpicker icon" title="'+g+'" style="background-color: '+d.$select.val()+';" role="button" tabindex="0"></span>').insertAfter(d.$select);d.$icon.on("click."+d.type,b.proxy(d.showPicker,d));d.$picker=b('<span class="simplecolorpicker picker '+d.options.theme+'"></span>').appendTo(document.body);d.$colorList=d.$picker;b(document).on("mousedown."+d.type,b.proxy(d.hidePicker,d));d.$picker.on("mousedown."+d.type,b.proxy(d.mousedown,d))}else{d.$inline=b('<span class="simplecolorpicker inline '+d.options.theme+'"></span>').insertAfter(d.$select);d.$colorList=d.$inline}d.$select.find("> option").each(function(){var h=b(this);var k=h.val();var i=h.is(":selected");var q=h.is(":disabled");var l="";if(i===true){l=" data-selected"}var m="";if(q===true){m=" data-disabled"}var p="";if(q===false){p=' title="'+h.text()+'"'}var n="";if(q===false){n=' role="button" tabindex="0"'}var o=b('<span class="color"'+p+' style="background-color: '+k+';" data-color="'+k+'"'+l+m+n+"></span>");d.$colorList.append(o);o.on("click."+d.type,b.proxy(d.colorSpanClicked,d));var j=h.next();if(j.is("optgroup")===true){d.$colorList.append('<span class="vr"></span>')}})},selectColor:function(d){var c=this;var e=c.$colorList.find("> span.color").filter(function(){return b(this).data("color").toLowerCase()===d.toLowerCase()});if(e.length>0){c.selectColorSpan(e)}else{console.error("The given color '"+d+"' could not be found")}},showPicker:function(){var c=this.$icon.offset();this.$picker.css({left:c.left-6,top:c.top+this.$icon.outerHeight()});this.$picker.show(this.options.pickerDelay)},hidePicker:function(){this.$picker.hide(this.options.pickerDelay)},selectColorSpan:function(e){var c=e.data("color");var d=e.prop("title");e.siblings().removeAttr("data-selected");e.attr("data-selected","");if(this.options.picker===true){this.$icon.css("background-color",c);this.$icon.prop("title",d);this.hidePicker()}this.$select.val(c)},colorSpanClicked:function(c){if(b(c.target).is("[data-disabled]")===false){this.selectColorSpan(b(c.target));this.$select.trigger("change")}},mousedown:function(c){c.stopPropagation();c.preventDefault()},destroy:function(){if(this.options.picker===true){this.$icon.off("."+this.type);this.$icon.remove();b(document).off("."+this.type)}this.$colorList.off("."+this.type);this.$colorList.remove();this.$select.removeData(this.type);this.$select.show()}};b.fn.simplecolorpicker=function(d){var c=b.makeArray(arguments);c.shift();return this.each(function(){var g=b(this),f=g.data("simplecolorpicker"),e=typeof d==="object"&&d;if(f===undefined){g.data("simplecolorpicker",(f=new a(this,e)))}if(typeof d==="string"){f[d].apply(f,c)}})};b.fn.simplecolorpicker.defaults={theme:"",picker:false,pickerDelay:0}})(jQuery);