8.3.1 • Published 11 months ago

react-querybuilder v8.3.1

Weekly downloads
3,672
License
MIT
Repository
github
Last release
11 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

1 year ago

8.1.0

1 year ago

8.1.1

12 months ago

8.3.1

11 months ago

8.2.0

12 months ago

8.3.0

11 months ago

8.0.0

1 year ago

7.7.1

1 year ago

7.7.1-rc.1

1 year ago

7.7.1-rc.0

1 year ago

7.7.0-alpha.8

1 year ago

7.7.0-alpha.4

1 year ago

7.7.0

1 year ago

7.8.0-alpha.0

1 year ago

7.4.4

2 years ago

7.4.3

2 years ago

7.4.2

2 years ago

7.4.1

2 years ago

7.4.0

2 years ago

7.5.2

2 years ago

7.5.1

2 years ago

7.5.0

2 years ago

7.6.1

1 year ago

7.6.0

2 years ago

7.3.0

2 years ago

7.2.1

2 years ago

7.2.0

2 years ago

7.1.0

2 years ago

7.0.2

2 years ago

7.0.1

2 years ago

7.0.0

2 years ago

7.0.0-rc.1

2 years ago

7.0.0-rc.0

2 years ago

7.0.0-beta.5

2 years ago

7.0.0-beta.4

2 years ago

7.0.0-beta.3

2 years ago

7.0.0-beta.2

2 years ago

7.0.0-beta.0

2 years ago

7.0.0-beta.1

2 years ago

7.0.0-alpha.7

2 years ago

7.0.0-alpha.6

2 years ago

6.5.5

2 years ago

7.0.0-alpha.5

2 years ago

7.0.0-alpha.4

2 years ago

7.0.0-alpha.3

2 years 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

3 years ago

6.6.0-alpha.0

2 years ago

6.4.1

3 years ago

6.4.0

3 years ago

6.5.1

3 years ago

6.0.0-alpha.3

3 years ago

6.0.0-alpha.4

3 years ago

6.0.0-alpha.5

3 years ago

6.1.0

3 years ago

6.1.2

3 years ago

6.1.1

3 years ago

6.1.4

3 years ago

6.1.3

3 years ago

6.0.0-alpha.0

3 years ago

6.0.0-alpha.1

3 years ago

6.0.0-alpha.2

3 years ago

6.3.0-alpha.0

3 years ago

6.3.0-alpha.1

3 years ago

5.4.1

3 years ago

6.2.0

3 years ago

6.0.3-alpha.0

3 years ago

6.0.0-rc.0

3 years ago

6.3.0

3 years ago

6.0.7

3 years ago

6.0.6

3 years ago

6.2.0-alpha.0

3 years ago

6.0.1

3 years ago

6.0.0

3 years ago

6.0.3

3 years ago

6.0.2

3 years ago

6.0.5

3 years ago

6.0.4

3 years ago

6.2.0-alpha.3

3 years ago

6.2.0-alpha.2

3 years ago

6.2.0-alpha.1

3 years ago

5.3.3

3 years ago

5.3.2

3 years ago

5.3.1

3 years ago

5.3.0

3 years ago

5.0.0-alpha.9

3 years ago

5.0.0-alpha.8

3 years ago

5.4.0

3 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

4 years ago

4.4.0

4 years ago

4.5.0

4 years ago

4.3.1

4 years ago

4.5.2

3 years ago

4.5.1

4 years ago

4.3.0

4 years ago

4.2.5

4 years ago

4.2.4

4 years ago

4.2.3

4 years ago

4.2.2

4 years ago

4.2.1

4 years ago

4.0.0

4 years ago

4.2.0

4 years ago

4.0.0-beta.8

4 years ago

4.0.0-beta.7

4 years ago

4.1.3

4 years ago

4.1.0

4 years ago

4.1.2

4 years ago

4.1.1

4 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

5 years ago

3.9.8

5 years ago

3.9.7

5 years ago

3.9.6

5 years ago

3.9.5

5 years ago

3.9.4

5 years ago

3.9.3

5 years ago

3.9.2

5 years ago

3.9.1

5 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

6 years ago

3.5.0

6 years ago

3.4.0

6 years ago

3.3.0

6 years ago

3.2.0

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 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

8 years ago

1.4.2

8 years ago

1.4.1

8 years ago

1.4.0

8 years ago

1.3.8

9 years ago

1.3.7

9 years ago

1.3.6

9 years ago

1.3.5

9 years ago

1.3.4

9 years ago

1.3.0

9 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.8

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago