From 42dadc1ca8f3ea230152efa63d1556b767cb0b3d Mon Sep 17 00:00:00 2001 From: Colin Marks Date: Tue, 11 Jun 2019 15:32:17 +0100 Subject: [PATCH] DEV scrollToTop - dinky little new feature to scroll to top of table on each page change --- .../scrollToTop/datatables.scrollToTop.js | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 features/scrollToTop/datatables.scrollToTop.js diff --git a/features/scrollToTop/datatables.scrollToTop.js b/features/scrollToTop/datatables.scrollToTop.js new file mode 100644 index 0000000..499440e --- /dev/null +++ b/features/scrollToTop/datatables.scrollToTop.js @@ -0,0 +1,63 @@ +/*! scrollToTop 0.0.1 + * 2019 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary scrollToTop + * @description always return to top of table when page changed + * @version 0.0.1 + * @author SpryMedia Ltd (www.sprymedia.co.uk) + * @copyright Copyright 2019 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license/mit + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ +(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'; + + // Automatic initialisation listener + $(document).on('preInit.dt', function(e, settings) { + if (e.namespace !== 'dt') { + return; + } + + if (settings.oInit.scrollToTop || $.fn.dataTable.defaults.scrollToTop) { + var api = new $.fn.dataTable.Api(settings); + + api.on('page', function() { + setTimeout(function() { + $(document).scrollTop($(api.table().container()).offset().top); + }, 10); + }); + } + }); +});