datatables.net 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/js/dataTables.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! DataTables 2.0.1
1
+ /*! DataTables 2.0.3
2
2
  * © SpryMedia Ltd - datatables.net/license
3
3
  */
4
4
 
@@ -264,7 +264,7 @@ var DataTable = function ( selector, options )
264
264
  _fnCamelToHungarian( defaults.oLanguage, json );
265
265
  $.extend( true, oLanguage, json, oSettings.oInit.oLanguage );
266
266
 
267
- _fnCallbackFire( oSettings, null, 'i18n', [oSettings]);
267
+ _fnCallbackFire( oSettings, null, 'i18n', [oSettings], true);
268
268
  _fnInitialise( oSettings );
269
269
  },
270
270
  error: function () {
@@ -2302,7 +2302,7 @@ function _columnAutoRender(settings, colIdx) {
2302
2302
  */
2303
2303
  function _columnAutoClass(container, colIdx, className) {
2304
2304
  container.forEach(function (row) {
2305
- if (row[colIdx].unique) {
2305
+ if (row[colIdx] && row[colIdx].unique) {
2306
2306
  _addClass(row[colIdx].cell, className);
2307
2307
  }
2308
2308
  });
@@ -2389,17 +2389,19 @@ function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, headerLayout, fn )
2389
2389
  else {
2390
2390
  // Cell selector
2391
2391
  headerLayout.forEach(function (row) {
2392
- var cell = $(row[k].cell);
2393
-
2394
- // Legacy support. Note that it means that we don't support
2395
- // an element name selector only, since they are treated as
2396
- // class names for 1.x compat.
2397
- if (target.match(/^[a-z][\w-]*$/i)) {
2398
- target = '.' + target;
2399
- }
2400
-
2401
- if (cell.is( target )) {
2402
- fn( k, def );
2392
+ if (row[k]) {
2393
+ var cell = $(row[k].cell);
2394
+
2395
+ // Legacy support. Note that it means that we don't support
2396
+ // an element name selector only, since they are treated as
2397
+ // class names for 1.x compat.
2398
+ if (target.match(/^[a-z][\w-]*$/i)) {
2399
+ target = '.' + target;
2400
+ }
2401
+
2402
+ if (cell.is( target )) {
2403
+ fn( k, def );
2404
+ }
2403
2405
  }
2404
2406
  });
2405
2407
  }
@@ -3213,11 +3215,15 @@ function _fnHeaderLayout( settings, source, incColumns )
3213
3215
  colspan++;
3214
3216
  }
3215
3217
 
3218
+ var titleSpan = $('span.dt-column-title', cell);
3219
+
3216
3220
  structure[row][column] = {
3217
3221
  cell: cell,
3218
3222
  colspan: colspan,
3219
3223
  rowspan: rowspan,
3220
- title: $('span.dt-column-title', cell).html()
3224
+ title: titleSpan.length
3225
+ ? titleSpan.html()
3226
+ : $(cell).html()
3221
3227
  };
3222
3228
  }
3223
3229
  }
@@ -3358,8 +3364,15 @@ function _fnDraw( oSettings, ajaxComplete )
3358
3364
  _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
3359
3365
  _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
3360
3366
 
3361
- body.children().detach();
3362
- body.append( $(anRows) );
3367
+ // replaceChildren is faster, but only became widespread in 2020,
3368
+ // so a fall back in jQuery is provided for older browsers.
3369
+ if (body[0].replaceChildren) {
3370
+ body[0].replaceChildren.apply(body[0], anRows);
3371
+ }
3372
+ else {
3373
+ body.children().detach();
3374
+ body.append( $(anRows) );
3375
+ }
3363
3376
 
3364
3377
  // Empty table needs a specific class
3365
3378
  $(oSettings.nTableWrapper).toggleClass('dt-empty-footer', $('tr', oSettings.nTFoot).length === 0);
@@ -3627,15 +3640,15 @@ function _fnAddOptionsHtml ( settings )
3627
3640
 
3628
3641
  settings.nTableWrapper = insert[0];
3629
3642
 
3630
- var top = _layoutArray( settings, settings.layout, 'top' );
3631
- var bottom = _layoutArray( settings, settings.layout, 'bottom' );
3632
- var renderer = _fnRenderer( settings, 'layout' );
3633
-
3634
3643
  if (settings.sDom) {
3635
3644
  // Legacy
3636
3645
  _fnLayoutDom(settings, settings.sDom, insert);
3637
3646
  }
3638
3647
  else {
3648
+ var top = _layoutArray( settings, settings.layout, 'top' );
3649
+ var bottom = _layoutArray( settings, settings.layout, 'bottom' );
3650
+ var renderer = _fnRenderer( settings, 'layout' );
3651
+
3639
3652
  // Everything above - the renderer will actually insert the contents into the document
3640
3653
  top.forEach(function (item) {
3641
3654
  renderer( settings, insert, item );
@@ -4002,7 +4015,12 @@ function _fnBuildAjax( oSettings, data, fn )
4002
4015
  oSettings.jqXHR = ajax.call( instance, data, callback, oSettings );
4003
4016
  }
4004
4017
  else if (ajax.url === '') {
4005
- callback({});
4018
+ // No url, so don't load any data. Just apply an empty data array
4019
+ // to the object for the callback.
4020
+ var empty = {};
4021
+
4022
+ DataTable.util.set(ajax.dataSrc)(empty, []);
4023
+ callback(empty);
4006
4024
  }
4007
4025
  else {
4008
4026
  // Object to extend the base settings
@@ -5004,12 +5022,12 @@ function _fnScrollDraw ( settings )
5004
5022
  // the content of the cell so that the width applied to the header and body
5005
5023
  // both match, but we want to hide it completely.
5006
5024
  $('th, td', headerCopy).each(function () {
5007
- $(this).children().wrapAll('<div class="dt-scroll-sizing">');
5025
+ $(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
5008
5026
  });
5009
5027
 
5010
5028
  if ( footer ) {
5011
5029
  $('th, td', footerCopy).each(function () {
5012
- $(this).children().wrapAll('<div class="dt-scroll-sizing">');
5030
+ $(this.childNodes).wrapAll('<div class="dt-scroll-sizing">');
5013
5031
  });
5014
5032
  }
5015
5033
 
@@ -5364,34 +5382,44 @@ function _fnSortInit( settings ) {
5364
5382
 
5365
5383
  function _fnSortAttachListener(settings, node, selector, column, callback) {
5366
5384
  _fnBindAction( node, selector, function (e) {
5385
+ var run = false;
5367
5386
  var columns = column === undefined
5368
5387
  ? _fnColumnsFromHeader( e.target )
5369
5388
  : [column];
5370
5389
 
5371
5390
  if ( columns.length ) {
5372
- _fnProcessingDisplay( settings, true );
5391
+ for ( var i=0, ien=columns.length ; i<ien ; i++ ) {
5392
+ var ret = _fnSortAdd( settings, columns[i], i, e.shiftKey );
5373
5393
 
5374
- // Allow the processing display to show
5375
- setTimeout( function () {
5376
- for ( var i=0, ien=columns.length ; i<ien ; i++ ) {
5377
- _fnSortAdd( settings, columns[i], i, e.shiftKey );
5394
+ if (ret !== false) {
5395
+ run = true;
5396
+ }
5378
5397
 
5379
- // If the first entry is no sort, then subsequent
5380
- // sort columns are ignored
5381
- if (settings.aaSorting.length === 1 && settings.aaSorting[0][1] === '') {
5382
- break;
5383
- }
5398
+ // If the first entry is no sort, then subsequent
5399
+ // sort columns are ignored
5400
+ if (settings.aaSorting.length === 1 && settings.aaSorting[0][1] === '') {
5401
+ break;
5384
5402
  }
5403
+ }
5385
5404
 
5386
- _fnSort( settings );
5387
- _fnSortDisplay( settings );
5388
- _fnReDraw( settings, false, false );
5389
- _fnProcessingDisplay( settings, false );
5405
+ if (run) {
5406
+ _fnProcessingDisplay( settings, true );
5390
5407
 
5391
- if (callback) {
5392
- callback();
5393
- }
5394
- }, 0);
5408
+ // Allow the processing display to show
5409
+ setTimeout( function () {
5410
+ _fnSort( settings );
5411
+ _fnSortDisplay( settings, settings.aiDisplay );
5412
+
5413
+ // Sort processing done - redraw has its own processing display
5414
+ _fnProcessingDisplay( settings, false );
5415
+
5416
+ _fnReDraw( settings, false, false );
5417
+
5418
+ if (callback) {
5419
+ callback();
5420
+ }
5421
+ }, 0);
5422
+ }
5395
5423
  }
5396
5424
  } );
5397
5425
  }
@@ -5400,8 +5428,7 @@ function _fnSortAttachListener(settings, node, selector, column, callback) {
5400
5428
  * Sort the display array to match the master's order
5401
5429
  * @param {*} settings
5402
5430
  */
5403
- function _fnSortDisplay(settings) {
5404
- var display = settings.aiDisplay;
5431
+ function _fnSortDisplay(settings, display) {
5405
5432
  var master = settings.aiDisplayMaster;
5406
5433
  var masterMap = {};
5407
5434
  var map = {};
@@ -5695,7 +5722,7 @@ function _fnSortAdd ( settings, colIdx, addIndex, shift )
5695
5722
  };
5696
5723
 
5697
5724
  if ( ! col.bSortable ) {
5698
- return;
5725
+ return false;
5699
5726
  }
5700
5727
 
5701
5728
  // Convert to 2D array if needed
@@ -7622,11 +7649,7 @@ var __row_selector = function ( settings, selector, opts )
7622
7649
  var matched = _selector_run( 'row', selector, run, settings, opts );
7623
7650
 
7624
7651
  if (opts.order === 'current' || opts.order === 'applied') {
7625
- var master = settings.aiDisplayMaster;
7626
-
7627
- matched.sort(function(a, b) {
7628
- return master.indexOf(a) - master.indexOf(b);
7629
- });
7652
+ _fnSortDisplay(settings, matched);
7630
7653
  }
7631
7654
 
7632
7655
  return matched;
@@ -8020,7 +8043,7 @@ var __details_events = function ( settings )
8020
8043
  for ( var i=0, ien=data.length ; i<ien ; i++ ) {
8021
8044
  row = data[i];
8022
8045
 
8023
- if ( row._details ) {
8046
+ if ( row && row._details ) {
8024
8047
  row._details.each(function () {
8025
8048
  var el = $(this).children('td');
8026
8049
 
@@ -8039,7 +8062,7 @@ var __details_events = function ( settings )
8039
8062
  }
8040
8063
 
8041
8064
  for ( var i=0, ien=data.length ; i<ien ; i++ ) {
8042
- if ( data[i]._details ) {
8065
+ if ( data[i] && data[i]._details ) {
8043
8066
  __details_remove( api, i );
8044
8067
  }
8045
8068
  }
@@ -8061,9 +8084,9 @@ _api_register( _child_mth, function ( data, klass ) {
8061
8084
 
8062
8085
  if ( data === undefined ) {
8063
8086
  // get
8064
- return ctx.length && this.length ?
8065
- ctx[0].aoData[ this[0] ]._details :
8066
- undefined;
8087
+ return ctx.length && this.length && ctx[0].aoData[ this[0] ]
8088
+ ? ctx[0].aoData[ this[0] ]._details
8089
+ : undefined;
8067
8090
  }
8068
8091
  else if ( data === true ) {
8069
8092
  // show
@@ -9487,7 +9510,7 @@ _api_register( 'i18n()', function ( token, def, plural ) {
9487
9510
  * @type string
9488
9511
  * @default Version number
9489
9512
  */
9490
- DataTable.version = "2.0.1";
9513
+ DataTable.version = "2.0.3";
9491
9514
 
9492
9515
  /**
9493
9516
  * Private data store, containing all of the settings objects that are
@@ -12623,7 +12646,7 @@ DataTable.type = function (name, prop, val) {
12623
12646
  };
12624
12647
 
12625
12648
  // prop is optional
12626
- if (! val) {
12649
+ if (val === undefined) {
12627
12650
  val = prop;
12628
12651
  prop = null;
12629
12652
  }
@@ -12889,9 +12912,9 @@ $.extend( true, DataTable.ext.renderer, {
12889
12912
  var ariaType = '';
12890
12913
  var indexes = columns.indexes();
12891
12914
  var sortDirs = columns.orderable(true).flatten();
12892
- var orderedColumns = sorting.map( function (val) {
12915
+ var orderedColumns = ',' + sorting.map( function (val) {
12893
12916
  return val.col;
12894
- } ).join(',');
12917
+ } ).join(',') + ',';
12895
12918
 
12896
12919
  cell
12897
12920
  .removeClass(
@@ -12902,7 +12925,7 @@ $.extend( true, DataTable.ext.renderer, {
12902
12925
  .toggleClass( orderClasses.canAsc, orderable && sortDirs.includes('asc') )
12903
12926
  .toggleClass( orderClasses.canDesc, orderable && sortDirs.includes('desc') );
12904
12927
 
12905
- var sortIdx = orderedColumns.indexOf( indexes.toArray().join(',') );
12928
+ var sortIdx = orderedColumns.indexOf( ',' + indexes.toArray().join(',') + ',' );
12906
12929
 
12907
12930
  if ( sortIdx !== -1 ) {
12908
12931
  // Get the ordering direction for the columns under this cell
@@ -12917,7 +12940,7 @@ $.extend( true, DataTable.ext.renderer, {
12917
12940
  }
12918
12941
 
12919
12942
  // The ARIA spec says that only one column should be marked with aria-sort
12920
- if ( sortIdx === 0 && orderedColumns.length === indexes.count() ) {
12943
+ if ( sortIdx === 0 ) {
12921
12944
  var firstSort = sorting[0];
12922
12945
  var sortOrder = col.asSorting;
12923
12946
 
@@ -13282,7 +13305,7 @@ function _pagingDraw(settings, host, opts) {
13282
13305
  if (
13283
13306
  buttonEls.length && // any buttons
13284
13307
  opts.numbers > 1 && // prevent infinite
13285
- $(host).outerHeight() >= ($(buttonEls[0]).outerHeight() * 2) - 10
13308
+ $(host).height() >= ($(buttonEls[0]).outerHeight() * 2) - 10
13286
13309
  ) {
13287
13310
  _pagingDraw(settings, host, $.extend({}, opts, { numbers: opts.numbers - 2 }));
13288
13311
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "main": "js/dataTables.js",
5
5
  "module": "js/dataTables.mjs",
6
6
  "types": "./types/types.d.ts",
7
- "version": "2.0.1",
7
+ "version": "2.0.3",
8
8
  "files": [
9
9
  "js/**/*.js",
10
10
  "js/**/*.mjs",
package/types/types.d.ts CHANGED
@@ -1593,7 +1593,7 @@ export interface ApiCell<T> {
1593
1593
  (rowSelector: RowSelector<T>, columnSelector: ColumnSelector, modifier?: ApiSelectorModifier): ApiCellMethods<T>;
1594
1594
  }
1595
1595
 
1596
- export interface ApiCellMethods<T> extends Omit<Api<T>, 'render'> {
1596
+ export interface ApiCellMethods<T> extends Omit<Api<T>, 'render' | 'select'> {
1597
1597
  /**
1598
1598
  * Get the DataTables cached data for the selected cell
1599
1599
  *
@@ -1677,7 +1677,7 @@ export interface ApiCells<T> {
1677
1677
  (rowSelector: RowSelector<T>, columnSelector: ColumnSelector, modifier?: ApiSelectorModifier): ApiCellsMethods<T>;
1678
1678
  }
1679
1679
 
1680
- export interface ApiCellsMethods<T> extends Omit<Api<T>, 'data' | 'render'> {
1680
+ export interface ApiCellsMethods<T> extends Omit<Api<T>, 'data' | 'render' | 'select'> {
1681
1681
  /**
1682
1682
  * Get the DataTables cached data for the selected cells
1683
1683
  *
@@ -2312,7 +2312,7 @@ export interface ApiRow<T> {
2312
2312
  add(data: any[] | object): ApiRowMethods<T>;
2313
2313
  }
2314
2314
 
2315
- export interface ApiRowMethods<T> extends Omit<Api<T>, 'data'> {
2315
+ export interface ApiRowMethods<T> extends Omit<Api<T>, 'data' | 'select'> {
2316
2316
  /**
2317
2317
  * Get the DataTables cached data for the selected row(s)
2318
2318
  *
@@ -2406,7 +2406,7 @@ export interface ApiRows<T> {
2406
2406
  add(data: T[]): ApiRowsMethods<T>;
2407
2407
  }
2408
2408
 
2409
- export interface ApiRowsMethods<T> extends Api<T> {
2409
+ export interface ApiRowsMethods<T> extends Omit<Api<T>, 'select'> {
2410
2410
  /**
2411
2411
  * Get the DataTables cached data for the selected row(s)
2412
2412
  *
@@ -3004,182 +3004,137 @@ export interface DataTablesStaticExtButtons {
3004
3004
  * that these all use legacy Hungarian notation.
3005
3005
  */
3006
3006
  export interface ExtClassesSettings {
3007
- /**
3008
- * Default Value:
3009
- * dataTable
3010
- */
3011
- sTable?: string;
3012
-
3013
- /**
3014
- * Default Value:
3015
- * no-footer
3016
- */
3017
- sNoFooter?: string;
3018
-
3019
- /**
3020
- * Default Value:
3021
- * dt-paging-button
3022
- */
3023
- sPageButton?: string;
3024
-
3025
- /**
3026
- * Default Value:
3027
- * current
3028
- */
3029
- sPageButtonActive?: string;
3030
-
3031
- /**
3032
- * Default Value:
3033
- * disabled
3034
- */
3035
- sPageButtonDisabled?: string;
3036
-
3037
- /**
3038
- * Default Value:
3039
- * odd
3040
- */
3041
- sStripeOdd?: string;
3042
-
3043
- /**
3044
- * Default Value:
3045
- * even
3046
- */
3047
- sStripeEven?: string;
3048
-
3049
- /**
3050
- * Default Value:
3051
- * dt-empty
3052
- */
3053
- sRowEmpty?: string;
3054
-
3055
- /**
3056
- * Default Value:
3057
- * dt-container
3058
- */
3059
- sWrapper?: string;
3060
-
3061
- /**
3062
- * Default Value:
3063
- * dt-search
3064
- */
3065
- sFilter?: string;
3066
-
3067
- /**
3068
- * Default Value:
3069
- * dt-info
3070
- */
3071
- sInfo?: string;
3072
-
3073
- /**
3074
- * Default Value:
3075
- * dt-paging paging_
3076
- */
3077
- sPaging?: string;
3078
-
3079
- /**
3080
- * Default Value:
3081
- * dt-length
3082
- */
3083
- sLength?: string;
3084
-
3085
- /**
3086
- * Default Value:
3087
- * dt-processing
3088
- */
3089
- sProcessing?: string;
3090
-
3091
- /**
3092
- * Default Value:
3093
- * sorting_asc
3094
- */
3095
- sSortAsc?: string;
3096
-
3097
- /**
3098
- * Default Value:
3099
- * sorting_desc
3100
- */
3101
- sSortDesc?: string;
3102
-
3103
- /**
3104
- * Default Value:
3105
- * sorting
3106
- */
3107
- sSortable?: string;
3108
-
3109
- /**
3110
- * Default Value:
3111
- * sorting_asc_disabled
3112
- */
3113
- sSortableAsc?: string;
3114
-
3115
- /**
3116
- * Default Value:
3117
- * sorting_desc_disabled
3118
- */
3119
- sSortableDesc?: string;
3120
-
3121
- /**
3122
- * Default Value:
3123
- * sorting_disabled
3124
- */
3125
- sSortableNone?: string;
3126
-
3127
- /**
3128
- * Default Value:
3129
- * sorting_
3130
- */
3131
- sSortColumn?: string;
3132
-
3133
- sFilterInput?: string;
3134
- sLengthSelect?: string;
3135
-
3136
- /**
3137
- * Default Value:
3138
- * dataTables_scroll
3139
- */
3140
- sScrollWrapper?: string;
3141
-
3142
- /**
3143
- * Default Value:
3144
- * dt-scroll-head
3145
- */
3146
- sScrollHead?: string;
3147
-
3148
- /**
3149
- * Default Value:
3150
- * dt-scroll-headInner
3151
- */
3152
- sScrollHeadInner?: string;
3153
-
3154
- /**
3155
- * Default Value:
3156
- * dt-scroll-body
3157
- */
3158
- sScrollBody?: string;
3159
-
3160
- /**
3161
- * Default Value:
3162
- * dt-scroll-foot
3163
- */
3164
- sScrollFoot?: string;
3165
-
3166
- /**
3167
- * Default Value:
3168
- * dt-scroll-footInner
3169
- */
3170
- sScrollFootInner?: string;
3171
-
3172
- sHeaderTH?: string;
3173
- sFooterTH?: string;
3174
- sSortJUIAsc?: string;
3175
- sSortJUIDesc?: string;
3176
- sSortJUI?: string;
3177
- sSortJUIAscAllowed?: string;
3178
- sSortJUIDescAllowed?: string;
3179
- sSortJUIWrapper?: string;
3180
- sSortIcon?: string;
3181
- sJUIHeader?: string;
3182
- sJUIFooter?: string;
3007
+ /** Class to apply to the container for all DataTables controlled elements */
3008
+ container: string;
3009
+
3010
+ /** Empty row classes */
3011
+ empty: {
3012
+ /** Empty row class */
3013
+ row: string;
3014
+ };
3015
+
3016
+ /** Info feature classes */
3017
+ info: {
3018
+ /** Container `<div>` class */
3019
+ container: string;
3020
+ };
3021
+
3022
+ /** Length feature classes */
3023
+ length: {
3024
+ /** Container `<div>` class */
3025
+ container: string;
3026
+
3027
+ /** Applied to the `<select>` element */
3028
+ select: string;
3029
+ };
3030
+
3031
+ /** Table header cell ordering classes */
3032
+ order: {
3033
+ /** Applied if a column can sort asc */
3034
+ canAsc: string;
3035
+
3036
+ /** Applied if a column can sort desc */
3037
+ canDesc: string;
3038
+
3039
+ /** Applied if a column is sorting asc */
3040
+ isAsc: string;
3041
+
3042
+ /** Applied if a column is sorting desc */
3043
+ isDesc: string;
3044
+
3045
+ /** Applied if there is no sorting available on a column */
3046
+ none: string;
3047
+
3048
+ /** Position class */
3049
+ position: string;
3050
+ };
3051
+
3052
+ /** Processing indicator classes */
3053
+ processing: {
3054
+ /** Container `<div>` class */
3055
+ container: string;
3056
+ };
3057
+
3058
+ /** Classes for scrolling tables (`scrollX` / `scrollY`) */
3059
+ scrolling: {
3060
+ /** Body table wrapper `<div>` */
3061
+ body: string;
3062
+
3063
+ /** Applied to the wrapper for all scrolling elements */
3064
+ container: string;
3065
+
3066
+ /** Scrolling footer classes */
3067
+ footer: {
3068
+ /** Applied to the footer container `<div>` */
3069
+ self: string;
3070
+
3071
+ /** Applied to the inner footer `<div>` */
3072
+ inner: string;
3073
+ };
3074
+
3075
+ /** Scrolling header classes */
3076
+ header: {
3077
+ /** Applied to the header container `<div>` */
3078
+ self: string;
3079
+
3080
+ /** Applied to the inner header `<div>` */
3081
+ inner: string;
3082
+ }
3083
+ };
3084
+
3085
+ /** Search feature classes */
3086
+ search: {
3087
+ /** Applied to the search container `<div>` */
3088
+ container: string;
3089
+
3090
+ /** Class to add to `<input>` element */
3091
+ input: string;
3092
+ };
3093
+
3094
+ /** Class to add to the `<table>` when DataTables is initialised on it */
3095
+ table: string;
3096
+
3097
+ /** Table body classes */
3098
+ tbody: {
3099
+ /** Applied to all cells in the table body */
3100
+ cell: string;
3101
+
3102
+ /** Applied to all `tr` element in the table body */
3103
+ row: string;
3104
+ };
3105
+
3106
+ /** Table header classes */
3107
+ thead: {
3108
+ /** Applied to `td`/`th` elements in the table header */
3109
+ cell: string;
3110
+
3111
+ /** Applied to `tr` elements in the table header */
3112
+ row: string;
3113
+ };
3114
+
3115
+ /** Table footer classes */
3116
+ tfoot: {
3117
+ /** Applied to `td`/`th` elements in the footer */
3118
+ cell: string;
3119
+
3120
+ /** Applied to `tr` elements in the footer */
3121
+ row: string;
3122
+ };
3123
+
3124
+ /** Paging feature classes */
3125
+ paging: {
3126
+ /** Button shows the current page */
3127
+ active: string;
3128
+
3129
+ /** Applied to all buttons */
3130
+ button: string;
3131
+
3132
+ /** Container class */
3133
+ container: string;
3134
+
3135
+ /** Button unavailable class */
3136
+ disabled: string;
3137
+ };
3183
3138
  }
3184
3139
 
3185
3140