[](https://github.com/komarovalexander/react-filter-control/blob/master/LICENSE) [](https://travis-ci.com/komarovalexander/react-filter-control)
[](https://coveralls.io/github/komarovalexander/react-filter-control?branch=master)
# React Filter Control
The React component for building the composite filter criteria
[Demo (JS)](https://codesandbox.io/s/4xk994jovw) | [Demo (TS)](https://codesandbox.io/s/react-typescript-uhtxt)
[Together With Data Table](https://komarovalexander.github.io/ka-table/#/filter-extended)
## Overview

## Installation
npm
```sh
npm install react-filter-control
```
yarn
```sh
yarn add react-filter-control
```
`react` 16.3 or newer is a peer dependency: the component uses the React of the application.
## Usage
### A basic example
```js
import React from "react";
import { createRoot } from "react-dom/client";
import FilterControl from "react-filter-control";
import { fields, filterValue } from "./data.js";
const handleFilterValueChange = filterValue => {
// ...
};
const App = () => {
return (
);
};
createRoot(document.querySelector("#root")).render();
```
[Open Example in CodeSandbox](https://codesandbox.io/s/mqnmlypmkp)
## API
### FilterControl
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| fields | [Array.<Field>](#Field) | The fields settings |
| filterValue | [FilterValue](#FilterValue) | The filterValue settings |
| groups | [Array.<Group>](#Group) | The groups settings |
| onFilterValueChanged | event | The filter value changed handler |
### FilterValue : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| groupName | string | Group name |
| items | Array.<(FilterValueGroup\|FilterValueItem)> | Items in group |
### FilterValueGroup : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| key | key | Item key |
| groupName | string | Group name |
| items | Array.<(FilterValueGroup\|FilterValueItem)> | Items in group |
### FilterValueItem : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| key | key | Item key |
| field | string | Field |
| operator | string | Operator |
| value | any | Value |
### Field : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| name | string | Field name |
| caption | string | Field caption |
| operators | [Array.<Operator>](#Operator) | Field operators |
### Group : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| name | string | Group name |
| caption | string | Group caption |
### Operator : Object
**Properties**
| Name | Type | Description |
| --- | --- | --- |
| name | string | Operator name |
| caption | string | Operator caption |
## License
This project is licensed under the terms of the [MIT license](/LICENSE).