7.2.1 • Published 4 days ago

@react-querybuilder/dnd v7.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 days ago

@react-querybuilder/dnd

Augments react-querybuilder with drag-and-drop functionality.

To see this in action, check out the react-querybuilder demo with the drag-and-drop option enabled.

Full documentation

Installation

npm i react-querybuilder @react-querybuilder/dnd react-dnd react-dnd-html5-backend
# OR yarn add / pnpm add / bun add

Usage

To enable the drag-and-drop functionality of a query builder, wrap the <QueryBuilder /> element in <QueryBuilderDnD /> and pass in the exports from react-dnd and react-dnd-html5-backend as props to QueryBuilderDnD.

import { QueryBuilderDnD } from '@react-querybuilder/dnd';
import * as ReactDnD from 'react-dnd';
import * as ReactDndHtml5Backend from 'react-dnd-html5-backend';
import { QueryBuilder, RuleGroupType } from 'react-querybuilder';

const fields = [
  { name: 'firstName', label: 'First Name' },
  { name: 'lastName', label: 'Last Name' },
];

const App = () => {
  const [query, setQuery] = useState<RuleGroupType>({ combinator: 'and', rules: [] });

  return (
    <QueryBuilderDnD dnd={{ ...ReactDnD, ...ReactDndHtml5Backend }}>
      <QueryBuilder fields={fields} query={query} onQueryChange={setQuery} />
    </QueryBuilderDnD>
  );
};

Notes

  • While not strictly necessary, we strongly recommend passing the react-dnd and react-dnd-html5-backend exports in as props to <QueryBuilderDnD />. If they are not passed in as props, the initial render of the query builder will have drag-and-drop disabled until the dependencies are asynchronously loaded via import().
  • <QueryBuilderDnD /> will automatically set the enableDragAndDrop prop to true on any descendant <QueryBuilder /> elements unless enableDragAndDrop is explicitly set to false on the <QueryBuilder /> element.
  • <QueryBuilderDnD /> does not need to be an immediate ancestor to <QueryBuilder />.
  • Multiple <QueryBuilder />s may be nested beneath a single <QueryBuilderDnD />. The same drag-and-drop settings will be applied to each of them.
  • If your application already uses react-dnd outside the scope of a query builder, use QueryBuilderDndWithoutProvider instead of QueryBuilderDnD to inherit context from your existing <DndProvider />. Example:

    import { QueryBuilderDndWithoutProvider } from '@react-querybuilder/dnd';
    import { DndProvider } from 'react-dnd';
    import { HTML5Backend } from 'react-dnd-html5-backend';
    import { QueryBuilder, RuleGroupType } from 'react-querybuilder';
    import { SomeOtherDndContextConsumer } from './SomeOtherDndContextConsumer';
    
    const fields = [
      { name: 'firstName', label: 'First Name' },
      { name: 'lastName', label: 'Last Name' },
    ];
    
    const ChildComponentOfDndProvider = () => {
      const [query, setQuery] = useState<RuleGroupType>({ combinator: 'and', rules: [] });
    
      return (
        <QueryBuilderDndWithoutProvider>
          <QueryBuilder fields={fields} query={query} onQueryChange={setQuery} />
        </QueryBuilderDndWithoutProvider>
      );
    };
    
    const App = () => {
      return (
        <DndProvider backend={HTML5Backend}>
          <SomeOtherDndContextConsumer />
          <ChildComponentOfDndProvider />
        </DndProvider>
      );
    };
7.2.1

4 days ago

7.2.0

25 days ago

7.1.0

1 month ago

7.0.2

2 months ago

7.0.1

2 months ago

7.0.0

2 months ago

7.0.0-rc.1

3 months ago

7.0.0-rc.0

3 months ago

7.0.0-beta.5

3 months ago

7.0.0-beta.4

3 months ago

7.0.0-beta.3

3 months ago

7.0.0-beta.2

3 months ago

7.0.0-beta.0

3 months ago

7.0.0-beta.1

3 months ago

7.0.0-alpha.7

3 months ago

7.0.0-alpha.6

4 months ago

6.5.5

4 months ago

7.0.0-alpha.5

4 months ago

7.0.0-alpha.4

5 months ago

7.0.0-alpha.3

5 months ago

7.0.0-alpha.1

6 months ago

7.0.0-alpha.0

6 months ago

7.0.0-alpha.2

6 months ago

6.6.0-alpha.0

9 months ago

6.5.2

7 months ago

6.5.4

6 months ago

6.5.3

7 months ago

6.5.1

11 months ago

6.3.0

1 year ago

6.5.0

11 months ago

6.3.0-alpha.0

1 year ago

6.3.0-alpha.1

1 year ago

6.4.1

12 months ago

6.4.0

12 months ago

6.2.0-alpha.0

1 year ago

6.1.0

1 year ago

6.1.2

1 year ago

6.0.3

1 year ago

6.2.0

1 year ago

6.1.1

1 year ago

6.1.4

1 year ago

6.0.5

1 year ago

6.1.3

1 year ago

6.0.4

1 year ago

6.0.3-alpha.0

1 year ago

6.2.0-alpha.3

1 year ago

6.2.0-alpha.2

1 year ago

6.2.0-alpha.1

1 year ago

6.0.7

1 year ago

6.0.6

1 year ago

6.0.0-alpha.3

1 year ago

6.0.0-alpha.4

1 year ago

5.4.1

1 year ago

6.0.0-alpha.5

1 year ago

6.0.1

1 year ago

6.0.0

1 year ago

6.0.2

1 year ago

6.0.0-alpha.0

1 year ago

6.0.0-alpha.1

1 year ago

6.0.0-alpha.2

1 year ago

6.0.0-rc.0

1 year ago

5.3.3

1 year ago

5.0.0-alpha.7

2 years ago

5.3.2

1 year ago

5.4.0

1 year ago

5.3.1

1 year ago

5.1.3

1 year ago

5.3.0

1 year ago

5.1.2

1 year ago

5.2.0

1 year ago

5.1.1

2 years ago

5.1.0

2 years ago

5.0.0

2 years ago

5.0.0-alpha.9

2 years ago

5.0.0-alpha.8

2 years ago

5.0.0-alpha.6

2 years ago

5.0.0-alpha.5

2 years ago

5.0.0-alpha.3

2 years ago

5.0.0-alpha.2

2 years ago

5.0.0-alpha.0

2 years ago