8.3.1 • Published 4 months ago

react-querybuilder v8.3.1

Weekly downloads
3,672
License
MIT
Repository
github
Last release
4 months ago

react-querybuilder

The Query Builder component for React

React Query Builder is a fully customizable query builder component for React, along with a collection of utility functions for importing from, and exporting to, various query languages like SQL, MongoDB, and more.

Screenshot

Documentation

Complete documentation is available at https://react-querybuilder.js.org.

Demo

Click here to see a live, interactive demo.

Custom components are not limited to the following libraries, but these have first-class support through their respective compatibility packages:

LibraryCompatibility packageDemoExample
Ant Design@react-querybuilder/antddemoexample
Bootstrap@react-querybuilder/bootstrapdemoexample
Bulma@react-querybuilder/bulmademoexample
Chakra UI@react-querybuilder/chakrademoexample
Fluent UI@react-querybuilder/fluentdemoexample
Mantine@react-querybuilder/mantinedemoexample
MUI@react-querybuilder/materialdemoexample
React Native@react-querybuilder/nativeexample
Tremor@react-querybuilder/tremordemoexample

Basic usage

npm i react-querybuilder
# OR yarn add / pnpm add / bun add
import { useState } from 'react';
import { Field, QueryBuilder, RuleGroupType } from 'react-querybuilder';
import 'react-querybuilder/dist/query-builder.css';

const fields: Field[] = [
  { name: 'firstName', label: 'First Name' },
  { name: 'lastName', label: 'Last Name' },
  { name: 'age', label: 'Age', inputType: 'number' },
  { name: 'address', label: 'Address' },
  { name: 'phone', label: 'Phone' },
  { name: 'email', label: 'Email', validator: ({ value }) => /^[^@]+@[^@]+/.test(value) },
  { name: 'twitter', label: 'Twitter' },
  { name: 'isDev', label: 'Is a Developer?', valueEditorType: 'checkbox', defaultValue: false },
];

const initialQuery: RuleGroupType = {
  combinator: 'and',
  rules: [],
};

export const App = () => {
  const [query, setQuery] = useState(initialQuery);

  return <QueryBuilder fields={fields} query={query} onQueryChange={setQuery} />;
};

To enable drag-and-drop, install the @react-querybuilder/dnd package and nest <QueryBuilder /> under <QueryBuilderDnD />.

Export

To export queries as SQL, MongoDB, or one of several other formats, use the formatQuery function.

const query = {
  combinator: 'and',
  rules: [
    {
      field: 'first_name',
      operator: 'beginsWith',
      value: 'Stev',
    },
    {
      field: 'last_name',
      operator: 'in',
      value: 'Vai, Vaughan',
    },
  ],
};
const sqlWhere = formatQuery(query, 'sql');
console.log(sqlWhere);
// `(first_name like 'Stev%' and last_name in ('Vai', 'Vaughan'))`

Import

To import queries use parseSQL, parseMongoDB, parseJsonLogic, parseJSONata, parseCEL, or parseSpEL depending on the source.

Tip: parseSQL will accept a full SELECT statement or the WHERE clause by itself (everything but the expressions in the WHERE clause will be ignored). Trailing semicolon is optional.

const query = parseSQL(
  `SELECT * FROM my_table WHERE first_name LIKE 'Stev%' AND last_name in ('Vai', 'Vaughan')`
);
console.log(query);
/*
{
  "combinator": "and",
  "rules": [
    {
      "field": "first_name",
      "operator": "beginsWith",
      "value": "Stev",
    },
    {
      "field": "last_name",
      "operator": "in",
      "value": "Vai, Vaughan",
    },
  ],
}
*/

Utilities

formatQuery, transformQuery, and the parse* functions can be used without importing from react (on the server, for example) like this:

import { formatQuery } from 'react-querybuilder/formatQuery';
import { parseCEL } from 'react-querybuilder/parseCEL';
import { parseJSONata } from 'react-querybuilder/parseJSONata';
import { parseJsonLogic } from 'react-querybuilder/parseJsonLogic';
import { parseMongoDB } from 'react-querybuilder/parseMongoDB';
import { parseSpEL } from 'react-querybuilder/parseSpEL';
import { parseSQL } from 'react-querybuilder/parseSQL';
import { transformQuery } from 'react-querybuilder/transformQuery';

(As of version 7, the parse* functions are only available through these extended exports.)

8.0.0-alpha.0

7 months ago

8.1.0

5 months ago

8.1.1

5 months ago

8.3.1

4 months ago

8.2.0

5 months ago

8.3.0

4 months ago

8.0.0

7 months ago

7.7.1

8 months ago

7.7.1-rc.1

8 months ago

7.7.1-rc.0

8 months ago

7.7.0-alpha.8

9 months ago

7.7.0-alpha.4

9 months ago

7.7.0

8 months ago

7.8.0-alpha.0

9 months ago

7.4.4

1 year ago

7.4.3

1 year ago

7.4.2

1 year ago

7.4.1

1 year ago

7.4.0

1 year ago

7.5.2

12 months ago

7.5.1

12 months ago

7.5.0

12 months ago

7.6.1

10 months ago

7.6.0

11 months ago

7.3.0

