forked from hummypkg/webif
adding
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@2021 2a923420-c742-0410-a762-8d5b09965624
This commit is contained in:
parent
3adbeb987a
commit
ea03a67b4a
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 260 B |
Binary file not shown.
After Width: | Height: | Size: 324 B |
Binary file not shown.
After Width: | Height: | Size: 321 B |
@ -0,0 +1 @@
|
||||
ios-style-checkboxes
|
@ -1,4 +1,5 @@
|
||||
.iPhoneCheckContainer {
|
||||
-webkit-transform:translate3d(0,0,0);
|
||||
position: relative;
|
||||
height: 27px;
|
||||
cursor: pointer;
|
||||
@ -7,16 +8,14 @@
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 30px;
|
||||
opacity: 0;
|
||||
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); }
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
opacity: 0; }
|
||||
.iPhoneCheckContainer label {
|
||||
white-space: nowrap;
|
||||
font-size: 17px;
|
||||
line-height: 17px;
|
||||
font-weight: bold;
|
||||
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
height: 27px;
|
||||
@ -31,13 +30,12 @@
|
||||
-khtml-user-select: none; }
|
||||
|
||||
.iPhoneCheckDisabled {
|
||||
opacity: 0.5;
|
||||
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); }
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
||||
opacity: 0.5; }
|
||||
|
||||
label.iPhoneCheckLabelOn {
|
||||
color: white;
|
||||
background: url('/img/iphone-style-checkboxes/on.png?1282083753') no-repeat;
|
||||
background: url('images/iphone-style-checkboxes/on.png?1284697268') no-repeat;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
|
||||
left: 0;
|
||||
padding-top: 5px; }
|
||||
@ -45,7 +43,7 @@ label.iPhoneCheckLabelOn {
|
||||
padding-left: 8px; }
|
||||
label.iPhoneCheckLabelOff {
|
||||
color: #8b8b8b;
|
||||
background: url('/img/iphone-style-checkboxes/off.png?1282083753') no-repeat right 0;
|
||||
background: url('images/iphone-style-checkboxes/off.png?1284697268') no-repeat right 0;
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6);
|
||||
text-align: right;
|
||||
right: 0; }
|
||||
@ -60,16 +58,89 @@ label.iPhoneCheckLabelOff {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0;
|
||||
background: url('/img/iphone-style-checkboxes/slider_left.png?1282083753') no-repeat;
|
||||
background: url('images/iphone-style-checkboxes/slider_left.png?1284697268') no-repeat;
|
||||
padding-left: 3px; }
|
||||
|
||||
.iPhoneCheckHandleRight {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
padding-right: 3px;
|
||||
background: url('/img/iphone-style-checkboxes/slider_right.png?1282083753') no-repeat right 0; }
|
||||
background: url('images/iphone-style-checkboxes/slider_right.png?1284697268') no-repeat right 0; }
|
||||
|
||||
.iPhoneCheckHandleCenter {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: url('/img/iphone-style-checkboxes/slider_center.png?1282083753'); }
|
||||
background: url('images/iphone-style-checkboxes/slider_center.png?1284697268'); }
|
||||
|
||||
.iOSCheckContainer {
|
||||
position: relative;
|
||||
height: 27px;
|
||||
cursor: pointer;
|
||||
overflow: hidden; }
|
||||
.iOSCheckContainer input {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 30px;
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
|
||||
opacity: 0; }
|
||||
.iOSCheckContainer label {
|
||||
white-space: nowrap;
|
||||
font-size: 17px;
|
||||
line-height: 17px;
|
||||
font-weight: bold;
|
||||
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
height: 27px;
|
||||
position: absolute;
|
||||
width: auto;
|
||||
top: 0;
|
||||
padding-top: 5px;
|
||||
overflow: hidden; }
|
||||
.iOSCheckContainer, .iOSCheckContainer label {
|
||||
user-select: none;
|
||||
-moz-user-select: none;
|
||||
-khtml-user-select: none; }
|
||||
|
||||
.iOSCheckDisabled {
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
|
||||
opacity: 0.5; }
|
||||
|
||||
label.iOSCheckLabelOn {
|
||||
color: white;
|
||||
background: url('images/ios-style-checkboxes/on.png?1284697268') no-repeat;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6);
|
||||
left: 0;
|
||||
padding-top: 5px; }
|
||||
label.iOSCheckLabelOn span {
|
||||
padding-left: 8px; }
|
||||
label.iOSCheckLabelOff {
|
||||
color: #8b8b8b;
|
||||
background: url('images/ios-style-checkboxes/off.png?1284697268') no-repeat right 0;
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6);
|
||||
text-align: right;
|
||||
right: 0; }
|
||||
label.iOSCheckLabelOff span {
|
||||
padding-right: 8px; }
|
||||
|
||||
.iOSCheckHandle {
|
||||
display: block;
|
||||
height: 27px;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0;
|
||||
background: url('images/ios-style-checkboxes/slider_left.png?1284697268') no-repeat;
|
||||
padding-left: 3px; }
|
||||
|
||||
.iOSCheckHandleRight {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
padding-right: 3px;
|
||||
background: url('images/ios-style-checkboxes/slider_right.png?1284697268') no-repeat right 0; }
|
||||
|
||||
.iOSCheckHandleCenter {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: url('images/ios-style-checkboxes/slider_center.png?1284697268'); }
|
||||
|
@ -1,231 +1,350 @@
|
||||
/*!
|
||||
// iPhone-style Checkboxes jQuery plugin
|
||||
// Copyright Thomas Reynolds, licensed GPL & MIT
|
||||
*/
|
||||
;(function($, iphoneStyle) {
|
||||
// Generated by CoffeeScript 1.6.2
|
||||
(function() {
|
||||
var iOSCheckbox, matched, userAgent,
|
||||
__slice = [].slice;
|
||||
|
||||
// Constructor
|
||||
$[iphoneStyle] = function(elem, options) {
|
||||
this.$elem = $(elem);
|
||||
|
||||
// Import options into instance variables
|
||||
var obj = this;
|
||||
$.each(options, function(key, value) {
|
||||
obj[key] = value;
|
||||
});
|
||||
|
||||
// Initialize the control
|
||||
this.wrapCheckboxWithDivs();
|
||||
this.attachEvents();
|
||||
this.disableTextSelection();
|
||||
|
||||
if (this.resizeHandle) { this.optionallyResize('handle'); }
|
||||
if (this.resizeContainer) { this.optionallyResize('container'); }
|
||||
|
||||
this.initialPosition();
|
||||
};
|
||||
if ($.browser == null) {
|
||||
userAgent = navigator.userAgent || "";
|
||||
jQuery.uaMatch = function(ua) {
|
||||
var match;
|
||||
|
||||
$.extend($[iphoneStyle].prototype, {
|
||||
// Wrap the existing input[type=checkbox] with divs for styling and grab DOM references to the created nodes
|
||||
wrapCheckboxWithDivs: function() {
|
||||
this.$elem.wrap('<div class="' + this.containerClass + '" />');
|
||||
this.container = this.$elem.parent();
|
||||
|
||||
this.offLabel = $('<label class="'+ this.labelOffClass +'">' +
|
||||
'<span>'+ this.uncheckedLabel +'</span>' +
|
||||
'</label>').appendTo(this.container);
|
||||
this.offSpan = this.offLabel.children('span');
|
||||
|
||||
this.onLabel = $('<label class="'+ this.labelOnClass +'">' +
|
||||
'<span>'+ this.checkedLabel +'</span>' +
|
||||
'</label>').appendTo(this.container);
|
||||
this.onSpan = this.onLabel.children('span');
|
||||
|
||||
this.handle = $('<div class="' + this.handleClass + '">' +
|
||||
'<div class="' + this.handleRightClass + '">' +
|
||||
'<div class="' + this.handleCenterClass + '" />' +
|
||||
'</div>' +
|
||||
'</div>').appendTo(this.container);
|
||||
},
|
||||
|
||||
// Disable IE text selection, other browsers are handled in CSS
|
||||
disableTextSelection: function() {
|
||||
return;
|
||||
// if (!$.browser.msie) { return; }
|
||||
|
||||
// Elements containing text should be unselectable
|
||||
$.each([this.handle, this.offLabel, this.onLabel, this.container], function() {
|
||||
$(this).attr("unselectable", "on");
|
||||
});
|
||||
},
|
||||
|
||||
// Automatically resize the handle or container
|
||||
optionallyResize: function(mode) {
|
||||
var onLabelWidth = this.onLabel.width(),
|
||||
offLabelWidth = this.offLabel.width();
|
||||
|
||||
if (mode == 'container') {
|
||||
var newWidth = (onLabelWidth > offLabelWidth) ? onLabelWidth : offLabelWidth;
|
||||
newWidth += this.handle.width() + 15;
|
||||
} else {
|
||||
var newWidth = (onLabelWidth < offLabelWidth) ? onLabelWidth : offLabelWidth;
|
||||
ua = ua.toLowerCase();
|
||||
match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) || [];
|
||||
return {
|
||||
browser: match[1] || "",
|
||||
version: match[2] || "0"
|
||||
};
|
||||
};
|
||||
matched = jQuery.uaMatch(userAgent);
|
||||
jQuery.browser = {};
|
||||
if (matched.browser) {
|
||||
jQuery.browser[matched.browser] = true;
|
||||
jQuery.browser.version = matched.version;
|
||||
}
|
||||
|
||||
this[mode].css({ width: newWidth });
|
||||
},
|
||||
|
||||
attachEvents: function() {
|
||||
var obj = this;
|
||||
|
||||
// A mousedown anywhere in the control will start tracking for dragging
|
||||
this.container
|
||||
.bind('mousedown touchstart', function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
if (obj.$elem.is(':disabled')) { return; }
|
||||
|
||||
var x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
$[iphoneStyle].currentlyClicking = obj.handle;
|
||||
$[iphoneStyle].dragStartPosition = x;
|
||||
$[iphoneStyle].handleLeftOffset = parseInt(obj.handle.css('left'), 10) || 0;
|
||||
$[iphoneStyle].dragStartedOn = obj.$elem;
|
||||
})
|
||||
|
||||
// Utilize event bubbling to handle drag on any element beneath the container
|
||||
.bind('iPhoneDrag', function(event, x) {
|
||||
event.preventDefault();
|
||||
|
||||
if (obj.$elem.is(':disabled')) { return; }
|
||||
if (obj.$elem != $[iphoneStyle].dragStartedOn) { return; }
|
||||
|
||||
var p = (x + $[iphoneStyle].handleLeftOffset - $[iphoneStyle].dragStartPosition) / obj.rightSide;
|
||||
if (p < 0) { p = 0; }
|
||||
if (p > 1) { p = 1; }
|
||||
obj.handle.css({ left: p * obj.rightSide });
|
||||
obj.onLabel.css({ width: p * obj.rightSide + 4 });
|
||||
obj.offSpan.css({ marginRight: -p * obj.rightSide });
|
||||
obj.onSpan.css({ marginLeft: -(1 - p) * obj.rightSide });
|
||||
})
|
||||
|
||||
// Utilize event bubbling to handle drag end on any element beneath the container
|
||||
.bind('iPhoneDragEnd', function(event, x) {
|
||||
if (obj.$elem.is(':disabled')) { return; }
|
||||
|
||||
var checked;
|
||||
if ($[iphoneStyle].dragging) {
|
||||
var p = (x - $[iphoneStyle].dragStartPosition) / obj.rightSide;
|
||||
checked = (p < 0) ? Math.abs(p) < 0.5 : p >= 0.5;
|
||||
} else {
|
||||
checked = !obj.$elem.prop('checked');
|
||||
}
|
||||
|
||||
obj.$elem.prop('checked', checked);
|
||||
if (jQuery.browser.webkit) {
|
||||
jQuery.browser.safari = true;
|
||||
}
|
||||
}
|
||||
|
||||
$[iphoneStyle].currentlyClicking = null;
|
||||
$[iphoneStyle].dragging = null;
|
||||
obj.$elem.change();
|
||||
iOSCheckbox = (function() {
|
||||
function iOSCheckbox(elem, options) {
|
||||
var key, opts, value;
|
||||
|
||||
this.elem = $(elem);
|
||||
opts = $.extend({}, iOSCheckbox.defaults, options);
|
||||
for (key in opts) {
|
||||
value = opts[key];
|
||||
this[key] = value;
|
||||
}
|
||||
this.elem.data(this.dataName, this);
|
||||
this.wrapCheckboxWithDivs();
|
||||
this.attachEvents();
|
||||
this.disableTextSelection();
|
||||
this.calculateDimensions();
|
||||
}
|
||||
|
||||
iOSCheckbox.prototype.calculateDimensions = function() {
|
||||
if (this.resizeHandle) {
|
||||
this.optionallyResize('handle');
|
||||
}
|
||||
if (this.resizeContainer) {
|
||||
this.optionallyResize('container');
|
||||
}
|
||||
return this.initialPosition();
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.isDisabled = function() {
|
||||
return this.elem.is(':disabled');
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.wrapCheckboxWithDivs = function() {
|
||||
this.elem.wrap("<div class='" + this.containerClass + "' />");
|
||||
this.container = this.elem.parent();
|
||||
this.offLabel = $("<label class='" + this.labelOffClass + "'>\n <span>" + this.uncheckedLabel + "</span>\n</label>").appendTo(this.container);
|
||||
this.offSpan = this.offLabel.children('span');
|
||||
this.onLabel = $("<label class='" + this.labelOnClass + "'>\n <span>" + this.checkedLabel + "</span>\n</label>").appendTo(this.container);
|
||||
this.onSpan = this.onLabel.children('span');
|
||||
return this.handle = $("<div class='" + this.handleClass + "'>\n <div class='" + this.handleRightClass + "'>\n <div class='" + this.handleCenterClass + "' />\n </div>\n</div>").appendTo(this.container);
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.disableTextSelection = function() {
|
||||
if ($.browser.msie) {
|
||||
return $([this.handle, this.offLabel, this.onLabel, this.container]).attr("unselectable", "on");
|
||||
}
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype._getDimension = function(elem, dimension) {
|
||||
if ($.fn.actual != null) {
|
||||
return elem.actual(dimension);
|
||||
} else {
|
||||
return elem[dimension]();
|
||||
}
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.optionallyResize = function(mode) {
|
||||
var newWidth, offLabelWidth, offSpan, onLabelWidth, onSpan;
|
||||
|
||||
onSpan = this.onLabel.find('span');
|
||||
onLabelWidth = this._getDimension(onSpan, "width");
|
||||
onLabelWidth += parseInt(onSpan.css('padding-left'), 10);
|
||||
offSpan = this.offLabel.find('span');
|
||||
offLabelWidth = this._getDimension(offSpan, "width");
|
||||
offLabelWidth += parseInt(offSpan.css('padding-right'), 10);
|
||||
if (mode === "container") {
|
||||
newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
|
||||
newWidth += this._getDimension(this.handle, "width") + this.handleMargin;
|
||||
return this.container.css({
|
||||
width: newWidth
|
||||
});
|
||||
} else {
|
||||
newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth;
|
||||
return this.handle.css({
|
||||
width: newWidth
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.onMouseDown = function(event) {
|
||||
var x;
|
||||
|
||||
event.preventDefault();
|
||||
if (this.isDisabled()) {
|
||||
return;
|
||||
}
|
||||
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
iOSCheckbox.currentlyClicking = this.handle;
|
||||
iOSCheckbox.dragStartPosition = x;
|
||||
return iOSCheckbox.handleLeftOffset = parseInt(this.handle.css('left'), 10) || 0;
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.onDragMove = function(event, x) {
|
||||
var newWidth, p;
|
||||
|
||||
if (iOSCheckbox.currentlyClicking !== this.handle) {
|
||||
return;
|
||||
}
|
||||
p = (x + iOSCheckbox.handleLeftOffset - iOSCheckbox.dragStartPosition) / this.rightSide;
|
||||
if (p < 0) {
|
||||
p = 0;
|
||||
}
|
||||
if (p > 1) {
|
||||
p = 1;
|
||||
}
|
||||
newWidth = p * this.rightSide;
|
||||
this.handle.css({
|
||||
left: newWidth
|
||||
});
|
||||
|
||||
// Animate when we get a change event
|
||||
this.$elem.change(function() {
|
||||
if (obj.$elem.is(':disabled')) {
|
||||
obj.container.addClass(obj.disabledClass);
|
||||
this.onLabel.css({
|
||||
width: newWidth + this.handleRadius
|
||||
});
|
||||
this.offSpan.css({
|
||||
marginRight: -newWidth
|
||||
});
|
||||
return this.onSpan.css({
|
||||
marginLeft: -(1 - p) * this.rightSide
|
||||
});
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.onDragEnd = function(event, x) {
|
||||
var p;
|
||||
|
||||
if (iOSCheckbox.currentlyClicking !== this.handle) {
|
||||
return;
|
||||
}
|
||||
if (this.isDisabled()) {
|
||||
return;
|
||||
}
|
||||
if (iOSCheckbox.dragging) {
|
||||
p = (x - iOSCheckbox.dragStartPosition) / this.rightSide;
|
||||
this.elem.prop('checked', p >= 0.5);
|
||||
} else {
|
||||
this.elem.prop('checked', !this.elem.prop('checked'));
|
||||
}
|
||||
iOSCheckbox.currentlyClicking = null;
|
||||
iOSCheckbox.dragging = null;
|
||||
return this.didChange();
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.refresh = function() {
|
||||
return this.didChange();
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.didChange = function() {
|
||||
var new_left;
|
||||
|
||||
if (typeof this.onChange === "function") {
|
||||
this.onChange(this.elem, this.elem.prop('checked'));
|
||||
}
|
||||
if (this.isDisabled()) {
|
||||
this.container.addClass(this.disabledClass);
|
||||
return false;
|
||||
} else {
|
||||
obj.container.removeClass(obj.disabledClass);
|
||||
this.container.removeClass(this.disabledClass);
|
||||
}
|
||||
|
||||
var new_left = obj.$elem.prop('checked') ? obj.rightSide : 0;
|
||||
new_left = this.elem.prop('checked') ? this.rightSide : 0;
|
||||
this.handle.animate({
|
||||
left: new_left
|
||||
}, this.duration);
|
||||
this.onLabel.animate({
|
||||
width: new_left + this.handleRadius
|
||||
}, this.duration);
|
||||
this.offSpan.animate({
|
||||
marginRight: -new_left
|
||||
}, this.duration);
|
||||
return this.onSpan.animate({
|
||||
marginLeft: new_left - this.rightSide
|
||||
}, this.duration);
|
||||
};
|
||||
|
||||
obj.handle.animate({ left: new_left }, obj.duration);
|
||||
obj.onLabel.animate({ width: new_left + 4 }, obj.duration);
|
||||
obj.offSpan.animate({ marginRight: -new_left }, obj.duration);
|
||||
obj.onSpan.animate({ marginLeft: new_left - obj.rightSide }, obj.duration);
|
||||
});
|
||||
},
|
||||
|
||||
// Setup the control's inital position
|
||||
initialPosition: function() {
|
||||
this.offLabel.css({ width: this.container.width() - 5 });
|
||||
iOSCheckbox.prototype.attachEvents = function() {
|
||||
var localMouseMove, localMouseUp, self;
|
||||
|
||||
// var offset = ($.browser.msie && $.browser.version < 7) ? 3 : 6;
|
||||
var offset = 6;
|
||||
this.rightSide = this.container.width() - this.handle.width() - offset;
|
||||
|
||||
if (this.$elem.is(':checked')) {
|
||||
this.handle.css({ left: this.rightSide });
|
||||
this.onLabel.css({ width: this.rightSide + 4 });
|
||||
this.offSpan.css({ marginRight: -this.rightSide });
|
||||
} else {
|
||||
this.onLabel.css({ width: 0 });
|
||||
this.onSpan.css({ marginLeft: -this.rightSide });
|
||||
}
|
||||
|
||||
if (this.$elem.is(':disabled')) {
|
||||
this.container.addClass(this.disabledClass);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// jQuery-specific code
|
||||
$.fn[iphoneStyle] = function(options) {
|
||||
var checkboxes = this.filter(':checkbox');
|
||||
|
||||
// Fail early if we don't have any checkboxes passed in
|
||||
if (!checkboxes.length) { return this; }
|
||||
|
||||
// Merge options passed in with global defaults
|
||||
var opt = $.extend({}, $[iphoneStyle].defaults, options);
|
||||
|
||||
checkboxes.each(function() {
|
||||
$(this).data(iphoneStyle, new $[iphoneStyle](this, opt));
|
||||
});
|
||||
|
||||
if (!$[iphoneStyle].initComplete) {
|
||||
// As the mouse moves on the page, animate if we are in a drag state
|
||||
$(document)
|
||||
.bind('mousemove touchmove', function(event) {
|
||||
if (!$[iphoneStyle].currentlyClicking) { return; }
|
||||
event.preventDefault();
|
||||
|
||||
var x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
if (!$[iphoneStyle].dragging &&
|
||||
(Math.abs($[iphoneStyle].dragStartPosition - x) > opt.dragThreshold)) {
|
||||
$[iphoneStyle].dragging = true;
|
||||
}
|
||||
|
||||
$(event.target).trigger('iPhoneDrag', [x]);
|
||||
})
|
||||
|
||||
// When the mouse comes up, leave drag state
|
||||
.bind('mouseup touchend', function(event) {
|
||||
if (!$[iphoneStyle].currentlyClicking) { return; }
|
||||
event.preventDefault();
|
||||
|
||||
var x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
$($[iphoneStyle].currentlyClicking).trigger('iPhoneDragEnd', [x]);
|
||||
self = this;
|
||||
localMouseMove = function(event) {
|
||||
return self.onGlobalMove.apply(self, arguments);
|
||||
};
|
||||
localMouseUp = function(event) {
|
||||
self.onGlobalUp.apply(self, arguments);
|
||||
$(document).unbind('mousemove touchmove', localMouseMove);
|
||||
return $(document).unbind('mouseup touchend', localMouseUp);
|
||||
};
|
||||
this.elem.change(function() {
|
||||
return self.refresh();
|
||||
});
|
||||
|
||||
$[iphoneStyle].initComplete = true;
|
||||
}
|
||||
|
||||
return this;
|
||||
}; // End of $.fn[iphoneStyle]
|
||||
return this.container.bind('mousedown touchstart', function(event) {
|
||||
self.onMouseDown.apply(self, arguments);
|
||||
$(document).bind('mousemove touchmove', localMouseMove);
|
||||
return $(document).bind('mouseup touchend', localMouseUp);
|
||||
});
|
||||
};
|
||||
|
||||
$[iphoneStyle].defaults = {
|
||||
duration: 200, // Time spent during slide animation
|
||||
checkedLabel: 'ON', // Text content of "on" state
|
||||
uncheckedLabel: 'OFF', // Text content of "off" state
|
||||
resizeHandle: true, // Automatically resize the handle to cover either label
|
||||
resizeContainer: true, // Automatically resize the widget to contain the labels
|
||||
disabledClass: 'iPhoneCheckDisabled',
|
||||
containerClass: 'iPhoneCheckContainer',
|
||||
labelOnClass: 'iPhoneCheckLabelOn',
|
||||
labelOffClass: 'iPhoneCheckLabelOff',
|
||||
handleClass: 'iPhoneCheckHandle',
|
||||
handleCenterClass: 'iPhoneCheckHandleCenter',
|
||||
handleRightClass: 'iPhoneCheckHandleRight',
|
||||
dragThreshold: 5 // Pixels that must be dragged for a click to be ignored
|
||||
};
|
||||
iOSCheckbox.prototype.initialPosition = function() {
|
||||
var containerWidth, offset;
|
||||
|
||||
})(jQuery, 'iphoneStyle');
|
||||
containerWidth = this._getDimension(this.container, "width");
|
||||
this.offLabel.css({
|
||||
width: containerWidth - this.containerRadius
|
||||
});
|
||||
offset = this.containerRadius + 1;
|
||||
if ($.browser.msie && $.browser.version < 7) {
|
||||
offset -= 3;
|
||||
}
|
||||
this.rightSide = containerWidth - this._getDimension(this.handle, "width") - offset;
|
||||
if (this.elem.is(':checked')) {
|
||||
this.handle.css({
|
||||
left: this.rightSide
|
||||
});
|
||||
this.onLabel.css({
|
||||
width: this.rightSide + this.handleRadius
|
||||
});
|
||||
this.offSpan.css({
|
||||
marginRight: -this.rightSide
|
||||
});
|
||||
} else {
|
||||
this.onLabel.css({
|
||||
width: 0
|
||||
});
|
||||
this.onSpan.css({
|
||||
marginLeft: -this.rightSide
|
||||
});
|
||||
}
|
||||
if (this.isDisabled()) {
|
||||
return this.container.addClass(this.disabledClass);
|
||||
}
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.onGlobalMove = function(event) {
|
||||
var x;
|
||||
|
||||
if (!(!this.isDisabled() && iOSCheckbox.currentlyClicking)) {
|
||||
return;
|
||||
}
|
||||
event.preventDefault();
|
||||
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
if (!iOSCheckbox.dragging && (Math.abs(iOSCheckbox.dragStartPosition - x) > this.dragThreshold)) {
|
||||
iOSCheckbox.dragging = true;
|
||||
}
|
||||
return this.onDragMove(event, x);
|
||||
};
|
||||
|
||||
iOSCheckbox.prototype.onGlobalUp = function(event) {
|
||||
var x;
|
||||
|
||||
if (!iOSCheckbox.currentlyClicking) {
|
||||
return;
|
||||
}
|
||||
event.preventDefault();
|
||||
x = event.pageX || event.originalEvent.changedTouches[0].pageX;
|
||||
this.onDragEnd(event, x);
|
||||
return false;
|
||||
};
|
||||
|
||||
iOSCheckbox.defaults = {
|
||||
duration: 200,
|
||||
checkedLabel: 'ON',
|
||||
uncheckedLabel: 'OFF',
|
||||
resizeHandle: true,
|
||||
resizeContainer: true,
|
||||
disabledClass: 'iPhoneCheckDisabled',
|
||||
containerClass: 'iPhoneCheckContainer',
|
||||
labelOnClass: 'iPhoneCheckLabelOn',
|
||||
labelOffClass: 'iPhoneCheckLabelOff',
|
||||
handleClass: 'iPhoneCheckHandle',
|
||||
handleCenterClass: 'iPhoneCheckHandleCenter',
|
||||
handleRightClass: 'iPhoneCheckHandleRight',
|
||||
dragThreshold: 5,
|
||||
handleMargin: 15,
|
||||
handleRadius: 4,
|
||||
containerRadius: 5,
|
||||
dataName: "iphoneStyle",
|
||||
onChange: function() {}
|
||||
};
|
||||
|
||||
return iOSCheckbox;
|
||||
|
||||
})();
|
||||
|
||||
$.iphoneStyle = this.iOSCheckbox = iOSCheckbox;
|
||||
|
||||
$.fn.iphoneStyle = function() {
|
||||
var args, checkbox, dataName, existingControl, method, params, _i, _len, _ref, _ref1, _ref2, _ref3;
|
||||
|
||||
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||||
dataName = (_ref = (_ref1 = args[0]) != null ? _ref1.dataName : void 0) != null ? _ref : iOSCheckbox.defaults.dataName;
|
||||
_ref2 = this.filter(':checkbox');
|
||||
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
||||
checkbox = _ref2[_i];
|
||||
existingControl = $(checkbox).data(dataName);
|
||||
if (existingControl != null) {
|
||||
method = args[0], params = 2 <= args.length ? __slice.call(args, 1) : [];
|
||||
if ((_ref3 = existingControl[method]) != null) {
|
||||
_ref3.apply(existingControl, params);
|
||||
}
|
||||
} else {
|
||||
new iOSCheckbox(checkbox, args[0]);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
$.fn.iOSCheckbox = function(options) {
|
||||
var opts;
|
||||
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
opts = $.extend({}, options, {
|
||||
resizeHandle: false,
|
||||
disabledClass: 'iOSCheckDisabled',
|
||||
containerClass: 'iOSCheckContainer',
|
||||
labelOnClass: 'iOSCheckLabelOn',
|
||||
labelOffClass: 'iOSCheckLabelOff',
|
||||
handleClass: 'iOSCheckHandle',
|
||||
handleCenterClass: 'iOSCheckHandleCenter',
|
||||
handleRightClass: 'iOSCheckHandleRight',
|
||||
dataName: 'iOSCheckbox'
|
||||
});
|
||||
return this.iphoneStyle(opts);
|
||||
};
|
||||
|
||||
}).call(this);
|
||||
|
Loading…
Reference in New Issue
Block a user