You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			175 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			175 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											11 years ago
										 | /*! DataTables Foundation integration | ||
| 
											8 years ago
										 |  * ©2011-2015 SpryMedia Ltd - datatables.net/license | ||
| 
											11 years ago
										 |  */ | ||
|  | 
 | ||
|  | /** | ||
|  |  * DataTables integration for Foundation. This requires Foundation 5 and | ||
|  |  * DataTables 1.10 or newer. | ||
|  |  * | ||
|  |  * This file sets the defaults and adds options to DataTables to style its | ||
|  |  * controls using Foundation. See http://datatables.net/manual/styling/foundation
 | ||
|  |  * for further information. | ||
|  |  */ | ||
| 
											8 years ago
										 | (function( factory ){ | ||
|  | 	if ( typeof define === 'function' && define.amd ) { | ||
|  | 		// AMD
 | ||
|  | 		define( ['jquery', 'datatables.net'], function ( $ ) { | ||
|  | 			return factory( $, window, document ); | ||
|  | 		} ); | ||
|  | 	} | ||
|  | 	else if ( typeof exports === 'object' ) { | ||
|  | 		// CommonJS
 | ||
|  | 		module.exports = function (root, $) { | ||
|  | 			if ( ! root ) { | ||
|  | 				root = window; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			if ( ! $ || ! $.fn.dataTable ) { | ||
|  | 				$ = require('datatables.net')(root, $).$; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			return factory( $, root, root.document ); | ||
|  | 		}; | ||
|  | 	} | ||
|  | 	else { | ||
|  | 		// Browser
 | ||
|  | 		factory( jQuery, window, document ); | ||
|  | 	} | ||
|  | }(function( $, window, document, undefined ) { | ||
|  | 'use strict'; | ||
|  | var DataTable = $.fn.dataTable; | ||
| 
											11 years ago
										 | 
 | ||
| 
											8 years ago
										 | // Detect Foundation 5 / 6 as they have different element and class requirements
 | ||
|  | var meta = $('<meta class="foundation-mq"/>').appendTo('head'); | ||
|  | DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5; | ||
|  | meta.remove(); | ||
| 
											11 years ago
										 | 
 | ||
|  | 
 | ||
|  | $.extend( DataTable.ext.classes, { | ||
| 
											8 years ago
										 | 	sWrapper:    "dataTables_wrapper dt-foundation", | ||
|  | 	sProcessing: "dataTables_processing panel callout" | ||
| 
											11 years ago
										 | } ); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* Set the defaults for DataTables initialisation */ | ||
|  | $.extend( true, DataTable.defaults, { | ||
|  | 	dom: | ||
|  | 		"<'row'<'small-6 columns'l><'small-6 columns'f>r>"+ | ||
|  | 		"t"+ | ||
|  | 		"<'row'<'small-6 columns'i><'small-6 columns'p>>", | ||
|  | 	renderer: 'foundation' | ||
|  | } ); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* Page button renderer */ | ||
|  | DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) { | ||
|  | 	var api = new DataTable.Api( settings ); | ||
|  | 	var classes = settings.oClasses; | ||
|  | 	var lang = settings.oLanguage.oPaginate; | ||
| 
											8 years ago
										 | 	var aria = settings.oLanguage.oAria.paginate || {}; | ||
| 
											11 years ago
										 | 	var btnDisplay, btnClass; | ||
| 
											8 years ago
										 | 	var tag; | ||
|  | 	var v5 = DataTable.ext.foundationVersion === 5; | ||
| 
											11 years ago
										 | 
 | ||
|  | 	var attach = function( container, buttons ) { | ||
|  | 		var i, ien, node, button; | ||
|  | 		var clickHandler = function ( e ) { | ||
|  | 			e.preventDefault(); | ||
| 
											8 years ago
										 | 			if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) { | ||
|  | 				api.page( e.data.action ).draw( 'page' ); | ||
| 
											11 years ago
										 | 			} | ||
|  | 		}; | ||
|  | 
 | ||
|  | 		for ( i=0, ien=buttons.length ; i<ien ; i++ ) { | ||
|  | 			button = buttons[i]; | ||
|  | 
 | ||
|  | 			if ( $.isArray( button ) ) { | ||
|  | 				attach( container, button ); | ||
|  | 			} | ||
|  | 			else { | ||
|  | 				btnDisplay = ''; | ||
|  | 				btnClass = ''; | ||
| 
											8 years ago
										 | 				tag = null; | ||
| 
											11 years ago
										 | 
 | ||
|  | 				switch ( button ) { | ||
|  | 					case 'ellipsis': | ||
| 
											8 years ago
										 | 						btnDisplay = '…'; | ||
|  | 						btnClass = 'unavailable disabled'; | ||
|  | 						tag = null; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 
 | ||
|  | 					case 'first': | ||
|  | 						btnDisplay = lang.sFirst; | ||
|  | 						btnClass = button + (page > 0 ? | ||
| 
											8 years ago
										 | 							'' : ' unavailable disabled'); | ||
|  | 						tag = page > 0 ? 'a' : null; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 
 | ||
|  | 					case 'previous': | ||
|  | 						btnDisplay = lang.sPrevious; | ||
|  | 						btnClass = button + (page > 0 ? | ||
| 
											8 years ago
										 | 							'' : ' unavailable disabled'); | ||
|  | 						tag = page > 0 ? 'a' : null; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 
 | ||
|  | 					case 'next': | ||
|  | 						btnDisplay = lang.sNext; | ||
|  | 						btnClass = button + (page < pages-1 ? | ||
| 
											8 years ago
										 | 							'' : ' unavailable disabled'); | ||
|  | 						tag = page < pages-1 ? 'a' : null; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 
 | ||
|  | 					case 'last': | ||
|  | 						btnDisplay = lang.sLast; | ||
|  | 						btnClass = button + (page < pages-1 ? | ||
| 
											8 years ago
										 | 							'' : ' unavailable disabled'); | ||
|  | 						tag = page < pages-1 ? 'a' : null; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 
 | ||
|  | 					default: | ||
|  | 						btnDisplay = button + 1; | ||
|  | 						btnClass = page === button ? | ||
|  | 							'current' : ''; | ||
| 
											8 years ago
										 | 						tag = page === button ? | ||
|  | 							null : 'a'; | ||
| 
											11 years ago
										 | 						break; | ||
|  | 				} | ||
|  | 
 | ||
| 
											8 years ago
										 | 				if ( v5 ) { | ||
|  | 					tag = 'a'; | ||
|  | 				} | ||
|  | 
 | ||
| 
											11 years ago
										 | 				if ( btnDisplay ) { | ||
|  | 					node = $('<li>', { | ||
|  | 							'class': classes.sPageButton+' '+btnClass, | ||
|  | 							'aria-controls': settings.sTableId, | ||
| 
											8 years ago
										 | 							'aria-label': aria[ button ], | ||
| 
											11 years ago
										 | 							'tabindex': settings.iTabIndex, | ||
|  | 							'id': idx === 0 && typeof button === 'string' ? | ||
|  | 								settings.sTableId +'_'+ button : | ||
|  | 								null | ||
|  | 						} ) | ||
| 
											8 years ago
										 | 						.append( tag ? | ||
|  | 							$('<'+tag+'/>', {'href': '#'} ).html( btnDisplay ) : | ||
|  | 							btnDisplay | ||
| 
											11 years ago
										 | 						) | ||
|  | 						.appendTo( container ); | ||
|  | 
 | ||
|  | 					settings.oApi._fnBindAction( | ||
|  | 						node, {action: button}, clickHandler | ||
|  | 					); | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 	}; | ||
|  | 
 | ||
|  | 	attach( | ||
|  | 		$(host).empty().html('<ul class="pagination"/>').children('ul'), | ||
|  | 		buttons | ||
|  | 	); | ||
|  | }; | ||
|  | 
 | ||
|  | 
 | ||
| 
											8 years ago
										 | return DataTable; | ||
|  | })); |