| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- import React, { Component } from 'react';
 
- import PropTypes from 'prop-types';
 
- import $ from 'jquery';
 
- /**
 
-  * Wrapper component for dataTable plugin
 
-  * Only DOM child elements, componets are not supported (e.g. <Table>)
 
-  */
 
- export default class Datatable extends Component {
 
-     static propTypes = {
 
-         /** datatables options object */
 
-         options: PropTypes.object,
 
-         /** only one children allowed */
 
-         children: PropTypes.element.isRequired,
 
-         /** callback that receives the datatable instance as param */
 
-         dtInstance: PropTypes.func
 
-     }
 
-     static defaultProps = {
 
-         options: {}
 
-     }
 
-     componentDidMount() {
 
-         // Datatables
 
-         require('datatables.net-bs')
 
-         require('datatables.net-bs4/js/dataTables.bootstrap4.js')
 
-         require('datatables.net-bs4/css/dataTables.bootstrap4.css')
 
-         require('datatables.net-buttons')
 
-         require('datatables.net-buttons-bs')
 
-         require('datatables.net-responsive')
 
-         require('datatables.net-responsive-bs')
 
-         require('datatables.net-responsive-bs/css/responsive.bootstrap.css')
 
-         require('datatables.net-buttons/js/buttons.colVis.js') // Column visibility
 
-         require('datatables.net-buttons/js/buttons.html5.js') // HTML 5 file export
 
-         require('datatables.net-buttons/js/buttons.flash.js') // Flash file export
 
-         require('datatables.net-buttons/js/buttons.print.js') // Print view button
 
-         require('datatables.net-keytable');
 
-         require('datatables.net-keytable-bs/css/keyTable.bootstrap.css')
 
-         require('jszip/dist/jszip.js');
 
-         require('pdfmake/build/pdfmake.js');
 
-         require('pdfmake/build/vfs_fonts.js');
 
-         const dtInstance = $(this.tableElement).dataTable(this.props.options);
 
-         if(this.props.dtInstance)
 
-             this.props.dtInstance(dtInstance)
 
-     }
 
-     componentWillUnmount() {
 
-         $(this.tableElement).dataTable({destroy: true});
 
-     }
 
-     setRef = node => this.tableElement = node;
 
-     render() {
 
-         return (
 
-             React.cloneElement(React.Children.only(this.props.children), {
 
-                 ref: this.setRef
 
-             })
 
-         )
 
-     }
 
- }
 
 
  |