DataTables releases feed http://www.datatables.net/ en-us Software release information for DataTables and its extensions DataTables 2.0.5 released A quick turnaround for this patch as an error was discovered in a previous fix that resulted in problems when using the Responsive extension with server-side processing enabled. This release addresses that.

Fixes

  • Don't modify the display array in row().remove() - it should wait for the next draw
  • Error encountered when using a column selector after a row has been removed
  • Tidy up dates for copyright message in integration files

Download DataTables 2.0.5

]]>
Thu, 18 Apr 2024 14:13:19 GMT http://www.datatables.net/#605 http://www.datatables.net/
DataTables 2.0.4 released A busy release this one, with particular focus on addressing potential security issues found by CodeQL's code scanning - primary this is an improvement in the robustness of the HTML escaping and removal used by DataTables.

There are also a number of other fixes and even one new (small) feature. Please see the release notes below for full details.

New

  • paging.boundaryNumbers which can be used to disable the first and last numbers on either side 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 paging.buttons which makes a lot more sense!

Fixes

  • Fomantic UI pagination HTML structure was incorrect
  • Responsive, when used with scrolling, could result in column misalignment
  • column-selector when used as a function was not being passed the column header cell as the third parameter.
  • A JS error would occur if initialised by passing a node which has an id in which characters would normally need to be escaped to make a CSS selector for the id.
  • Use character code points for UTF8 characters which are outside the ASCII range
  • A malicious plug-in for the DataTables API could potentially attempt to add to an object's prototype.
  • Update HTML stripping to use non-polynomial regex
  • Security (CodeQL) - potential for `` injection if done with multiple nesting
  • CodeQL warning - Multiple character replacement (wouldn't actually cause an issue due to the fact that the string was already limited to a single character, but for completeness, the regex would catch multiple characters now.
  • Use built in HTML striping function to read title from header - no security impact.
  • For state saved child row state, only escape : characters if not already escaped.
  • Remove duplicated code.
  • Bootstrap 5 header colour now uses BS5 CSS variable
  • When using server-side processing, and performing a client-side action, and querying the table before a redraw, it was possible to select a row which has been deleted (null), resulting in a JS error.
  • jQuery UI integration wasn't using the jQuery layout renderer
  • jQuery UI footer text was bold

Docs

  • Correction for negative search leading character
  • Correct example in row() for singular case
  • Add note to row.add() about using row().node() immediately after without a draw.

Download DataTables 2.0.4

]]>
Tue, 16 Apr 2024 12:13:49 GMT http://www.datatables.net/#604 http://www.datatables.net/
Buttons 3.0.2 released This release improves the robustness of the HTML stripping that Buttons performs on export as well as a number of other tweaks.

New

  • button-group-selector can now select a button group using the group's container element.
  • Excel export: Added method customizeZip to let the developer customise the final zip file contents.

Fixes

  • More robust stripping of HTML comments and script tags for export data
  • Improve HTML stripping regular expressions
  • Quote Excel sheet name in case it contains spaces

Docs

  • Correct default orthogonal value for exportData()

Examples

  • Added multi-row header with single header row export example.

Download Buttons 3.0.2

]]>
Tue, 16 Apr 2024 12:04:11 GMT http://www.datatables.net/#603 http://www.datatables.net/
Responsive 3.0.2 released This release addresses issues with column alignment when Responsive is used in a scrolling table.

Fixes

  • Sizing table was incorrectly including DataTables hidden columns
  • Newly added rows did not have dtr-hidden class added to their cells if they were immediately hidden
  • Responsive needs to call columns.adjust() if it has changed the column visibility. This is primarily for scrolling so that the cloned header / footer elements can be updated.
  • When a colgroup>col is removed, it might need to be reattached before DataTables does its next draw and attachment. Not doing this can result in column misalignment.

Download Responsive 3.0.2

]]>
Tue, 16 Apr 2024 11:12:58 GMT http://www.datatables.net/#602 http://www.datatables.net/
ColReorder 2.0.1 released This release corrects an npm packaging error with the 2.0.0 release.

  • Fix: ESM file incorrectly had a UDM loader.

Download ColReorder 2.0.1

]]>
Fri, 12 Apr 2024 16:00:06 GMT http://www.datatables.net/#601 http://www.datatables.net/
SearchPanes 2.3.1 released This patch release primary addresses compatibility issues with DataTables 1.x.

Fixes:

  • Double decoding of entities (caught by CodeQL)
  • DT1 compatibility when getting data from the host table
  • DT1 compatibility startup error

Download SearchPanes 2.3.1

]]>
Thu, 11 Apr 2024 15:58:55 GMT http://www.datatables.net/#600 http://www.datatables.net/
SearchBuilder 1.7.1 released Patch release of SearchBuilder. See the notes below for details.

Fixes:

  • Typo in class name for joiner
  • Double decoding of entities (caught by CodeQL)
  • Search button missing styling due to its classes defined in "Criteria" instead of "Group"
  • Move "search" button definition from Criteria to Group

Download SearchBuilder 1.7.1

]]>
Thu, 11 Apr 2024 15:53:29 GMT http://www.datatables.net/#599 http://www.datatables.net/
StateRestore 1.4.1 released A single fix in this release, addressing a penitential XSS in the naming of states.

  • Fix: Potential XSS for HTML in a state name

Download StateRestore 1.4.1

]]>
Thu, 11 Apr 2024 15:24:57 GMT http://www.datatables.net/#598 http://www.datatables.net/
Select 2.0.1 released A patch release that addresses errors for cases when nodes haven't been created when the check all box is used, and other dynamically added row issues.

  • Fix: Checkboxes weren't being selected on row creation if already pre-selected
  • Fix: Deselect all checkbox was throwing an error when row's had not yet been created.
  • Fix: Select all with header checkbox was throwing a JS error when row's had not yet been rendered
  • Fix: Checkbox inputs don't get updated after data was dynamically added
  • Fix: Problem error after data was dynamically added

Download Select 2.0.1

]]>
Thu, 11 Apr 2024 13:28:07 GMT http://www.datatables.net/#597 http://www.datatables.net/
Responsive 3.0.1 released This release addresses an error when using Responsive with Bootstrap 5 and ESM loading them. Also some typescript errors that were highlighted in such a use case.

Fixes:

  • Bootstrap 5 when used with ES imports wasn't displaying the modal

Typescript

  • Add DataTable.Responsive.bootstrap() function to register bootstrap
  • Correct modal type for display rendering

Download Responsive 3.0.1

]]>
Tue, 26 Mar 2024 15:09:10 GMT http://www.datatables.net/#596 http://www.datatables.net/
DataTables 2.0.3 released The dust was properly settled from the initial v2 release now and this release contains a few small fixes, particularly addressing a couple of Typescript issues.

Fixes

  • Processing indicator was being cancelled before a draw after a click to sort action
  • When working with a table that has more than 10 columns it was possible for a column to show an ordering indicator when it was not being ordered on.
  • Only run layout if dom is not specified
  • Performance improvement for rows() when ordering by the applied order (which it does by default).
  • Improve performance of the draw operation when inserting the rows to display into the document.

Typescript

  • TS error when used with datatables.net-select and node modules where being type checked.
  • Interface for DataTables.ext.classes hadn't been updated for DataTables 2

Docs

  • Add link to example for replacement for orderCellsTop

Download DataTables 2.0.3

]]>
Fri, 22 Mar 2024 15:53:18 GMT http://www.datatables.net/#595 http://www.datatables.net/
Editor 2.3.2 released A packaging error in Editor 2.3.1 resulted in the Editor Javascript being loaded from DataTables.net for the demos, which doesn't work for remote loading. This release addresses that, and only that. There are no functional changes.

Examples

  • Use local Editor script rather than attempting to load from DataTables.net.

