jquery-simplecolorpicker-rails 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,52 +23,77 @@
|
|
23
23
|
constructor: SimpleColorPicker,
|
24
24
|
|
25
25
|
init: function(type, select, options) {
|
26
|
-
|
26
|
+
var self = this;
|
27
27
|
|
28
|
-
|
29
|
-
this.options = $.extend({}, $.fn.simplecolorpicker.defaults, options);
|
28
|
+
self.type = type;
|
30
29
|
|
31
|
-
|
30
|
+
self.$select = $(select);
|
31
|
+
var selectValue = self.$select.val();
|
32
|
+
self.options = $.extend({}, $.fn.simplecolorpicker.defaults, options);
|
33
|
+
|
34
|
+
self.$select.hide();
|
32
35
|
|
33
36
|
// Trick: fix span alignment
|
34
37
|
// When a span does not contain any text, its alignment is not correct
|
35
38
|
var fakeText = ' ';
|
36
39
|
|
40
|
+
self.$colorList = null;
|
41
|
+
|
42
|
+
if (self.options.picker) {
|
43
|
+
var selectText = self.$select.find('option:selected').text();
|
44
|
+
self.$icon = $('<span class="simplecolorpicker icon" title="' + selectText + '" style="background-color: ' + selectValue + ';" role="button" tabindex="0">'
|
45
|
+
+ fakeText
|
46
|
+
+ '</span>').insertAfter(self.$select);
|
47
|
+
self.$icon.on('click.' + self.type, $.proxy(self.showPicker, self));
|
48
|
+
|
49
|
+
self.$picker = $('<span class="simplecolorpicker picker"></span>').appendTo(document.body);
|
50
|
+
self.$colorList = self.$picker;
|
51
|
+
|
52
|
+
// Hide picker when clicking outside
|
53
|
+
$(document).on('mousedown.' + self.type, $.proxy(self.hidePicker, self));
|
54
|
+
self.$picker.on('mousedown.' + self.type, $.proxy(self.mousedown, self));
|
55
|
+
} else {
|
56
|
+
self.$inline = $('<span class="simplecolorpicker inline"></span>').insertAfter(self.$select);
|
57
|
+
self.$colorList = self.$inline;
|
58
|
+
}
|
59
|
+
|
37
60
|
// Build the list of colors
|
38
61
|
// <div class="selected" title="Green" style="background-color: #7bd148;" role="button"></div>
|
39
|
-
var
|
40
|
-
$('option',
|
62
|
+
var colors = '';
|
63
|
+
$('option', self.$select).each(function() {
|
41
64
|
var option = $(this);
|
42
65
|
var color = option.val();
|
43
66
|
var title = option.text();
|
44
67
|
var selected = '';
|
45
|
-
if (option.
|
68
|
+
if (option.prop('selected') === true || selectValue === color) {
|
46
69
|
selected = 'class="selected"';
|
47
70
|
}
|
48
|
-
|
49
|
-
|
50
|
-
|
71
|
+
colors += '<div ' + selected + ' title="' + title + '" style="background-color: ' + color + ';" role="button" tabindex="0">'
|
72
|
+
+ fakeText
|
73
|
+
+ '</div>';
|
51
74
|
});
|
52
75
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
this.$icon = $('<span class="simplecolorpicker icon" title="' + selectText + '" style="background-color: ' + selectValue + ';" role="button" tabindex="0">'
|
57
|
-
+ fakeText
|
58
|
-
+ '</span>').insertAfter(this.$select);
|
59
|
-
this.$icon.on('click.' + this.type, $.proxy(this.showPicker, this));
|
76
|
+
self.$colorList.html(colors);
|
77
|
+
self.$colorList.on('click.' + self.type, $.proxy(self.click, self));
|
78
|
+
},
|
60
79
|
|
61
|
-
|
62
|
-
|
63
|
-
|
80
|
+
/**
|
81
|
+
* Changes the selected color.
|
82
|
+
*
|
83
|
+
* @param color the hexadecimal color to select, ex: '#fbd75b'
|
84
|
+
*/
|
85
|
+
selectColor: function(color) {
|
86
|
+
var self = this;
|
64
87
|
|
65
|
-
|
66
|
-
$(
|
67
|
-
|
88
|
+
var colorDiv = self.$colorList.find('div').filter(function() {
|
89
|
+
var col = $(this).css('background-color');
|
90
|
+
return self.rgb2hex(col) === color;
|
91
|
+
});
|
92
|
+
|
93
|
+
if (colorDiv.length > 0) {
|
94
|
+
self.selectColorDiv(colorDiv);
|
68
95
|
} else {
|
69
|
-
|
70
|
-
this.$inline.html(colorList);
|
71
|
-
this.$inline.on('click.' + this.type, $.proxy(this.click, this));
|
96
|
+
console.error("The given color '" + color + "' could not be found");
|
72
97
|
}
|
73
98
|
},
|
74
99
|
|
@@ -87,27 +112,39 @@
|
|
87
112
|
this.$picker.hide(this.options.delay);
|
88
113
|
},
|
89
114
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
115
|
+
/**
|
116
|
+
* Selects the given div inside $colorList.
|
117
|
+
*
|
118
|
+
* The given div becomes the selected one.
|
119
|
+
* It also changes the HTML select value, this will emit the 'change' event.
|
120
|
+
*/
|
121
|
+
selectColorDiv: function(colorDiv) {
|
122
|
+
var color = colorDiv.css('background-color');
|
123
|
+
var title = colorDiv.prop('title');
|
95
124
|
|
96
|
-
|
97
|
-
|
125
|
+
// Mark this div as the selected one
|
126
|
+
colorDiv.siblings().removeClass('selected');
|
127
|
+
colorDiv.addClass('selected');
|
98
128
|
|
99
|
-
|
100
|
-
|
101
|
-
|
129
|
+
if (this.options.picker) {
|
130
|
+
this.$icon.css('background-color', color);
|
131
|
+
this.$icon.prop('title', title);
|
132
|
+
this.hidePicker();
|
133
|
+
}
|
102
134
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
this.hidePicker();
|
107
|
-
}
|
135
|
+
// Change HTML select value
|
136
|
+
this.$select.val(this.rgb2hex(color)).change();
|
137
|
+
},
|
108
138
|
|
109
|
-
|
110
|
-
|
139
|
+
/**
|
140
|
+
* The user clicked on a div inside $colorList.
|
141
|
+
*/
|
142
|
+
click: function(e) {
|
143
|
+
var target = $(e.target);
|
144
|
+
if (target.length === 1) {
|
145
|
+
if (target[0].nodeName.toLowerCase() === 'div') {
|
146
|
+
// When you click on a color, make it the new selected one
|
147
|
+
this.selectColorDiv(target);
|
111
148
|
}
|
112
149
|
}
|
113
150
|
},
|
@@ -144,14 +181,12 @@
|
|
144
181
|
if (this.options.picker) {
|
145
182
|
this.$icon.off('.' + this.type);
|
146
183
|
this.$icon.remove();
|
147
|
-
this.$picker.off('.' + this.type);
|
148
|
-
this.$picker.remove();
|
149
184
|
$(document).off('.' + this.type);
|
150
|
-
} else {
|
151
|
-
this.$inline.off('.' + this.type);
|
152
|
-
this.$inline.remove();
|
153
185
|
}
|
154
186
|
|
187
|
+
this.$colorList.off('.' + this.type);
|
188
|
+
this.$colorList.remove();
|
189
|
+
|
155
190
|
this.$select.removeData(this.type);
|
156
191
|
this.$select.show();
|
157
192
|
}
|
@@ -162,6 +197,9 @@
|
|
162
197
|
* How to use: $('#id').simplecolorpicker()
|
163
198
|
*/
|
164
199
|
$.fn.simplecolorpicker = function(option) {
|
200
|
+
var args = $.makeArray(arguments);
|
201
|
+
args.shift();
|
202
|
+
|
165
203
|
// For HTML element passed to the plugin
|
166
204
|
return this.each(function() {
|
167
205
|
var $this = $(this),
|
@@ -171,7 +209,7 @@
|
|
171
209
|
$this.data('simplecolorpicker', (data = new SimpleColorPicker(this, options)));
|
172
210
|
}
|
173
211
|
if (typeof option === 'string') {
|
174
|
-
data[option]();
|
212
|
+
data[option].apply(data, args);
|
175
213
|
}
|
176
214
|
});
|
177
215
|
};
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-simplecolorpicker-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement: &
|
16
|
+
requirement: &25882020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *25882020
|
25
25
|
description: simplecolorpicker jQuery plugin
|
26
26
|
email:
|
27
27
|
- tkrotoff@gmail.com
|
@@ -59,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
59
|
version: '0'
|
60
60
|
requirements: []
|
61
61
|
rubyforge_project:
|
62
|
-
rubygems_version: 1.8.
|
62
|
+
rubygems_version: 1.8.16
|
63
63
|
signing_key:
|
64
64
|
specification_version: 3
|
65
65
|
summary: simplecolorpicker packaged for the Rails 3.1+ asset pipeline
|