cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

dataTables.bootstrap.js (4559B)


      1 /*! DataTables Bootstrap 3 integration
      2  * ©2011-2015 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( factory ){
     14 	if ( typeof define === 'function' && define.amd ) {
     15 		// AMD
     16 		define( ['jquery', 'datatables.net'], function ( $ ) {
     17 			return factory( $, window, document );
     18 		} );
     19 	}
     20 	else if ( typeof exports === 'object' ) {
     21 		// CommonJS
     22 		module.exports = function (root, $) {
     23 			if ( ! root ) {
     24 				root = window;
     25 			}
     26 
     27 			if ( ! $ || ! $.fn.dataTable ) {
     28 				// Require DataTables, which attaches to jQuery, including
     29 				// jQuery if needed and have a $ property so we can access the
     30 				// jQuery object that is used
     31 				$ = require('datatables.net')(root, $).$;
     32 			}
     33 
     34 			return factory( $, root, root.document );
     35 		};
     36 	}
     37 	else {
     38 		// Browser
     39 		factory( jQuery, window, document );
     40 	}
     41 }(function( $, window, document, undefined ) {
     42 'use strict';
     43 var DataTable = $.fn.dataTable;
     44 
     45 
     46 /* Set the defaults for DataTables initialisation */
     47 $.extend( true, DataTable.defaults, {
     48 	dom:
     49 		"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
     50 		"<'row'<'col-sm-12'tr>>" +
     51 		"<'row'<'col-sm-5'i><'col-sm-7'p>>",
     52 	renderer: 'bootstrap'
     53 } );
     54 
     55 
     56 /* Default class modification */
     57 $.extend( DataTable.ext.classes, {
     58 	sWrapper:      "dataTables_wrapper form-inline dt-bootstrap",
     59 	sFilterInput:  "form-control input-sm",
     60 	sLengthSelect: "form-control input-sm",
     61 	sProcessing:   "dataTables_processing panel panel-default"
     62 } );
     63 
     64 
     65 /* Bootstrap paging button renderer */
     66 DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
     67 	var api     = new DataTable.Api( settings );
     68 	var classes = settings.oClasses;
     69 	var lang    = settings.oLanguage.oPaginate;
     70 	var aria = settings.oLanguage.oAria.paginate || {};
     71 	var btnDisplay, btnClass, counter=0;
     72 
     73 	var attach = function( container, buttons ) {
     74 		var i, ien, node, button;
     75 		var clickHandler = function ( e ) {
     76 			e.preventDefault();
     77 			if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
     78 				api.page( e.data.action ).draw( 'page' );
     79 			}
     80 		};
     81 
     82 		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
     83 			button = buttons[i];
     84 
     85 			if ( $.isArray( button ) ) {
     86 				attach( container, button );
     87 			}
     88 			else {
     89 				btnDisplay = '';
     90 				btnClass = '';
     91 
     92 				switch ( button ) {
     93 					case 'ellipsis':
     94 						btnDisplay = '&#x2026;';
     95 						btnClass = 'disabled';
     96 						break;
     97 
     98 					case 'first':
     99 						btnDisplay = lang.sFirst;
    100 						btnClass = button + (page > 0 ?
    101 							'' : ' disabled');
    102 						break;
    103 
    104 					case 'previous':
    105 						btnDisplay = lang.sPrevious;
    106 						btnClass = button + (page > 0 ?
    107 							'' : ' disabled');
    108 						break;
    109 
    110 					case 'next':
    111 						btnDisplay = lang.sNext;
    112 						btnClass = button + (page < pages-1 ?
    113 							'' : ' disabled');
    114 						break;
    115 
    116 					case 'last':
    117 						btnDisplay = lang.sLast;
    118 						btnClass = button + (page < pages-1 ?
    119 							'' : ' disabled');
    120 						break;
    121 
    122 					default:
    123 						btnDisplay = button + 1;
    124 						btnClass = page === button ?
    125 							'active' : '';
    126 						break;
    127 				}
    128 
    129 				if ( btnDisplay ) {
    130 					node = $('<li>', {
    131 							'class': classes.sPageButton+' '+btnClass,
    132 							'id': idx === 0 && typeof button === 'string' ?
    133 								settings.sTableId +'_'+ button :
    134 								null
    135 						} )
    136 						.append( $('<a>', {
    137 								'href': '#',
    138 								'aria-controls': settings.sTableId,
    139 								'aria-label': aria[ button ],
    140 								'data-dt-idx': counter,
    141 								'tabindex': settings.iTabIndex
    142 							} )
    143 							.html( btnDisplay )
    144 						)
    145 						.appendTo( container );
    146 
    147 					settings.oApi._fnBindAction(
    148 						node, {action: button}, clickHandler
    149 					);
    150 
    151 					counter++;
    152 				}
    153 			}
    154 		}
    155 	};
    156 
    157 	// IE9 throws an 'unknown error' if document.activeElement is used
    158 	// inside an iframe or frame. 
    159 	var activeEl;
    160 
    161 	try {
    162 		// Because this approach is destroying and recreating the paging
    163 		// elements, focus is lost on the select button which is bad for
    164 		// accessibility. So we want to restore focus once the draw has
    165 		// completed
    166 		activeEl = $(host).find(document.activeElement).data('dt-idx');
    167 	}
    168 	catch (e) {}
    169 
    170 	attach(
    171 		$(host).empty().html('<ul class="pagination"/>').children('ul'),
    172 		buttons
    173 	);
    174 
    175 	if ( activeEl !== undefined ) {
    176 		$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
    177 	}
    178 };
    179 
    180 
    181 return DataTable;
    182 }));