mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2024-12-04 10:24:42 +02:00
[WEB] Update DataTables to v1.13.1 and fix crash for non-English locales
This newer version of DataTables includes a fix for improper access to localisation information from `Intl.NumberFormat`. This improper access lead to datatables not being created.
This commit is contained in:
parent
f3f5471ef7
commit
eaa0dea63b
@ -4,10 +4,10 @@
|
||||
*
|
||||
* To rebuild or modify this file with the latest versions of the included
|
||||
* software please visit:
|
||||
* https://datatables.net/download/#bs5/dt-1.12.0/r-2.3.0/sl-1.4.0
|
||||
* https://datatables.net/download/#bs5/dt-1.13.1/r-2.4.0/sl-1.5.0
|
||||
*
|
||||
* Included libraries:
|
||||
* DataTables 1.12.0, Responsive 2.3.0, Select 1.4.0
|
||||
* DataTables 1.13.1, Responsive 2.4.0, Select 1.5.0
|
||||
*/
|
||||
|
||||
@charset "UTF-8";
|
||||
@ -63,7 +63,7 @@ table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.9em;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
@ -72,7 +72,7 @@ table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▴";
|
||||
content: "▲";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
@ -81,7 +81,7 @@ table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▾";
|
||||
content: "▼";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
@ -287,6 +287,9 @@ table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.9);
|
||||
color: white;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: #090a0b;
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
@ -335,6 +338,9 @@ div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
white-space: nowrap;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
div.dataTables_wrapper div.dt-row {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
@ -380,17 +386,6 @@ div.dataTables_wrapper div.dataTables_paginate {
|
||||
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
|
||||
padding-right: 20px;
|
||||
}
|
||||
table.dataTable.table-sm .sorting:before,
|
||||
table.dataTable.table-sm .sorting_asc:before,
|
||||
table.dataTable.table-sm .sorting_desc:before {
|
||||
top: 5px;
|
||||
right: 0.85em;
|
||||
}
|
||||
table.dataTable.table-sm .sorting:after,
|
||||
table.dataTable.table-sm .sorting_asc:after,
|
||||
table.dataTable.table-sm .sorting_desc:after {
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
table.table-bordered.dataTable {
|
||||
border-right-width: 0;
|
||||
@ -629,13 +624,13 @@ table.dataTable > tbody > tr > .selected {
|
||||
background-color: rgba(13, 110, 253, 0.9);
|
||||
color: white;
|
||||
}
|
||||
table.dataTable tbody td.select-checkbox,
|
||||
table.dataTable tbody th.select-checkbox {
|
||||
table.dataTable > tbody > tr > td.select-checkbox,
|
||||
table.dataTable > tbody > tr > th.select-checkbox {
|
||||
position: relative;
|
||||
}
|
||||
table.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,
|
||||
table.dataTable tbody th.select-checkbox:before,
|
||||
table.dataTable tbody th.select-checkbox:after {
|
||||
table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
|
||||
table.dataTable > tbody > tr > th.select-checkbox:before,
|
||||
table.dataTable > tbody > tr > th.select-checkbox:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 1.2em;
|
||||
@ -644,20 +639,20 @@ table.dataTable tbody th.select-checkbox:after {
|
||||
height: 12px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
table.dataTable tbody td.select-checkbox:before,
|
||||
table.dataTable tbody th.select-checkbox:before {
|
||||
table.dataTable > tbody > tr > td.select-checkbox:before,
|
||||
table.dataTable > tbody > tr > th.select-checkbox:before {
|
||||
content: " ";
|
||||
margin-top: -5px;
|
||||
margin-left: -6px;
|
||||
border: 1px solid black;
|
||||
border-radius: 3px;
|
||||
}
|
||||
table.dataTable tr.selected td.select-checkbox:before,
|
||||
table.dataTable tr.selected th.select-checkbox:before {
|
||||
table.dataTable > tbody > tr.selected > td.select-checkbox:before,
|
||||
table.dataTable > tbody > tr.selected > th.select-checkbox:before {
|
||||
border: 1px solid white;
|
||||
}
|
||||
table.dataTable tr.selected td.select-checkbox:after,
|
||||
table.dataTable tr.selected th.select-checkbox:after {
|
||||
table.dataTable > tbody > tr.selected > td.select-checkbox:after,
|
||||
table.dataTable > tbody > tr.selected > th.select-checkbox:after {
|
||||
content: "✓";
|
||||
font-size: 20px;
|
||||
margin-top: -19px;
|
||||
@ -665,12 +660,12 @@ table.dataTable tr.selected th.select-checkbox:after {
|
||||
text-align: center;
|
||||
text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
|
||||
}
|
||||
table.dataTable.compact tbody td.select-checkbox:before,
|
||||
table.dataTable.compact tbody th.select-checkbox:before {
|
||||
table.dataTable.compact > tbody > tr > td.select-checkbox:before,
|
||||
table.dataTable.compact > tbody > tr > th.select-checkbox:before {
|
||||
margin-top: -12px;
|
||||
}
|
||||
table.dataTable.compact tr.selected td.select-checkbox:after,
|
||||
table.dataTable.compact tr.selected th.select-checkbox:after {
|
||||
table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
|
||||
table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
|
||||
margin-top: -16px;
|
||||
}
|
||||
|
||||
@ -690,4 +685,3 @@ table.dataTable.table-sm tbody td.select-checkbox::before {
|
||||
margin-top: -9px;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,20 +4,20 @@
|
||||
*
|
||||
* To rebuild or modify this file with the latest versions of the included
|
||||
* software please visit:
|
||||
* https://datatables.net/download/#bs5/dt-1.12.0/r-2.3.0/sl-1.4.0
|
||||
* https://datatables.net/download/#bs5/dt-1.13.1/r-2.4.0/sl-1.5.0
|
||||
*
|
||||
* Included libraries:
|
||||
* DataTables 1.12.0, Responsive 2.3.0, Select 1.4.0
|
||||
* DataTables 1.13.1, Responsive 2.4.0, Select 1.5.0
|
||||
*/
|
||||
|
||||
/*! DataTables 1.12.0
|
||||
/*! DataTables 1.13.1
|
||||
* ©2008-2022 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* @summary DataTables
|
||||
* @description Paginate, search and order HTML tables
|
||||
* @version 1.12.0
|
||||
* @version 1.13.1
|
||||
* @author SpryMedia Ltd
|
||||
* @contact www.datatables.net
|
||||
* @copyright SpryMedia Ltd.
|
||||
@ -1162,6 +1162,10 @@
|
||||
$( rowOne[0] ).children('th, td').each( function (i, cell) {
|
||||
var col = oSettings.aoColumns[i];
|
||||
|
||||
if (! col) {
|
||||
_fnLog( oSettings, 0, 'Incorrect column count', 18 );
|
||||
}
|
||||
|
||||
if ( col.mData === i ) {
|
||||
var sort = a( cell, 'sort' ) || a( cell, 'order' );
|
||||
var filter = a( cell, 'filter' ) || a( cell, 'search' );
|
||||
@ -3166,6 +3170,11 @@
|
||||
create = nTrIn ? false : true;
|
||||
|
||||
nTd = create ? document.createElement( oCol.sCellType ) : anTds[i];
|
||||
|
||||
if (! nTd) {
|
||||
_fnLog( oSettings, 0, 'Incorrect column count', 18 );
|
||||
}
|
||||
|
||||
nTd._DT_CellIndex = {
|
||||
row: iRow,
|
||||
column: i
|
||||
@ -3316,10 +3325,16 @@
|
||||
|
||||
for ( i=0, ien=cells.length ; i<ien ; i++ ) {
|
||||
column = columns[i];
|
||||
column.nTf = cells[i].cell;
|
||||
|
||||
if ( column.sClass ) {
|
||||
$(column.nTf).addClass( column.sClass );
|
||||
if (column) {
|
||||
column.nTf = cells[i].cell;
|
||||
|
||||
if ( column.sClass ) {
|
||||
$(column.nTf).addClass( column.sClass );
|
||||
}
|
||||
}
|
||||
else {
|
||||
_fnLog( oSettings, 0, 'Incorrect column count', 18 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5079,6 +5094,10 @@
|
||||
_fnDraw( settings );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// No change event - paging was called, but no change
|
||||
_fnCallbackFire( settings, null, 'page-nc', [settings] );
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
@ -5348,6 +5367,7 @@
|
||||
footerCopy = footer.clone().prependTo( table );
|
||||
footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
|
||||
footerSrcEls = footerCopy.find('tr');
|
||||
footerCopy.find('[id]').removeAttr('id');
|
||||
}
|
||||
|
||||
// Clone the current header and footer elements and then place it into the inner table
|
||||
@ -5355,6 +5375,7 @@
|
||||
headerTrgEls = header.find('tr'); // original header is in its own table
|
||||
headerSrcEls = headerCopy.find('tr');
|
||||
headerCopy.find('th, td').removeAttr('tabindex');
|
||||
headerCopy.find('[id]').removeAttr('id');
|
||||
|
||||
|
||||
/*
|
||||
@ -8332,8 +8353,12 @@
|
||||
|
||||
$(document).on('plugin-init.dt', function (e, context) {
|
||||
var api = new _Api( context );
|
||||
|
||||
const namespace = 'on-plugin-init';
|
||||
const stateSaveParamsEvent = `stateSaveParams.${namespace}`;
|
||||
const destroyEvent = `destroy.${namespace}`;
|
||||
|
||||
api.on( 'stateSaveParams', function ( e, settings, d ) {
|
||||
api.on( stateSaveParamsEvent, function ( e, settings, d ) {
|
||||
// This could be more compact with the API, but it is a lot faster as a simple
|
||||
// internal loop
|
||||
var idFn = settings.rowIdFn;
|
||||
@ -8347,7 +8372,11 @@
|
||||
}
|
||||
|
||||
d.childRows = ids;
|
||||
})
|
||||
});
|
||||
|
||||
api.on( destroyEvent, function () {
|
||||
api.off(`${stateSaveParamsEvent} ${destroyEvent}`);
|
||||
});
|
||||
|
||||
var loaded = api.state.loaded();
|
||||
|
||||
@ -9668,7 +9697,7 @@
|
||||
* @type string
|
||||
* @default Version number
|
||||
*/
|
||||
DataTable.version = "1.12.0";
|
||||
DataTable.version = "1.13.1";
|
||||
|
||||
/**
|
||||
* Private data store, containing all of the settings objects that are
|
||||
@ -14092,7 +14121,7 @@
|
||||
*
|
||||
* @type string
|
||||
*/
|
||||
build:"bs5/dt-1.12.0/r-2.3.0/sl-1.4.0",
|
||||
build:"bs5/dt-1.13.1/r-2.4.0/sl-1.5.0",
|
||||
|
||||
|
||||
/**
|
||||
@ -14730,7 +14759,7 @@
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass, counter=0;
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button, tabIndex;
|
||||
@ -14805,7 +14834,7 @@
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-label': aria[ button ],
|
||||
'data-dt-idx': counter,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': tabIndex,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
@ -14817,8 +14846,6 @@
|
||||
_fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -15163,7 +15190,7 @@
|
||||
}
|
||||
}
|
||||
else if (window.luxon) {
|
||||
dt = format
|
||||
dt = format && typeof d === 'string'
|
||||
? window.luxon.DateTime.fromFormat( d, format )
|
||||
: window.luxon.DateTime.fromISO( d );
|
||||
|
||||
@ -15303,14 +15330,26 @@
|
||||
}
|
||||
|
||||
// Based on locale, determine standard number formatting
|
||||
var __thousands = '';
|
||||
var __decimal = '';
|
||||
// Fallback for legacy browsers is US English
|
||||
var __thousands = ',';
|
||||
var __decimal = '.';
|
||||
|
||||
if (Intl) {
|
||||
var num = new Intl.NumberFormat().formatToParts(1000.1);
|
||||
|
||||
__thousands = num[1].value;
|
||||
__decimal = num[3].value;
|
||||
try {
|
||||
var num = new Intl.NumberFormat().formatToParts(100000.1);
|
||||
|
||||
for (var i=0 ; i<num.length ; i++) {
|
||||
if (num[i].type === 'group') {
|
||||
__thousands = num[i].value;
|
||||
}
|
||||
else if (num[i].type === 'decimal') {
|
||||
__decimal = num[i].value;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// noop
|
||||
}
|
||||
}
|
||||
|
||||
// Formatted date time detection - use by declaring the formats you are going to use
|
||||
@ -15379,6 +15418,10 @@
|
||||
return d;
|
||||
}
|
||||
|
||||
if (d === '' || d === null) {
|
||||
return d;
|
||||
}
|
||||
|
||||
var negative = d < 0 ? '-' : '';
|
||||
var flo = parseFloat( d );
|
||||
|
||||
@ -15569,7 +15612,7 @@
|
||||
$.each( DataTable, function ( prop, val ) {
|
||||
$.fn.DataTable[ prop ] = val;
|
||||
} );
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
|
||||
@ -15578,14 +15621,6 @@
|
||||
* 2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 4. This requires Bootstrap 5 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
@ -15597,16 +15632,22 @@
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
// Require DataTables, which attaches to jQuery, including
|
||||
// jQuery if needed and have a $ property so we can access the
|
||||
// jQuery object that is used
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
if ( ! $ ) {
|
||||
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
|
||||
require('jquery') :
|
||||
require('jquery')( root );
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
@ -15619,11 +15660,21 @@
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 5. This requires Bootstrap 5 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row dt-row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||
renderer: 'bootstrap'
|
||||
} );
|
||||
@ -15645,7 +15696,7 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass, counter=0;
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
@ -15714,7 +15765,7 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
|
||||
'href': '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-label': aria[ button ],
|
||||
'data-dt-idx': counter,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex,
|
||||
'class': 'page-link'
|
||||
} )
|
||||
@ -15725,13 +15776,12 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var hostEl = $(host);
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
@ -15741,17 +15791,26 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||
activeEl = hostEl.find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
var paginationEl = hostEl.children('ul.pagination');
|
||||
|
||||
if (paginationEl.length) {
|
||||
paginationEl.empty();
|
||||
}
|
||||
else {
|
||||
paginationEl = hostEl.html('<ul/>').children('ul').addClass('pagination');
|
||||
}
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||
paginationEl,
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||
hostEl.find('[data-dt-idx='+activeEl+']').trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
@ -15760,14 +15819,54 @@ return DataTable;
|
||||
}));
|
||||
|
||||
|
||||
/*! Responsive 2.3.0
|
||||
/*! Responsive 2.4.0
|
||||
* 2014-2022 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(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 ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
|
||||
require('jquery') :
|
||||
require('jquery')( root );
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @summary Responsive
|
||||
* @description Responsive tables plug-in for DataTables
|
||||
* @version 2.3.0
|
||||
* @version 2.4.0
|
||||
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
||||
* @contact www.sprymedia.co.uk/contact
|
||||
* @copyright SpryMedia Ltd.
|
||||
@ -15781,35 +15880,6 @@ return DataTable;
|
||||
*
|
||||
* 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';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
/**
|
||||
* Responsive is a plug-in for the DataTables library that makes use of
|
||||
@ -15863,9 +15933,10 @@ var Responsive = function ( settings, opts ) {
|
||||
}
|
||||
|
||||
this.s = {
|
||||
dt: new DataTable.Api( settings ),
|
||||
childNodeStore: {},
|
||||
columns: [],
|
||||
current: []
|
||||
current: [],
|
||||
dt: new DataTable.Api( settings )
|
||||
};
|
||||
|
||||
// Check if responsive has already been initialised on this table
|
||||
@ -16070,6 +16141,63 @@ $.extend( Responsive.prototype, {
|
||||
* Private methods
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get and store nodes from a cell - use for node moving renderers
|
||||
*
|
||||
* @param {*} dt DT instance
|
||||
* @param {*} row Row index
|
||||
* @param {*} col Column index
|
||||
*/
|
||||
_childNodes: function( dt, row, col ) {
|
||||
var name = row+'-'+col;
|
||||
|
||||
if ( this.s.childNodeStore[ name ] ) {
|
||||
return this.s.childNodeStore[ name ];
|
||||
}
|
||||
|
||||
// https://jsperf.com/childnodes-array-slice-vs-loop
|
||||
var nodes = [];
|
||||
var children = dt.cell( row, col ).node().childNodes;
|
||||
for ( var i=0, ien=children.length ; i<ien ; i++ ) {
|
||||
nodes.push( children[i] );
|
||||
}
|
||||
|
||||
this.s.childNodeStore[ name ] = nodes;
|
||||
|
||||
return nodes;
|
||||
},
|
||||
|
||||
/**
|
||||
* Restore nodes from the cache to a table cell
|
||||
*
|
||||
* @param {*} dt DT instance
|
||||
* @param {*} row Row index
|
||||
* @param {*} col Column index
|
||||
*/
|
||||
_childNodesRestore: function( dt, row, col ) {
|
||||
var name = row+'-'+col;
|
||||
|
||||
if ( ! this.s.childNodeStore[ name ] ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var node = dt.cell( row, col ).node();
|
||||
var store = this.s.childNodeStore[ name ];
|
||||
var parent = store[0].parentNode;
|
||||
var parentChildren = parent.childNodes;
|
||||
var a = [];
|
||||
|
||||
for ( var i=0, ien=parentChildren.length ; i<ien ; i++ ) {
|
||||
a.push( parentChildren[i] );
|
||||
}
|
||||
|
||||
for ( var j=0, jen=a.length ; j<jen ; j++ ) {
|
||||
node.appendChild( a[j] );
|
||||
}
|
||||
|
||||
this.s.childNodeStore[ name ] = undefined;
|
||||
},
|
||||
|
||||
/**
|
||||
* Calculate the visibility for the columns in a table for a given
|
||||
* breakpoint. The result is pre-determined based on the class logic if
|
||||
@ -16399,8 +16527,8 @@ $.extend( Responsive.prototype, {
|
||||
: details.renderer;
|
||||
|
||||
var res = details.display( row, update, function () {
|
||||
return renderer(
|
||||
dt, row[0], that._detailsObj(row[0])
|
||||
return renderer.call(
|
||||
that, dt, row[0], that._detailsObj(row[0])
|
||||
);
|
||||
} );
|
||||
|
||||
@ -16622,9 +16750,11 @@ $.extend( Responsive.prototype, {
|
||||
}
|
||||
} );
|
||||
|
||||
if ( changed ) {
|
||||
this._redrawChildren();
|
||||
// Always need to update the display, regardless of if it has changed or not, so nodes
|
||||
// can be re-inserted for listHiddenNodes
|
||||
this._redrawChildren();
|
||||
|
||||
if ( changed ) {
|
||||
// Inform listeners of the change
|
||||
$(dt.table().node()).trigger( 'responsive-resize.dt', [dt, this.s.current] );
|
||||
|
||||
@ -16650,6 +16780,7 @@ $.extend( Responsive.prototype, {
|
||||
{
|
||||
var dt = this.s.dt;
|
||||
var columns = this.s.columns;
|
||||
var that = this;
|
||||
|
||||
// Are we allowed to do auto sizing?
|
||||
if ( ! this.c.auto ) {
|
||||
@ -16663,11 +16794,11 @@ $.extend( Responsive.prototype, {
|
||||
}
|
||||
|
||||
// Need to restore all children. They will be reinstated by a re-render
|
||||
if ( ! $.isEmptyObject( _childNodeStore ) ) {
|
||||
$.each( _childNodeStore, function ( key ) {
|
||||
if ( ! $.isEmptyObject( this.s.childNodeStore ) ) {
|
||||
$.each( this.s.childNodeStore, function ( key ) {
|
||||
var idx = key.split('-');
|
||||
|
||||
_childNodesRestore( dt, idx[0]*1, idx[1]*1 );
|
||||
that._childNodesRestore( dt, idx[0]*1, idx[1]*1 );
|
||||
} );
|
||||
}
|
||||
|
||||
@ -16787,6 +16918,7 @@ $.extend( Responsive.prototype, {
|
||||
*/
|
||||
_setColumnVis: function ( col, showHide )
|
||||
{
|
||||
var that = this;
|
||||
var dt = this.s.dt;
|
||||
var display = showHide ? '' : 'none'; // empty string will remove the attr
|
||||
|
||||
@ -16803,9 +16935,9 @@ $.extend( Responsive.prototype, {
|
||||
.toggleClass('dtr-hidden', !showHide);
|
||||
|
||||
// If the are child nodes stored, we might need to reinsert them
|
||||
if ( ! $.isEmptyObject( _childNodeStore ) ) {
|
||||
if ( ! $.isEmptyObject( this.s.childNodeStore ) ) {
|
||||
dt.cells( null, col ).indexes().each( function (idx) {
|
||||
_childNodesRestore( dt, idx.row, idx.column );
|
||||
that._childNodesRestore( dt, idx.row, idx.column );
|
||||
} );
|
||||
}
|
||||
},
|
||||
@ -16972,52 +17104,6 @@ Responsive.display = {
|
||||
};
|
||||
|
||||
|
||||
var _childNodeStore = {};
|
||||
|
||||
function _childNodes( dt, row, col ) {
|
||||
var name = row+'-'+col;
|
||||
|
||||
if ( _childNodeStore[ name ] ) {
|
||||
return _childNodeStore[ name ];
|
||||
}
|
||||
|
||||
// https://jsperf.com/childnodes-array-slice-vs-loop
|
||||
var nodes = [];
|
||||
var children = dt.cell( row, col ).node().childNodes;
|
||||
for ( var i=0, ien=children.length ; i<ien ; i++ ) {
|
||||
nodes.push( children[i] );
|
||||
}
|
||||
|
||||
_childNodeStore[ name ] = nodes;
|
||||
|
||||
return nodes;
|
||||
}
|
||||
|
||||
function _childNodesRestore( dt, row, col ) {
|
||||
var name = row+'-'+col;
|
||||
|
||||
if ( ! _childNodeStore[ name ] ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var node = dt.cell( row, col ).node();
|
||||
var store = _childNodeStore[ name ];
|
||||
var parent = store[0].parentNode;
|
||||
var parentChildren = parent.childNodes;
|
||||
var a = [];
|
||||
|
||||
for ( var i=0, ien=parentChildren.length ; i<ien ; i++ ) {
|
||||
a.push( parentChildren[i] );
|
||||
}
|
||||
|
||||
for ( var j=0, jen=a.length ; j<jen ; j++ ) {
|
||||
node.appendChild( a[j] );
|
||||
}
|
||||
|
||||
_childNodeStore[ name ] = undefined;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display methods - functions which define how the hidden data should be shown
|
||||
* in the table.
|
||||
@ -17029,6 +17115,7 @@ function _childNodesRestore( dt, row, col ) {
|
||||
Responsive.renderer = {
|
||||
listHiddenNodes: function () {
|
||||
return function ( api, rowIdx, columns ) {
|
||||
var that = this;
|
||||
var ul = $('<ul data-dtr-index="'+rowIdx+'" class="dtr-details"/>');
|
||||
var found = false;
|
||||
|
||||
@ -17045,7 +17132,7 @@ Responsive.renderer = {
|
||||
'</span> '+
|
||||
'</li>'
|
||||
)
|
||||
.append( $('<span class="dtr-data"/>').append( _childNodes( api, col.rowIndex, col.columnIndex ) ) )// api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
|
||||
.append( $('<span class="dtr-data"/>').append( that._childNodes( api, col.rowIndex, col.columnIndex ) ) )// api.cell( col.rowIndex, col.columnIndex ).node().childNodes ) )
|
||||
.appendTo( ul );
|
||||
|
||||
found = true;
|
||||
@ -17229,7 +17316,7 @@ Api.registerPlural( 'columns().responsiveHidden()', 'column().responsiveHidden()
|
||||
* @name Responsive.version
|
||||
* @static
|
||||
*/
|
||||
Responsive.version = '2.3.0';
|
||||
Responsive.version = '2.4.0';
|
||||
|
||||
|
||||
$.fn.dataTable.Responsive = Responsive;
|
||||
@ -17256,12 +17343,12 @@ $(document).on( 'preInit.dt.dtr', function (e, settings, json) {
|
||||
} );
|
||||
|
||||
|
||||
return Responsive;
|
||||
return DataTable;
|
||||
}));
|
||||
|
||||
|
||||
/*! Bootstrap 5 integration for DataTables' Responsive
|
||||
* ©2021 SpryMedia Ltd - datatables.net/license
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
@ -17275,17 +17362,26 @@ return Responsive;
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-bs5')(root, $).$;
|
||||
if ( ! $ ) {
|
||||
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
|
||||
require('jquery') :
|
||||
require('jquery')( root );
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Responsive ) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-bs5')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-responsive')(root, $);
|
||||
}
|
||||
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
@ -17298,6 +17394,7 @@ return Responsive;
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
var _display = DataTable.Responsive.display;
|
||||
var _original = _display.modal;
|
||||
var _modal = $(
|
||||
@ -17359,33 +17456,14 @@ _display.modal = function ( options ) {
|
||||
};
|
||||
|
||||
|
||||
return DataTable.Responsive;
|
||||
return DataTable;
|
||||
}));
|
||||
|
||||
|
||||
/*! Select for DataTables 1.4.0
|
||||
/*! Select for DataTables 1.5.0
|
||||
* 2015-2021 SpryMedia Ltd - datatables.net/license/mit
|
||||
*/
|
||||
|
||||
/**
|
||||
* @summary Select for DataTables
|
||||
* @description A collection of API methods, events and buttons for DataTables
|
||||
* that provides selection options of the items in a DataTable
|
||||
* @version 1.4.0
|
||||
* @file dataTables.select.js
|
||||
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
||||
* @contact datatables.net/forums
|
||||
* @copyright Copyright 2015-2021 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/extensions/select
|
||||
*/
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
@ -17397,13 +17475,22 @@ return DataTable.Responsive;
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
if ( ! $ ) {
|
||||
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window
|
||||
require('jquery') :
|
||||
require('jquery')( root );
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
@ -17416,10 +17503,11 @@ return DataTable.Responsive;
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
// Version information for debugger
|
||||
DataTable.select = {};
|
||||
|
||||
DataTable.select.version = '1.4.0';
|
||||
DataTable.select.version = '1.5.0';
|
||||
|
||||
DataTable.select.init = function ( dt ) {
|
||||
var ctx = dt.settings()[0];
|
||||
@ -18688,7 +18776,6 @@ $(document).on( 'preInit.dt.dtSelect', function (e, ctx) {
|
||||
} );
|
||||
|
||||
|
||||
return DataTable.select;
|
||||
return DataTable;
|
||||
}));
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user