spectrum-rails 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/spectrum-rails/version.rb +1 -1
- data/vendor/assets/javascripts/spectrum.js +329 -208
- data/vendor/assets/stylesheets/spectrum.css +92 -62
- metadata +2 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
// Spectrum Colorpicker v1.1.
|
1
|
+
// Spectrum Colorpicker v1.1.2+
|
2
2
|
// https://github.com/bgrins/spectrum
|
3
3
|
// Author: Brian Grinstead
|
4
4
|
// License: MIT
|
@@ -6,110 +6,119 @@
|
|
6
6
|
(function (window, $, undefined) {
|
7
7
|
var defaultOpts = {
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
9
|
+
// Callbacks
|
10
|
+
beforeShow: noop,
|
11
|
+
move: noop,
|
12
|
+
change: noop,
|
13
|
+
show: noop,
|
14
|
+
hide: noop,
|
15
|
+
|
16
|
+
// Options
|
17
|
+
color: false,
|
18
|
+
flat: false,
|
19
|
+
showInput: false,
|
20
|
+
allowEmpty: false,
|
21
|
+
showButtons: true,
|
22
|
+
clickoutFiresChange: false,
|
23
|
+
showInitial: false,
|
24
|
+
showPalette: false,
|
25
|
+
showPaletteOnly: false,
|
26
|
+
showSelectionPalette: true,
|
27
|
+
localStorageKey: false,
|
28
|
+
appendTo: "body",
|
29
|
+
maxSelectionSize: 7,
|
30
|
+
cancelText: "cancel",
|
31
|
+
chooseText: "choose",
|
32
|
+
preferredFormat: false,
|
33
|
+
className: "",
|
34
|
+
showAlpha: false,
|
35
|
+
theme: "sp-light",
|
36
|
+
palette: ['fff', '000'],
|
37
|
+
selectionPalette: [],
|
38
|
+
disabled: false
|
39
|
+
},
|
40
|
+
spectrums = [],
|
41
|
+
IE = !!/msie/i.exec( window.navigator.userAgent ),
|
42
|
+
rgbaSupport = (function() {
|
43
|
+
function contains( str, substr ) {
|
44
|
+
return !!~('' + str).indexOf(substr);
|
45
|
+
}
|
46
|
+
|
47
|
+
var elem = document.createElement('div');
|
48
|
+
var style = elem.style;
|
49
|
+
style.cssText = 'background-color:rgba(0,0,0,.5)';
|
50
|
+
return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla');
|
51
|
+
})(),
|
52
|
+
replaceInput = [
|
53
|
+
"<div class='sp-replacer'>",
|
53
54
|
"<div class='sp-preview'><div class='sp-preview-inner'></div></div>",
|
54
55
|
"<div class='sp-dd'>▼</div>",
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
"</div>"
|
57
|
+
].join(''),
|
58
|
+
markup = (function () {
|
58
59
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
// IE does not support gradients with multiple stops, so we need to simulate
|
61
|
+
// that for the rainbow slider with 8 divs that each have a single gradient
|
62
|
+
var gradientFix = "";
|
63
|
+
if (IE) {
|
64
|
+
for (var i = 1; i <= 6; i++) {
|
65
|
+
gradientFix += "<div class='sp-" + i + "'></div>";
|
66
|
+
}
|
65
67
|
}
|
66
|
-
}
|
67
68
|
|
68
|
-
|
69
|
-
|
69
|
+
return [
|
70
|
+
"<div class='sp-container sp-hidden'>",
|
70
71
|
"<div class='sp-palette-container'>",
|
71
|
-
|
72
|
+
"<div class='sp-palette sp-thumb sp-cf'></div>",
|
72
73
|
"</div>",
|
73
74
|
"<div class='sp-picker-container'>",
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
"</div>",
|
82
|
-
"</div>",
|
83
|
-
"</div>",
|
84
|
-
"<div class='sp-hue'>",
|
85
|
-
"<div class='sp-slider'></div>",
|
86
|
-
gradientFix,
|
87
|
-
"</div>",
|
88
|
-
"</div>",
|
89
|
-
"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>",
|
90
|
-
"</div>",
|
91
|
-
"<div class='sp-input-container sp-cf'>",
|
92
|
-
"<input class='sp-input' type='text' spellcheck='false' />",
|
93
|
-
"</div>",
|
94
|
-
"<div class='sp-initial sp-thumb sp-cf'></div>",
|
95
|
-
"<div class='sp-button-container sp-cf'>",
|
96
|
-
"<a class='sp-cancel' href='#'></a>",
|
97
|
-
"<button class='sp-choose'></button>",
|
98
|
-
"</div>",
|
75
|
+
"<div class='sp-top sp-cf'>",
|
76
|
+
"<div class='sp-fill'></div>",
|
77
|
+
"<div class='sp-top-inner'>",
|
78
|
+
"<div class='sp-color'>",
|
79
|
+
"<div class='sp-sat'>",
|
80
|
+
"<div class='sp-val'>",
|
81
|
+
"<div class='sp-dragger'></div>",
|
99
82
|
"</div>",
|
100
|
-
|
101
|
-
|
102
|
-
|
83
|
+
"</div>",
|
84
|
+
"</div>",
|
85
|
+
"<div class='sp-clear sp-clear-display' title='Clear Color Selection'>",
|
86
|
+
"</div>",
|
87
|
+
"<div class='sp-hue'>",
|
88
|
+
"<div class='sp-slider'></div>",
|
89
|
+
gradientFix,
|
90
|
+
"</div>",
|
91
|
+
"</div>",
|
92
|
+
"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>",
|
93
|
+
"</div>",
|
94
|
+
"<div class='sp-input-container sp-cf'>",
|
95
|
+
"<input class='sp-input' type='text' spellcheck='false' />",
|
96
|
+
"</div>",
|
97
|
+
"<div class='sp-initial sp-thumb sp-cf'></div>",
|
98
|
+
"<div class='sp-button-container sp-cf'>",
|
99
|
+
"<a class='sp-cancel' href='#'></a>",
|
100
|
+
"<button class='sp-choose'></button>",
|
101
|
+
"</div>",
|
102
|
+
"</div>",
|
103
|
+
"</div>"
|
104
|
+
].join("");
|
105
|
+
})();
|
103
106
|
|
104
107
|
function paletteTemplate (p, color, className) {
|
105
108
|
var html = [];
|
106
109
|
for (var i = 0; i < p.length; i++) {
|
107
|
-
var
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
110
|
+
var current = p[i];
|
111
|
+
if(current) {
|
112
|
+
var tiny = tinycolor(current);
|
113
|
+
var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light";
|
114
|
+
c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : "";
|
115
|
+
|
116
|
+
var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter();
|
117
|
+
html.push('<span title="' + tiny.toRgbString() + '" data-color="' + tiny.toRgbString() + '" class="' + c + '"><span class="sp-thumb-inner" style="' + swatchStyle + ';" /></span>');
|
118
|
+
} else {
|
119
|
+
var cls = 'sp-clear-display';
|
120
|
+
html.push('<span title="No Color Selected" data-color="" style="background-color:transparent;" class="' + cls + '"></span>');
|
121
|
+
}
|
113
122
|
}
|
114
123
|
return "<div class='sp-cf " + className + "'>" + html.join('') + "</div>";
|
115
124
|
}
|
@@ -180,6 +189,7 @@
|
|
180
189
|
paletteContainer = container.find(".sp-palette"),
|
181
190
|
initialColorContainer = container.find(".sp-initial"),
|
182
191
|
cancelButton = container.find(".sp-cancel"),
|
192
|
+
clearButton = container.find(".sp-clear"),
|
183
193
|
chooseButton = container.find(".sp-choose"),
|
184
194
|
isInput = boundElement.is("input"),
|
185
195
|
shouldReplace = isInput && !flat,
|
@@ -190,14 +200,21 @@
|
|
190
200
|
colorOnShow = false,
|
191
201
|
preferredFormat = opts.preferredFormat,
|
192
202
|
currentPreferredFormat = preferredFormat,
|
193
|
-
clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange
|
203
|
+
clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,
|
204
|
+
isEmpty = !initialColor,
|
205
|
+
allowEmpty = opts.allowEmpty;
|
194
206
|
|
195
207
|
|
196
208
|
function applyOptions() {
|
197
209
|
|
210
|
+
if (opts.showPaletteOnly) {
|
211
|
+
opts.showPalette = true;
|
212
|
+
}
|
213
|
+
|
198
214
|
container.toggleClass("sp-flat", flat);
|
199
215
|
container.toggleClass("sp-input-disabled", !opts.showInput);
|
200
216
|
container.toggleClass("sp-alpha-enabled", opts.showAlpha);
|
217
|
+
container.toggleClass("sp-clear-enabled", opts.allowEmpty);
|
201
218
|
container.toggleClass("sp-buttons-disabled", !opts.showButtons);
|
202
219
|
container.toggleClass("sp-palette-disabled", !opts.showPalette);
|
203
220
|
container.toggleClass("sp-palette-only", opts.showPaletteOnly);
|
@@ -219,6 +236,10 @@
|
|
219
236
|
boundElement.after(replacer).hide();
|
220
237
|
}
|
221
238
|
|
239
|
+
if (!allowEmpty) {
|
240
|
+
clearButton.hide();
|
241
|
+
}
|
242
|
+
|
222
243
|
if (flat) {
|
223
244
|
boundElement.after(container).hide();
|
224
245
|
}
|
@@ -240,7 +261,7 @@
|
|
240
261
|
if (oldPalette.length > 1) {
|
241
262
|
delete window.localStorage[localStorageKey];
|
242
263
|
$.each(oldPalette, function(i, c) {
|
243
|
-
|
264
|
+
addColorToSelectionPalette(c);
|
244
265
|
});
|
245
266
|
}
|
246
267
|
}
|
@@ -285,6 +306,21 @@
|
|
285
306
|
hide("cancel");
|
286
307
|
});
|
287
308
|
|
309
|
+
|
310
|
+
clearButton.bind("click.spectrum", function (e) {
|
311
|
+
e.stopPropagation();
|
312
|
+
e.preventDefault();
|
313
|
+
|
314
|
+
isEmpty = true;
|
315
|
+
|
316
|
+
move();
|
317
|
+
if(flat) {
|
318
|
+
//for the flat style, this is a change event
|
319
|
+
updateOriginalInput(true);
|
320
|
+
}
|
321
|
+
});
|
322
|
+
|
323
|
+
|
288
324
|
chooseButton.text(opts.chooseText);
|
289
325
|
chooseButton.bind("click.spectrum", function (e) {
|
290
326
|
e.stopPropagation();
|
@@ -298,6 +334,7 @@
|
|
298
334
|
|
299
335
|
draggable(alphaSlider, function (dragX, dragY, e) {
|
300
336
|
currentAlpha = (dragX / alphaWidth);
|
337
|
+
isEmpty = false;
|
301
338
|
if (e.shiftKey) {
|
302
339
|
currentAlpha = Math.round(currentAlpha * 10) / 10;
|
303
340
|
}
|
@@ -307,6 +344,7 @@
|
|
307
344
|
|
308
345
|
draggable(slider, function (dragX, dragY) {
|
309
346
|
currentHue = parseFloat(dragY / slideHeight);
|
347
|
+
isEmpty = false;
|
310
348
|
move();
|
311
349
|
}, dragStart, dragStop);
|
312
350
|
|
@@ -334,6 +372,8 @@
|
|
334
372
|
currentValue = parseFloat((dragHeight - dragY) / dragHeight);
|
335
373
|
}
|
336
374
|
|
375
|
+
isEmpty = false;
|
376
|
+
|
337
377
|
move();
|
338
378
|
|
339
379
|
}, dragStart, dragStop);
|
@@ -459,12 +499,20 @@
|
|
459
499
|
}
|
460
500
|
|
461
501
|
function setFromTextInput() {
|
462
|
-
|
463
|
-
|
464
|
-
|
502
|
+
|
503
|
+
var value = textInput.val();
|
504
|
+
|
505
|
+
if ((value === null || value === "") && allowEmpty) {
|
506
|
+
set(null);
|
465
507
|
}
|
466
508
|
else {
|
467
|
-
|
509
|
+
var tiny = tinycolor(value);
|
510
|
+
if (tiny.ok) {
|
511
|
+
set(tiny);
|
512
|
+
}
|
513
|
+
else {
|
514
|
+
textInput.addClass("sp-validation-error");
|
515
|
+
}
|
468
516
|
}
|
469
517
|
}
|
470
518
|
|
@@ -551,23 +599,33 @@
|
|
551
599
|
return;
|
552
600
|
}
|
553
601
|
|
554
|
-
var newColor
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
602
|
+
var newColor;
|
603
|
+
if (!color && allowEmpty) {
|
604
|
+
isEmpty = true;
|
605
|
+
} else {
|
606
|
+
isEmpty = false;
|
607
|
+
newColor = tinycolor(color);
|
608
|
+
var newHsv = newColor.toHsv();
|
561
609
|
|
610
|
+
currentHue = (newHsv.h % 360) / 360;
|
611
|
+
currentSaturation = newHsv.s;
|
612
|
+
currentValue = newHsv.v;
|
613
|
+
currentAlpha = newHsv.a;
|
614
|
+
}
|
562
615
|
updateUI();
|
563
616
|
|
564
|
-
if (newColor.ok && !ignoreFormatChange) {
|
617
|
+
if (newColor && newColor.ok && !ignoreFormatChange) {
|
565
618
|
currentPreferredFormat = preferredFormat || newColor.format;
|
566
619
|
}
|
567
620
|
}
|
568
621
|
|
569
622
|
function get(opts) {
|
570
623
|
opts = opts || { };
|
624
|
+
|
625
|
+
if (allowEmpty && isEmpty) {
|
626
|
+
return null;
|
627
|
+
}
|
628
|
+
|
571
629
|
return tinycolor.fromRatio({
|
572
630
|
h: currentHue,
|
573
631
|
s: currentSaturation,
|
@@ -606,39 +664,51 @@
|
|
606
664
|
}
|
607
665
|
|
608
666
|
var realColor = get({ format: format }),
|
609
|
-
|
610
|
-
|
667
|
+
displayColor = '';
|
668
|
+
|
669
|
+
//reset background info for preview element
|
670
|
+
previewElement.removeClass("sp-clear-display");
|
671
|
+
previewElement.css('background-color', 'transparent');
|
611
672
|
|
612
|
-
|
613
|
-
|
614
|
-
previewElement.
|
673
|
+
if (!realColor && allowEmpty) {
|
674
|
+
// Update the replaced elements background with icon indicating no color selection
|
675
|
+
previewElement.addClass("sp-clear-display");
|
615
676
|
}
|
616
677
|
else {
|
617
|
-
|
618
|
-
|
619
|
-
}
|
620
|
-
|
621
|
-
if (opts.showAlpha) {
|
622
|
-
var rgb = realColor.toRgb();
|
623
|
-
rgb.a = 0;
|
624
|
-
var realAlpha = tinycolor(rgb).toRgbString();
|
625
|
-
var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")";
|
678
|
+
var realHex = realColor.toHexString(),
|
679
|
+
realRgb = realColor.toRgbString();
|
626
680
|
|
627
|
-
|
628
|
-
|
681
|
+
// Update the replaced elements background color (with actual selected color)
|
682
|
+
if (rgbaSupport || realColor.alpha === 1) {
|
683
|
+
previewElement.css("background-color", realRgb);
|
629
684
|
}
|
630
685
|
else {
|
631
|
-
|
632
|
-
|
633
|
-
alphaSliderInner.css("background", "-ms-" + gradient);
|
634
|
-
alphaSliderInner.css("background", gradient);
|
686
|
+
previewElement.css("background-color", "transparent");
|
687
|
+
previewElement.css("filter", realColor.toFilter());
|
635
688
|
}
|
636
|
-
}
|
637
689
|
|
690
|
+
if (opts.showAlpha) {
|
691
|
+
var rgb = realColor.toRgb();
|
692
|
+
rgb.a = 0;
|
693
|
+
var realAlpha = tinycolor(rgb).toRgbString();
|
694
|
+
var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")";
|
695
|
+
|
696
|
+
if (IE) {
|
697
|
+
alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex));
|
698
|
+
}
|
699
|
+
else {
|
700
|
+
alphaSliderInner.css("background", "-webkit-" + gradient);
|
701
|
+
alphaSliderInner.css("background", "-moz-" + gradient);
|
702
|
+
alphaSliderInner.css("background", "-ms-" + gradient);
|
703
|
+
alphaSliderInner.css("background", gradient);
|
704
|
+
}
|
705
|
+
}
|
638
706
|
|
707
|
+
displayColor = realColor.toString(format);
|
708
|
+
}
|
639
709
|
// Update the text entry input as it changes happen
|
640
710
|
if (opts.showInput) {
|
641
|
-
textInput.val(
|
711
|
+
textInput.val(displayColor);
|
642
712
|
}
|
643
713
|
|
644
714
|
if (opts.showPalette) {
|
@@ -652,49 +722,67 @@
|
|
652
722
|
var s = currentSaturation;
|
653
723
|
var v = currentValue;
|
654
724
|
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
725
|
+
if(allowEmpty && isEmpty) {
|
726
|
+
//if selected color is empty, hide the helpers
|
727
|
+
alphaSlideHelper.hide();
|
728
|
+
slideHelper.hide();
|
729
|
+
dragHelper.hide();
|
730
|
+
}
|
731
|
+
else {
|
732
|
+
//make sure helpers are visible
|
733
|
+
alphaSlideHelper.show();
|
734
|
+
slideHelper.show();
|
735
|
+
dragHelper.show();
|
736
|
+
|
737
|
+
// Where to show the little circle in that displays your current selected color
|
738
|
+
var dragX = s * dragWidth;
|
739
|
+
var dragY = dragHeight - (v * dragHeight);
|
740
|
+
dragX = Math.max(
|
741
|
+
-dragHelperHeight,
|
742
|
+
Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight)
|
743
|
+
);
|
744
|
+
dragY = Math.max(
|
745
|
+
-dragHelperHeight,
|
746
|
+
Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight)
|
747
|
+
);
|
748
|
+
dragHelper.css({
|
749
|
+
"top": dragY,
|
750
|
+
"left": dragX
|
751
|
+
});
|
752
|
+
|
753
|
+
var alphaX = currentAlpha * alphaWidth;
|
754
|
+
alphaSlideHelper.css({
|
755
|
+
"left": alphaX - (alphaSlideHelperWidth / 2)
|
756
|
+
});
|
757
|
+
|
758
|
+
// Where to show the bar that displays your current selected hue
|
759
|
+
var slideY = (currentHue) * slideHeight;
|
760
|
+
slideHelper.css({
|
761
|
+
"top": slideY - slideHelperHeight
|
762
|
+
});
|
763
|
+
}
|
681
764
|
}
|
682
765
|
|
683
766
|
function updateOriginalInput(fireCallback) {
|
684
|
-
var color = get()
|
767
|
+
var color = get(),
|
768
|
+
displayColor = '',
|
769
|
+
hasChanged = !tinycolor.equals(color, colorOnShow);
|
770
|
+
|
771
|
+
if(color) {
|
772
|
+
displayColor = color.toString(currentPreferredFormat);
|
773
|
+
// Update the selection palette with the current color
|
774
|
+
addColorToSelectionPalette(color);
|
775
|
+
}
|
685
776
|
|
686
777
|
if (isInput) {
|
687
|
-
boundElement.val(
|
778
|
+
boundElement.val(displayColor);
|
688
779
|
}
|
689
780
|
|
690
|
-
var hasChanged = !tinycolor.equals(color, colorOnShow);
|
691
781
|
colorOnShow = color;
|
692
782
|
|
693
|
-
// Update the selection palette with the current color
|
694
|
-
addColorToSelectionPalette(color);
|
695
783
|
if (fireCallback && hasChanged) {
|
696
784
|
callbacks.change(color);
|
697
|
-
boundElement.trigger('change
|
785
|
+
boundElement.trigger('change', [ color ]);
|
698
786
|
}
|
699
787
|
}
|
700
788
|
|
@@ -774,9 +862,9 @@
|
|
774
862
|
}
|
775
863
|
|
776
864
|
/**
|
777
|
-
|
778
|
-
|
779
|
-
|
865
|
+
* checkOffset - get the offset below/above and left/right element depending on screen position
|
866
|
+
* Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js
|
867
|
+
*/
|
780
868
|
function getOffset(picker, input) {
|
781
869
|
var extraY = 0;
|
782
870
|
var dpWidth = picker.outerWidth();
|
@@ -791,33 +879,33 @@
|
|
791
879
|
|
792
880
|
offset.left -=
|
793
881
|
Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
|
794
|
-
|
882
|
+
Math.abs(offset.left + dpWidth - viewWidth) : 0);
|
795
883
|
|
796
884
|
offset.top -=
|
797
885
|
Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
|
798
|
-
|
886
|
+
Math.abs(dpHeight + inputHeight - extraY) : extraY));
|
799
887
|
|
800
888
|
return offset;
|
801
889
|
}
|
802
890
|
|
803
891
|
/**
|
804
|
-
|
805
|
-
|
892
|
+
* noop - do nothing
|
893
|
+
*/
|
806
894
|
function noop() {
|
807
895
|
|
808
896
|
}
|
809
897
|
|
810
898
|
/**
|
811
|
-
|
812
|
-
|
899
|
+
* stopPropagation - makes the code only doing this a little easier to read in line
|
900
|
+
*/
|
813
901
|
function stopPropagation(e) {
|
814
902
|
e.stopPropagation();
|
815
903
|
}
|
816
904
|
|
817
905
|
/**
|
818
|
-
|
819
|
-
|
820
|
-
|
906
|
+
* Create a function bound to a given object
|
907
|
+
* Thanks to underscore.js
|
908
|
+
*/
|
821
909
|
function bind(func, obj) {
|
822
910
|
var slice = Array.prototype.slice;
|
823
911
|
var args = slice.call(arguments, 2);
|
@@ -827,9 +915,9 @@
|
|
827
915
|
}
|
828
916
|
|
829
917
|
/**
|
830
|
-
|
831
|
-
|
832
|
-
|
918
|
+
* Lightweight drag helper. Handles containment within the element, so that
|
919
|
+
* when dragging, the x is within [0,element.width] and y is within [0,element.height]
|
920
|
+
*/
|
833
921
|
function draggable(element, onmove, onstart, onstop) {
|
834
922
|
onmove = onmove || function () { };
|
835
923
|
onstart = onstart || function () { };
|
@@ -930,8 +1018,8 @@
|
|
930
1018
|
function log(){/* jshint -W021 */if(window.console){if(Function.prototype.bind)log=Function.prototype.bind.call(console.log,console);else log=function(){Function.prototype.apply.call(console.log,console,arguments);};log.apply(this,arguments);}}
|
931
1019
|
|
932
1020
|
/**
|
933
|
-
|
934
|
-
|
1021
|
+
* Define a jQuery plugin
|
1022
|
+
*/
|
935
1023
|
var dataID = "spectrum.id";
|
936
1024
|
$.fn.spectrum = function (opts, extra) {
|
937
1025
|
|
@@ -997,11 +1085,12 @@
|
|
997
1085
|
});
|
998
1086
|
}
|
999
1087
|
};
|
1000
|
-
|
1088
|
+
|
1089
|
+
// TinyColor v0.9.16
|
1001
1090
|
// https://github.com/bgrins/TinyColor
|
1002
|
-
// 2013-
|
1091
|
+
// 2013-08-10, Brian Grinstead, MIT License
|
1003
1092
|
|
1004
|
-
(function(
|
1093
|
+
(function() {
|
1005
1094
|
|
1006
1095
|
var trimLeft = /^[\s,#]+/,
|
1007
1096
|
trimRight = /\s+$/,
|
@@ -1019,8 +1108,9 @@
|
|
1019
1108
|
|
1020
1109
|
// If input is already a tinycolor, return itself
|
1021
1110
|
if (typeof color == "object" && color.hasOwnProperty("_tc_id")) {
|
1022
|
-
|
1111
|
+
return color;
|
1023
1112
|
}
|
1113
|
+
|
1024
1114
|
var rgb = inputToRGB(color);
|
1025
1115
|
var r = rgb.r,
|
1026
1116
|
g = rgb.g,
|
@@ -1042,6 +1132,13 @@
|
|
1042
1132
|
format: format,
|
1043
1133
|
_tc_id: tinyCounter++,
|
1044
1134
|
alpha: a,
|
1135
|
+
getAlpha: function() {
|
1136
|
+
return a;
|
1137
|
+
},
|
1138
|
+
setAlpha: function(value) {
|
1139
|
+
a = boundAlpha(value);
|
1140
|
+
roundA = mathRound(100*a) / 100;
|
1141
|
+
},
|
1045
1142
|
toHsv: function() {
|
1046
1143
|
var hsv = rgbToHsv(r, g, b);
|
1047
1144
|
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a };
|
@@ -1050,8 +1147,8 @@
|
|
1050
1147
|
var hsv = rgbToHsv(r, g, b);
|
1051
1148
|
var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);
|
1052
1149
|
return (a == 1) ?
|
1053
|
-
|
1054
|
-
|
1150
|
+
"hsv(" + h + ", " + s + "%, " + v + "%)" :
|
1151
|
+
"hsva(" + h + ", " + s + "%, " + v + "%, "+ roundA + ")";
|
1055
1152
|
},
|
1056
1153
|
toHsl: function() {
|
1057
1154
|
var hsl = rgbToHsl(r, g, b);
|
@@ -1061,8 +1158,8 @@
|
|
1061
1158
|
var hsl = rgbToHsl(r, g, b);
|
1062
1159
|
var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);
|
1063
1160
|
return (a == 1) ?
|
1064
|
-
|
1065
|
-
|
1161
|
+
"hsl(" + h + ", " + s + "%, " + l + "%)" :
|
1162
|
+
"hsla(" + h + ", " + s + "%, " + l + "%, "+ roundA + ")";
|
1066
1163
|
},
|
1067
1164
|
toHex: function(allow3Char) {
|
1068
1165
|
return rgbToHex(r, g, b, allow3Char);
|
@@ -1075,18 +1172,22 @@
|
|
1075
1172
|
},
|
1076
1173
|
toRgbString: function() {
|
1077
1174
|
return (a == 1) ?
|
1078
|
-
|
1079
|
-
|
1175
|
+
"rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" :
|
1176
|
+
"rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + roundA + ")";
|
1080
1177
|
},
|
1081
1178
|
toPercentageRgb: function() {
|
1082
1179
|
return { r: mathRound(bound01(r, 255) * 100) + "%", g: mathRound(bound01(g, 255) * 100) + "%", b: mathRound(bound01(b, 255) * 100) + "%", a: a };
|
1083
1180
|
},
|
1084
1181
|
toPercentageRgbString: function() {
|
1085
1182
|
return (a == 1) ?
|
1086
|
-
|
1087
|
-
|
1183
|
+
"rgb(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%)" :
|
1184
|
+
"rgba(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%, " + roundA + ")";
|
1088
1185
|
},
|
1089
1186
|
toName: function() {
|
1187
|
+
if (a === 0) {
|
1188
|
+
return "transparent";
|
1189
|
+
}
|
1190
|
+
|
1090
1191
|
return hexNames[rgbToHex(r, g, b, true)] || false;
|
1091
1192
|
},
|
1092
1193
|
toFilter: function(secondColor) {
|
@@ -1105,8 +1206,13 @@
|
|
1105
1206
|
return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr=#" + pad2(alphaHex) + hex + ",endColorstr=#" + pad2(secondAlphaHex) + secondHex + ")";
|
1106
1207
|
},
|
1107
1208
|
toString: function(format) {
|
1209
|
+
var formatSet = !!format;
|
1108
1210
|
format = format || this.format;
|
1211
|
+
|
1109
1212
|
var formattedString = false;
|
1213
|
+
var hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0;
|
1214
|
+
var formatWithAlpha = hasAlphaAndFormatNotSet && (format === "hex" || format === "hex6" || format === "hex3" || format === "name");
|
1215
|
+
|
1110
1216
|
if (format === "rgb") {
|
1111
1217
|
formattedString = this.toRgbString();
|
1112
1218
|
}
|
@@ -1129,6 +1235,10 @@
|
|
1129
1235
|
formattedString = this.toHsvString();
|
1130
1236
|
}
|
1131
1237
|
|
1238
|
+
if (formatWithAlpha) {
|
1239
|
+
return this.toRgbString();
|
1240
|
+
}
|
1241
|
+
|
1132
1242
|
return formattedString || this.toHexString();
|
1133
1243
|
}
|
1134
1244
|
};
|
@@ -1206,12 +1316,7 @@
|
|
1206
1316
|
}
|
1207
1317
|
}
|
1208
1318
|
|
1209
|
-
a =
|
1210
|
-
|
1211
|
-
// Handle invalid alpha characters by setting to 1
|
1212
|
-
if (isNaN(a) || a < 0 || a > 1) {
|
1213
|
-
a = 1;
|
1214
|
-
}
|
1319
|
+
a = boundAlpha(a);
|
1215
1320
|
|
1216
1321
|
return {
|
1217
1322
|
ok: ok,
|
@@ -1224,7 +1329,6 @@
|
|
1224
1329
|
}
|
1225
1330
|
|
1226
1331
|
|
1227
|
-
|
1228
1332
|
// Conversion Functions
|
1229
1333
|
// --------------------
|
1230
1334
|
|
@@ -1343,7 +1447,7 @@
|
|
1343
1447
|
// Converts an HSV color value to RGB.
|
1344
1448
|
// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
|
1345
1449
|
// *Returns:* { r, g, b } in the set [0, 255]
|
1346
|
-
|
1450
|
+
function hsvToRgb(h, s, v) {
|
1347
1451
|
|
1348
1452
|
h = bound01(h, 360) * 6;
|
1349
1453
|
s = bound01(s, 100);
|
@@ -1402,16 +1506,17 @@
|
|
1402
1506
|
// Thanks to less.js for some of the basics here
|
1403
1507
|
// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>
|
1404
1508
|
|
1405
|
-
|
1406
1509
|
tinycolor.desaturate = function (color, amount) {
|
1510
|
+
amount = (amount === 0) ? 0 : (amount || 10);
|
1407
1511
|
var hsl = tinycolor(color).toHsl();
|
1408
|
-
hsl.s -=
|
1512
|
+
hsl.s -= amount / 100;
|
1409
1513
|
hsl.s = clamp01(hsl.s);
|
1410
1514
|
return tinycolor(hsl);
|
1411
1515
|
};
|
1412
1516
|
tinycolor.saturate = function (color, amount) {
|
1517
|
+
amount = (amount === 0) ? 0 : (amount || 10);
|
1413
1518
|
var hsl = tinycolor(color).toHsl();
|
1414
|
-
hsl.s +=
|
1519
|
+
hsl.s += amount / 100;
|
1415
1520
|
hsl.s = clamp01(hsl.s);
|
1416
1521
|
return tinycolor(hsl);
|
1417
1522
|
};
|
@@ -1419,14 +1524,16 @@
|
|
1419
1524
|
return tinycolor.desaturate(color, 100);
|
1420
1525
|
};
|
1421
1526
|
tinycolor.lighten = function(color, amount) {
|
1527
|
+
amount = (amount === 0) ? 0 : (amount || 10);
|
1422
1528
|
var hsl = tinycolor(color).toHsl();
|
1423
|
-
hsl.l +=
|
1529
|
+
hsl.l += amount / 100;
|
1424
1530
|
hsl.l = clamp01(hsl.l);
|
1425
1531
|
return tinycolor(hsl);
|
1426
1532
|
};
|
1427
1533
|
tinycolor.darken = function (color, amount) {
|
1534
|
+
amount = (amount === 0) ? 0 : (amount || 10);
|
1428
1535
|
var hsl = tinycolor(color).toHsl();
|
1429
|
-
hsl.l -=
|
1536
|
+
hsl.l -= amount / 100;
|
1430
1537
|
hsl.l = clamp01(hsl.l);
|
1431
1538
|
return tinycolor(hsl);
|
1432
1539
|
};
|
@@ -1499,6 +1606,7 @@
|
|
1499
1606
|
return ret;
|
1500
1607
|
};
|
1501
1608
|
|
1609
|
+
|
1502
1610
|
// Readability Functions
|
1503
1611
|
// ---------------------
|
1504
1612
|
// <http://www.w3.org/TR/AERT#color-contrast>
|
@@ -1514,9 +1622,9 @@
|
|
1514
1622
|
var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000;
|
1515
1623
|
var colorDiff = (
|
1516
1624
|
Math.max(a.r, b.r) - Math.min(a.r, b.r) +
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1625
|
+
Math.max(a.g, b.g) - Math.min(a.g, b.g) +
|
1626
|
+
Math.max(a.b, b.b) - Math.min(a.b, b.b)
|
1627
|
+
);
|
1520
1628
|
|
1521
1629
|
return {
|
1522
1630
|
brightness: Math.abs(brightnessA - brightnessB),
|
@@ -1736,6 +1844,17 @@
|
|
1736
1844
|
return flipped;
|
1737
1845
|
}
|
1738
1846
|
|
1847
|
+
// Return a valid alpha value [0,1] with all invalid values being set to 1
|
1848
|
+
function boundAlpha(a) {
|
1849
|
+
a = parseFloat(a);
|
1850
|
+
|
1851
|
+
if (isNaN(a) || a < 0 || a > 1) {
|
1852
|
+
a = 1;
|
1853
|
+
}
|
1854
|
+
|
1855
|
+
return a;
|
1856
|
+
}
|
1857
|
+
|
1739
1858
|
// Take input from [0, n] and return it as [0, 1]
|
1740
1859
|
function bound01(n, max) {
|
1741
1860
|
if (isOnePointZero(n)) { n = "100%"; }
|
@@ -1832,7 +1951,7 @@
|
|
1832
1951
|
named = true;
|
1833
1952
|
}
|
1834
1953
|
else if (color == 'transparent') {
|
1835
|
-
return { r: 0, g: 0, b: 0, a: 0 };
|
1954
|
+
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
|
1836
1955
|
}
|
1837
1956
|
|
1838
1957
|
// Try to match string input using regular expressions.
|
@@ -1875,9 +1994,11 @@
|
|
1875
1994
|
return false;
|
1876
1995
|
}
|
1877
1996
|
|
1878
|
-
|
1997
|
+
// Expose tinycolor to window, does not need to run in non-browser context.
|
1998
|
+
window.tinycolor = tinycolor;
|
1999
|
+
|
2000
|
+
})();
|
1879
2001
|
|
1880
|
-
})(this);
|
1881
2002
|
|
1882
2003
|
$(function () {
|
1883
2004
|
if ($.fn.spectrum.load) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/***
|
2
|
-
Spectrum Colorpicker v1.1.
|
2
|
+
Spectrum Colorpicker v1.1.2+
|
3
3
|
https://github.com/bgrins/spectrum
|
4
4
|
Author: Brian Grinstead
|
5
5
|
License: MIT
|
@@ -12,7 +12,8 @@ License: MIT
|
|
12
12
|
display:inline-block;
|
13
13
|
*display: inline;
|
14
14
|
*zoom: 1;
|
15
|
-
|
15
|
+
/* https://github.com/bgrins/spectrum/issues/40 */
|
16
|
+
z-index: 9999994;
|
16
17
|
overflow: hidden;
|
17
18
|
}
|
18
19
|
.sp-container.sp-flat {
|
@@ -21,16 +22,16 @@ License: MIT
|
|
21
22
|
|
22
23
|
/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
|
23
24
|
.sp-top {
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
position:relative;
|
26
|
+
width: 100%;
|
27
|
+
display:inline-block;
|
27
28
|
}
|
28
29
|
.sp-top-inner {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
position:absolute;
|
31
|
+
top:0;
|
32
|
+
left:0;
|
33
|
+
bottom:0;
|
34
|
+
right:0;
|
34
35
|
}
|
35
36
|
.sp-color {
|
36
37
|
position: absolute;
|
@@ -47,6 +48,12 @@ License: MIT
|
|
47
48
|
left:84%;
|
48
49
|
height: 100%;
|
49
50
|
}
|
51
|
+
|
52
|
+
.sp-clear-enabled .sp-hue {
|
53
|
+
top:33px;
|
54
|
+
height: 77.5%;
|
55
|
+
}
|
56
|
+
|
50
57
|
.sp-fill {
|
51
58
|
padding-top: 80%;
|
52
59
|
}
|
@@ -58,17 +65,13 @@ License: MIT
|
|
58
65
|
bottom:0;
|
59
66
|
}
|
60
67
|
|
61
|
-
.sp-alpha-enabled .sp-top
|
62
|
-
{
|
68
|
+
.sp-alpha-enabled .sp-top {
|
63
69
|
margin-bottom: 18px;
|
64
70
|
}
|
65
|
-
.sp-alpha-enabled .sp-alpha
|
66
|
-
{
|
71
|
+
.sp-alpha-enabled .sp-alpha {
|
67
72
|
display: block;
|
68
73
|
}
|
69
|
-
|
70
|
-
.sp-alpha-handle
|
71
|
-
{
|
74
|
+
.sp-alpha-handle {
|
72
75
|
position:absolute;
|
73
76
|
top:-4px;
|
74
77
|
bottom: -4px;
|
@@ -79,9 +82,7 @@ License: MIT
|
|
79
82
|
background: white;
|
80
83
|
opacity: .8;
|
81
84
|
}
|
82
|
-
|
83
|
-
.sp-alpha
|
84
|
-
{
|
85
|
+
.sp-alpha {
|
85
86
|
display: none;
|
86
87
|
position: absolute;
|
87
88
|
bottom: -14px;
|
@@ -89,12 +90,30 @@ License: MIT
|
|
89
90
|
left: 0;
|
90
91
|
height: 8px;
|
91
92
|
}
|
92
|
-
.sp-alpha-inner{
|
93
|
+
.sp-alpha-inner {
|
93
94
|
border: solid 1px #333;
|
94
95
|
}
|
95
96
|
|
97
|
+
.sp-clear {
|
98
|
+
display: none;
|
99
|
+
}
|
100
|
+
|
101
|
+
.sp-clear.sp-clear-display {
|
102
|
+
background-position: center;
|
103
|
+
}
|
104
|
+
|
105
|
+
.sp-clear-enabled .sp-clear {
|
106
|
+
display: block;
|
107
|
+
position:absolute;
|
108
|
+
top:0px;
|
109
|
+
right:0;
|
110
|
+
bottom:0;
|
111
|
+
left:84%;
|
112
|
+
height: 28px;
|
113
|
+
}
|
114
|
+
|
96
115
|
/* Don't allow text selection */
|
97
|
-
.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
|
116
|
+
.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
|
98
117
|
-webkit-user-select:none;
|
99
118
|
-moz-user-select: -moz-none;
|
100
119
|
-o-user-select:none;
|
@@ -153,7 +172,6 @@ License: MIT
|
|
153
172
|
Generate 6 divs, line them up, and do two color gradients for each.
|
154
173
|
Yes, really.
|
155
174
|
*/
|
156
|
-
|
157
175
|
.sp-1 {
|
158
176
|
height:17%;
|
159
177
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
|
@@ -194,17 +212,16 @@ License: MIT
|
|
194
212
|
.sp-hue { left: 63%; }
|
195
213
|
.sp-fill { padding-top: 60%; }
|
196
214
|
}
|
197
|
-
|
198
215
|
.sp-dragger {
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
216
|
+
border-radius: 5px;
|
217
|
+
height: 5px;
|
218
|
+
width: 5px;
|
219
|
+
border: 1px solid #fff;
|
220
|
+
background: #000;
|
221
|
+
cursor: pointer;
|
222
|
+
position:absolute;
|
223
|
+
top:0;
|
224
|
+
left: 0;
|
208
225
|
}
|
209
226
|
.sp-slider {
|
210
227
|
position: absolute;
|
@@ -218,14 +235,19 @@ License: MIT
|
|
218
235
|
opacity: .8;
|
219
236
|
}
|
220
237
|
|
221
|
-
/*
|
238
|
+
/*
|
239
|
+
Theme authors:
|
240
|
+
Here are the basic themeable display options (colors, fonts, global widths).
|
241
|
+
See http://bgrins.github.io/spectrum/themes/ for instructions.
|
242
|
+
*/
|
243
|
+
|
222
244
|
.sp-container {
|
223
245
|
border-radius: 0;
|
224
246
|
background-color: #ECECEC;
|
225
247
|
border: solid 1px #f0c49B;
|
226
248
|
padding: 0;
|
227
249
|
}
|
228
|
-
.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue
|
250
|
+
.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear
|
229
251
|
{
|
230
252
|
font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
|
231
253
|
-webkit-box-sizing: border-box;
|
@@ -237,7 +259,7 @@ License: MIT
|
|
237
259
|
{
|
238
260
|
margin-bottom: 3px;
|
239
261
|
}
|
240
|
-
.sp-color, .sp-hue
|
262
|
+
.sp-color, .sp-hue, .sp-clear
|
241
263
|
{
|
242
264
|
border: solid 1px #666;
|
243
265
|
}
|
@@ -252,14 +274,14 @@ License: MIT
|
|
252
274
|
width: 100%;
|
253
275
|
}
|
254
276
|
.sp-input {
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
277
|
+
font-size: 12px !important;
|
278
|
+
border: 1px inset;
|
279
|
+
padding: 4px 5px;
|
280
|
+
margin: 0;
|
281
|
+
width: 100%;
|
282
|
+
background:transparent;
|
283
|
+
border-radius: 3px;
|
284
|
+
color: #222;
|
263
285
|
}
|
264
286
|
.sp-input:focus {
|
265
287
|
border: 1px solid orange;
|
@@ -322,6 +344,10 @@ License: MIT
|
|
322
344
|
margin:0;
|
323
345
|
}
|
324
346
|
|
347
|
+
.sp-initial .sp-clear-display {
|
348
|
+
background-position: center;
|
349
|
+
}
|
350
|
+
|
325
351
|
/* Buttons */
|
326
352
|
.sp-button-container {
|
327
353
|
float: right;
|
@@ -389,23 +415,22 @@ License: MIT
|
|
389
415
|
|
390
416
|
/* Buttons: http://hellohappy.org/css3-buttons/ */
|
391
417
|
.sp-container button {
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
vertical-align: middle;
|
418
|
+
background-color: #eeeeee;
|
419
|
+
background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
|
420
|
+
background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
|
421
|
+
background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
|
422
|
+
background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
|
423
|
+
background-image: linear-gradient(to bottom, #eeeeee, #cccccc);
|
424
|
+
border: 1px solid #ccc;
|
425
|
+
border-bottom: 1px solid #bbb;
|
426
|
+
border-radius: 3px;
|
427
|
+
color: #333;
|
428
|
+
font-size: 14px;
|
429
|
+
line-height: 1;
|
430
|
+
padding: 5px 4px;
|
431
|
+
text-align: center;
|
432
|
+
text-shadow: 0 1px 0 #eee;
|
433
|
+
vertical-align: middle;
|
409
434
|
}
|
410
435
|
.sp-container button:hover {
|
411
436
|
background-color: #dddddd;
|
@@ -413,7 +438,6 @@ License: MIT
|
|
413
438
|
background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);
|
414
439
|
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
|
415
440
|
background-image: -o-linear-gradient(top, #dddddd, #bbbbbb);
|
416
|
-
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
|
417
441
|
background-image: linear-gradient(to bottom, #dddddd, #bbbbbb);
|
418
442
|
border: 1px solid #bbb;
|
419
443
|
border-bottom: 1px solid #999;
|
@@ -478,4 +502,10 @@ License: MIT
|
|
478
502
|
.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner
|
479
503
|
{
|
480
504
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);
|
505
|
+
}
|
506
|
+
|
507
|
+
.sp-clear-display {
|
508
|
+
background-repeat:no-repeat;
|
509
|
+
background-position: center;
|
510
|
+
background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);
|
481
511
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spectrum-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|