1 year ago

7.2.1

1 year ago

7.2.0

1 year ago

7.1.0

1 year ago

7.0.2

1 year ago

7.0.1

1 year ago

7.0.0

1 year ago

7.0.0-rc.1

1 year ago

7.0.0-rc.0

1 year ago

7.0.0-beta.5

1 year ago

7.0.0-beta.4

1 year ago

7.0.0-beta.3

1 year ago

7.0.0-beta.2

1 year ago

7.0.0-beta.0

1 year ago

7.0.0-beta.1

1 year ago

7.0.0-alpha.7

1 year ago

7.0.0-alpha.6

1 year ago

6.5.5

1 year ago

7.0.0-alpha.5

1 year ago

7.0.0-alpha.4

1 year ago

7.0.0-alpha.3

1 year ago

7.0.0-alpha.1

2 years ago

7.0.0-alpha.0

2 years ago

7.0.0-alpha.2

2 years ago

6.5.2

2 years ago

6.5.4

2 years ago

6.5.3

2 years ago

6.5.0

2 years ago

6.6.0-alpha.0

2 years ago

6.4.1

2 years ago

6.4.0

2 years ago

6.5.1

2 years ago

6.0.0-alpha.3

2 years ago

6.0.0-alpha.4

2 years ago

6.0.0-alpha.5

2 years ago

6.1.0

2 years ago

6.1.2

2 years ago

6.1.1

2 years ago

6.1.4

2 years ago

6.1.3

2 years ago

6.0.0-alpha.0

2 years ago

6.0.0-alpha.1

2 years ago

6.0.0-alpha.2

2 years ago

6.3.0-alpha.0

2 years ago

6.3.0-alpha.1

2 years ago

5.4.1

2 years ago

6.2.0

2 years ago

6.0.3-alpha.0

2 years ago

6.0.0-rc.0

2 years ago

6.3.0

2 years ago

6.0.7

2 years ago

6.0.6

2 years ago

6.2.0-alpha.0

2 years ago

6.0.1

2 years ago

6.0.0

2 years ago

6.0.3

2 years ago

6.0.2

2 years ago

6.0.5

2 years ago

6.0.4

2 years ago

6.2.0-alpha.3

2 years ago

6.2.0-alpha.2

2 years ago

6.2.0-alpha.1

2 years ago

5.3.3

2 years ago

5.3.2

2 years ago

5.3.1

2 years ago

5.3.0

2 years ago

5.0.0-alpha.9

3 years ago

5.0.0-alpha.8

3 years ago

5.4.0

2 years ago

5.0.0

3 years ago

5.1.3

3 years ago

5.1.2

3 years ago

5.1.1

3 years ago

5.1.0

3 years ago

5.2.0

3 years ago

5.0.0-alpha.7

3 years ago

5.0.0-alpha.6

3 years ago

5.0.0-alpha.5

3 years ago

4.5.3

3 years ago

5.0.0-alpha.3

3 years ago

5.0.0-alpha.2

3 years ago

5.0.0-alpha.0

3 years ago

4.4.1

3 years ago

4.4.0

3 years ago

4.5.0

3 years ago

4.3.1

3 years ago

4.5.2

3 years ago

4.5.1

3 years ago

4.3.0

3 years ago

4.2.5

3 years ago

4.2.4

3 years ago

4.2.3

3 years ago

4.2.2

3 years ago

4.2.1

3 years ago

4.0.0

3 years ago

4.2.0

3 years ago

4.0.0-beta.8

3 years ago

4.0.0-beta.7

4 years ago

4.1.3

3 years ago

4.1.0

3 years ago

4.1.2

3 years ago

4.1.1

3 years ago

4.0.0-beta.6

4 years ago

4.0.0-beta.5

4 years ago

4.0.0-beta.4

4 years ago

4.0.0-beta.3

4 years ago

4.0.0-beta.2

4 years ago

4.0.0-beta.1

4 years ago

3.12.1

4 years ago

3.12.0

4 years ago

3.11.1

4 years ago

3.11.0

4 years ago

3.10.1

4 years ago

3.10.0

4 years ago

3.9.9

4 years ago

3.9.8

4 years ago

3.9.7

4 years ago

3.9.6

4 years ago

3.9.5

4 years ago

3.9.4

4 years ago

3.9.3

4 years ago

3.9.2

4 years ago

3.9.1

4 years ago

3.9.0

5 years ago

3.8.4

5 years ago

3.8.3

5 years ago

3.8.2

5 years ago

3.8.1

5 years ago

3.8.0

5 years ago

3.7.1

5 years ago

3.7.0

5 years ago

3.6.0

5 years ago

3.5.1

5 years ago

3.5.0

5 years ago

3.4.0

5 years ago

3.3.0

5 years ago

3.2.0

5 years ago

3.1.2

5 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.5.1

6 years ago

2.5.0

6 years ago

2.4.0

6 years ago

2.3.0

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.4.3

7 years ago

1.4.2

7 years ago

1.4.1

7 years ago

1.4.0

8 years ago

1.3.8

8 years ago

1.3.7

8 years ago

1.3.6

8 years ago

1.3.5

8 years ago

1.3.4

8 years ago

1.3.0

9 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago