netsign-ios-checkboxes 0.1.2
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.
- data/.gitignore +7 -0
- data/README.md +61 -0
- data/Rakefile +22 -0
- data/ios-checkboxes.gemspec +19 -0
- data/lib/ios-checkboxes.rb +6 -0
- data/lib/ios-checkboxes/version.rb +3 -0
- data/vendor/assets/images/ios-style-checkboxes/off.png +0 -0
- data/vendor/assets/images/ios-style-checkboxes/on.png +0 -0
- data/vendor/assets/images/ios-style-checkboxes/slider.png +0 -0
- data/vendor/assets/images/ios-style-checkboxes/slider_center.png +0 -0
- data/vendor/assets/images/ios-style-checkboxes/slider_left.png +0 -0
- data/vendor/assets/images/ios-style-checkboxes/slider_right.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/off.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/on.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/slider.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/slider_center.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/slider_left.png +0 -0
- data/vendor/assets/images/iphone-style-checkboxes/slider_right.png +0 -0
- data/vendor/assets/javascripts/ios-checkboxes.js +283 -0
- data/vendor/assets/stylesheets/ios-checkboxes.css.erb +145 -0
- metadata +77 -0
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# iOS Style Checkboxes for Rails 3.1
|
2
|
+
|
3
|
+
|
4
|
+
This gem provides an easy way of using [iOS style checkboxes](https://github.com/tdreyno/iphone-style-checkboxes).
|
5
|
+
|
6
|
+
|
7
|
+
## Install
|
8
|
+
|
9
|
+
Please be sure to have [Rails Assets Pipeline](http://guides.rubyonrails.org/asset_pipeline.html) enabled.
|
10
|
+
|
11
|
+
Add the following to your `Gemfile`, preferably inside the assets group:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'ios-checkboxes'
|
15
|
+
gem 'jquery' # This is required by ios-checkboxes
|
16
|
+
```
|
17
|
+
|
18
|
+
Then as usually:
|
19
|
+
|
20
|
+
```bash
|
21
|
+
$ bundle install
|
22
|
+
```
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
After installation, all you need to do is to require `ios-checkboxes` inside JavaScript/CoffeeScript and CSS files.
|
27
|
+
|
28
|
+
Usually you would add this to your `app/assets/javascripts/application.js` file:
|
29
|
+
|
30
|
+
```javascript
|
31
|
+
//= require ios-checkboxes
|
32
|
+
```
|
33
|
+
|
34
|
+
This will also automatically require `jquery`.
|
35
|
+
|
36
|
+
And also update your `app/assets/javascripts/applications.css` to inlude `ios-checkboxes`
|
37
|
+
|
38
|
+
```css
|
39
|
+
/*
|
40
|
+
*= require ios-checkboxes
|
41
|
+
*= require_self
|
42
|
+
*/
|
43
|
+
```
|
44
|
+
|
45
|
+
That's it. Now you can write stuff like `$(".on-off").iphoneStyle()`.
|
46
|
+
|
47
|
+
## Development
|
48
|
+
|
49
|
+
- Source hosted at [GitHub](https://github.com/tdreyno/iphone-style-checkboxes). See `rails` directory.
|
50
|
+
- Report issues and feature requests to [GitHub Issues](https://github.com/tdreyno/iphone-style-checkboxes/issues)
|
51
|
+
|
52
|
+
To update the gem with the latest files do:
|
53
|
+
|
54
|
+
```bash
|
55
|
+
cd rails
|
56
|
+
rake update
|
57
|
+
# Now go and update the version manually in lib/ios-checkboxes/version.rb
|
58
|
+
git add .
|
59
|
+
git commit -m 'update rails gem'
|
60
|
+
rake release
|
61
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
|
4
|
+
desc "Update the gem with the latest files"
|
5
|
+
task :update do
|
6
|
+
# Copy the js file and require jQuery
|
7
|
+
js_content = File.read "../jquery/iphone-style-checkboxes.js"
|
8
|
+
f = File.new("vendor/assets/javascripts/ios-checkboxes.js", "w")
|
9
|
+
f.write("//= require jquery\n\n#{js_content}")
|
10
|
+
f.close
|
11
|
+
|
12
|
+
# Copy the images
|
13
|
+
cp_r "../images/", "vendor/assets/"
|
14
|
+
|
15
|
+
# Copy CSS and make sure it references the images via assets pipeline
|
16
|
+
css_content = File.read "../style.css"
|
17
|
+
pattern = /url\('images\/([^']+)'\)/
|
18
|
+
css_processed = css_content.gsub(pattern) {|m| "url('<%= image_path \"#{$1.sub(/\?.*/, '')}\" %>')" }
|
19
|
+
f2 = File.new("vendor/assets/stylesheets/ios-checkboxes.css.erb", "w")
|
20
|
+
f2.write(css_processed)
|
21
|
+
f2.close
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/ios-checkboxes/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "netsign-ios-checkboxes"
|
6
|
+
s.version = IOSCheckboxes::VERSION
|
7
|
+
s.authors = ["Thomas Reynolds"]
|
8
|
+
s.email = ["me@tdreyno.com"]
|
9
|
+
s.homepage = "https://github.com/thermistor/iphone-style-checkboxes"
|
10
|
+
s.summary = %q{iOS-style Checkboxes}
|
11
|
+
s.description = %q{iOS-style Checkboxes for Rails asset pipeline. Customized specifically for Netsign requirements.}
|
12
|
+
|
13
|
+
s.rubyforge_project = "netsign-ios-checkboxes"
|
14
|
+
s.add_dependency "railties", "~> 3.1"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,283 @@
|
|
1
|
+
//= require jquery
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
var iOSCheckbox,
|
5
|
+
__slice = Array.prototype.slice;
|
6
|
+
|
7
|
+
iOSCheckbox = (function() {
|
8
|
+
|
9
|
+
function iOSCheckbox(elem, options) {
|
10
|
+
var key, opts, value;
|
11
|
+
this.elem = $(elem);
|
12
|
+
opts = $.extend({}, iOSCheckbox.defaults, options);
|
13
|
+
for (key in opts) {
|
14
|
+
value = opts[key];
|
15
|
+
this[key] = value;
|
16
|
+
}
|
17
|
+
this.elem.data(this.dataName, this);
|
18
|
+
this.wrapCheckboxWithDivs();
|
19
|
+
this.attachEvents();
|
20
|
+
this.disableTextSelection();
|
21
|
+
if (this.resizeHandle) this.optionallyResize('handle');
|
22
|
+
if (this.resizeContainer) this.optionallyResize('container');
|
23
|
+
this.initialPosition();
|
24
|
+
}
|
25
|
+
|
26
|
+
iOSCheckbox.prototype.isDisabled = function() {
|
27
|
+
return this.elem.is(':disabled');
|
28
|
+
};
|
29
|
+
|
30
|
+
iOSCheckbox.prototype.wrapCheckboxWithDivs = function() {
|
31
|
+
this.elem.wrap("<div class='" + this.containerClass + "' />");
|
32
|
+
this.container = this.elem.parent();
|
33
|
+
this.offLabel = $("<label class='" + this.labelOffClass + "'>\n <span>" + this.uncheckedLabel + "</span>\n</label>").appendTo(this.container);
|
34
|
+
this.offSpan = this.offLabel.children('span');
|
35
|
+
this.onLabel = $("<label class='" + this.labelOnClass + "'>\n <span>" + this.checkedLabel + "</span>\n</label>").appendTo(this.container);
|
36
|
+
this.onSpan = this.onLabel.children('span');
|
37
|
+
return this.handle = $("<div class='" + this.handleClass + "'>\n <div class='" + this.handleRightClass + "'>\n <div class='" + this.handleCenterClass + "' />\n </div>\n</div>").appendTo(this.container);
|
38
|
+
};
|
39
|
+
|
40
|
+
iOSCheckbox.prototype.disableTextSelection = function() {
|
41
|
+
if ($.browser.msie) {
|
42
|
+
return $([this.handle, this.offLabel, this.onLabel, this.container]).attr("unselectable", "on");
|
43
|
+
}
|
44
|
+
};
|
45
|
+
|
46
|
+
iOSCheckbox.prototype._getDimension = function(elem, dimension) {
|
47
|
+
if ($.fn.actual != null) {
|
48
|
+
return elem.actual(dimension);
|
49
|
+
} else {
|
50
|
+
return elem[dimension]();
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
54
|
+
iOSCheckbox.prototype.optionallyResize = function(mode) {
|
55
|
+
var newWidth, offLabelWidth, onLabelWidth;
|
56
|
+
onLabelWidth = this._getDimension(this.onLabel, "width");
|
57
|
+
offLabelWidth = this._getDimension(this.offLabel, "width");
|
58
|
+
if (mode === "container") {
|
59
|
+
newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
|
60
|
+
newWidth += this._getDimension(this.handle, "width") + this.handleMargin;
|
61
|
+
return this.container.css({
|
62
|
+
width: newWidth
|
63
|
+
});
|
64
|
+
} else {
|
65
|
+
newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
|
66
|
+
return this.handle.css({
|
67
|
+
width: newWidth
|
68
|
+
});
|
69
|
+
}
|
70
|
+
};
|
71
|
+
|
72
|
+
iOSCheckbox.prototype.onMouseDown = function(event) {
|
73
|
+
var x;
|
74
|
+
event.preventDefault();
|
75
|
+
if (this.isDisabled()) return;
|
76
|
+
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
77
|
+
iOSCheckbox.currentlyClicking = this.handle;
|
78
|
+
iOSCheckbox.dragStartPosition = x;
|
79
|
+
return iOSCheckbox.handleLeftOffset = parseInt(this.handle.css('left'), 10) || 0;
|
80
|
+
};
|
81
|
+
|
82
|
+
iOSCheckbox.prototype.onDragMove = function(event, x) {
|
83
|
+
var newWidth, p;
|
84
|
+
if (iOSCheckbox.currentlyClicking !== this.handle) return;
|
85
|
+
p = (x + iOSCheckbox.handleLeftOffset - iOSCheckbox.dragStartPosition) / this.rightSide;
|
86
|
+
if (p < 0) p = 0;
|
87
|
+
if (p > 1) p = 1;
|
88
|
+
newWidth = p * this.rightSide;
|
89
|
+
this.handle.css({
|
90
|
+
left: newWidth
|
91
|
+
});
|
92
|
+
this.onLabel.css({
|
93
|
+
width: newWidth + this.handleRadius
|
94
|
+
});
|
95
|
+
this.offSpan.css({
|
96
|
+
marginRight: -newWidth
|
97
|
+
});
|
98
|
+
return this.onSpan.css({
|
99
|
+
marginLeft: -(1 - p) * this.rightSide
|
100
|
+
});
|
101
|
+
};
|
102
|
+
|
103
|
+
iOSCheckbox.prototype.onDragEnd = function(event, x) {
|
104
|
+
var p;
|
105
|
+
if (iOSCheckbox.currentlyClicking !== this.handle) return;
|
106
|
+
if (this.isDisabled()) return;
|
107
|
+
if (iOSCheckbox.dragging) {
|
108
|
+
p = (x - iOSCheckbox.dragStartPosition) / this.rightSide;
|
109
|
+
this.elem.prop('checked', p >= 0.5);
|
110
|
+
} else {
|
111
|
+
this.elem.prop('checked', !this.elem.prop('checked'));
|
112
|
+
}
|
113
|
+
iOSCheckbox.currentlyClicking = null;
|
114
|
+
iOSCheckbox.dragging = null;
|
115
|
+
return this.elem.trigger('change');
|
116
|
+
};
|
117
|
+
|
118
|
+
iOSCheckbox.prototype.refresh = function() {
|
119
|
+
return this.didChange();
|
120
|
+
};
|
121
|
+
|
122
|
+
iOSCheckbox.prototype.didChange = function() {
|
123
|
+
var new_left;
|
124
|
+
if (typeof this.onChange === "function") {
|
125
|
+
this.onChange(this.elem, this.elem.prop('checked'));
|
126
|
+
}
|
127
|
+
if (this.isDisabled()) {
|
128
|
+
this.container.addClass(this.disabledClass);
|
129
|
+
return false;
|
130
|
+
} else {
|
131
|
+
this.container.removeClass(this.disabledClass);
|
132
|
+
}
|
133
|
+
new_left = this.elem.prop('checked') ? this.rightSide : 0;
|
134
|
+
this.handle.animate({
|
135
|
+
left: new_left
|
136
|
+
}, this.duration);
|
137
|
+
this.onLabel.animate({
|
138
|
+
width: new_left + this.handleRadius
|
139
|
+
}, this.duration);
|
140
|
+
this.offSpan.animate({
|
141
|
+
marginRight: -new_left
|
142
|
+
}, this.duration);
|
143
|
+
return this.onSpan.animate({
|
144
|
+
marginLeft: new_left - this.rightSide
|
145
|
+
}, this.duration);
|
146
|
+
};
|
147
|
+
|
148
|
+
iOSCheckbox.prototype.attachEvents = function() {
|
149
|
+
var localMouseMove, localMouseUp, self;
|
150
|
+
self = this;
|
151
|
+
localMouseMove = function(event) {
|
152
|
+
return self.onGlobalMove.apply(self, arguments);
|
153
|
+
};
|
154
|
+
localMouseUp = function(event) {
|
155
|
+
self.onGlobalUp.apply(self, arguments);
|
156
|
+
$(document).unbind('mousemove touchmove', localMouseMove);
|
157
|
+
return $(document).unbind('mouseup touchend', localMouseUp);
|
158
|
+
};
|
159
|
+
this.elem.change(function() {
|
160
|
+
return self.refresh();
|
161
|
+
});
|
162
|
+
return this.container.bind('mousedown touchstart', function(event) {
|
163
|
+
self.onMouseDown.apply(self, arguments);
|
164
|
+
$(document).bind('mousemove touchmove', localMouseMove);
|
165
|
+
return $(document).bind('mouseup touchend', localMouseUp);
|
166
|
+
});
|
167
|
+
};
|
168
|
+
|
169
|
+
iOSCheckbox.prototype.initialPosition = function() {
|
170
|
+
var containerWidth, offset;
|
171
|
+
containerWidth = this._getDimension(this.container, "width");
|
172
|
+
this.offLabel.css({
|
173
|
+
width: containerWidth - this.containerRadius
|
174
|
+
});
|
175
|
+
offset = this.containerRadius + 1;
|
176
|
+
if ($.browser.msie && $.browser.version < 7) offset -= 3;
|
177
|
+
this.rightSide = containerWidth - this._getDimension(this.handle, "width") - offset;
|
178
|
+
if (this.elem.is(':checked')) {
|
179
|
+
this.handle.css({
|
180
|
+
left: this.rightSide
|
181
|
+
});
|
182
|
+
this.onLabel.css({
|
183
|
+
width: this.rightSide + this.handleRadius
|
184
|
+
});
|
185
|
+
this.offSpan.css({
|
186
|
+
marginRight: -this.rightSide
|
187
|
+
});
|
188
|
+
} else {
|
189
|
+
this.onLabel.css({
|
190
|
+
width: 0
|
191
|
+
});
|
192
|
+
this.onSpan.css({
|
193
|
+
marginLeft: -this.rightSide
|
194
|
+
});
|
195
|
+
}
|
196
|
+
if (this.isDisabled()) return this.container.addClass(this.disabledClass);
|
197
|
+
};
|
198
|
+
|
199
|
+
iOSCheckbox.prototype.onGlobalMove = function(event) {
|
200
|
+
var x;
|
201
|
+
if (!(!this.isDisabled() && iOSCheckbox.currentlyClicking)) return;
|
202
|
+
event.preventDefault();
|
203
|
+
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
204
|
+
if (!iOSCheckbox.dragging && (Math.abs(iOSCheckbox.dragStartPosition - x) > this.dragThreshold)) {
|
205
|
+
iOSCheckbox.dragging = true;
|
206
|
+
}
|
207
|
+
return this.onDragMove(event, x);
|
208
|
+
};
|
209
|
+
|
210
|
+
iOSCheckbox.prototype.onGlobalUp = function(event) {
|
211
|
+
var x;
|
212
|
+
if (!iOSCheckbox.currentlyClicking) return;
|
213
|
+
event.preventDefault();
|
214
|
+
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
215
|
+
this.onDragEnd(event, x);
|
216
|
+
return false;
|
217
|
+
};
|
218
|
+
|
219
|
+
iOSCheckbox.defaults = {
|
220
|
+
duration: 200,
|
221
|
+
checkedLabel: 'ON',
|
222
|
+
uncheckedLabel: 'OFF',
|
223
|
+
resizeHandle: true,
|
224
|
+
resizeContainer: true,
|
225
|
+
disabledClass: 'iPhoneCheckDisabled',
|
226
|
+
containerClass: 'iPhoneCheckContainer',
|
227
|
+
labelOnClass: 'iPhoneCheckLabelOn',
|
228
|
+
labelOffClass: 'iPhoneCheckLabelOff',
|
229
|
+
handleClass: 'iPhoneCheckHandle',
|
230
|
+
handleCenterClass: 'iPhoneCheckHandleCenter',
|
231
|
+
handleRightClass: 'iPhoneCheckHandleRight',
|
232
|
+
dragThreshold: 5,
|
233
|
+
handleMargin: 15,
|
234
|
+
handleRadius: 4,
|
235
|
+
containerRadius: 5,
|
236
|
+
dataName: "iphoneStyle",
|
237
|
+
onChange: function() {}
|
238
|
+
};
|
239
|
+
|
240
|
+
return iOSCheckbox;
|
241
|
+
|
242
|
+
})();
|
243
|
+
|
244
|
+
$.iphoneStyle = this.iOSCheckbox = iOSCheckbox;
|
245
|
+
|
246
|
+
$.fn.iphoneStyle = function() {
|
247
|
+
var args, checkbox, dataName, existingControl, method, params, _i, _len, _ref, _ref2, _ref3, _ref4;
|
248
|
+
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
249
|
+
dataName = (_ref = (_ref2 = args[0]) != null ? _ref2.dataName : void 0) != null ? _ref : iOSCheckbox.defaults.dataName;
|
250
|
+
_ref3 = this.filter(':checkbox');
|
251
|
+
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
|
252
|
+
checkbox = _ref3[_i];
|
253
|
+
existingControl = $(checkbox).data(dataName);
|
254
|
+
if (existingControl != null) {
|
255
|
+
method = args[0], params = 2 <= args.length ? __slice.call(args, 1) : [];
|
256
|
+
if ((_ref4 = existingControl[method]) != null) {
|
257
|
+
_ref4.apply(existingControl, params);
|
258
|
+
}
|
259
|
+
} else {
|
260
|
+
new iOSCheckbox(checkbox, args[0]);
|
261
|
+
}
|
262
|
+
}
|
263
|
+
return this;
|
264
|
+
};
|
265
|
+
|
266
|
+
$.fn.iOSCheckbox = function(options) {
|
267
|
+
var opts;
|
268
|
+
if (options == null) options = {};
|
269
|
+
opts = $.extend({}, options, {
|
270
|
+
resizeHandle: false,
|
271
|
+
disabledClass: 'iOSCheckDisabled',
|
272
|
+
containerClass: 'iOSCheckContainer',
|
273
|
+
labelOnClass: 'iOSCheckLabelOn',
|
274
|
+
labelOffClass: 'iOSCheckLabelOff',
|
275
|
+
handleClass: 'iOSCheckHandle',
|
276
|
+
handleCenterClass: 'iOSCheckHandleCenter',
|
277
|
+
handleRightClass: 'iOSCheckHandleRight',
|
278
|
+
dataName: 'iOSCheckbox'
|
279
|
+
});
|
280
|
+
return this.iphoneStyle(opts);
|
281
|
+
};
|
282
|
+
|
283
|
+
}).call(this);
|
@@ -0,0 +1,145 @@
|
|
1
|
+
.iPhoneCheckContainer {
|
2
|
+
position: relative;
|
3
|
+
height: 27px;
|
4
|
+
cursor: pointer;
|
5
|
+
overflow: hidden; }
|
6
|
+
.iPhoneCheckContainer input {
|
7
|
+
position: absolute;
|
8
|
+
top: 5px;
|
9
|
+
left: 30px;
|
10
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
11
|
+
opacity: 0; }
|
12
|
+
.iPhoneCheckContainer label {
|
13
|
+
white-space: nowrap;
|
14
|
+
font-size: 17px;
|
15
|
+
line-height: 17px;
|
16
|
+
font-weight: bold;
|
17
|
+
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
18
|
+
cursor: pointer;
|
19
|
+
display: block;
|
20
|
+
height: 27px;
|
21
|
+
position: absolute;
|
22
|
+
width: auto;
|
23
|
+
top: 0;
|
24
|
+
padding-top: 5px;
|
25
|
+
overflow: hidden; }
|
26
|
+
.iPhoneCheckContainer, .iPhoneCheckContainer label {
|
27
|
+
user-select: none;
|
28
|
+
-moz-user-select: none;
|
29
|
+
-khtml-user-select: none; }
|
30
|
+
|
31
|
+
.iPhoneCheckDisabled {
|
32
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
33
|
+
opacity: 0.5; }
|
34
|
+
|
35
|
+
label.iPhoneCheckLabelOn {
|
36
|
+
color: white;
|
37
|
+
background: url('<%= image_path "iphone-style-checkboxes/on.png" %>') no-repeat;
|
38
|
+
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
|
39
|
+
left: 0;
|
40
|
+
padding-top: 5px; }
|
41
|
+
label.iPhoneCheckLabelOn span {
|
42
|
+
padding-left: 8px; }
|
43
|
+
label.iPhoneCheckLabelOff {
|
44
|
+
color: #8b8b8b;
|
45
|
+
background: url('<%= image_path "iphone-style-checkboxes/off.png" %>') no-repeat right 0;
|
46
|
+
text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6);
|
47
|
+
text-align: right;
|
48
|
+
right: 0; }
|
49
|
+
label.iPhoneCheckLabelOff span {
|
50
|
+
padding-right: 8px; }
|
51
|
+
|
52
|
+
.iPhoneCheckHandle {
|
53
|
+
display: block;
|
54
|
+
height: 27px;
|
55
|
+
cursor: pointer;
|
56
|
+
position: absolute;
|
57
|
+
top: 0;
|
58
|
+
left: 0;
|
59
|
+
width: 0;
|
60
|
+
background: url('<%= image_path "iphone-style-checkboxes/slider_left.png" %>') no-repeat;
|
61
|
+
padding-left: 3px; }
|
62
|
+
|
63
|
+
.iPhoneCheckHandleRight {
|
64
|
+
height: 100%;
|
65
|
+
width: 100%;
|
66
|
+
padding-right: 3px;
|
67
|
+
background: url('<%= image_path "iphone-style-checkboxes/slider_right.png" %>') no-repeat right 0; }
|
68
|
+
|
69
|
+
.iPhoneCheckHandleCenter {
|
70
|
+
height: 100%;
|
71
|
+
width: 100%;
|
72
|
+
background: url('<%= image_path "iphone-style-checkboxes/slider_center.png" %>'); }
|
73
|
+
|
74
|
+
.iOSCheckContainer {
|
75
|
+
position: relative;
|
76
|
+
height: 27px;
|
77
|
+
cursor: pointer;
|
78
|
+
overflow: hidden; }
|
79
|
+
.iOSCheckContainer input {
|
80
|
+
position: absolute;
|
81
|
+
top: 5px;
|
82
|
+
left: 30px;
|
83
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
84
|
+
opacity: 0; }
|
85
|
+
.iOSCheckContainer label {
|
86
|
+
white-space: nowrap;
|
87
|
+
font-size: 17px;
|
88
|
+
line-height: 17px;
|
89
|
+
font-weight: bold;
|
90
|
+
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
91
|
+
cursor: pointer;
|
92
|
+
display: block;
|
93
|
+
height: 27px;
|
94
|
+
position: absolute;
|
95
|
+
width: auto;
|
96
|
+
top: 0;
|
97
|
+
padding-top: 5px;
|
98
|
+
overflow: hidden; }
|
99
|
+
.iOSCheckContainer, .iOSCheckContainer label {
|
100
|
+
user-select: none;
|
101
|
+
-moz-user-select: none;
|
102
|
+
-khtml-user-select: none; }
|
103
|
+
|
104
|
+
.iOSCheckDisabled {
|
105
|
+
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
106
|
+
opacity: 0.5; }
|
107
|
+
|
108
|
+
label.iOSCheckLabelOn {
|
109
|
+
color: white;
|
110
|
+
background: url('<%= image_path "ios-style-checkboxes/on.png" %>') no-repeat;
|
111
|
+
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
|
112
|
+
left: 0;
|
113
|
+
padding-top: 5px; }
|
114
|
+
label.iOSCheckLabelOn span {
|
115
|
+
padding-left: 8px; }
|
116
|
+
label.iOSCheckLabelOff {
|
117
|
+
color: #8b8b8b;
|
118
|
+
background: url('<%= image_path "ios-style-checkboxes/off.png" %>') no-repeat right 0;
|
119
|
+
text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6);
|
120
|
+
text-align: right;
|
121
|
+
right: 0; }
|
122
|
+
label.iOSCheckLabelOff span {
|
123
|
+
padding-right: 8px; }
|
124
|
+
|
125
|
+
.iOSCheckHandle {
|
126
|
+
display: block;
|
127
|
+
height: 27px;
|
128
|
+
cursor: pointer;
|
129
|
+
position: absolute;
|
130
|
+
top: 0;
|
131
|
+
left: 0;
|
132
|
+
width: 0;
|
133
|
+
background: url('<%= image_path "ios-style-checkboxes/slider_left.png" %>') no-repeat;
|
134
|
+
padding-left: 3px; }
|
135
|
+
|
136
|
+
.iOSCheckHandleRight {
|
137
|
+
height: 100%;
|
138
|
+
width: 100%;
|
139
|
+
padding-right: 3px;
|
140
|
+
background: url('<%= image_path "ios-style-checkboxes/slider_right.png" %>') no-repeat right 0; }
|
141
|
+
|
142
|
+
.iOSCheckHandleCenter {
|
143
|
+
height: 100%;
|
144
|
+
width: 100%;
|
145
|
+
background: url('<%= image_path "ios-style-checkboxes/slider_center.png" %>'); }
|
metadata
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: netsign-ios-checkboxes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thomas Reynolds
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: railties
|
16
|
+
requirement: &70297727383340 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70297727383340
|
25
|
+
description: iOS-style Checkboxes for Rails asset pipeline. Customized specifically
|
26
|
+
for Netsign requirements.
|
27
|
+
email:
|
28
|
+
- me@tdreyno.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- .gitignore
|
34
|
+
- README.md
|
35
|
+
- Rakefile
|
36
|
+
- ios-checkboxes.gemspec
|
37
|
+
- lib/ios-checkboxes.rb
|
38
|
+
- lib/ios-checkboxes/version.rb
|
39
|
+
- vendor/assets/images/ios-style-checkboxes/off.png
|
40
|
+
- vendor/assets/images/ios-style-checkboxes/on.png
|
41
|
+
- vendor/assets/images/ios-style-checkboxes/slider.png
|
42
|
+
- vendor/assets/images/ios-style-checkboxes/slider_center.png
|
43
|
+
- vendor/assets/images/ios-style-checkboxes/slider_left.png
|
44
|
+
- vendor/assets/images/ios-style-checkboxes/slider_right.png
|
45
|
+
- vendor/assets/images/iphone-style-checkboxes/off.png
|
46
|
+
- vendor/assets/images/iphone-style-checkboxes/on.png
|
47
|
+
- vendor/assets/images/iphone-style-checkboxes/slider.png
|
48
|
+
- vendor/assets/images/iphone-style-checkboxes/slider_center.png
|
49
|
+
- vendor/assets/images/iphone-style-checkboxes/slider_left.png
|
50
|
+
- vendor/assets/images/iphone-style-checkboxes/slider_right.png
|
51
|
+
- vendor/assets/javascripts/ios-checkboxes.js
|
52
|
+
- vendor/assets/stylesheets/ios-checkboxes.css.erb
|
53
|
+
homepage: https://github.com/thermistor/iphone-style-checkboxes
|
54
|
+
licenses: []
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ! '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
requirements: []
|
72
|
+
rubyforge_project: netsign-ios-checkboxes
|
73
|
+
rubygems_version: 1.8.15
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: iOS-style Checkboxes
|
77
|
+
test_files: []
|