UNPKG

table-filter-multiselect

Version:

## Install You need to have react and react-dom as dependencies in your project.

127 lines (93 loc) 4.2 kB
# table-filter-multiselect ## Install You need to have react and react-dom as dependencies in your project. 1. With [npm](https://npmjs.org/) installed, run ``` $ npm install table-filter-multiselect --save ``` 2. At this point you can import table-filter-multiselect and its styles in your application as follows: ```js import TableFilterMultiselect from 'table-filter-multiselect'; // Be sure to include styles at some point, probably during your bootstraping // In JS import table-filter-multiselect/lib/styles.css; // In SCSS @import "path-to-node_modules/table-filter-multiselect/lib/styles.css"; // Or directly import css <link href="path-to-table-filter-multiselect/lib/styles.css" rel="stylesheet" /> ``` ## Usage 1. Wrap header columns (th / td) with TableFilterMultiselect as shown below. ``` <TableFilterMultiselect rows={data} onFilterUpdate={this._filterUpdated}> <th filterkey="name"> Name </th> <th filterkey="season"> Season </th> <th filterkey="number"> Number </th> </TableFilterMultiselect> ``` Required Props on TableFilterMultiselect rows - Initial Array of Items onFilterUpdate - Function called with updated filtered data when filters are added/removed. This function is used to show updated data by your application. Ex: ``` filterUpdated = (newData, filterConfiguration) => { this.setState({ "upddatedData": newData }); } ``` ``` Arguments Detail: newData - Filtered Data to be used to show on UI filterConfiguration - Current filters configuration. ``` **filterConfiguration** can be saved and be passed as prop(initialFilters) to **TableFilterMultiselect** to maintain filter state while initializing the component.(In case user navigates away and comes back etc.) Required Props on th/td (Header columns) filterkey - The key by which that column is to be filtered(key as present in rows data) Only the Columns with "filterkey" prop present will be considered for filtering. ## Reset Items after Initialization If you want to reset Items after component mount. Make a reference to **TableFilterMultiselect** node and call **reset** method as shown below. ``` <TableFilterMultiselect rows={data} onFilterUpdate={this._filterUpdated} initialFilters={this.state.filterConfiguration} ref={ (node) => {this.tableFilterNode = node;}> this.tableFilterNode.reset(newData, resetFilters); ``` ``` Arguments Detail: newData - Data to reset resetFilters(Default: true) - Boolean tells component to maintain/reset existing filters ``` ## API ### Properties #### TableFilterMultiselect Name | Type | Default | Required | Description :--- | :--- | :------ | :------- | :---------- rows | array | | true | Items for the Filter onFilterUpdate | function(updatedData, filterConfiguration) | | true | Function called with filtered data and updated filter configuration rowClass | string | | false | Any additional class to be added to table row contaning header columns initialFilters | Array | | false | Initial Filter configuration to be applied. Configuration is received as second argument for **onFilterUpdate** function #### TableFilterMultiselect Ref Methods Name | Type | Description :--- | :--- | :---------- reset | function(items, resetFilters=true) | Function called to reset items after component has been mounted. You can choose to either reset current filters or not. #### Cloumn Headers(td/th) Name | Type | Default | Required | Description :--- | :--- | :------ | :------- | :---------- filterkey | string | | false | Key by which the Column should be filtered(Key as present in single Item) itemDisplayValueFunc | function(itemValue) | | false | Optional Function that returns the Value that is displayed in the filter list for each item(Default is the item value - Item[key]) itemSortValueFunc | function(itemValue) | | false | Optional Function that returns the Value that is used while sorting (Default is the item value - Item[key]) alignleft | boolean | false | false | Decides while side filter list should be aligned w.r.t Column caseSensitive | boolean | false | false | Case Sensitivity during sort showSearch | boolean | true | false | Display/Hide the search input ## License MIT