Skip to content

Commit 1a8a598

Browse files
committed
1.5.1. Added support for twitter bootstrap dropdown.
1 parent 58cd180 commit 1a8a598

File tree

5 files changed

+817
-1
lines changed

5 files changed

+817
-1
lines changed

media/css/bootstrap.min.css

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

media/js/bootstrap-dropdown.js

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
/* ============================================================
2+
* bootstrap-dropdown.js v2.3.1
3+
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
4+
* ============================================================
5+
* Copyright 2012 Twitter, Inc.
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
* ============================================================ */
19+
20+
21+
!function ($) {
22+
23+
"use strict"; // jshint ;_;
24+
25+
26+
/* DROPDOWN CLASS DEFINITION
27+
* ========================= */
28+
29+
var toggle = '[data-toggle=dropdown]'
30+
, Dropdown = function (element) {
31+
var $el = $(element).on('click.dropdown.data-api', this.toggle)
32+
$('html').on('click.dropdown.data-api', function () {
33+
$el.parent().removeClass('open')
34+
})
35+
}
36+
37+
Dropdown.prototype = {
38+
39+
constructor: Dropdown
40+
41+
, toggle: function (e) {
42+
var $this = $(this)
43+
, $parent
44+
, isActive
45+
46+
if ($this.is('.disabled, :disabled')) return
47+
48+
$parent = getParent($this)
49+
50+
isActive = $parent.hasClass('open')
51+
52+
clearMenus()
53+
54+
if (!isActive) {
55+
$parent.toggleClass('open')
56+
}
57+
58+
$this.focus()
59+
60+
return false
61+
}
62+
63+
, keydown: function (e) {
64+
var $this
65+
, $items
66+
, $active
67+
, $parent
68+
, isActive
69+
, index
70+
71+
if (!/(38|40|27)/.test(e.keyCode)) return
72+
73+
$this = $(this)
74+
75+
e.preventDefault()
76+
e.stopPropagation()
77+
78+
if ($this.is('.disabled, :disabled')) return
79+
80+
$parent = getParent($this)
81+
82+
isActive = $parent.hasClass('open')
83+
84+
if (!isActive || (isActive && e.keyCode == 27)) {
85+
if (e.which == 27) $parent.find(toggle).focus()
86+
return $this.click()
87+
}
88+
89+
$items = $('[role=menu] li:not(.divider):visible a', $parent)
90+
91+
if (!$items.length) return
92+
93+
index = $items.index($items.filter(':focus'))
94+
95+
if (e.keyCode == 38 && index > 0) index-- // up
96+
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
97+
if (!~index) index = 0
98+
99+
$items
100+
.eq(index)
101+
.focus()
102+
}
103+
104+
}
105+
106+
function clearMenus() {
107+
$(toggle).each(function () {
108+
getParent($(this)).removeClass('open')
109+
})
110+
}
111+
112+
function getParent($this) {
113+
var selector = $this.attr('data-target')
114+
, $parent
115+
116+
if (!selector) {
117+
selector = $this.attr('href')
118+
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
119+
}
120+
121+
$parent = selector && $(selector)
122+
123+
if (!$parent || !$parent.length) $parent = $this.parent()
124+
125+
return $parent
126+
}
127+
128+
129+
/* DROPDOWN PLUGIN DEFINITION
130+
* ========================== */
131+
132+
var old = $.fn.dropdown
133+
134+
$.fn.dropdown = function (option) {
135+
return this.each(function () {
136+
var $this = $(this)
137+
, data = $this.data('dropdown')
138+
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
139+
if (typeof option == 'string') data[option].call($this)
140+
})
141+
}
142+
143+
$.fn.dropdown.Constructor = Dropdown
144+
145+
146+
/* DROPDOWN NO CONFLICT
147+
* ==================== */
148+
149+
$.fn.dropdown.noConflict = function () {
150+
$.fn.dropdown = old
151+
return this
152+
}
153+
154+
155+
/* APPLY TO STANDARD DROPDOWN ELEMENTS
156+
* =================================== */
157+
158+
$(document)
159+
.on('click.dropdown.data-api', clearMenus)
160+
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
161+
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
162+
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
163+
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
164+
165+
}(window.jQuery);

media/js/jquery-1.9.1.min.js

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

media/js/jquery.dataTables.columnFilter.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* File: jquery.dataTables.columnFilter.js
3-
* Version: 1.5.0.
3+
* Version: 1.5.1.
44
* Author: Jovan Popovic
55
*
66
* Copyright 2011-2012 Jovan Popovic, all rights reserved.
@@ -407,6 +407,22 @@
407407

408408
}
409409

410+
function fnCreateDropdown(aData) {
411+
var index = i;
412+
var r = '<div class="dropdown select_filter"><a class="dropdown-toggle" data-toggle="dropdown" href="#">' + label + '<b class="caret"></b></a><ul class="dropdown-menu" role="menu"><li data-value=""><a>Show All</a></li>', j, iLen = aData.length;
413+
414+
for (j = 0; j < iLen; j++) {
415+
r += '<li data-value="' + aData[j] + '"><a>' + aData[j] + '</a></li>';
416+
}
417+
var select = $(r + '</ul></div>');
418+
th.html(select);
419+
th.wrapInner('<span class="filterColumn filter_select" />');
420+
select.find('li').click(function () {
421+
oTable.fnFilter($(this).data('value'), index);
422+
});
423+
}
424+
425+
410426
function fnCreateCheckbox(oTable, aData) {
411427

412428
if (aData == null)
@@ -699,6 +715,10 @@
699715
break;
700716
case "checkbox":
701717
fnCreateCheckbox(oTable, aoColumn.values);
718+
break;
719+
case "twitter-dropdown":
720+
case "dropdown":
721+
fnCreateDropdown(aoColumn.values);
702722
break;
703723
case "text":
704724
default:

0 commit comments

Comments
 (0)