Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-15 14:22:53 +01:00
790 Zeilen
24 KiB
JavaScript
790 Zeilen
24 KiB
JavaScript
/*!
|
|
* jquery-timepicker v1.11.11 - A jQuery timepicker plugin inspired by Google Calendar. It supports both mouse and keyboard navigation.
|
|
* Copyright (c) 2017 Jon Thornton - http://jonthornton.github.com/jquery-timepicker/
|
|
* License: MIT
|
|
*/
|
|
|
|
!(function (a) {
|
|
"object" == typeof exports &&
|
|
exports &&
|
|
"object" == typeof module &&
|
|
module &&
|
|
module.exports === exports
|
|
? a(require("jquery"))
|
|
: "function" == typeof define && define.amd
|
|
? define(["jquery"], a)
|
|
: a(jQuery);
|
|
})(function (a) {
|
|
function b(a) {
|
|
var b = a[0];
|
|
return b.offsetWidth > 0 && b.offsetHeight > 0;
|
|
}
|
|
function c(b) {
|
|
if (
|
|
(b.minTime && (b.minTime = t(b.minTime)),
|
|
b.maxTime && (b.maxTime = t(b.maxTime)),
|
|
b.durationTime &&
|
|
"function" != typeof b.durationTime &&
|
|
(b.durationTime = t(b.durationTime)),
|
|
"now" == b.scrollDefault)
|
|
)
|
|
b.scrollDefault = function () {
|
|
return b.roundingFunction(t(new Date()), b);
|
|
};
|
|
else if (b.scrollDefault && "function" != typeof b.scrollDefault) {
|
|
var c = b.scrollDefault;
|
|
b.scrollDefault = function () {
|
|
return b.roundingFunction(t(c), b);
|
|
};
|
|
} else
|
|
b.minTime &&
|
|
(b.scrollDefault = function () {
|
|
return b.roundingFunction(b.minTime, b);
|
|
});
|
|
if (
|
|
("string" === a.type(b.timeFormat) &&
|
|
b.timeFormat.match(/[gh]/) &&
|
|
(b._twelveHourTime = !0),
|
|
b.showOnFocus === !1 &&
|
|
-1 != b.showOn.indexOf("focus") &&
|
|
b.showOn.splice(b.showOn.indexOf("focus"), 1),
|
|
b.disableTimeRanges.length > 0)
|
|
) {
|
|
for (var d in b.disableTimeRanges)
|
|
b.disableTimeRanges[d] = [
|
|
t(b.disableTimeRanges[d][0]),
|
|
t(b.disableTimeRanges[d][1]),
|
|
];
|
|
b.disableTimeRanges = b.disableTimeRanges.sort(function (a, b) {
|
|
return a[0] - b[0];
|
|
});
|
|
for (var d = b.disableTimeRanges.length - 1; d > 0; d--)
|
|
b.disableTimeRanges[d][0] <= b.disableTimeRanges[d - 1][1] &&
|
|
((b.disableTimeRanges[d - 1] = [
|
|
Math.min(b.disableTimeRanges[d][0], b.disableTimeRanges[d - 1][0]),
|
|
Math.max(b.disableTimeRanges[d][1], b.disableTimeRanges[d - 1][1]),
|
|
]),
|
|
b.disableTimeRanges.splice(d, 1));
|
|
}
|
|
return b;
|
|
}
|
|
function d(b) {
|
|
var c = b.data("timepicker-settings"),
|
|
d = b.data("timepicker-list");
|
|
if (
|
|
(d && d.length && (d.remove(), b.data("timepicker-list", !1)),
|
|
c.useSelect)
|
|
) {
|
|
d = a("<select />", { class: "ui-timepicker-select" });
|
|
var g = d;
|
|
} else {
|
|
d = a("<ul />", { class: "ui-timepicker-list" });
|
|
var g = a("<div />", { class: "ui-timepicker-wrapper", tabindex: -1 });
|
|
g.css({ display: "none", position: "absolute" }).append(d);
|
|
}
|
|
if (c.noneOption)
|
|
if (
|
|
(c.noneOption === !0 &&
|
|
(c.noneOption = c.useSelect ? "Time..." : "None"),
|
|
a.isArray(c.noneOption))
|
|
) {
|
|
for (var i in c.noneOption)
|
|
if (parseInt(i, 10) == i) {
|
|
var k = e(c.noneOption[i], c.useSelect);
|
|
d.append(k);
|
|
}
|
|
} else {
|
|
var k = e(c.noneOption, c.useSelect);
|
|
d.append(k);
|
|
}
|
|
if (
|
|
(c.className && g.addClass(c.className),
|
|
(null !== c.minTime || null !== c.durationTime) && c.showDuration)
|
|
) {
|
|
"function" == typeof c.step ? "function" : c.step;
|
|
g.addClass("ui-timepicker-with-duration"),
|
|
g.addClass("ui-timepicker-step-" + c.step);
|
|
}
|
|
var l = c.minTime;
|
|
"function" == typeof c.durationTime
|
|
? (l = t(c.durationTime()))
|
|
: null !== c.durationTime && (l = c.durationTime);
|
|
var n = null !== c.minTime ? c.minTime : 0,
|
|
o = null !== c.maxTime ? c.maxTime : n + v - 1;
|
|
n > o && (o += v),
|
|
o === v - 1 && "string" === a.type(c.timeFormat) && c.show2400 && (o = v);
|
|
var p = c.disableTimeRanges,
|
|
w = 0,
|
|
x = p.length,
|
|
z = c.step;
|
|
"function" != typeof z &&
|
|
(z = function () {
|
|
return c.step;
|
|
});
|
|
for (var i = n, A = 0; o >= i; A++, i += 60 * z(A)) {
|
|
var B = i,
|
|
C = s(B, c);
|
|
if (c.useSelect) {
|
|
var D = a("<option />", { value: C });
|
|
D.text(C);
|
|
} else {
|
|
var D = a("<li />");
|
|
D.addClass(v / 2 > B % v ? "ui-timepicker-am" : "ui-timepicker-pm"),
|
|
D.data("time", u(B, c)),
|
|
D.text(C);
|
|
}
|
|
if ((null !== c.minTime || null !== c.durationTime) && c.showDuration) {
|
|
var E = r(i - l, c.step);
|
|
if (c.useSelect) D.text(D.text() + " (" + E + ")");
|
|
else {
|
|
var F = a("<span />", { class: "ui-timepicker-duration" });
|
|
F.text(" (" + E + ")"), D.append(F);
|
|
}
|
|
}
|
|
x > w &&
|
|
(B >= p[w][1] && (w += 1),
|
|
p[w] &&
|
|
B >= p[w][0] &&
|
|
B < p[w][1] &&
|
|
(c.useSelect
|
|
? D.prop("disabled", !0)
|
|
: D.addClass("ui-timepicker-disabled"))),
|
|
d.append(D);
|
|
}
|
|
if (
|
|
(g.data("timepicker-input", b), b.data("timepicker-list", g), c.useSelect)
|
|
)
|
|
b.val() && d.val(f(t(b.val()), c)),
|
|
d.on("focus", function () {
|
|
a(this).data("timepicker-input").trigger("showTimepicker");
|
|
}),
|
|
d.on("blur", function () {
|
|
a(this).data("timepicker-input").trigger("hideTimepicker");
|
|
}),
|
|
d.on("change", function () {
|
|
m(b, a(this).val(), "select");
|
|
}),
|
|
m(b, d.val(), "initial"),
|
|
b.hide().after(d);
|
|
else {
|
|
var G = c.appendTo;
|
|
"string" == typeof G ? (G = a(G)) : "function" == typeof G && (G = G(b)),
|
|
G.append(g),
|
|
j(b, d),
|
|
d.on("mousedown click", "li", function (c) {
|
|
b.off("focus.timepicker"),
|
|
b.on("focus.timepicker-ie-hack", function () {
|
|
b.off("focus.timepicker-ie-hack"),
|
|
b.on("focus.timepicker", y.show);
|
|
}),
|
|
h(b) || b[0].focus(),
|
|
d.find("li").removeClass("ui-timepicker-selected"),
|
|
a(this).addClass("ui-timepicker-selected"),
|
|
q(b) &&
|
|
(b.trigger("hideTimepicker"),
|
|
d.on("mouseup.timepicker click.timepicker", "li", function (a) {
|
|
d.off("mouseup.timepicker click.timepicker"), g.hide();
|
|
}));
|
|
});
|
|
}
|
|
}
|
|
function e(b, c) {
|
|
var d, e, f;
|
|
return (
|
|
"object" == typeof b
|
|
? ((d = b.label), (e = b.className), (f = b.value))
|
|
: "string" == typeof b
|
|
? (d = b)
|
|
: a.error("Invalid noneOption value"),
|
|
c
|
|
? a("<option />", { value: f, class: e, text: d })
|
|
: a("<li />", { class: e, text: d }).data("time", String(f))
|
|
);
|
|
}
|
|
function f(a, b) {
|
|
return (a = b.roundingFunction(a, b)), null !== a ? s(a, b) : void 0;
|
|
}
|
|
function g(b) {
|
|
if (b.target != window) {
|
|
var c = a(b.target);
|
|
c.closest(".ui-timepicker-input").length ||
|
|
c.closest(".ui-timepicker-wrapper").length ||
|
|
(y.hide(),
|
|
a(document).unbind(".ui-timepicker"),
|
|
a(window).unbind(".ui-timepicker"));
|
|
}
|
|
}
|
|
function h(a) {
|
|
var b = a.data("timepicker-settings");
|
|
return (
|
|
(window.navigator.msMaxTouchPoints || "ontouchstart" in document) &&
|
|
b.disableTouchKeyboard
|
|
);
|
|
}
|
|
function i(b, c, d) {
|
|
if (!d && 0 !== d) return !1;
|
|
var e = b.data("timepicker-settings"),
|
|
f = !1,
|
|
d = e.roundingFunction(d, e);
|
|
return (
|
|
c.find("li").each(function (b, c) {
|
|
var e = a(c);
|
|
if ("number" == typeof e.data("time"))
|
|
return e.data("time") == d ? ((f = e), !1) : void 0;
|
|
}),
|
|
f
|
|
);
|
|
}
|
|
function j(a, b) {
|
|
b.find("li").removeClass("ui-timepicker-selected");
|
|
var c = a.data("timepicker-settings"),
|
|
d = t(l(a), c);
|
|
if (null !== d) {
|
|
var e = i(a, b, d);
|
|
if (e) {
|
|
var f = e.offset().top - b.offset().top;
|
|
(f + e.outerHeight() > b.outerHeight() || 0 > f) &&
|
|
b.scrollTop(b.scrollTop() + e.position().top - e.outerHeight()),
|
|
(c.forceRoundTime || e.data("time") === d) &&
|
|
e.addClass("ui-timepicker-selected");
|
|
}
|
|
}
|
|
}
|
|
function k(b, c) {
|
|
if ("timepicker" != c) {
|
|
var d = a(this);
|
|
if ("" === this.value) return void m(d, null, c);
|
|
if (!d.is(":focus") || (b && "change" == b.type)) {
|
|
var e = d.data("timepicker-settings"),
|
|
f = t(this.value, e);
|
|
if (null === f) return void d.trigger("timeFormatError");
|
|
var g = !1;
|
|
if (
|
|
(null !== e.minTime &&
|
|
null !== e.maxTime &&
|
|
(f < e.minTime || f > e.maxTime) &&
|
|
(g = !0),
|
|
a.each(e.disableTimeRanges, function () {
|
|
return f >= this[0] && f < this[1] ? ((g = !0), !1) : void 0;
|
|
}),
|
|
e.forceRoundTime)
|
|
) {
|
|
var h = e.roundingFunction(f, e);
|
|
h != f && ((f = h), (c = null));
|
|
}
|
|
var i = s(f, e);
|
|
g
|
|
? (m(d, i, "error") || (b && "change" == b.type)) &&
|
|
d.trigger("timeRangeError")
|
|
: m(d, i, c);
|
|
}
|
|
}
|
|
}
|
|
function l(a) {
|
|
return a.is("input") ? a.val() : a.data("ui-timepicker-value");
|
|
}
|
|
function m(a, b, c) {
|
|
if (a.is("input")) {
|
|
a.val(b);
|
|
var d = a.data("timepicker-settings");
|
|
d.useSelect &&
|
|
"select" != c &&
|
|
"initial" != c &&
|
|
a.data("timepicker-list").val(f(t(b), d));
|
|
}
|
|
return a.data("ui-timepicker-value") != b
|
|
? (a.data("ui-timepicker-value", b),
|
|
"select" == c
|
|
? a
|
|
.trigger("selectTime")
|
|
.trigger("changeTime")
|
|
.trigger("change", "timepicker")
|
|
: -1 == ["error", "initial"].indexOf(c) && a.trigger("changeTime"),
|
|
!0)
|
|
: (a.trigger("selectTime"), !1);
|
|
}
|
|
function n(a) {
|
|
switch (a.keyCode) {
|
|
case 13:
|
|
case 9:
|
|
return;
|
|
default:
|
|
a.preventDefault();
|
|
}
|
|
}
|
|
function o(c) {
|
|
var d = a(this),
|
|
e = d.data("timepicker-list");
|
|
if (!e || !b(e)) {
|
|
if (40 != c.keyCode) return !0;
|
|
y.show.call(d.get(0)), (e = d.data("timepicker-list")), h(d) || d.focus();
|
|
}
|
|
switch (c.keyCode) {
|
|
case 13:
|
|
return (
|
|
q(d) && (k.call(d.get(0), { type: "change" }), y.hide.apply(this)),
|
|
c.preventDefault(),
|
|
!1
|
|
);
|
|
case 38:
|
|
var f = e.find(".ui-timepicker-selected");
|
|
return (
|
|
f.length
|
|
? f.is(":first-child") ||
|
|
(f.removeClass("ui-timepicker-selected"),
|
|
f.prev().addClass("ui-timepicker-selected"),
|
|
f.prev().position().top < f.outerHeight() &&
|
|
e.scrollTop(e.scrollTop() - f.outerHeight()))
|
|
: (e.find("li").each(function (b, c) {
|
|
return a(c).position().top > 0 ? ((f = a(c)), !1) : void 0;
|
|
}),
|
|
f.addClass("ui-timepicker-selected")),
|
|
!1
|
|
);
|
|
case 40:
|
|
return (
|
|
(f = e.find(".ui-timepicker-selected")),
|
|
0 === f.length
|
|
? (e.find("li").each(function (b, c) {
|
|
return a(c).position().top > 0 ? ((f = a(c)), !1) : void 0;
|
|
}),
|
|
f.addClass("ui-timepicker-selected"))
|
|
: f.is(":last-child") ||
|
|
(f.removeClass("ui-timepicker-selected"),
|
|
f.next().addClass("ui-timepicker-selected"),
|
|
f.next().position().top + 2 * f.outerHeight() > e.outerHeight() &&
|
|
e.scrollTop(e.scrollTop() + f.outerHeight())),
|
|
!1
|
|
);
|
|
case 27:
|
|
e.find("li").removeClass("ui-timepicker-selected"), y.hide();
|
|
break;
|
|
case 9:
|
|
y.hide();
|
|
break;
|
|
default:
|
|
return !0;
|
|
}
|
|
}
|
|
function p(c) {
|
|
var d = a(this),
|
|
e = d.data("timepicker-list"),
|
|
f = d.data("timepicker-settings");
|
|
if (!e || !b(e) || f.disableTextInput) return !0;
|
|
if ("paste" === c.type || "cut" === c.type)
|
|
return void setTimeout(function () {
|
|
f.typeaheadHighlight ? j(d, e) : e.hide();
|
|
}, 0);
|
|
switch (c.keyCode) {
|
|
case 96:
|
|
case 97:
|
|
case 98:
|
|
case 99:
|
|
case 100:
|
|
case 101:
|
|
case 102:
|
|
case 103:
|
|
case 104:
|
|
case 105:
|
|
case 48:
|
|
case 49:
|
|
case 50:
|
|
case 51:
|
|
case 52:
|
|
case 53:
|
|
case 54:
|
|
case 55:
|
|
case 56:
|
|
case 57:
|
|
case 65:
|
|
case 77:
|
|
case 80:
|
|
case 186:
|
|
case 8:
|
|
case 46:
|
|
f.typeaheadHighlight ? j(d, e) : e.hide();
|
|
}
|
|
}
|
|
function q(a) {
|
|
var b = a.data("timepicker-settings"),
|
|
c = a.data("timepicker-list"),
|
|
d = null,
|
|
e = c.find(".ui-timepicker-selected");
|
|
return e.hasClass("ui-timepicker-disabled")
|
|
? !1
|
|
: (e.length && (d = e.data("time")),
|
|
null !== d &&
|
|
("string" != typeof d && (d = s(d, b)), m(a, d, "select")),
|
|
!0);
|
|
}
|
|
function r(a, b) {
|
|
a = Math.abs(a);
|
|
var c,
|
|
d,
|
|
e = Math.round(a / 60),
|
|
f = [];
|
|
return (
|
|
60 > e
|
|
? (f = [e, w.mins])
|
|
: ((c = Math.floor(e / 60)),
|
|
(d = e % 60),
|
|
30 == b && 30 == d && (c += w.decimal + 5),
|
|
f.push(c),
|
|
f.push(1 == c ? w.hr : w.hrs),
|
|
30 != b && d && (f.push(d), f.push(w.mins))),
|
|
f.join(" ")
|
|
);
|
|
}
|
|
function s(b, c) {
|
|
if ("number" != typeof b) return null;
|
|
var d = parseInt(b % 60),
|
|
e = parseInt((b / 60) % 60),
|
|
f = parseInt((b / 3600) % 24),
|
|
g = new Date(1970, 0, 2, f, e, d, 0);
|
|
if (isNaN(g.getTime())) return null;
|
|
if ("function" === a.type(c.timeFormat)) return c.timeFormat(g);
|
|
for (var h, i, j = "", k = 0; k < c.timeFormat.length; k++)
|
|
switch ((i = c.timeFormat.charAt(k))) {
|
|
case "a":
|
|
j += g.getHours() > 11 ? w.pm : w.am;
|
|
break;
|
|
case "A":
|
|
j += g.getHours() > 11 ? w.PM : w.AM;
|
|
break;
|
|
case "g":
|
|
(h = g.getHours() % 12), (j += 0 === h ? "12" : h);
|
|
break;
|
|
case "G":
|
|
(h = g.getHours()), b === v && (h = c.show2400 ? 24 : 0), (j += h);
|
|
break;
|
|
case "h":
|
|
(h = g.getHours() % 12),
|
|
0 !== h && 10 > h && (h = "0" + h),
|
|
(j += 0 === h ? "12" : h);
|
|
break;
|
|
case "H":
|
|
(h = g.getHours()),
|
|
b === v && (h = c.show2400 ? 24 : 0),
|
|
(j += h > 9 ? h : "0" + h);
|
|
break;
|
|
case "i":
|
|
var e = g.getMinutes();
|
|
j += e > 9 ? e : "0" + e;
|
|
break;
|
|
case "s":
|
|
(d = g.getSeconds()), (j += d > 9 ? d : "0" + d);
|
|
break;
|
|
case "\\":
|
|
k++, (j += c.timeFormat.charAt(k));
|
|
break;
|
|
default:
|
|
j += i;
|
|
}
|
|
return j;
|
|
}
|
|
function t(a, b) {
|
|
if ("" === a || null === a) return null;
|
|
if ("object" == typeof a)
|
|
return 3600 * a.getHours() + 60 * a.getMinutes() + a.getSeconds();
|
|
if ("string" != typeof a) return a;
|
|
(a = a.toLowerCase().replace(/[\s\.]/g, "")),
|
|
("a" == a.slice(-1) || "p" == a.slice(-1)) && (a += "m");
|
|
var c =
|
|
"(" +
|
|
w.am.replace(".", "") +
|
|
"|" +
|
|
w.pm.replace(".", "") +
|
|
"|" +
|
|
w.AM.replace(".", "") +
|
|
"|" +
|
|
w.PM.replace(".", "") +
|
|
")?",
|
|
d = new RegExp(
|
|
"^" + c + "([0-9]?[0-9])\\W?([0-5][0-9])?\\W?([0-5][0-9])?" + c + "$"
|
|
),
|
|
e = a.match(d);
|
|
if (!e) return null;
|
|
var f = parseInt(1 * e[2], 10),
|
|
g = e[1] || e[5],
|
|
h = f,
|
|
i = 1 * e[3] || 0,
|
|
j = 1 * e[4] || 0;
|
|
if (12 >= f && g) {
|
|
var k = g == w.pm || g == w.PM;
|
|
h = 12 == f ? (k ? 12 : 0) : f + (k ? 12 : 0);
|
|
} else if (b) {
|
|
var l = 3600 * f + 60 * i + j;
|
|
if (l >= v + (b.show2400 ? 1 : 0)) {
|
|
if (b.wrapHours === !1) return null;
|
|
h = f % 24;
|
|
}
|
|
}
|
|
var m = 3600 * h + 60 * i + j;
|
|
if (12 > f && !g && b && b._twelveHourTime && b.scrollDefault) {
|
|
var n = m - b.scrollDefault();
|
|
0 > n && n >= v / -2 && (m = (m + v / 2) % v);
|
|
}
|
|
return m;
|
|
}
|
|
function u(a, b) {
|
|
return a == v && b.show2400 ? a : a % v;
|
|
}
|
|
var v = 86400,
|
|
w = {
|
|
am: "am",
|
|
pm: "pm",
|
|
AM: "AM",
|
|
PM: "PM",
|
|
decimal: ".",
|
|
mins: "mins",
|
|
hr: "hr",
|
|
hrs: "hrs",
|
|
},
|
|
x = {
|
|
appendTo: "body",
|
|
className: null,
|
|
closeOnWindowScroll: !1,
|
|
disableTextInput: !1,
|
|
disableTimeRanges: [],
|
|
disableTouchKeyboard: !1,
|
|
durationTime: null,
|
|
forceRoundTime: !1,
|
|
maxTime: null,
|
|
minTime: null,
|
|
noneOption: !1,
|
|
orientation: "l",
|
|
roundingFunction: function (a, b) {
|
|
if (null === a) return null;
|
|
if ("number" != typeof b.step) return a;
|
|
var c = a % (60 * b.step),
|
|
d = b.minTime || 0;
|
|
return (
|
|
(c -= d % (60 * b.step)),
|
|
c >= 30 * b.step ? (a += 60 * b.step - c) : (a -= c),
|
|
u(a, b)
|
|
);
|
|
},
|
|
scrollDefault: null,
|
|
selectOnBlur: !1,
|
|
show2400: !1,
|
|
showDuration: !1,
|
|
showOn: ["click", "focus"],
|
|
showOnFocus: !0,
|
|
step: 30,
|
|
stopScrollPropagation: !1,
|
|
timeFormat: "g:ia",
|
|
typeaheadHighlight: !0,
|
|
useSelect: !1,
|
|
wrapHours: !0,
|
|
},
|
|
y = {
|
|
init: function (b) {
|
|
return this.each(function () {
|
|
var e = a(this),
|
|
f = [];
|
|
for (var g in x) e.data(g) && (f[g] = e.data(g));
|
|
var h = a.extend({}, x, b, f);
|
|
if (
|
|
(h.lang && (w = a.extend(w, h.lang)),
|
|
(h = c(h)),
|
|
e.data("timepicker-settings", h),
|
|
e.addClass("ui-timepicker-input"),
|
|
h.useSelect)
|
|
)
|
|
d(e);
|
|
else {
|
|
if ((e.prop("autocomplete", "off"), h.showOn))
|
|
for (var i in h.showOn) e.on(h.showOn[i] + ".timepicker", y.show);
|
|
e.on("change.timepicker", k),
|
|
e.on("keydown.timepicker", o),
|
|
e.on("keyup.timepicker", p),
|
|
h.disableTextInput && e.on("keydown.timepicker", n),
|
|
e.on("cut.timepicker", p),
|
|
e.on("paste.timepicker", p),
|
|
k.call(e.get(0), null, "initial");
|
|
}
|
|
});
|
|
},
|
|
show: function (c) {
|
|
var e = a(this),
|
|
f = e.data("timepicker-settings");
|
|
if ((c && c.preventDefault(), f.useSelect))
|
|
return void e.data("timepicker-list").focus();
|
|
h(e) && e.blur();
|
|
var k = e.data("timepicker-list");
|
|
if (
|
|
!e.prop("readonly") &&
|
|
((k && 0 !== k.length && "function" != typeof f.durationTime) ||
|
|
(d(e), (k = e.data("timepicker-list"))),
|
|
!b(k))
|
|
) {
|
|
e.data("ui-timepicker-value", e.val()), j(e, k), y.hide(), k.show();
|
|
var m = {};
|
|
f.orientation.match(/r/)
|
|
? (m.left =
|
|
e.offset().left +
|
|
e.outerWidth() -
|
|
k.outerWidth() +
|
|
parseInt(k.css("marginLeft").replace("px", ""), 10))
|
|
: (m.left =
|
|
e.offset().left +
|
|
parseInt(k.css("marginLeft").replace("px", ""), 10));
|
|
var n;
|
|
(n = f.orientation.match(/t/)
|
|
? "t"
|
|
: f.orientation.match(/b/)
|
|
? "b"
|
|
: e.offset().top + e.outerHeight(!0) + k.outerHeight() >
|
|
a(window).height() + a(window).scrollTop()
|
|
? "t"
|
|
: "b"),
|
|
"t" == n
|
|
? (k.addClass("ui-timepicker-positioned-top"),
|
|
(m.top =
|
|
e.offset().top -
|
|
k.outerHeight() +
|
|
parseInt(k.css("marginTop").replace("px", ""), 10)))
|
|
: (k.removeClass("ui-timepicker-positioned-top"),
|
|
(m.top =
|
|
e.offset().top +
|
|
e.outerHeight() +
|
|
parseInt(k.css("marginTop").replace("px", ""), 10))),
|
|
k.offset(m);
|
|
var o = k.find(".ui-timepicker-selected");
|
|
if (!o.length) {
|
|
var p = t(l(e));
|
|
null !== p
|
|
? (o = i(e, k, p))
|
|
: f.scrollDefault && (o = i(e, k, f.scrollDefault()));
|
|
}
|
|
if (
|
|
((!o.length || o.hasClass("ui-timepicker-disabled")) &&
|
|
(o = k.find("li:not(.ui-timepicker-disabled):first")),
|
|
o && o.length)
|
|
) {
|
|
var q = k.scrollTop() + o.position().top - o.outerHeight();
|
|
k.scrollTop(q);
|
|
} else k.scrollTop(0);
|
|
return (
|
|
f.stopScrollPropagation &&
|
|
a(document).on(
|
|
"wheel.ui-timepicker",
|
|
".ui-timepicker-wrapper",
|
|
function (b) {
|
|
b.preventDefault();
|
|
var c = a(this).scrollTop();
|
|
a(this).scrollTop(c + b.originalEvent.deltaY);
|
|
}
|
|
),
|
|
a(document).on(
|
|
"touchstart.ui-timepicker mousedown.ui-timepicker",
|
|
g
|
|
),
|
|
a(window).on("resize.ui-timepicker", g),
|
|
f.closeOnWindowScroll && a(document).on("scroll.ui-timepicker", g),
|
|
e.trigger("showTimepicker"),
|
|
this
|
|
);
|
|
}
|
|
},
|
|
hide: function (c) {
|
|
var d = a(this),
|
|
e = d.data("timepicker-settings");
|
|
return (
|
|
e && e.useSelect && d.blur(),
|
|
a(".ui-timepicker-wrapper").each(function () {
|
|
var c = a(this);
|
|
if (b(c)) {
|
|
var d = c.data("timepicker-input"),
|
|
e = d.data("timepicker-settings");
|
|
e && e.selectOnBlur && q(d),
|
|
c.hide(),
|
|
d.trigger("hideTimepicker");
|
|
}
|
|
}),
|
|
this
|
|
);
|
|
},
|
|
option: function (b, e) {
|
|
return "string" == typeof b && "undefined" == typeof e
|
|
? a(this).data("timepicker-settings")[b]
|
|
: this.each(function () {
|
|
var f = a(this),
|
|
g = f.data("timepicker-settings"),
|
|
h = f.data("timepicker-list");
|
|
"object" == typeof b
|
|
? (g = a.extend(g, b))
|
|
: "string" == typeof b && (g[b] = e),
|
|
(g = c(g)),
|
|
f.data("timepicker-settings", g),
|
|
k.call(f.get(0), { type: "change" }, "initial"),
|
|
h && (h.remove(), f.data("timepicker-list", !1)),
|
|
g.useSelect && d(f);
|
|
});
|
|
},
|
|
getSecondsFromMidnight: function () {
|
|
return t(l(this));
|
|
},
|
|
getTime: function (a) {
|
|
var b = this,
|
|
c = l(b);
|
|
if (!c) return null;
|
|
var d = t(c);
|
|
if (null === d) return null;
|
|
a || (a = new Date());
|
|
var e = new Date(a);
|
|
return (
|
|
e.setHours(d / 3600),
|
|
e.setMinutes((d % 3600) / 60),
|
|
e.setSeconds(d % 60),
|
|
e.setMilliseconds(0),
|
|
e
|
|
);
|
|
},
|
|
isVisible: function () {
|
|
var a = this,
|
|
c = a.data("timepicker-list");
|
|
return !(!c || !b(c));
|
|
},
|
|
setTime: function (a) {
|
|
var b = this,
|
|
c = b.data("timepicker-settings");
|
|
if (c.forceRoundTime) var d = f(t(a), c);
|
|
else var d = s(t(a), c);
|
|
return (
|
|
a && null === d && c.noneOption && (d = a),
|
|
b.val(d),
|
|
k.call(b.get(0), { type: "change" }, "initial"),
|
|
b.data("timepicker-list") && j(b, b.data("timepicker-list")),
|
|
this
|
|
);
|
|
},
|
|
remove: function () {
|
|
var a = this;
|
|
if (a.hasClass("ui-timepicker-input")) {
|
|
var b = a.data("timepicker-settings");
|
|
return (
|
|
a.removeAttr("autocomplete", "off"),
|
|
a.removeClass("ui-timepicker-input"),
|
|
a.removeData("timepicker-settings"),
|
|
a.off(".timepicker"),
|
|
a.data("timepicker-list") && a.data("timepicker-list").remove(),
|
|
b.useSelect && a.show(),
|
|
a.removeData("timepicker-list"),
|
|
this
|
|
);
|
|
}
|
|
},
|
|
};
|
|
a.fn.timepicker = function (b) {
|
|
return this.length
|
|
? y[b]
|
|
? this.hasClass("ui-timepicker-input")
|
|
? y[b].apply(this, Array.prototype.slice.call(arguments, 1))
|
|
: this
|
|
: "object" != typeof b && b
|
|
? void a.error("Method " + b + " does not exist on jQuery.timepicker")
|
|
: y.init.apply(this, arguments)
|
|
: this;
|
|
};
|
|
});
|