Skip to content

Commit 5d803fd

Browse files
author
dtbuild
committed
6cd883a17dd4689ee47a9073d76bc28066ff641d New: -feature paging.boundaryNumbers which can be used to disable the first and last numbers on eitherside of the ellipsis for the paging control. These could be considered irrelevant now that the first / last buttons are enabled by default.
Update: `paging.numbers` renamed to be `-feature paging.buttons` which makes a lot more sense! Sync to source repo @6cd883a17dd4689ee47a9073d76bc28066ff641d
1 parent 6566c44 commit 5d803fd

5 files changed

+75
-31
lines changed

datatables.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
],
1212
"src-repo": "http://github.com/DataTables/DataTablesSrc",
1313
"last-tag": "2.0.3",
14-
"last-sync": "b8076da3b5692bfb8862d259737245a90e8d97a1"
14+
"last-sync": "6cd883a17dd4689ee47a9073d76bc28066ff641d"
1515
}

js/dataTables.js

+36-14
Original file line numberDiff line numberDiff line change
@@ -12718,17 +12718,23 @@
1271812718

1271912719
// opts
1272012720
// - type - button configuration
12721-
// - numbers - number of buttons to show - must be odd
12721+
// - buttons - number of buttons to show - must be odd
1272212722
DataTable.feature.register( 'paging', function ( settings, opts ) {
1272312723
// Don't show the paging input if the table doesn't have paging enabled
1272412724
if (! settings.oFeatures.bPaginate) {
1272512725
return null;
1272612726
}
1272712727

1272812728
opts = $.extend({
12729-
numbers: DataTable.ext.pager.numbers_length,
12730-
type: settings.sPaginationType
12731-
}, opts)
12729+
buttons: DataTable.ext.pager.numbers_length,
12730+
type: settings.sPaginationType,
12731+
boundaryNumbers: true
12732+
}, opts);
12733+
12734+
// To be removed in 2.1
12735+
if (opts.numbers) {
12736+
opts.buttons = opts.numbers;
12737+
}
1273212738

