]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/datatables/dataTables.bootstrap.js
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / pybind / mgr / dashboard / static / AdminLTE-2.3.7 / plugins / datatables / dataTables.bootstrap.js
1 /*! DataTables Bootstrap 3 integration
2 * ©2011-2014 SpryMedia Ltd - datatables.net/license
3 */
4
5 /**
6 * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
7 * DataTables 1.10 or newer.
8 *
9 * This file sets the defaults and adds options to DataTables to style its
10 * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
11 * for further information.
12 */
13 (function(window, document, undefined){
14
15 var factory = function( $, DataTable ) {
16 "use strict";
17
18
19 /* Set the defaults for DataTables initialisation */
20 $.extend( true, DataTable.defaults, {
21 dom:
22 "<'row'<'col-sm-6'l><'col-sm-6'f>>" +
23 "<'row'<'col-sm-12'tr>>" +
24 "<'row'<'col-sm-5'i><'col-sm-7'p>>",
25 renderer: 'bootstrap'
26 } );
27
28
29 /* Default class modification */
30 $.extend( DataTable.ext.classes, {
31 sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
32 sFilterInput: "form-control input-sm",
33 sLengthSelect: "form-control input-sm"
34 } );
35
36
37 /* Bootstrap paging button renderer */
38 DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
39 var api = new DataTable.Api( settings );
40 var classes = settings.oClasses;
41 var lang = settings.oLanguage.oPaginate;
42 var btnDisplay, btnClass, counter=0;
43
44 var attach = function( container, buttons ) {
45 var i, ien, node, button;
46 var clickHandler = function ( e ) {
47 e.preventDefault();
48 if ( !$(e.currentTarget).hasClass('disabled') ) {
49 api.page( e.data.action ).draw( false );
50 }
51 };
52
53 for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
54 button = buttons[i];
55
56 if ( $.isArray( button ) ) {
57 attach( container, button );
58 }
59 else {
60 btnDisplay = '';
61 btnClass = '';
62
63 switch ( button ) {
64 case 'ellipsis':
65 btnDisplay = '&hellip;';
66 btnClass = 'disabled';
67 break;
68
69 case 'first':
70 btnDisplay = lang.sFirst;
71 btnClass = button + (page > 0 ?
72 '' : ' disabled');
73 break;
74
75 case 'previous':
76 btnDisplay = lang.sPrevious;
77 btnClass = button + (page > 0 ?
78 '' : ' disabled');
79 break;
80
81 case 'next':
82 btnDisplay = lang.sNext;
83 btnClass = button + (page < pages-1 ?
84 '' : ' disabled');
85 break;
86
87 case 'last':
88 btnDisplay = lang.sLast;
89 btnClass = button + (page < pages-1 ?
90 '' : ' disabled');
91 break;
92
93 default:
94 btnDisplay = button + 1;
95 btnClass = page === button ?
96 'active' : '';
97 break;
98 }
99
100 if ( btnDisplay ) {
101 node = $('<li>', {
102 'class': classes.sPageButton+' '+btnClass,
103 'id': idx === 0 && typeof button === 'string' ?
104 settings.sTableId +'_'+ button :
105 null
106 } )
107 .append( $('<a>', {
108 'href': '#',
109 'aria-controls': settings.sTableId,
110 'data-dt-idx': counter,
111 'tabindex': settings.iTabIndex
112 } )
113 .html( btnDisplay )
114 )
115 .appendTo( container );
116
117 settings.oApi._fnBindAction(
118 node, {action: button}, clickHandler
119 );
120
121 counter++;
122 }
123 }
124 }
125 };
126
127 // IE9 throws an 'unknown error' if document.activeElement is used
128 // inside an iframe or frame.
129 var activeEl;
130
131 try {
132 // Because this approach is destroying and recreating the paging
133 // elements, focus is lost on the select button which is bad for
134 // accessibility. So we want to restore focus once the draw has
135 // completed
136 activeEl = $(document.activeElement).data('dt-idx');
137 }
138 catch (e) {}
139
140 attach(
141 $(host).empty().html('<ul class="pagination"/>').children('ul'),
142 buttons
143 );
144
145 if ( activeEl ) {
146 $(host).find( '[data-dt-idx='+activeEl+']' ).focus();
147 }
148 };
149
150
151 /*
152 * TableTools Bootstrap compatibility
153 * Required TableTools 2.1+
154 */
155 if ( DataTable.TableTools ) {
156 // Set the classes that TableTools uses to something suitable for Bootstrap
157 $.extend( true, DataTable.TableTools.classes, {
158 "container": "DTTT btn-group",
159 "buttons": {
160 "normal": "btn btn-default",
161 "disabled": "disabled"
162 },
163 "collection": {
164 "container": "DTTT_dropdown dropdown-menu",
165 "buttons": {
166 "normal": "",
167 "disabled": "disabled"
168 }
169 },
170 "print": {
171 "info": "DTTT_print_info"
172 },
173 "select": {
174 "row": "active"
175 }
176 } );
177
178 // Have the collection use a bootstrap compatible drop down
179 $.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
180 "collection": {
181 "container": "ul",
182 "button": "li",
183 "liner": "a"
184 }
185 } );
186 }
187
188 }; // /factory
189
190
191 // Define as an AMD module if possible
192 if ( typeof define === 'function' && define.amd ) {
193 define( ['jquery', 'datatables'], factory );
194 }
195 else if ( typeof exports === 'object' ) {
196 // Node/CommonJS
197 factory( require('jquery'), require('datatables') );
198 }
199 else if ( jQuery ) {
200 // Otherwise simply initialise as normal, stopping multiple evaluation
201 factory( jQuery, jQuery.fn.dataTable );
202 }
203
204
205 })(window, document);
206