PageSourceSearch

https://tokyojoes.net/Resources/members/dropkick.js

js tokyojoes.net collected 2026-09-28 17:42:18 UTC 11,201 bytes, 265 lines download raw bytes

1/*
2 * DropKick 1.4
3 *
4 * Highly customizable <select> lists
5 * https://github.com/robdel12/DropKick
6 *
7 * Created by: Jamie Lottering <http://github.com/JamieLottering> <http://twitter.com/JamieLottering>
8 *
9 *
10*/
11(function(e, t, n) {
12    "use strict";
13    var r = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/), i=!!r, s = i && parseFloat(r[1]) < 7, o = navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i), u = {}, a = [], f = {
14        left: 37,
15        up: 38,
16        right: 39,
17        down: 40,
18        enter: 13,
19        tab: 9,
20        zero: 48,
21        z: 90,
22        last: 221
23    }, l = ['<div class="dk_container" id="dk_container_{{ id }}" tabindex="{{ tabindex }}" aria-hidden="true">', '<a class="dk_toggle dk_label">{{ label }}</a>', '<div class="dk_options">', '<ul class="dk_options_inner" role="main" aria-hidden="true">', "</ul>", "</div>", "</div>"].join(""), c = '<li><a data-dk-dropdown-value="{{ value }}">{{ text }}</a></li>', h = {
24        startSpeed: 400,
25        theme: !1,
26        changes: !1,
27        syncReverse: !0,
28        nativeMobile: !0,
29        autoWidth: !0
30    }, p = null, d = null, v = function(e, t, n) {
31        var r, i, s, o;
32        r = e.attr("data-dk-dropdown-value");
33        i = e.text();
34        s = t.data("dropkick");
35        o = s.$select;
36        o.val(r).trigger("change");
37        t.find(".dk_label").text(i);
38        n = n ||!1;
39        s.settings.change&&!n&&!s.settings.syncReverse && s.settings.change.call(o, r, i)
40    }, m = function(e) {
41        e.removeClass("dk_open dk_open_top");
42        p = null
43    }, g = function(n) {
44        var r = n.find(".dk_toggle"), i = n.find(".dk_options").outerHeight(), s = e(t).height() - r.outerHeight() - r.offset().top + e(t).scrollTop(), o = r.offset().top - e(t).scrollTop();
45        return i < o ? i < s : !0
46    }, y = function(e, t, n) {
47        var r = e.find(".dk_options_inner"), i = t.prevAll("li").outerHeight() * t.prevAll("li").length, s = r.scrollTop(), o = r.height() + r.scrollTop() - t.outerHeight();
48        (n && n.type === "keydown" || i < s || i > o) && r.scrollTop(i)
49    }, b = function(e, t) {
50        var n = g(e);
51        p = e.toggleClass("dk_open");
52        var n = g(e), r = n ? "dk_open": "dk_open_top dk_open";
53        e.find(".dk_options").css({
54            top: n ? e.find(".dk_toggle").outerHeight()-1: "",
55            bottom: n ? "": e.find(".dk_toggle").outerHeight()-1
56        });
57        p = e.addClass(r);
58        y(e, e.find(".dk_option_current"), t)
59    }, w = function(e, t, n) {
60        t.find(".dk_option_current").removeClass("dk_option_current");
61        e.addClass("dk_option_current");
62        y(t, e, n)
63    }, E = function(t, n) {
64        var r = t.keyCode, i = n.data("dropkick"), s = String.fromCharCode(r), o = n.find(".dk_options"), u = n.hasClass("dk_open"), a = o.find("li"), l = n.find(".dk_option_current"), c = a.first(), h = a.last(), p, d, g, y, E, S, x;
65        switch (r) {
66        case f.enter:
67            if (u) {
68                if (!l.hasClass("disabled")) {
69                    v(l.find("a"), n);
70                    m(n)
71                }
72            } else 
73                b(n, t);
74            t.preventDefault();
75            break;
76        case f.tab:
77            if (u) {
78                l.length && v(l.find("a"), n);
79                m(n)
80            }
81            break;
82        case f.up:
83            d = l.prev("li");
84            u ? d.length ? w(d, n, t) : w(h, n, t) : b(n, t);
85            t.preventDefault();
86            break;
87        case f.down:
88            if (u) {
89                p = l.next("li").first();
90                p.length ? w(p, n, t) : w(c, n, t)
91            } else 
92                b(n, t);
93            t.preventDefault();
94            break;
95        default:
96        }
97        if (r >= f.zero && r <= f.z) {
98            g = (new Date).getTime();
99            if (i.finder === null || i.finder === undefined) {
100                i.finder = s.toUpperCase();
101                i.timer = g
102            } else if (g > parseInt(i.timer, 10) + 1e3) {
103                i.finder = s.toUpperCase();
104                i.timer = g
105            } else {
106                i.finder = i.finder + s.toUpperCase();
107                i.timer = g
108            }
109            y = a.find("a");
110            for (E = 0, S = y.length; E < S; E++) {
111                x = e(y[E]);
112                if (x.html().toUpperCase().indexOf(i.finder) === 0) {
113                    v(x, n);
114                    w(x.parent(), n, t);
115                    break
116                }
117            }
118            n.data("dropkick", i)
119        }
120    }, S = function(t) {
121        return e.trim(t).length > 0 ? t : !1
122    }, x = function(t, n) {
123        var r = t.replace("{{ id }}", n.id).replace("{{ label }}", n.label).replace("{{ tabindex }}", n.tabindex), i = [], s, o, u, a, f;
124        if (n.options && n.options.length)
125            for (o = 0, u = n.options.length; o < u; o++) {
126                a = e(n.options[o]);
127                o === 0 && a.attr("selected") !== undefined && a.attr("disabled") !== undefined ? f = null : f = c.replace("{{ value }}", a.val()).replace("{{ current }}", S(a.val()) === n.value ? "dk_option_current" : "").replace("{{ disabled }}", a.attr("disabled") !== undefined ? "disabled" : "").replace("{{ text }}", e.trim(a.html()));
128                i[i.length] = f
129            }
130        s = e(r);
131        s.find(".dk_options_inner").html(i.join(""));
132        return s
133    };
134    s || (n.documentElement.className = n.documentElement.className + " dk_fouc");
135    u.init = function(t) {
136        t = e.extend({}, h, t);
137        l = t.dropdownTemplate ? t.dropdownTemplate : l;
138        c = t.optionTemplate ? t.optionTemplate : c;
139        return this.each(function() {
140            var n = e(this), r = n.find(":selected").first(), i = n.find("option"), s = n.data("dropkick") || {}, u = n.attr("id") || n.attr("name"), f = t.width || n.outerWidth(), c = n.attr("tabindex") || "0", h=!1, p, v;
141            if (s.id)
142                return n;
143            s.settings = t;
144            s.tabindex = c;
145            s.id = u;
146            s.$original = r;
147            s.$select = n;
148            s.value = S(n.val()) || S(r.attr("value"));
149            s.label = r.text();
150            s.options = i;
151            h = x(l, s);
152            s.settings.autoWidth && h.find(".dk_toggle").css({
153                //width: f + "px"
154            });
155            n.before(h).appendTo(h);
156            h = e('div[id="dk_container_' + u + '"]').fadeIn(t.startSpeed);
157            p = t.theme || "default";
158            h.addClass("dk_theme_" + p);
159            s.theme = p;
160            s.$dk = h;
161            n.data("dropkick", s);
162            h.addClass(n.attr("class"));
163            h.data("dropkick", s);
164            a[a.length] = n;
165            h.on("focus.dropkick", function() {
166                d = h.addClass("dk_focus")
167            }).on("blur.dropkick", function() {
168                h.removeClass("dk_focus");
169                d = null
170            });
171            o && s.settings.nativeMobile && h.addClass("dk_mobile");
172            s.settings.syncReverse && n.on("change", function(t) {
173                var r = n.val(), i = e('a[data-dk-dropdown-value="' + r + '"]', h), o = i.text();
174                h.find(".dk_label").text(o);
175                s.settings.change && s.settings.change.call(n, r, o);
176                w(i.parent(), h, t)
177            });
178            v = n.attr("form") ? e("#" + n.attr("form").replace(" ", ", #")) : n.closest("form");
179            v.length && v.on("reset", function() {
180                n.dropkick("reset")
181            })
182        })
183    };
184    u.theme = function(t) {
185        var n = e(this).data("dropkick"), r = n.$dk, i = "dk_theme_" + n.theme;
186        r.removeClass(i).addClass("dk_theme_" + t);
187        n.theme = t
188    };
189    u.reset = function() {
190        return this.each(function() {
191            var t = e(this).data("dropkick"), n = t.$dk, r = e('a[data-dk-dropdown-value="' + t.$original.attr("value") + '"]', n);
192            t.$original.prop("selected", !0);
193            n.find(".dk_label").text(t.label);
194            w(r.parent(), n)
195        })
196    };
197    u.setValue = function(t) {
198        return this.each(function() {
199            var n = e(this).data("dropkick").$dk, r = e('.dk_options a[data-dk-dropdown-value="' + t + '"]', n);
200            r.length ? v(r, n) | w(r.parent(), n) : console.warn("There is no option with this value in " + n.selector)
201        })
202    };
203    u.refresh = function() {
204        return this.each(function() {
205            var t = e(this).data("dropkick"), n = t.$select, r = t.$dk, i, s;
206            t.options = n.find("option");
207            s = x(l, t).find(".dk_options_inner");
208            r.find(".dk_options_inner").replaceWith(s);
209            i = e('a[data-dk-dropdown-value="' + n.val() + '"]', r);
210            w(i.parent(), r)
211        })
212    };
213    e.fn.dropkick = function(e) {
214        if (!s) {
215            if (u[e])
216                return u[e].apply(this, Array.prototype.slice.call(arguments, 1));
217            if (typeof e == "object" ||!e)
218                return u.init.apply(this, arguments)
219        }
220    };
221    e(function() {
222        e(n).on(i ? "mousedown" : "click", ".dk_options a", function() {
223            var t = e(this), n = t.parents(".dk_container").first();
224            if (!t.parent().hasClass("disabled")) {
225                v(t, n);
226                w(t.parent(), n);
227                m(n)
228            }
229            return !1
230        });
231        e(n).on("keydown.dk_nav", function(e) {
232            var t;
233            p ? t = p : d && (t = d);
234            t && E(e, t)
235        });
236        e(n).on("click", null, function(t) {
237            var n = e(t.target), r;
238            if (p && n.closest(".dk_container").length === 0)
239                m(p);
240            else {
241                if (n.is(".dk_toggle, .dk_label")) {
242                    r = n.parents(".dk_container").first();
243                    if (r.hasClass("dk_open"))
244                        m(r);
245                    else {
246                        p && m(p);
247                        b(r, t)
248                    }
249                    return !1
250                }
251                n.attr("for")&&!!e("#dk_container_" + n.attr("for"))[0] && e("#dk_container_" + n.attr("for")).trigger("focus.dropkick")
252            }
253        });
254        var r = "onwheel"in t ? "wheel": "onmousewheel"in n ? "mousewheel": "MouseScrollEvent"in t ? "DOMMouseScroll MozMousePixelScroll": !1;
255        r && e(n).on(r, ".dk_options_inner", function(e) {
256            var t = e.originalEvent.wheelDelta||-e.originalEvent.deltaY||-e.originalEvent.detail;
257            if (i) {
258                this.scrollTop -= Math.round(t / 10);
259                return !1
260            }
261            return t > 0 && this.scrollTop <= 0 || t < 0 && this.scrollTop >= this.scrollHeight - this.offsetHeight?!1 : !0
262        })
263    })
264})(jQuery, window, document);
265

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.