You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
494 lines
18 KiB
494 lines
18 KiB
/* |
|
* Bootstrap TouchSpin - v4.2.5 |
|
* A mobile and touch friendly input spinner component for Bootstrap 3 & 4. |
|
* http://www.virtuosoft.eu/code/bootstrap-touchspin/ |
|
* |
|
* Made by István Ujj-Mészáros |
|
* Under Apache License v2.0 License |
|
*/ |
|
|
|
!(function (o) { |
|
"function" == typeof define && define.amd |
|
? define(["jquery"], o) |
|
: "object" == typeof module && module.exports |
|
? (module.exports = function (t, n) { |
|
return ( |
|
void 0 === n && |
|
(n = |
|
"undefined" != typeof window |
|
? require("jquery") |
|
: require("jquery")(t)), |
|
o(n), |
|
n |
|
); |
|
}) |
|
: o(jQuery); |
|
})(function (j) { |
|
"use strict"; |
|
var D = 0; |
|
j.fn.TouchSpin = function (y) { |
|
var k = { |
|
min: 0, |
|
max: 100, |
|
initval: "", |
|
replacementval: "", |
|
step: 1, |
|
decimals: 0, |
|
stepinterval: 100, |
|
forcestepdivisibility: "round", |
|
stepintervaldelay: 500, |
|
verticalbuttons: !1, |
|
verticalup: "+", |
|
verticaldown: "-", |
|
verticalupclass: "", |
|
verticaldownclass: "", |
|
prefix: "", |
|
postfix: "", |
|
prefix_extraclass: "", |
|
postfix_extraclass: "", |
|
booster: !0, |
|
boostat: 10, |
|
maxboostedstep: !1, |
|
mousewheel: !0, |
|
buttondown_class: "btn btn-primary", |
|
buttonup_class: "btn btn-primary", |
|
buttondown_txt: "-", |
|
buttonup_txt: "+", |
|
callback_before_calculation: function (t) { |
|
return t; |
|
}, |
|
callback_after_calculation: function (t) { |
|
return t; |
|
}, |
|
}, |
|
C = { |
|
min: "min", |
|
max: "max", |
|
initval: "init-val", |
|
replacementval: "replacement-val", |
|
step: "step", |
|
decimals: "decimals", |
|
stepinterval: "step-interval", |
|
verticalbuttons: "vertical-buttons", |
|
verticalupclass: "vertical-up-class", |
|
verticaldownclass: "vertical-down-class", |
|
forcestepdivisibility: "force-step-divisibility", |
|
stepintervaldelay: "step-interval-delay", |
|
prefix: "prefix", |
|
postfix: "postfix", |
|
prefix_extraclass: "prefix-extra-class", |
|
postfix_extraclass: "postfix-extra-class", |
|
booster: "booster", |
|
boostat: "boostat", |
|
maxboostedstep: "max-boosted-step", |
|
mousewheel: "mouse-wheel", |
|
buttondown_class: "button-down-class", |
|
buttonup_class: "button-up-class", |
|
buttondown_txt: "button-down-txt", |
|
buttonup_txt: "button-up-txt", |
|
}; |
|
return this.each(function () { |
|
var i, |
|
p, |
|
a, |
|
u, |
|
o, |
|
s, |
|
t, |
|
n, |
|
e, |
|
r, |
|
c = j(this), |
|
l = c.data(), |
|
d = 0, |
|
f = !1; |
|
function b() { |
|
"" === i.prefix && (p = o.prefix.detach()), |
|
"" === i.postfix && (a = o.postfix.detach()); |
|
} |
|
function h() { |
|
var t, n, o; |
|
"" !== (t = i.callback_before_calculation(c.val())) |
|
? (0 < i.decimals && "." === t) || |
|
((n = parseFloat(t)), |
|
isNaN(n) && (n = "" !== i.replacementval ? i.replacementval : 0), |
|
(o = n).toString() !== t && (o = n), |
|
null !== i.min && n < i.min && (o = i.min), |
|
null !== i.max && n > i.max && (o = i.max), |
|
(o = (function (t) { |
|
switch (i.forcestepdivisibility) { |
|
case "round": |
|
return (Math.round(t / i.step) * i.step).toFixed(i.decimals); |
|
case "floor": |
|
return (Math.floor(t / i.step) * i.step).toFixed(i.decimals); |
|
case "ceil": |
|
return (Math.ceil(t / i.step) * i.step).toFixed(i.decimals); |
|
default: |
|
return t; |
|
} |
|
})(o)), |
|
Number(t).toString() !== o.toString() && |
|
(c.val(o), c.trigger("change"))) |
|
: "" !== i.replacementval && |
|
(c.val(i.replacementval), c.trigger("change")); |
|
} |
|
function v() { |
|
if (i.booster) { |
|
var t = Math.pow(2, Math.floor(d / i.boostat)) * i.step; |
|
return ( |
|
i.maxboostedstep && |
|
t > i.maxboostedstep && |
|
((t = i.maxboostedstep), (s = Math.round(s / t) * t)), |
|
Math.max(i.step, t) |
|
); |
|
} |
|
return i.step; |
|
} |
|
function x() { |
|
h(), |
|
(s = parseFloat(i.callback_before_calculation(o.input.val()))), |
|
isNaN(s) && (s = 0); |
|
var t = s, |
|
n = v(); |
|
(s += n), |
|
null !== i.max && |
|
s > i.max && |
|
((s = i.max), c.trigger("touchspin.on.max"), _()), |
|
o.input.val( |
|
i.callback_after_calculation(Number(s).toFixed(i.decimals)) |
|
), |
|
t !== s && c.trigger("change"); |
|
} |
|
function g() { |
|
h(), |
|
(s = parseFloat(i.callback_before_calculation(o.input.val()))), |
|
isNaN(s) && (s = 0); |
|
var t = s, |
|
n = v(); |
|
(s -= n), |
|
null !== i.min && |
|
s < i.min && |
|
((s = i.min), c.trigger("touchspin.on.min"), _()), |
|
o.input.val( |
|
i.callback_after_calculation(Number(s).toFixed(i.decimals)) |
|
), |
|
t !== s && c.trigger("change"); |
|
} |
|
function m() { |
|
_(), |
|
(d = 0), |
|
(f = "down"), |
|
c.trigger("touchspin.on.startspin"), |
|
c.trigger("touchspin.on.startdownspin"), |
|
(e = setTimeout(function () { |
|
t = setInterval(function () { |
|
d++, g(); |
|
}, i.stepinterval); |
|
}, i.stepintervaldelay)); |
|
} |
|
function w() { |
|
_(), |
|
(d = 0), |
|
(f = "up"), |
|
c.trigger("touchspin.on.startspin"), |
|
c.trigger("touchspin.on.startupspin"), |
|
(r = setTimeout(function () { |
|
n = setInterval(function () { |
|
d++, x(); |
|
}, i.stepinterval); |
|
}, i.stepintervaldelay)); |
|
} |
|
function _() { |
|
switch ( |
|
(clearTimeout(e), |
|
clearTimeout(r), |
|
clearInterval(t), |
|
clearInterval(n), |
|
f) |
|
) { |
|
case "up": |
|
c.trigger("touchspin.on.stopupspin"), |
|
c.trigger("touchspin.on.stopspin"); |
|
break; |
|
case "down": |
|
c.trigger("touchspin.on.stopdownspin"), |
|
c.trigger("touchspin.on.stopspin"); |
|
} |
|
(d = 0), (f = !1); |
|
} |
|
!(function () { |
|
if (c.data("alreadyinitialized")) return; |
|
if ( |
|
(c.data("alreadyinitialized", !0), |
|
(D += 1), |
|
c.data("spinnerid", D), |
|
!c.is("input")) |
|
) |
|
return console.log("Must be an input."); |
|
(i = j.extend( |
|
{}, |
|
k, |
|
l, |
|
((s = {}), |
|
j.each(C, function (t, n) { |
|
var o = "bts-" + n; |
|
c.is("[data-" + o + "]") && (s[t] = c.data(o)); |
|
}), |
|
s), |
|
y |
|
)), |
|
"" !== i.initval && "" === c.val() && c.val(i.initval), |
|
h(), |
|
(function () { |
|
var t = c.val(), |
|
n = c.parent(); |
|
"" !== t && |
|
(t = i.callback_after_calculation(Number(t).toFixed(i.decimals))); |
|
c.data("initvalue", t).val(t), |
|
c.addClass("form-control"), |
|
n.hasClass("input-group") |
|
? (function (t) { |
|
t.addClass("bootstrap-touchspin"); |
|
var n, |
|
o, |
|
s = c.prev(), |
|
p = c.next(), |
|
a = |
|
'<span class="input-group-addon input-group-prepend bootstrap-touchspin-prefix input-group-prepend bootstrap-touchspin-injected"><span class="input-group-text">' + |
|
i.prefix + |
|
"</span></span>", |
|
e = |
|
'<span class="input-group-addon input-group-append bootstrap-touchspin-postfix input-group-append bootstrap-touchspin-injected"><span class="input-group-text">' + |
|
i.postfix + |
|
"</span></span>"; |
|
s.hasClass("input-group-btn") || |
|
s.hasClass("input-group-prepend") |
|
? ((n = |
|
'<button class="' + |
|
i.buttondown_class + |
|
' bootstrap-touchspin-down bootstrap-touchspin-injected" type="button">' + |
|
i.buttondown_txt + |
|
"</button>"), |
|
s.append(n)) |
|
: ((n = |
|
'<span class="input-group-btn input-group-prepend bootstrap-touchspin-injected"><button class="' + |
|
i.buttondown_class + |
|
' bootstrap-touchspin-down" type="button">' + |
|
i.buttondown_txt + |
|
"</button></span>"), |
|
j(n).insertBefore(c)); |
|
p.hasClass("input-group-btn") || |
|
p.hasClass("input-group-append") |
|
? ((o = |
|
'<button class="' + |
|
i.buttonup_class + |
|
' bootstrap-touchspin-up bootstrap-touchspin-injected" type="button">' + |
|
i.buttonup_txt + |
|
"</button>"), |
|
p.prepend(o)) |
|
: ((o = |
|
'<span class="input-group-btn input-group-append bootstrap-touchspin-injected"><button class="' + |
|
i.buttonup_class + |
|
' bootstrap-touchspin-up" type="button">' + |
|
i.buttonup_txt + |
|
"</button></span>"), |
|
j(o).insertAfter(c)); |
|
j(a).insertBefore(c), j(e).insertAfter(c), (u = t); |
|
})(n) |
|
: (function () { |
|
var t, |
|
n = ""; |
|
c.hasClass("input-sm") && (n = "input-group-sm"); |
|
c.hasClass("input-lg") && (n = "input-group-lg"); |
|
t = i.verticalbuttons |
|
? '<div class="input-group ' + |
|
n + |
|
' bootstrap-touchspin bootstrap-touchspin-injected"><span class="input-group-addon input-group-prepend bootstrap-touchspin-prefix"><span class="input-group-text">' + |
|
i.prefix + |
|
'</span></span><span class="input-group-addon bootstrap-touchspin-postfix input-group-append"><span class="input-group-text">' + |
|
i.postfix + |
|
'</span></span><span class="input-group-btn-vertical"><button class="' + |
|
i.buttondown_class + |
|
" bootstrap-touchspin-up " + |
|
i.verticalupclass + |
|
'" type="button">' + |
|
i.verticalup + |
|
'</button><button class="' + |
|
i.buttonup_class + |
|
" bootstrap-touchspin-down " + |
|
i.verticaldownclass + |
|
'" type="button">' + |
|
i.verticaldown + |
|
"</button></span></div>" |
|
: '<div class="input-group bootstrap-touchspin bootstrap-touchspin-injected"><span class="input-group-btn input-group-prepend"><button class="' + |
|
i.buttondown_class + |
|
' bootstrap-touchspin-down" type="button">' + |
|
i.buttondown_txt + |
|
'</button></span><span class="input-group-addon bootstrap-touchspin-prefix input-group-prepend"><span class="input-group-text">' + |
|
i.prefix + |
|
'</span></span><span class="input-group-addon bootstrap-touchspin-postfix input-group-append"><span class="input-group-text">' + |
|
i.postfix + |
|
'</span></span><span class="input-group-btn input-group-append"><button class="' + |
|
i.buttonup_class + |
|
' bootstrap-touchspin-up" type="button">' + |
|
i.buttonup_txt + |
|
"</button></span></div>"; |
|
(u = j(t).insertBefore(c)), |
|
j(".bootstrap-touchspin-prefix", u).after(c), |
|
c.hasClass("input-sm") |
|
? u.addClass("input-group-sm") |
|
: c.hasClass("input-lg") && |
|
u.addClass("input-group-lg"); |
|
})(); |
|
})(), |
|
(o = { |
|
down: j(".bootstrap-touchspin-down", u), |
|
up: j(".bootstrap-touchspin-up", u), |
|
input: j("input", u), |
|
prefix: j(".bootstrap-touchspin-prefix", u).addClass( |
|
i.prefix_extraclass |
|
), |
|
postfix: j(".bootstrap-touchspin-postfix", u).addClass( |
|
i.postfix_extraclass |
|
), |
|
}), |
|
b(), |
|
c.on("keydown.touchspin", function (t) { |
|
var n = t.keyCode || t.which; |
|
38 === n |
|
? ("up" !== f && (x(), w()), t.preventDefault()) |
|
: 40 === n && ("down" !== f && (g(), m()), t.preventDefault()); |
|
}), |
|
c.on("keyup.touchspin", function (t) { |
|
var n = t.keyCode || t.which; |
|
38 === n ? _() : 40 === n && _(); |
|
}), |
|
c.on("blur.touchspin", function () { |
|
h(), c.val(i.callback_after_calculation(c.val())); |
|
}), |
|
o.down.on("keydown", function (t) { |
|
var n = t.keyCode || t.which; |
|
(32 !== n && 13 !== n) || |
|
("down" !== f && (g(), m()), t.preventDefault()); |
|
}), |
|
o.down.on("keyup.touchspin", function (t) { |
|
var n = t.keyCode || t.which; |
|
(32 !== n && 13 !== n) || _(); |
|
}), |
|
o.up.on("keydown.touchspin", function (t) { |
|
var n = t.keyCode || t.which; |
|
(32 !== n && 13 !== n) || |
|
("up" !== f && (x(), w()), t.preventDefault()); |
|
}), |
|
o.up.on("keyup.touchspin", function (t) { |
|
var n = t.keyCode || t.which; |
|
(32 !== n && 13 !== n) || _(); |
|
}), |
|
o.down.on("mousedown.touchspin", function (t) { |
|
o.down.off("touchstart.touchspin"), |
|
c.is(":disabled") || |
|
(g(), m(), t.preventDefault(), t.stopPropagation()); |
|
}), |
|
o.down.on("touchstart.touchspin", function (t) { |
|
o.down.off("mousedown.touchspin"), |
|
c.is(":disabled") || |
|
(g(), m(), t.preventDefault(), t.stopPropagation()); |
|
}), |
|
o.up.on("mousedown.touchspin", function (t) { |
|
o.up.off("touchstart.touchspin"), |
|
c.is(":disabled") || |
|
(x(), w(), t.preventDefault(), t.stopPropagation()); |
|
}), |
|
o.up.on("touchstart.touchspin", function (t) { |
|
o.up.off("mousedown.touchspin"), |
|
c.is(":disabled") || |
|
(x(), w(), t.preventDefault(), t.stopPropagation()); |
|
}), |
|
o.up.on( |
|
"mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin", |
|
function (t) { |
|
f && (t.stopPropagation(), _()); |
|
} |
|
), |
|
o.down.on( |
|
"mouseup.touchspin mouseout.touchspin touchleave.touchspin touchend.touchspin touchcancel.touchspin", |
|
function (t) { |
|
f && (t.stopPropagation(), _()); |
|
} |
|
), |
|
o.down.on("mousemove.touchspin touchmove.touchspin", function (t) { |
|
f && (t.stopPropagation(), t.preventDefault()); |
|
}), |
|
o.up.on("mousemove.touchspin touchmove.touchspin", function (t) { |
|
f && (t.stopPropagation(), t.preventDefault()); |
|
}), |
|
c.on("mousewheel.touchspin DOMMouseScroll.touchspin", function (t) { |
|
if (i.mousewheel && c.is(":focus")) { |
|
var n = |
|
t.originalEvent.wheelDelta || |
|
-t.originalEvent.deltaY || |
|
-t.originalEvent.detail; |
|
t.stopPropagation(), t.preventDefault(), n < 0 ? g() : x(); |
|
} |
|
}), |
|
c.on("touchspin.destroy", function () { |
|
var t; |
|
(t = c.parent()), |
|
_(), |
|
c.off(".touchspin"), |
|
t.hasClass("bootstrap-touchspin-injected") |
|
? (c.siblings().remove(), c.unwrap()) |
|
: (j(".bootstrap-touchspin-injected", t).remove(), |
|
t.removeClass("bootstrap-touchspin")), |
|
c.data("alreadyinitialized", !1); |
|
}), |
|
c.on("touchspin.uponce", function () { |
|
_(), x(); |
|
}), |
|
c.on("touchspin.downonce", function () { |
|
_(), g(); |
|
}), |
|
c.on("touchspin.startupspin", function () { |
|
w(); |
|
}), |
|
c.on("touchspin.startdownspin", function () { |
|
m(); |
|
}), |
|
c.on("touchspin.stopspin", function () { |
|
_(); |
|
}), |
|
c.on("touchspin.updatesettings", function (t, n) { |
|
!(function (t) { |
|
(function (t) { |
|
if (((i = j.extend({}, i, t)), t.postfix)) { |
|
var n = c.parent().find(".bootstrap-touchspin-postfix"); |
|
0 === n.length && a.insertAfter(c), |
|
c |
|
.parent() |
|
.find(".bootstrap-touchspin-postfix .input-group-text") |
|
.text(t.postfix); |
|
} |
|
if (t.prefix) { |
|
var o = c.parent().find(".bootstrap-touchspin-prefix"); |
|
0 === o.length && p.insertBefore(c), |
|
c |
|
.parent() |
|
.find(".bootstrap-touchspin-prefix .input-group-text") |
|
.text(t.prefix); |
|
} |
|
b(); |
|
})(t), |
|
h(); |
|
var n = o.input.val(); |
|
"" !== n && |
|
((n = Number(i.callback_before_calculation(o.input.val()))), |
|
o.input.val( |
|
i.callback_after_calculation(Number(n).toFixed(i.decimals)) |
|
)); |
|
})(n); |
|
}); |
|
var s; |
|
})(); |
|
}); |
|
}; |
|
});
|
|
|