Download Editor 2.3.2

]]>
Fri, 08 Mar 2024 11:45:31 GMT http://www.datatables.net/#594 http://www.datatables.net/
DataTables 2.0.2 released A second bug fix release of the 2.0.x series which addresses a number of issues found since the previous patch.

Fixes

  • Text nodes in a footer were not being hidden when scrolling was enabled
  • DataTable.type() wouldn't accept an empty string as a valid value for a class name.
  • Paging buttons would reduce to just 1 button if padding was applied to dt-paging
  • When ajax.url is given as an empty string an error was thrown in certain circumstances
  • Additional column defined in JS was throwing an error if columnDefs was also used
  • table().footer.structure() would give undefined for a footer's title if the title span had been overwritten
  • Child row display was not correctly handling the data sparse array
  • i18n event didn't bubble, but Editor requires it to do so
  • Columns which were marked as not orderable would still trigger a draw

Docs

  • Correction for property name in features.pageLength reference
  • Add clarification to layout on moving a feature to a non-default location

Download DataTables 2.0.2

]]>
Thu, 07 Mar 2024 14:19:12 GMT http://www.datatables.net/#593 http://www.datatables.net/
FixedHeader 4.0.1 released This release addresses a couple of column alignment issues.

Fixes

  • Update column widths on page change
  • Alignment when columns were hidden was incorrect

Download FixedHeader 4.0.1

]]>
Thu, 07 Mar 2024 14:13:46 GMT http://www.datatables.net/#592 http://www.datatables.net/
Scroller 2.4.1 released This release of Scroller fixes a compatibility issue with DataTables 2 as the only change.

Fixes

Download Scroller 2.4.1

]]>
Thu, 07 Mar 2024 14:07:29 GMT http://www.datatables.net/#591 http://www.datatables.net/
Buttons 3.0.1 released This release fixes a number of issues in the export files, particularly to do with the table footer.

Fixes

  • Header and footer data from buttons.exportData() was not being passed through the formatting options
  • New line wasn't being used between body and footer for CSV and Copy inline and exports
  • footer could show undefined if the title span was replaced
  • Default for footer in exports is true as of Buttons 3.0. I'd missed some.
  • If a footer is found to be null or undefined, Excel export could throw an error
  • Body renderer for export options was getting cell indexes mixed up

