diff --git a/features/conditionalPaging/dataTables.conditionalPaging.js b/features/conditionalPaging/dataTables.conditionalPaging.js new file mode 100644 index 0000000..0b1ef37 --- /dev/null +++ b/features/conditionalPaging/dataTables.conditionalPaging.js @@ -0,0 +1,78 @@ +/** + * @summary ConditionalPaging + * @description Hide paging controls when the amount of pages is <= 1 + * @version 1.0.0 + * @file dataTables.conditionalPaging.js + * @author Matthew Hasbach (https://github.com/mjhasbach) + * @contact hasbach.git@gmail.com + * @copyright Copyright 2015 Matthew Hasbach + * + * License MIT - http://datatables.net/license/mit + * + * This feature plugin for DataTables hides paging controls when the amount + * of pages is <= 1. The controls can either appear / disappear or fade in / out + * + * @example + * $('#myTable').DataTable({ + * conditionalPaging: true + * }); + * + * @example + * $('#myTable').DataTable({ + * conditionalPaging: { + * style: 'fade', + * speed: 500 // optional + * } + * }); + */ + +(function(window, document, $) { + $(document).on('init.dt', function(e, dtSettings) { + var options = dtSettings.oInit.conditionalPaging; + + if ($.isPlainObject(options) || options === true) { + var config = $.isPlainObject(options) ? options : {}, + api = new $.fn.dataTable.Api(dtSettings), + speed = 'slow', + conditionalPaging = function(e) { + var $paging = $(api.table().container()).find('div.dataTables_paginate'), + pages = api.page.info().pages; + + if ($.isPlainObject(e)) { + if (pages <= 1) { + if (config.style === 'fade') { + $paging.stop().fadeTo(speed, 0); + } + else { + $paging.css('visibility', 'hidden'); + } + } + else { + if (config.style === 'fade') { + $paging.stop().fadeTo(speed, 1); + } + else { + $paging.css('visibility', ''); + } + } + } + else if (pages <= 1) { + if (config.style === 'fade') { + $paging.css('opacity', 0); + } + else { + $paging.css('visibility', 'hidden'); + } + } + }; + + if ($.isNumeric(config.speed) || $.type(config.speed) === 'string') { + speed = config.speed; + } + + conditionalPaging(); + + api.on('draw.dt', conditionalPaging); + } + }); +})(window, document, jQuery); \ No newline at end of file