1273312739
var host = $('<div/>').addClass( settings.oClasses.paging.container + ' paging_' + opts.type );
1273412740
var draw = function () {
@@ -12760,7 +12766,7 @@
1276012766
buttons = plugin()
1276112767
.map(function (val) {
1276212768
return val === 'numbers'
12763-
? _pagingNumbers(page, pages, opts.numbers)
12769+
? _pagingNumbers(page, pages, opts.buttons, opts.boundaryNumbers)
1276412770
: val;
1276512771
})
1276612772
.flat();
@@ -12902,12 +12908,15 @@
1290212908
* @param {*} page Current page
1290312909
* @param {*} pages Total number of pages
1290412910
* @param {*} buttons Target number of number buttons
12911+
* @param {boolean} addFirstLast Indicate if page 1 and end should be included
1290512912
* @returns Buttons to show
1290612913
*/
12907-
function _pagingNumbers ( page, pages, buttons ) {
12914+
function _pagingNumbers ( page, pages, buttons, addFirstLast ) {
1290812915
var
1290912916
numbers = [],
12910-
half = Math.floor(buttons / 2);
12917+
half = Math.floor(buttons / 2),
12918+
before = addFirstLast ? 2 : 1,
12919+
after = addFirstLast ? 1 : 0;
1291112920

1291212921
if ( pages <= buttons ) {
1291312922
numbers = _range(0, pages);
@@ -12930,17 +12939,30 @@
1293012939
}
1293112940
}
1293212941
else if ( page <= half ) {
12933-
numbers = _range(0, buttons-2);
12934-
numbers.push('ellipsis', pages-1);
12942+
numbers = _range(0, buttons-before);
12943+
numbers.push('ellipsis');
12944+
12945+
if (addFirstLast) {
12946+
numbers.push(pages-1);
12947+
}
1293512948
}
1293612949
else if ( page >= pages - 1 - half ) {
12937-
numbers = _range(pages-(buttons-2), pages);
12938-
numbers.unshift(0, 'ellipsis');
12950+
numbers = _range(pages-(buttons-before), pages);
12951+
numbers.unshift('ellipsis');
12952+
12953+
if (addFirstLast) {
12954+
numbers.unshift(0);
12955+
}
1293912956
}
1294012957
else {
12941-
numbers = _range(page-half+2, page+half-1);
12942-
numbers.push('ellipsis', pages-1);
12943-
numbers.unshift(0, 'ellipsis');
12958+
numbers = _range(page-half+before, page+half-after);
12959+
numbers.push('ellipsis');
12960+
numbers.unshift('ellipsis');
12961+
12962+
if (addFirstLast) {
12963+
numbers.push(pages-1);
12964+
numbers.unshift(0);
12965+
}
1294412966
}
1294512967

1294612968
return numbers;

js/dataTables.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/dataTables.min.mjs

+1-1
Large diffs are not rendered by default.

js/dataTables.mjs

+36-14
Original file line numberDiff line numberDiff line change
@@ -12665,17 +12665,23 @@ DataTable.feature.register( 'search', function ( settings, opts ) {
1266512665

1266612666
// opts
1266712667
// - type - button configuration
12668-
// - numbers - number of buttons to show - must be odd
12668+
// - buttons - number of buttons to show - must be odd
1266912669
DataTable.feature.register( 'paging', function ( settings, opts ) {
1267012670
// Don't show the paging input if the table doesn't have paging enabled
1267112671
if (! settings.oFeatures.bPaginate) {
1267212672
return null;
1267312673
}
1267412674

1267512675
opts = $.extend({
12676-
numbers: DataTable.ext.pager.numbers_length,
12677-
type: settings.sPaginationType
12678-
}, opts)
12676+
buttons: DataTable.ext.pager.numbers_length,
12677+
type: settings.sPaginationType,
12678+
boundaryNumbers: true
12679+
}, opts);
12680+
12681+
// To be removed in 2.1
12682+
if (opts.numbers) {
12683+
opts.buttons = opts.numbers;
12684+
}
1267912685

1268012686
var host = $('<div/>').addClass( settings.oClasses.paging.container + ' paging_' + opts.type );
1268112687
var draw = function () {
@@ -12707,7 +12713,7 @@ function _pagingDraw(settings, host, opts) {
1270712713
buttons = plugin()
1270812714
.map(function (val) {
1270912715
return val === 'numbers'
12710-
? _pagingNumbers(page, pages, opts.numbers)
12716+
? _pagingNumbers(page, pages, opts.buttons, opts.boundaryNumbers)
1271112717
: val;
1271212718
})
1271312719
.flat();
@@ -12849,12 +12855,15 @@ function _pagingButtonInfo(settings, button, page, pages) {
1284912855
* @param {*} page Current page
1285012856
* @param {*} pages Total number of pages
1285112857
* @param {*} buttons Target number of number buttons
12858+
* @param {boolean} addFirstLast Indicate if page 1 and end should be included
1285212859
* @returns Buttons to show
1285312860
*/
12854-
function _pagingNumbers ( page, pages, buttons ) {
12861+
function _pagingNumbers ( page, pages, buttons, addFirstLast ) {
1285512862
var
1285612863
numbers = [],
12857-
half = Math.floor(buttons / 2);
12864+
half = Math.floor(buttons / 2),
12865+
before = addFirstLast ? 2 : 1,
12866+
after = addFirstLast ? 1 : 0;
1285812867

1285912868
if ( pages <= buttons ) {
1286012869
numbers = _range(0, pages);
@@ -12877,17 +12886,30 @@ function _pagingNumbers ( page, pages, buttons ) {
1287712886
}
1287812887
}
1287912888
else if ( page <= half ) {
12880-
numbers = _range(0, buttons-2);
12881-
numbers.push('ellipsis', pages-1);
12889+
numbers = _range(0, buttons-before);
12890+
numbers.push('ellipsis');
12891+
12892+
if (addFirstLast) {
12893+
numbers.push(pages-1);
12894+
}
1288212895
}
1288312896
else if ( page >= pages - 1 - half ) {
12884-
numbers = _range(pages-(buttons-2), pages);
12885-
numbers.unshift(0, 'ellipsis');
12897+
numbers = _range(pages-(buttons-before), pages);
12898+
numbers.unshift('ellipsis');
12899+
12900+
if (addFirstLast) {
12901+
numbers.unshift(0);
12902+
}
1288612903
}
1288712904
else {
12888-
numbers = _range(page-half+2, page+half-1);
12889-
numbers.push('ellipsis', pages-1);
12890-
numbers.unshift(0, 'ellipsis');
12905+
numbers = _range(page-half+before, page+half-after);
12906+
numbers.push('ellipsis');
12907+
numbers.unshift('ellipsis');
12908+
12909+
if (addFirstLast) {
12910+
numbers.push(pages-1);
12911+
numbers.unshift(0);
12912+
}
1289112913
}
1289212914

1289312915
return numbers;

0 commit comments

Comments
 (0)