Examples

  • Update for the fact that the default for footer is now to include it`

Download Buttons 3.0.1

]]>
Thu, 07 Mar 2024 13:52:28 GMT http://www.datatables.net/#590 http://www.datatables.net/
Editor 2.3.1 released Editor 2.3.1 fixes an issue with the Typescript types it is bundled with, but otherwise it functionally identical to 2.3.0 (except a single PHP fix).

Core

  • Typescript - Corrections for DataTables imports

PHP

  • Fix: Upload's db fields, if given a string value would actually set the system path, rather than the value given.

Download Editor 2.3.1

]]>
Tue, 27 Feb 2024 17:35:29 GMT http://www.datatables.net/#589 http://www.datatables.net/
DataTables 2.0.1 released This release addresses a number of issues that have come to light since the initial 2.0 release. Nothing dramatic here, just little tweaks that add up to make a more stable package!

Fixes

  • Ordering icons in the header were not correct if activated by a colspan header
  • When ordering from a colspan, it wouldn't revert to the unordered state on the third click
  • Additional columns specified in the init options weren't being drawn
  • Diacritic (accents) search now operates on the original data and the search input, with the cached data having been normalised
  • On destroy the added colgroup wasn't being removed
  • Performance for sorting was noticeably slow for larger data sets
  • table-sm for Bootstrap 4 and 5 could result in header text overlapping the ordering icons
  • Empty record set when server-side processing would still show "Loading" message
  • columnDefs weren't being applied if using with _all target and an HTML table with no columns predefined (e.g. defining the columns in the column options).
  • layout position property when used as an array was throwing an error

Docs

  • Fix error in footerCallback description for the parameter passed in.

Examples

  • Update demo page CSS to use system ui font if configured

Download DataTables 2.0.1

]]>
Tue, 27 Feb 2024 16:46:30 GMT http://www.datatables.net/#588 http://www.datatables.net/
DataTables 1.13.11 released This release has no functional changes, but addresses an issue with the npm release of 1.13.10 which had incorrect dependencies for the version packages.

  • Fix: npm styling packages had an incorrect dependency on DataTables 1.13.8.
  • Fix: npm dependency for jQuery extended to include jQuery 4 support.

Download DataTables 1.13.11

]]>
Tue, 27 Feb 2024 10:20:20 GMT http://www.datatables.net/#587 http://www.datatables.net/
Editor 2.3.0 released Editor 2.3 largely focused on DataTables 2 compatibility and addressing known issues, particularly around the styling integrations (Bootstrap, Bulma, etc). There are no significant new features, they'll be coming in future releases!

This release of Editor compatible with DataTables 1.11+, as well as DataTables 2.

Core

  • New:
    • Compatibility with DataTables 2
    • destroyEditor event triggered on the document when destroy() is called.
    • bubbleLocation() method to control is the bubble editor is shown above or below the target editing cell (or auto).
  • Fixes:
    • Apply animation to show/hide for a field only if the main display node has a reasonable amount of opacity
    • A sync destroy after a remove and sync submit would cause an error to be thrown. Unlikely in the real world, but it tripped up a few tests.
    • Bootstrap 4/5 styling for inline error message needed more padding
    • Bootstrap 5 wouldn't close the modal in a Vite built environment
    • Bubble close icon wasn't clear in dark mode
    • Bubble position always below the cell after scrolling
    • Bulma modal would stack multiple forms if used with multiple Editor instances
    • Bulma styling for DataTable field type was incomplete
    • Buttons weren't shown on nested editing example
    • Clear next focus when the form is closed as it could result in the wrong field initially gaining focus when another form is synchronously opened - only seen with Bootstrap 5.
    • close event was triggered twice in Bootstrap 3 and jQuery UI stylings
    • Close icon for bubble editor wasn't shown
    • Correct syntax errors in some of the reference documentation examples Update: Consistent formatting for the reference documentation examples
    • Docs: Clarify that the row won't be in the document yet when create is triggered.
    • Fomantic UI wasn't showing error messages and instead just immediately closing the modal.
    • Fomantic UI wouldn't display options for radio inputs
    • For fields which have a number as the name a JS error would be thrown when setting the field's id.
    • full and block styles updated to work better with all styling frameworks
    • Header wasn't shown for bubble editing in jQuery UI styling
    • If the form isn't displayed and submission results in an error, Editor will now use an alert() to display the error message to the end user rather than just swallowing it.
    • If the inline edit row had a field in a hidden column, the inline options such as submitTrigger wouldn't work.
    • Improve handling of resizing of the textarea element in a bubble editor.
    • Make Bootstrap modal large by default.
    • Ordering of the form buttons was reversed
    • Radio button labels were misplaced in Bootstrap and Foundation styling
    • Release package wasn't including the SCSS files for the styling integrations
    • Standalone editing examples are now more consistent in styling across the styling frameworks
    • Title display for bubble edit had rendering errors across the various styling frameworks
    • Triggering a remove() call with a keyboard return key stroke would immediately submit the form due to the focus on the delete button. There is now a small delay before the button gains focus to prevent this.
    • Update animation flash wasn't shown in Bulma or Foundation
    • Update the class name used to "flash" a row when it is edited to be dte-highlight rather than highlight to reduce changes of a conflict.
    • Updating a row which had a null value could result in a JS error
    • When a scrolling DataTable is used in a Bootstrap modal, its headers could be squashed.
    • When using a string as a button definition, it wouldn't have a primary class assigned. This was particularly noticeable with bubble editing.

Examples

  • New:
    • Nested editing with multiple editing Fix: Ignore options parameter in Ajax return for datatable fields which have an Ajax option configured.
  • Updates:
    • Consistent formatting
    • Update to use the checkbox renderer from Select 2 rather than the old class name (which still works in Select 2, but the input checkbox provides better accessability).
    • Updated import mapping to allow the use of table.column style field names
  • Fixes:
    • Bubble inline controls needed Buttons as a dependency
    • Envelope inline control needed buttons
    • Full row create example had a selector error
    • Inline edit icon example didn't have the table full width
    • Multi-column example updated to use Flexbox
    • Parent child example wasn't taking 100% width
    • Remove minutesAvilable from example. It was an unintentional commit of a test!
    • Change class name for tabs under the table to stop conflict with styling integrations
    • Clarify that the envelope display controller uses the DataTables specific styling (it is not available for Bootstrap)
    • Clarify that the server-side code is available in other languages as well
    • Simple SearchPanes example no longer shows the cascade option - there is a separate example for that.
    • Stacked input example's CSS updated to work for all styling frameworks
    • Wide width lightbox example wasn't very wide!
    • Update RowReorder example to note that you can leave the order field empty to have it inserted at the end of the table. Also updated .NET and Node.js controllers to account for this.

Types

  • Fixes:
    • Allow HTMLElement type explicitly for node methods
    • Plug-in was on the wrong DataTables host object (type)
    • new constructor returns instance (noImplicitAny)

.NET

  • New:
    • Add support for Enums for SearchPanes and SearchBuilder with new FromEnum methods
  • Fixes:
    • null values were not selectable when using SearchPanes and server-side processing
    • Using a function with quoted values would fail due to the lack of escaping

Node.js

  • Fixes:
    • null values were not selectable when using SearchPanes and server-side processing
    • Numeric validators weren't correctly handling the "common" validation that allowed it to pass (e.g. optional and empty)
    • Tweak to validation function for booleans (duplication of tests)

PHP

  • Removed:
    • Drop PHP 5.3 support - it was EOL from PHP in August 2014!
  • Updated:
    • HtmLawed updated to latest version
  • Fixes:
    • Loads of linting and documentation updates. Huge thanks to mvorisek for the work on this.
    • Use a binding for the table name when getting the primary key info
    • Only commit to the db if a transaction was started

Download Editor 2.3.0

]]>
Thu, 15 Feb 2024 12:18:50 GMT http://www.datatables.net/#586 http://www.datatables.net/
StateRestore 1.4.0 released This minor release of StateRestore ensures full compatibility with DataTables 2, while also focusing on a number of bug fixes. It also brings the documentation and examples up to par with the DataTables standard.

StateRestore 1.4+ is compatible with both DataTables 1 and 2.

New

  • DataTables 2 support

Fixes

  • Column search / visibility toggle wasn't working
  • Remove an empty button that was incorrectly being added
  • Use the popoverTitle option from Buttons for display of the title, rather than an h3 element. It provides more consistent styling in the DataTables components.
  • Improved layout for StateRestore modals
  • Linting fixes (no behaviour change)
  • Browser compatibility to match DataTables 2 specs - last ten years, which includes Safari 7.1

Types

  • new constructor returns instance (noImplicitAny)
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Updating the documentation to better represent the structure of the StateRestore options (they are not top level DataTables configuration options at the docs used to suggest).
  • Fix 404 on link to example
  • Consistent code formatting for code snippets

Examples

  • New ColReorder integration example
  • Vanilla JS version of examples and formatting updated
  • Add a spacer into the alt UI example between the control buttons and the state buttons.
  • Column filter example wasn't restoring column filtering values on state restore
  • Lettering for title
  • Consistent code formatting for examples

Download StateRestore 1.4.0

]]>
Thu, 15 Feb 2024 12:06:47 GMT http://www.datatables.net/#585 http://www.datatables.net/
Select 2.0.0 released This is a major update to the Select extension for DataTables. It makes full use of the DataTables 2 data type APIs to introduce a new checkbox row selection renderer, in part to help accessability, but also to allow more consistent styling in an application.

Select 2 is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • Requires DataTables 2
  • Row selection via keyboard with checkbox mode
  • Real checkboxes for row selection through a new DataTable.render.select() renderer
  • Column ordering is automatically handled by the select renderer. A new example demonstrates this.
  • A checkbox is added to the header when using the checkbox renderer, to summarise current checked state, and allow a select / deselect all action.
  • aria-label attribute values can be set for the checkboxes used in table row selection and the select all header checkbox.
  • select.headerCheckbox option which can be used to disable the new header checkbox.

Updates

  • Legacy select-checkbox class now uses only :before pseudo element rather than :before and :after. The styling is still the same, but it frees up the :after for other use (FixedColumns new shading specifically).

Fixes

  • Background colour for column and cell selection wasn't matching the row selection.
  • Remove use of $.inArray and replace with native function

Types

  • No implicit any would result in errors
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Consistent code formatting for code snippets

Examples

  • Consistent code formatting for examples

Download Select 2.0.0

]]>
Thu, 15 Feb 2024 12:05:52 GMT http://www.datatables.net/#584 http://www.datatables.net/
SearchPanes 2.3.0 released This minor release of SearchPanes bring full compatibility with DataTables, while also focusing on addressing a number of issues. It also brings the documentation and examples up to par with the DataTables standard.

SearchPanes 2.3+ is compatible with both DataTables 1 and 2.

New

  • Support for DataTables 2
  • delayInit option for searchPanes button to give control over whether SearchPanes starts up immediately with the table or not.

Updates

  • Custom options can now have an order property to define the order that the options will appear in the table.

Fixes

  • "Clear all" button wasn't clearing pane filters if there were no selections
  • Triggering a search on a page after the first of the main table, could result in incorrect paging
  • Improved styling for search disabled option
  • Remove table-layout: fixed from CSS for pane tables
  • Table width wasn't updating automatically on page resize
  • ESLint errors - no behavioral change
  • Address memory leak with event handlers not being removed
  • Activating a search on a pane should reset the paging of the host table. Otherwise it was possible to end up when incorrect paging.
  • SearchPane tables which have Ajax loaded language information were unclickable as the events weren't being added at the right point.
  • When sending Ajax parameters, the SSP scripts expect the _null array to be the same length as the standard values one.
  • Handle null values for state loading
  • Bootstrap 5.3 has a variable for table background that we should use in the pane

Types

  • new constructor returns instance, not void
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Split the options and features for DataTables 2
  • Updates to use layout for DataTables 2
  • Consistent code style for examples

Examples

  • All examples now have Vanilla-JS counterparts to the jQuery initialisation
  • Inline Select checkbox updated to use the Select 2 renderer

Download SearchPanes 2.3.0

]]>
Thu, 15 Feb 2024 11:59:11 GMT http://www.datatables.net/#583 http://www.datatables.net/
SearchBuilder 1.7.0 released This minor release of SearchBuilder focuses on addressing a number of issues, as well as bringing the documentation and examples up to par with the DataTables standard.

SearchBuilder 1.7+ is compatible with both DataTables 1 and 2.

New

  • DataTables 2 compatibility

Fixes

  • input element had a font size smaller than the selects.
  • jQuery UI styling would have a solid blue background for the dropdown options
  • Stop search triggering multiple times
  • Compatibility with ColReorder 2
  • Plugin example - don't use legacy API
  • Deformatting of the input values should be up to the input plug-in
  • Numeric filters were not working correctly with a comma for the decimal character.
  • ESLint fixes for the generated file
  • Allow a plain input element to be returned for custom conditions
  • Search button should not be shown in liveSearch is enabled
  • Styling integration for the new "Search" button feature - classes were missing

Types

  • new constructor returns instance, not void

Docs

  • Docs how have feature documentation for working with DataTables 2
  • Docs updated to use layout and consistent code style

Examples

  • All examples updated to include VanillaJS examples,
  • All examples updated to use layout for DataTables 2
  • Examples code style updated to be consistent with all other DataTables examples and documentation

Download SearchBuilder 1.7.0

]]>
Thu, 15 Feb 2024 11:56:28 GMT http://www.datatables.net/#582 http://www.datatables.net/
Scroller 2.4.0 released This minor release of Scroller ensures full compatibility with DataTables 2 and addresses a couple of known issues.

Scroller 2.4+ is compatible with both DataTables 1 and 2.

Fixes

  • Scroller's updating of the info display could be wrong when doing a "continuous" scroll
  • Account for the fact that there might be a change in row height in between states being saved and then loaded.

Types

  • new constructor returns instance, not void

Docs

  • Consistent code formatting for code snippets

Examples

  • Consistent code formatting for examples

Download Scroller 2.4.0

]]>
Thu, 15 Feb 2024 11:54:31 GMT http://www.datatables.net/#581 http://www.datatables.net/
RowReorder 1.5.0 released This minor release of RowReorder ensures full compatibility with DataTables 2 and that its examples and documentation all match the DataTables standard.

RowReorder 1.5+ is compatible with both DataTables 1 and 2.

New

  • Support for DataTables 2

Fixes

  • Linting errors - no functional change

Types

  • new constructor returns instance, not void
  • Explicit void return type for new constructor

Docs

  • Consistent code formatting for code snippets

Examples

  • Consistent code formatting for examples
  • Show more columns in Responsive example

Download RowReorder 1.5.0

]]>
Thu, 15 Feb 2024 11:47:27 GMT http://www.datatables.net/#580 http://www.datatables.net/
RowGroup 1.5.0 released This minor release of RowGroup ensures full compatibility with DataTables 2 and that its examples and documentation all match the DataTables standard.

RowGroup 1.5+ is compatible with both DataTables 1 and 2.

New

Fixes

  • Linting errors - no functional change

Types

  • new constructor returns instance, not void
  • Explicit void return type for new constructor

Docs

  • Consistent code formatting for code snippets

Examples

  • Consistent code formatting for examples

Download RowGroup 1.5.0

]]>
Thu, 15 Feb 2024 11:45:27 GMT http://www.datatables.net/#579 http://www.datatables.net/
Responsive 3.0.0 released As with a number of the other extensions for DataTables which are seeing major updates, Responsive also brings full support for multi-row and complex headers and footers in a DataTable. There are also a number of other smaller changes and fixes.

Responsive 3+ is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • DataTables 2 support. Please note that Responsive 3 does not support DataTables 1.x due to the use of new API methods available only with DataTables 2.
  • Support for multi-row headers and footers
  • Support for "complex" headers and footers (with colspan and rowspan attributes).
  • Rows which are expanded (details shown, regardless of the display type) now have a dtr-expanded class on them. Previously they had a parent class which has now been updated to be more consistent with other DataTables class names.
  • listHiddenNodes renderer which moves the DOM nodes around rather than cloning them for the details display.

Updates

  • Use CSS borders to create the arrows for child row control rather than UTF-8 icons. Consistency between fonts was a problem.

Fixes

  • Open / close icon was not correct for jQuery UI, Foundation and Fomantic UI when used with a modal display
  • Potential endless loop when redrawing the child row could cause a Responsive update.
  • listHiddenNodes was not reinserting the details elements while the page size was dynamically changed.
  • responsive-resize's third argument would incorrectly say that Responsive had hidden columns which were hidden by DataTables' own column visibility. For consistency with other parts of the API this has been updated to reflect only what Responsive controls.
  • When responsive.details.renderer returns false the display control does not attempt to show the row details (be it in a modal or child row).
  • Second parameter passed into responsive.details.renderer should have been an integer (the row index), instead it was given as an array. Note that this is a breaking change if you had a custom renderer. It is easy to update your code for - use a row index rather than the array. If you are using the DataTables API to get the row information based on the index passed in, it will handle this automatically so no change may be needed.
  • Remove Responsive added classes when destroying a DataTable
  • Linting errors - no functional change
  • Remove existing width from a footer when cloning
  • Cell restore for hidden nodes when no child nodes present
  • dark class is not required for Bootstrap 5

Types

  • new constructor (rarely used) returns an instance not void
  • Fix for noImplicit any where a few parameters did not have types defined
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Consistent code formatting for code snippets

Examples

  • Consistent code formatting for examples
  • Updated to use layout in DataTables 2

Download Responsive 3.0.0

]]>
Thu, 15 Feb 2024 11:42:33 GMT http://www.datatables.net/#578 http://www.datatables.net/
KeyTable 2.12.0 released A minor release of KeyTable which ensures full compatibility with DataTables 2. It also introduces the ability to fine-tune the clipboard behaviour of KeyTable.

KeyTable 2.12+ is compatible with both DataTables 1 and 2.

New

  • keys.clipboard can now be given as an object to independently control the copy and paste options.
  • Full support for DataTables 2

Updates

  • If inline editing (Editor) is active in a cell and esc is pressed, it will first allow Editor to close, and then on the second key press will blur focus from the KeyTable instead of doing both at once.

Types

  • new constructor returns instance, not void

Download KeyTable 2.12.0

]]>
Thu, 15 Feb 2024 11:40:42 GMT http://www.datatables.net/#577 http://www.datatables.net/
FixedHeader 4.0.0 released This is a major update to FixedHeader, primarily due to its support for multi-row and complex headers and footers, through the use of DataTables 2's new APIs. However, there have been a number of updates internally as well to address outstanding issues.

FixedHeader 4+ is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • Complex header and footer (colspan / rowspan and multi-rows) support

Fixes

  • "Jittering" when the table starts to scroll (in certain cases)
  • Consistent styling for docs and examples code
  • width style attribute was being added every time the mode changed, rather than just modifying the existing value.
  • Header / footer could disappear when in the "fixed" state
  • Borders while floating improved for various styling frameworks
  • Simplify DataTables styling CSS
  • Height for container element was being set twice (to different values)
  • Scrolling table without a <tfoot> would result in the header being placed after the table when scrolling past the table.
  • Linting errors (no functional change)
  • Improved column width alignment through the use of colgroup>col in combination with DataTables 2.

Types

  • new constructor returns instance, not void
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Consistent formatting for code examples

Examples

  • New example - complex headers
  • Update formatting for code examples
  • Fix description for table show / hide example
  • Fix Update column filtering to be similar to the DataTables core one.

Download FixedHeader 4.0.0

]]>
Thu, 15 Feb 2024 11:37:17 GMT http://www.datatables.net/#576 http://www.datatables.net/
FixedColumns 5.0.0 released This is a signifiant update to FixedColumns which brings support for multi-row and complex headers and footers. There is also a new visual "shadow" to highlight the fixed columns to the end user. It also moves towards the start and end terminology (rather than left and right) to better support right-to-left languages, although the old naming is also supported.

FixedColumns 5+ is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • Requires DataTables 2+
  • Support for multi-row and complex headers and footers
  • Shadow to highlight fixed column(s) and visually delineate them from the non-fixed column
  • Full support for right-to-left languages
  • fixedColumns.start and fixedColumns.end to fix columns regardless of text direction
  • fixedColumns().start() and fixedColumns().end() getter and setters for the new options

Updates

Fixes

  • Border integration for the styling frameworks improved
  • Bootstrap bordered table had a double left border
  • Consistent coding style for docs and examples
  • Scroll fix to start / end when using KeyTable
  • When KeyTable is focused on the start or end column, it will now fix the scrolling to the matching terminus so you can see the immediately adjacent non-fixed cells.

Download FixedColumns 5.0.0

]]>
Thu, 15 Feb 2024 11:34:08 GMT http://www.datatables.net/#575 http://www.datatables.net/
DateTime 1.5.2 released There is no functional change for this patch release of DateTime, however, like DataTables core and the other extensions, the documentation and example code has been updated to follow consistent code styles.

Updates

  • Code linted and tweaked

Docs

  • Consistent formatting for example snippets

Examples

  • Consistent formatting for example code

Download DateTime 1.5.2

]]>
Thu, 15 Feb 2024 11:30:01 GMT http://www.datatables.net/#574 http://www.datatables.net/
ColReorder 2.0.0 released ColReorder is a complete rewrite of ColReorder, modernising the code base, making it much more flexible, and smaller! This latest release has full support for complex headers and footers in the DataTable, letting you move multiple columns at once if they were colspan'ed together!

ColReorder 2+ is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • Requires DataTables 2+
  • colReorder.columns option to select which columns the end user can start and end reordering on.
  • columns-reordered event for when column reordering is done.
  • When scrolling (scrollX), the table will now auto scroll while dragging a column for reordering when near the extreme ends (start and end) of the table.

Removed

  • The drop parameter from column.reorder has been removed - no longer required.
  • colReorder.fixedColumnsLeft and colReorder.fixedColumnsRight - replaced with colReorder.columns which is much more flexible.
  • The colReorder.realtime option is no longer relevant and has now been removed.

Fixes

  • Disallow document overflow-x when dragging a column header
  • formOriginal transpose option was not working correctly

Types

  • new constructor returns instance, not void
  • Plug-in was on the wrong DataTables host object (type)

Docs

  • Update for Buttons as a "feature" in DataTables 2
  • Consistent formatting for example snippets

Examples

  • New example - Complex headers
  • Consistent formatting for example code

Download ColReorder 2.0.0

]]>
Thu, 15 Feb 2024 11:27:10 GMT http://www.datatables.net/#573 http://www.datatables.net/
Buttons 3.0.0 released This is a major update for Buttons which makes full use of the new complex headers and footers support from DataTables 2's APIs to make it possible to export multi-row headers and footers, and those with colspan and rowspan attributes as well! This is something we've all wanted for a while and it is now finally here!

There are a number of other tweaks, such as the export buttons being asynchronous to allow a processing indicator to show that something is happening when activated (needed for larger exports), and of course a range of fixes.

Buttons 3+ is not compatible with DataTables 1.x, it requires DataTables 2+ due to the use of the new APIs.

New

  • Requires DataTables 2+
  • Export buttons are all now asynchronous, meaning they happen in the background of the browser, after the user has click the button and shown a processing indicator. This makes it clearer to the end user that something is happening.
  • buttons.buttons.async option to specify async behaviour of a button
  • Print export includes support for multi-row headers and footers
  • Print export includes support for colspan / rowspan in headers and footers
  • Copy and CSV now support multi-row headers
  • Copy and CSV now support colspan / rowspan by using an empty string as filler.
  • Excel export supports multi-row header and footers now
  • Excel export supports colspan / rowspan in the header and footer
  • Support for multi-row and complex headers and footers in PDF export.
  • PDF page size will default to LETTER for US and Canadian locales
  • filename, messageTop, messageBottom and title configuration options for export buttons, when given as a function, are now passed the button's configuration object and a DataTables API instance as the two parameters for the function now.

Updates

  • orthogonal data for export is now an empty string - this tells DataTables to use the underlying data for example, not the formatted data, which might contain locale specific formatting.
  • Documentation removes mention of the fact that IE8/9 are not supported. This is now a core part of the DataTables support - no IE, so it doesn't need to be explicitly noted.
  • Footers are included in the Excel export by default
  • Footer is now included in the PDF export by default
  • Action function now receives a fifth parameter, a callback that must be executed when the action is complete if the async parameter for the button is set.

Fixes

  • Set default orthogonal data for export to be display
  • Disable row shading for print
  • Dropdown default width of 200px
  • Overflow should not result in ellipsis for split arrow button
  • Foundation styling for multi-column layout
  • FomanticUI with popoverTitle wasn't displaying well
  • Bulma popoverTitle wasn't showing correctly
  • Bootstrap 5 dropdown would expand forever
  • Bootstrap 4 styling for long button text and titles
  • Bootstrap 3 and popoverTitle weren't working together
  • Overflow styling for long buttons wasn't right in Bootstrap, Bulma, Foundation
  • jQuery UI dropdown would loose its dropdown arrow on text update due to no wrapping element
  • When columns were reordered, the name of a button wasn't being retained if it was specified as a string.
  • Column visibility restore (colvisRestore) was breaking when columns were reordered. They would restore to the state when the columns were reordered, rather than their original state.
  • format.body function was being passed loop counters rather than the row and column indexes as it should have been (per the docs).
  • spacer button was incorrectly positioned in Bootstrap 3
  • Left align $ for currency column in exported Excel file
  • Add typescript defs for jszip and pdfMake static methods

Types

  • Fix integration with DataTables ext object
  • new Buttons constructor returns an instance of Buttons
  • Button methods have their own trigger method

Docs

  • Update for Buttons as a "feature" in DataTables 2
  • Consistent formatting for example snippets

Examples

  • New example - Explain and show how CSS can be applied specifically for print view only
  • Updated for DataTables 2. Focus is on the layout option, rather than the legacy dom option
  • All examples now have a Vanilla JS variant
  • All examples formatted using prettier-more for consistent styling of the code.

Download Buttons 3.0.0

]]>
Thu, 15 Feb 2024 11:19:48 GMT http://www.datatables.net/#572 http://www.datatables.net/
AutoFill 2.7.0 released AutoFill 2.7.0 brings full support for DataTables 2 to the table. It is backwards compatible with DataTables 1.x since none of the new APIs are used. There are also a couple of fixes and tidy ups in this release.

Updates

  • Slightly increase the size of the drag handle to make it easier to grab.
  • Remove the use of a private API method from DT1.x. The replacement is a public method that has been in since 1.11 (updated version check for this)

Fixes

  • Input box for increment was unusably narrow in some styles
  • If an Editor submit results in an error, the Editor instance needs to be "closed" to finalise the edit, since there is nothing we can do in AutoFill to correct the error. Editor will display the error to the end user.
  • Remove unused variable (Linting)
  • Increment wasn't working with the new button list

Types (Typescript)

  • Explicit void return type for constructor
  • Plug-in was on the wrong DataTables host object

Examples

  • Enable / disable example to use layout for DataTables 2.
  • Consistent formatting for example code

Docs

  • Update to reflect the use of the global DataTable variable rather than jQuery for initialisation.

Download AutoFill 2.7.0

]]>
Thu, 15 Feb 2024 11:12:02 GMT http://www.datatables.net/#571 http://www.datatables.net/
DataTables 2.0.0 released It is finally here - DataTables 2! It is a big release with additions to the API, options, features for search, and many more. The full release notes are below, but let's highlight just a few points:

  • The new layout option can be used to position control elements around the table. It replaces the old dom parameter which was difficult to work with, particularly when using styling integration for Bootstrap or any of the other frameworks DataTables supports. layout works in the same way for all of them. This has made is possible to add a new option to the examples - you can now select which styling framework you want to see the example operate in! dom is still supported (note they are mutually exclusive, you cannot use both together) since it is widely used. But do yourself a favour, migrate away from it!
  • Multi-row headers and footers, plus column and row spanning cells in them, are now much better supported and integrated with the API. This now means that columns can share a header cell, and also that extensions such as Buttons can work with the complex headers to export that data.
  • Search is greatly improved with options for negative searching in the default search, boundary search, exact search, diacritic support and searching by functions. The new search.fixed() and column().search.fixed() methods greatly improve the options to provide custom search functions and for plug-ins to operate with DataTables' data.
  • Class names for the table control elements have been simplified and sanitized. They are now much easier to work with!

Along with everything that is new, there are also some legacy items which have been dropped. Specifically the legacy API (the Hungarian notation API) which was deprecated when the new API was added in 1.10. Additionally stripeClasses has gone (CSS's nth-child is used now) as have deferLoading which is no longer needed since search engines can index Javascript loaded data.

As a result updating should largely be pain free! I hate updating libraries myself, I know the pain it can cause, so I've spent a lot of effort trying to make this as smooth as possible, but there are some things that had to be updated to modernise DataTables. In particular, if you have any custom CSS using the DataTables classes, you will need to update based on that, and, as you will see there are a large number of changes, so it is possible that something has been missed. If so, please get in touch with a test case showing the issue.

New

  • Options
    • ajax can now be provided as an empty string to stop DataTables performing its initial Ajax call. Use ajax.url().load() to load data after the fact with the API. This can be useful for Ajax populated tables which need end user input (e.g. a search).
    • ajax.dataSrc can be given as an object to map all parameters for server-side processing (not just the data parameter).
    • caption option which can be used to set a table caption on initialisation
    • columnDefs.target / columnDefs.targets can now use a CSS selector to select column header cells to match against. Backwards compatibility is retained for the older string option of just using a class name (as a result of which this new selector option can not select on an element's name alone).
    • columns.footer option which can be used to create a column footer cell if there isn't one present in the DOM, or set the text of an existing cell.
    • columns.render can now return DOM elements for the display data type.
    • columns.render now supports the ability to use helper functions (defined on DataTable.render) using a pure JSON definition for the column. This is done by using an array of values where the first element in the array is the rendering function's name and the following elements are the parameters to pass to the function.
    • language.entries option. This can be used to instruct DataTables of the data type that the table is showing, so it can be reflected in the language strings shown to the end user.
    • layout option replacing dom. This is a much easier to use option to describe layout of the table's control elements. It also operates independently of the styling frameworks, making it much easier to port between them.
    • lengthMenu now easier to use, being an array of values, which can either be integers or a label / value object. The old 2D array form is still supported via the legacy integration.
    • order and order() can now accept a DataTables.Order data type, which in addition to the previous tuple that was used can also be given as an object containing a column index or column name upon which to apply the ordering to.
  • API
    • caption() and caption.node() API methods which can be used to get / set and otherwise manipulate a caption element for the DataTable.
    • column().header() and column().footer() (and their plurals) can specify a row index in the header / footer which the API method should return. This provides support for multi-row headers and footers via the API for the first time in DataTables.
    • column().init() and columns().init() methods to get custom configuration parameters for plug-ins.
    • column().orderable() and columns().orderable() which can be used to determine if a column (or multiple columns) are orderable by the end user, and optionally what ordering directions the column(s) can take.
    • column().order() and columns().order() can now be used as getters to determine if a column (or multiple columns) are currently being ordered on and in what direction if so.
    • column().render() and columns().render() methods. Basically the same as cells().render(), but slightly easier to use for fetching data on a per column basis.
    • column().title() and columns().titles() to get / set column titles, including support for multiple row headers. Note that this requires that DataTables wraps the text content of the header with a span element. It has a class of dt-column-title.
    • column().type() and columns().types() methods to get the data type for a column. Primarily designed for use by plug-in authors.
    • column().width() and columns().widths() methods to get the widths of the target columns. Primarily intended for plug-in and extension authors.
    • DataTable.feature.register() method, used to register new feature plug-ins for use with layout New examples: layout examples
    • DataTable.type(), DataTable.types() static methods which provide a way to manage the data types that are registered with DataTables and to add additional data types as required. This is effectively a harmonisation of the ordering, type detection and search pre-processing plug-ins that were available before. Old plug-ins will continue to work (although will not be addressable for manipulation unless the type detection function is named), but it is strongly encouraged that the new system should be adopted if you are working with custom data types. DataTables has been updated internally to use this these methods and the plug-ins will follow suit.
    • DataTable.util.debounce() method for creating debounced functions Updated: searchDelay now uses a debounce rather than a throttle.
    • DataTable.util.escapeHtml() method exposed for use by extensions and plug-ins. It is also settable and so can be replaced with an external library if needed for a particular application.
    • DataTable.util.stripHtml() method which can be used to satanize strings or to replace the built in (simple) sanitizer with a custom function.
    • DataTable.util.unique() method. Exposing a method we use internally for use by extensions and plug-ins. Update: Improve the performance of unique() through the use of Set if it is available in the browser. It is approx 200 times faster than the previous method! Old version is retained for older browsers that don't support Set and Array.from - but at some point that can be removed.
    • get() method which can be used to get the data underlying the DataTables API instance. This is basically the same as using the array syntax (e.g. [0] and .get(0) perform the same action. It is modeled after the jQuery $().get() method for consistency. Backwards compatibility: The eq() method will no longer return null if the selected context does not exist. Instead it returns an empty API instance. This change is made to make chaining methods without needing to add if conditions for catching conditions easier.
    • includes() method. This can be used in the same way as Array.prototype.includes() to determine if a particular value is in the API's result set.
    • processing() method which can be used to programmatically show and hide the processing indicator used by DataTables
    • ready() method to determine if the table is ready, or to execute a function when it becomes ready (immediately if it is already ready).
    • search() and column().search() can have the search configuration options passed in (a new DataTables.SearchOptions has been created and documented) rather than needing to pass in a long list of arguments. The old method signatures have been retained for compatibility.
    • search.fixed() and column().search.fixed(). These new functions provide a method to easily add complex search methods to DataTables, layer them and allow multiple search terms at a time.
    • state() will get the current state of the table regardless of the stateSave parameter.
    • state() can be used as a setter to set the state of the table programmatically from a state object (described in state()).
    • table().footer.structure() and table().header.structure() methods to get the table's header / footer structure
    • tables().every() API method to match rows, columns and cells.
    • trigger() method for use by extension authors to be able to trigger events in the same way as DataTables.
    • DataTable.versionCheck now accepts a second version string to be used as for the comparison rather than the DataTables version (although that is still the default if a second parameter is not passed in).
    • DataTable.util.diacritics() method exposing the diacritic stripping function we use, and providing the ability to replace it if you require.
  • Events
    • info event for when the table's information display is updated.
    • options event which can be used to modify the options passed into a DataTable, before DataTables does any processing of the options.
  • Search
    • Ability to use a function or regular expression as a search term for search(), column().search() and columns().search().
    • Boundary match option for search options
    • Exact match option for search options
    • Diacritic search support. You can now use DataTables search to look for accented characters without typing the accent. For example searching for creme brulee will match Crème Brulée in the table.
    • Smart search can now perform negative searching by prefixing the search string with a !. This will find all data which does not contain the word that follows. This also works with exact phrase matching (e.g. !"search term").
  • Ordering
    • Columns can now have three ordering states - asc, desc or data index order (specified by an empty string). The columns.orderSequence option has been updated to make use of this, so the third ordering on a column will now take it back to the index order, rather than returning to the first direction.
    • data-dt-order (attribute) can be applied to any cell or row in the header of the table to control if the order click listener is attached to the cell or not. It can also be used to control the ordering status icons.
    • Accessability - role=button applied to the <span> tag that wraps the table header for orderable columns.
    • Ordering extensions can now mix -pre formatters with -asc and -desc functions. Previously you could either use -pre with the built in sort test, or -asc/-desc for custom tests, but without the optimisation of a pre-formatter. You can now use -pre on its own, with -asc/-desc or just -asc/-desc on its own.
    • Ordering status (icons) is shown for a column, even if the end user cannot order the column themselves (i.e. columns.orderable has disabled the user's ability to order a column, but the developer has set ordering on the table).
    • Reworking of the ordering class names. The class names are now conditionally based on if a column header can be ordered, and if it is. They also respect that fact that ordering in a specific direction can be disabled.
    • Support for objects to describe ordering of the table, including the ability to specify the column name, not just the index
  • Ajax
    • "Loading..." text will be shown in the table for the first load when server-side processing is enabled.
    • null as the only response from an Ajax request is valid JSON, and it should represent an empty data set. DataTables will no longer throw an error, and correctly show an empty table.
    • A 204 response from an Ajax request, while it cannot contain valid JSON, is a valid response from the server. DataTables will no longer throw and error, and correctly show an empty table.
    • The columns.data property is now sent as part of the server-side processing request to the server for the order information. This saves needing to perform a lookup to get the data property from the columns array.
  • CSS:
    • Update DataTables default styling to use alpha channel to allow for any background colour
    • Apply an outline to the header cells on mouse hover to highlight that they are clickable for ordering. This also helps to delineate columns.
  • General
    • Ability to use a name (columns.name) as a target for column definitions (columnDefs.targets).
    • A layout function can return an instance that has a node method that will be used rather than being required to return the node (although that is also still supported).
    • Auto type detection class assignment. Class names are applied automatically to the table columns based on the detected column type. We now automatically right align number and date columns.
    • Child row nodes (either as a node, or in a jQuery object) can now be used as selectors in row() and rows().
    • Data types can have a renderer assigned to them for automatic renderer of data. This is particularly useful for numbers and dates where they can be automatically localised based on the user's browser settings and the detected data type, meaning you don't need to explicitly assign renderers yourself.
    • Event object passed to DataTables triggered events now has the DataTables API object available as the dt property for easy access to the API.
    • Full support for right-to-left languages for DataTables core out of the box.
    • Number renderer will display in scientific notation for numbers larger than 1e11 and less than 1e-5 (in keeping with how Excel and LibreOffice automatically format numbers)
    • Paging control is now responsive! It will automatically reduce the number of number buttons to fit the buttons into a single line in the container that they are placed in (i.e. this isn't just full page width responsiveness, but specifically based on the container for the paging buttons).
    • Paging plug-ins can now specify their own elements to be displayed, not just numbers and the five built in types. Fix: Pagination integration styling now supports the ability to set the string for a button to be an empty string. This can be useful if you want to show an icon for the button.
    • Support for border-collapse: collapse in the table styling.
    • Support for DOM nodes being resolved as the data points to be shown inside a DataTable (not just the return from a renderer for the display type).
    • column-selector now has a {string}:title option which can be used to select based on a column title
    • number option for the order option in selector-modifier which makes it possible to get the data from a column in the order DataTables would sort it in, regardless of the current sorting applied to the table.
    • Use colgroup and col elements for column width assignment. This is more accurate than assigning per header cell in complex headers where cells can span multiple columns.

Removed

  • Legacy API! fnAddData and friends were deprecated with the advent of DataTables 1.10 in 2014. It is now time for them to finally be removed.
  • Legacy sAjaxSource, fnServerData, sAjaxDataProp and fnServerParams.
  • Legacy server-side processing parameters. They are still available via the new legacy compatibility library and will automatically detect old configurations (e.g. sAjaxSource and DataTable.ext.legacy.ajax as before).
  • stripeClasses option which was used to set odd and even classes on the table rows. Instead use CSS's :nth-child() selector. The CSS option is far more performant, and while it wasn't a significant bottle neck in DataTables, removing this feature does release a surprising amount of code. If you really need odd and even classes on the rows you can use a row callback to add them.
  • concat() API method. It was totally broken, didn't do what it's documentation said it would, and therefore is unlikely to have been used. If you do have need for it, use .toArray() and then concat the resulting arrays.
  • deferLoading option. It is largely no longer relevant since search engines will execute Javascript and Ajax. It also required much more work if you were using renderers (since they would need to be implemented client and server-side) and caused issues with tables which required Ajax loaded options (such as SearchPanes).
  • The final vestiges of the legacy oApi property have now been removed. That object exposed the internal methods of DataTables. You should always use the public API.
  • F and H options for the original jQuery UI ThemeRoller integration in DataTables. To integrate with jQuery UI you should now use the jQuery UI integration files for DataTables, which was the preferred way for 1.10.
  • jQuery UI classes built into DataTables core. jQuery UI styling still supported via the integration file.
  • jQuery UI header renderer built into DataTables. Still supported via the jQuery UI integration, just like the other supported styling libraries.
  • Removing box sizing from CSS integration files

Deprecated

  • *.cache() methods. These have little utility with the *.render() methods being available and more flexible. Although they run the rendering calculation at the time of being called rather than reading from cache, they don't have invalidation issues and operate with all data types. The *.cache() methods will be removed in DataTables 3. In the unlikely event you are using these methods (they aren't used much!) it is recommended you update your code to use the *.render() methods.
  • dom option. The new layout option is much easier to use and works for all styling integrations. dom is widely used so it will remain in DataTables 2 and likely be removed from v3.

Updates

  • deferRender option is now default enabled
  • pagingType changed to be full_numbers causing the first and last buttons to be displayed in addition to the previous / next and numbers that were used before.
  • Modernise class names for DataTables controlled elements so they are more consistent, descriptive and readable. This can impact any customisation made via CSS or with selectors used on the DataTables defined classes. It is possible to revert to the DataTables 1.x class names - see the upgrade notes for details.
  • Change a tag to button for the pagination buttons (DataTables default styling). This is to help improve accessability. It has no visual impact as the CSS makes them look the same due to the applied class names.
  • Change language.lengthMenu default to be _MENU_ entries (was previously Show _MENU_ entries). This is done to improve accessability using an explicit link between the label and select.
  • DataTable.ext.classes property names and structure updated to be far more useful. This is unlikely to cause any issues unless you were setting any property values in this object to customise the class names DataTables uses for the table.
  • CSS file for DataTables changed from jquery.dataTables.css to dataTables.dataTables.css to match the structure of all the other files and extensions
  • In the download package move the js and css directories to the top level, rather than in a media directory. This brings DataTables core into sync with the extensions which have always had that structure. The media directory was a legacy from the early days!
  • Remove the background images used by DataTables for sorting icons on the header cells, replaced by UTF8 characters with suitable styling on pseudo elements to give the same effect
  • Stable / reset order - when applying an order, the table will now always do it from the initial load order (i.e. it resets back to that internally before performing the order). This is to address ordering on other columns and then returning back to the original ordering potentially resulting in a change in order.
  • Improve performance of column width calculations by caching longest string for each column
  • language.emptyTable will no longer fallback to language.zeroRecords if not defined. It is its own property and behaves like all the others now. It was introduced in 1.8 (2011) with the fallback as a stop gap.
  • JSON data examples now use ISO8601 for date information matching the DOM sourced data examples.
  • Making the auto column calculations more aggressive. The worst case table is now computed rather than using information from the DOM, as a simplification.
  • Order indication arrows are now inside a span to allow greater flexibility
  • Remove legacy IE hacks.
  • Remove TableTools styling from jQuery UI integration (TableTools is legacy and no longer supported)
  • Renaming the error event that DataTables triggered to be called dt-error. This is done to prevent the event triggering window.onerror functions with spurious information. That event should log script errors.
  • Rewriting how the column alignment for scrolling operates to be faster, more accurate and smaller.
  • Rewriting pagination plugin structure to move a lot of the logic from the plug-in to DataTables core, allowing the plugins to focus just on the DOM structure (elements, classes, etc). This also ensures consistent operation of the paging control across integrations, while still being fully styled by their styling frameworks. This has involved the addition of pagingButton and pagingContainer renderers for use by styling frameworks.
  • Search and length controls now use an explicit link for the label / input if possible. This is done to improve accessability as some screen readers struggle with the implicit link of having the input nested in the label. Note that our "macros" for the language strings make it possible to have the input in the middle of a text string - this is still supported and will use the original implicit nesting, but also with an explicit for/id. This however is not recommended and you should attempt to have the input at the start or end of the string to allow the label and input to not be nested.
  • Simplify the default pagination DOM by removing the span that wrapped the numbers in the pagination control.
  • Updates: Remove exposure of internal methods. This added 2KiB to the library, and the internal methods shouldn't be used internally. If you were using any, please update your code to use the public API.
  • Update - style: Make the table header and footer borders less harsh
  • Tailwind integration for DataTables 2 layout renderer
  • Use CSS borders to create the arrows for child row control rather than UTF-8 icons. Consistency between fonts was a problem.
  • When ordering is triggered by the build in event listener, it will no longer trigger a full search on the data in the table. This effectively decouples search and ordering from each other.

  • Better alignment for grid layout for styling libraries - now consistent with DT default

  • Better FomanticUI styling for narrow widths
  • Bootstrap 5 dark mode - control icons were not styled using the Bootstrap dark mode selector
  • Bulma styling should have a gap between rows
  • Check state age before triggering stateLoadParams
  • Colour between selected rows should use CSS variables
  • Column misalignment when scrolling with Foundation and some other styling frameworks
  • CommonJS loader, when there is a window did not define a module.exports property, resulting in errors when using this loader.
  • Correct inconsistency between thead cell borders in dark mode and light mode.
  • DataTables now uses a sparse array internally. This is only of significance when you delete rows with row().remove() (or the plural). Previously the indexes of all rows after the deleted row would be changed. That is no longer the case. The upshot is that the row indexes will always refer to the selected row, even if other rows were deleted.
  • Disable tab index on columns which are not orderable
  • Disable white background on table in BS5 and make it transparent
  • Disallow stackable view for table with FomanticUI styling. It causes issues with extensions such as FixedHeader and Scroller.
  • Disallow the footgun of setting displayStart if paging is disabled
  • Don't adjust column sizing on column visibility write if there was no change in column visibility.
  • Don't cache the reinsert point of the table on destroy. Compute it when the destroy is called (in case the container has been moved).
  • Don't check colspan of child rows for non-auto generated rows
  • Don't convert user input column sizes into pixels (i.e. allow column width calculations to be run on the input value, regardless of its unit).
  • ESLint detected errors.
  • column-visibility should only be fired on columns whose visibility changes.
  • Event listeners didn't include the selector second parameter option
  • requestChild was not being called when a state was loaded with child rows present
  • FomanticUI wasn't including table in the class list
  • Foundation styling for pagination shouldn't wrap disabled buttons with a tags
  • HTML read information had initial white space stripped before ordering, but not after the HTML tags were stripped, resulting in potentially incorrect sort results.
  • Improved margins for Bootstrap grid layout
  • Improvement for when browser zoom is enabled and scrolling
  • Improvements for Bootstrap 5 with table-bordered
  • Initial column sizing wasn't taking into account column header classes (sorting adds padding for example).
  • Initialising DataTables with no columns defined in HTML or the Javascript initialisation will no longer cause an error
  • initComplete never triggers if ajax.reload() is immediately called when an Ajax table is initialised.
  • order selector-modifier was ignored if items to select were being passed in as an array (e.g. table.rows([0, 2])). Correct ordering is now applied to the selected rows.
  • Pass only 3 parameters to order. Documentation has only ever had 3. The fourth was used internally originally but no longer is.
  • Performance optimisations for API instance creation
  • Per the documentation the order event should fire before a draw event. This brings into line with the search event and improves separation of concerns.
  • Plural methods were available on singular API invocations. For example row().nodes() was available, even although there was no definition for it - it was rows().nodes() leaking through.
  • Remove array compatibility methods for legacy browsers.
  • Remove blur from click events, allowing focus to remain on the selected element. Browser's no longer show a focus ring on click which is why this was originally there.
  • Remove !important where not required
  • Remove inline valign from the empty table cell and move to PHP Dev: Improve SCSS for typography
  • Remove jQuery from the dev repo - we don't need it here Update: Rename main JS file to dataTables.* rather than jquery.dataTables.*.
  • Remove jQuery.map usage - replace with Array.prototype.map or other suitable method
  • Remove polyfills for methods that are already in browsers that DT2 will support
  • Remove straggling $.isArray calls for jQuery 4 compatibility
  • Remove the use of $.merge from DataTables core
  • Remove zoom hack used for IE6
  • Row selected colouring was incorrectly being applied to even rows when not selected (incorrect CSS variable used)
  • Tabbing to focus on cells in the header with scrollX enabled could result in the header, body and footer misaligned due to the header scrolling, but not the other two.
  • Tailwind integration for DataTables 2
  • Typography classes weren't being applied in Fomantic UI
  • When destroying a table, if a resize event happens, don't attempt to resize the table.
  • When scrollY is enabled but scrollX is not and the container was too narrow for the table, the header and body would misalign when scrolled.

Typescript

  • cells() selector was not correct for the row + column overload
  • AjaxSettings wasn't being exported
  • column() and columns() were not correctly extending the API object Dev:
  • this is now an HTMLElement in event handlers
  • Typescript typings for DataTable.Api.register() did not set scope. They do now.
  • Define DataTablesStaticExtButtons interface which is completed by Buttons, to avoid conflicting types

Documentation

  • Documentation for the new feature controls and their options
  • Improve documentation for state duration in stateSave
  • Clarify use of defaultContent and render when used together
  • The page event is not called when the end user triggers a page length change. Instead length is triggered.
  • Was missing documentation for DataTable.datetime() static method.
  • Updating the examples to make use of the global DataTable variable rather than jQuery (although that will still work perfectly well and is fully supported). This reflects a more modern style.
  • Formatting of the example is now consistent

Examples

  • Ability to run the examples with any styling framework! This is done with a menu at the top left of the examples letting you select the styling framework to use for the example (matching how the initialisation code style and colour scheme can already be chosen). Some examples can still force a specific styling framework (e.g. the Bootstrap5 specific style).
  • A new set of examples that explicitly show the use of the new layout option.
  • Range filtering now uses a fixed filtering function
  • Show no sort option in orderSequence example
  • Row group example didn't have dark colours
  • Change class name for tabs under the table to stop conflict with styling integrations
  • Stop white flicker between pages when in dark mode
  • Update stripe url for the flags example
  • Foundation variant of form inputs example had margin under input elements
  • Update Material example to use 14.0.0
  • PHPStan highlighted errors in demo PHP server-side processing script

Download DataTables 2.0.0

]]>
Thu, 15 Feb 2024 10:48:34 GMT http://www.datatables.net/#570 http://www.datatables.net/
DataTables 1.13.10 released This release is identical to 1.13.10. It is reissued due to an error in the composer packaging for the release.

From 1.13.9: DataTables 2 has now been merged to "master" so this release is the first on the "1" branch for maintenance of DataTables 1. It is not expected to get many releases and those it does get will be patches. All development focus for DataTables is now on DataTables 2 and beyond.

See 1.13.9 release notes.

Download DataTables 1.13.10

]]>
Fri, 09 Feb 2024 16:24:27 GMT http://www.datatables.net/#569 http://www.datatables.net/
DataTables 1.13.9 released DataTables 2 has now been merged to "master" so this release is the first on the "1" branch for maintenance of DataTables 1. It is not expected to get many releases and those it does get will be patches. All development focus for DataTables is now on DataTables 2 and beyond.

  • Fix: Colour between selected rows should use CSS variables
  • Fix: Row selected colouring was incorrectly being applied to even row s when not selected (inc orrect CSS variable used)
  • Fix: Bootstrap 5 dark mode - control icons were not styled using the Bootstrap dark mode selec tor

Download DataTables 1.13.9

]]>
Fri, 09 Feb 2024 15:55:27 GMT http://www.datatables.net/#568 http://www.datatables.net/