/*! © SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS var jq = require('jquery'); var cjsRequires = function (root, $) { if ( ! $.fn.dataTable ) { require('datatables.net')(root, $); } }; if (typeof window === 'undefined') { module.exports = function (root, $) { if ( ! root ) { // CommonJS environments without a window global must pass a // root. This will give an error otherwise root = window; } if ( ! $ ) { $ = jq( root ); } cjsRequires( root, $ ); return factory( $, root, root.document ); }; } else { cjsRequires( window, jq ); module.exports = factory( jq, window, window.document ); } } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; /** * @summary SearchHighlight * @description Search term highlighter for DataTables * @version 1.1.0 * @author SpryMedia Ltd * * License MIT - http://datatables.net/license/mit * * This feature plug-in for DataTables will highlight search terms in the * DataTable as they are entered into the main search input element, or via the * `search()` API method. * * It depends upon the jQuery Highlight plug-in by Bartek Szopka: * http://bartaz.github.io/sandbox.js/jquery.highlight.js * * Search highlighting in DataTables can be enabled by: * * * Adding the class `searchHighlight` to the HTML table * * Setting the `searchHighlight` parameter in the DataTables initialisation to * be true * * Setting the `searchHighlight` parameter to be true in the DataTables * defaults (thus causing all tables to have this feature) - i.e. * `DataTable.defaults.searchHighlight = true`. * * For more detailed information please see: * http://datatables.net/blog/2014-10-22 */ function highlight(body, table) { // Removing the old highlighting first body.unhighlight(); // Don't highlight the "not found" row, so we get the rows using the api if (table.rows({ filter: 'applied' }).data().length) { table.columns().every(function () { var column = this; column.nodes().flatten().to$().unhighlight({ className: 'column_highlight' }); column.nodes().flatten().to$().highlight(column.search().trim().split(/\s+/), { className: 'column_highlight' }); }); body.highlight(table.search().trim().split(/\s+/)); } } // Listen for DataTables initialisations $(document).on('init.dt.dth', function (e, settings, json) { if (e.namespace !== 'dt') { return; } var table = new DataTable.Api(settings); var body = $(table.table().body()); if ($(table.table().node()).hasClass('searchHighlight') || // table has class settings.oInit.searchHighlight || // option specified DataTable.defaults.searchHighlight // default set ) { table .on('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth', function () { highlight(body, table); }) .on('destroy', function () { // Remove event handler table.off('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth'); }); // initial highlight for state saved conditions and initial states if (table.search()) { highlight(body, table); } } }); return DataTable; }));