Example Table Settings
If our table settings were:
const tableSettings = {
    tableID: 'DataTable',
    keyField: 'ref_id',
    tableColumns: [
        {
            title: 'Ref',
            key: 'ref_id',
            filter: 'NumberFilter',
            defaultValue: { comparator: '=' },
        },
        {
            title: 'First Name',
            key: 'first_name',
        },
        {
            title: 'Surname',
            key: 'surname',
        },
        {
            title: 'Type',
            key: 'type',
            filter: 'SelectFilter',
            filterOptions: {
                Add: 'Add',
                Amend: 'Amend',
                Remove: 'Remove',
            },
        },
    ],
};Then the tableSettings post parameter would contain a corresponding json object:
{
  "tableID":"DataTable",
  "keyField":"ref_id",
  "tableColumns":[
    {
      "title":"Ref",
      "key":"ref_id",
      "filter":"NumberFilter",
      "defaultValue":{"comparator":"="}
    },
    {
      "title":"First Name",
      "key":"first_name"
    },
    {
      "title":"Surname",
      "key":"surname"
    },
    {
      "title":"Type",
      "key":"type",
      "filter":"SelectFilter",
      "filterOptions": {
        "Add": "Add",
        "Amend": "Amend",
        "Remove": "Remove"
      }
    }
  ]
}Available Options
| Name | Type | Required? | Description | 
|---|---|---|---|
| keyField | string | Yes | A column key must be selected as the key field. | 
| tableColumns | array | Yes | An array of objects with at least a key and title. | 
| tableID | string | Yes | An ID for the table. | 
| defaultSearch | string | - | The default search value. | 
| defaultSort | array | - | The default column to sort by, and if it is asc or desc e.g. ['ref_id', 'desc']. | 
| displayTitle | string | - | This adds a title above the table. | 
| customPaginationTotal | function | - | A way of changing the pagination total displayed. See More | 
| extraToolbarItems | function | - | A way of passing extra items to the toolbar. See More | 
| extraButtons | function | - | A way of passing extra buttons to the table. See More | 
| headers | object | - | Override the default request headers. See More | 
| minWidth | integer | - | Define a minimum width for the table. | 
| noDataIndication | mixed | - | The text or component to render within the table if there are no results. | 
| customApiError | function | - | Make use of an error object and render your own error response. See More | 
| useLocalStorage | bool | - | If true the table filters will be stored using local storage. | 
| wrapperType | string | - | This string adds a class or classes to the wrapper div around the table. | 
Using Local Storage
Using local storage will store the column filters and search box values entered as tableFilters and tableSearch.
LocalStorage can be cleared as below:
localStorage.removeItem('tableFilters'); // clear table filters
localStorage.removeItem('tableSearch'); // clear table searchesCustom Pagination Total
View Custom Pagination Total Example Implementation
You can add a custom pagination total when you use customPaginationTotal:
const PaginationTotal = (start, to, total) => (
  <div>
    {start}-{to} of {total}
  </div>
);
const tableSettings = {
    tableID: 'myTable',
    displayTitle: 'Course Catalogue',
    customPaginationTotal: PaginationTotal,
    ...otherSettings,
}Extra Toolbar Items

You can add extra items to the toolbar when you use extraToolbarItems:
const ExtraToolbarItem = () =>
    <Link
      class="table-icons"
      to="courses/create-course"
    >
        <span
          class="add-link"
        />
        Add New
    </Link>
const tableSettings = {
    tableID: 'myTable',
    displayTitle: 'Course Catalogue',
    extraToolbarItems: ExtraToolbarItem,
    ...otherSettings,
}Extra Buttons

You can add extra buttons to the table using extraButtons:
const ExtraButton = () =>
    <Link
      class="table-icons"
      to="courses/create-course"
    >
        <span
          class="add-link"
        />
        Add New
    </Link>
const tableSettings = {
    tableID: 'myTable',
    extraButtons: ExtraButton,
    ...otherSettings,
}Request Headers
The default headers are:
{
  'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
}You can override this using the headers setting:
const tableSettings = {
    tableID: 'myTable',
    headers: {
        'Accept-Charset': 'utf-8',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Language': 'da',
    },
    ...otherSettings,
}Custom API Error
The default error is:
<div className="status_message offline">
    <p>The table failed to initialise. Please check you are connected to the internet and try again.</p>
</div>You can override this error the customApiError setting:
const customApiError = errorObject => {
  if (errorObject.response.status === 400) {
    return (
      <div className="status_message offline">
        <p>{errorObject.message}</p>
      </div>
    );
  }
  return (
    <div className="status_message offline">
      <p>Something went wrong!</p>
    </div>
  );
};
const tableSettings = {
    tableID: 'myTable',
    customApiError,
    ...otherSettings,
}