react-querybuilder
Advanced tools
Changelog
[v8.0.0] - 2024-11-08
@react-querybuilder/chakra
now supports Chakra UI version 3 and no longer supports version 2. For Chakra UI version 2 support, use @react-querybuilder/chakra2
.ChakraDragHandle
has been removed. In Chakra UI version 3 environments, the default DragHandle
component works without augmentation."react-querybuilder"
imports to "react-querybuilder/debug"
.bootstrapClassnames
no longer includes value: "form-control form-control-sm"
. The classes are added by BootstrapValueEditor
only when necessary.@react-querybuilder/bulma
properly indicates compatibility with Bulma v1 in its peerDependencies
, and the website demo now uses Bulma v1.Changelog
[v7.7.1] - 2024-10-21
@react-querybuilder/material
package uses the TextField
component from @mui/material
(previous versions used Input
). Implementations that preload MUI components may need to be updated.extraProps
prop of MaterialValueEditor
works properly.FluentShiftActions
and TremorShiftActions
are now applied by default in their respective compatibility packages.Changelog
[v7.7.0] - 2024-10-08
useValueEditor
hook now requires the entire ValueEditorProps
object instead of only requiring a subset of the props.controlElements
properties ruleGroupHeaderElements
and ruleGroupBodyElements
, enabling customization/replacement/augmentation of the subcomponents within the rule group header and body wrappers without needing to reimplement the entire RuleGroup
component.suppressStandardClassnames
. When true
, no classes will be added automatically to any elements (custom classes defined in controlClassnames
will still be applied). This includes conditional and event-based classes for validation, drag-and-drop, etc.Alt
or Option ⌥
) is pressed while the drag phase begins. When using the default styles, the drag-and-drop indicator line will be green (#669933
) instead of rebeccapurple
(#663399
).useQueryBuilderNative
hook. Works the same as useQueryBuilder
, but tailored for React Native implementations.parseNumbers
prop now accepts an optional "-limited" suffix on existing string
config values "enhanced", "strict", and "native". When the "-limited" suffix is used (e.g., parseNumbers="strict-limited"
), values will only be parsed for numericity when the inputType
is "number"
.formatQuery
now accepts an optional concatOperator
parameter to support non-standard concatenation methods in the various SQL dialects. The default is the ANSI standard "||"
, which is supported by PostgreSQL, Oracle, SQLite, and various others, while SQL Server uses "+"
. A value of "CONCAT"
will enable MySQL compatibility by using the CONCAT
function (do not use this for Oracle as its CONCAT
function is limited).toArray
method now accepts an optional configuration parameter. If the retainEmptyStrings
property of that object is true
, the function will not filter out string elements that are empty or purely whitespace.useValueEditor
now includes a parseNumberMethod
property, which is a processed version of the parseNumbers
prop.formatQuery
now accepts an optional preset
option as a shortcut to configure the output for improved compatibility with different query language dialects. Options include "ansi", "mssql", "mysql", "oracle", "postgres", and "sqlite".formatQuery
now accepts an optional fieldIdentifierSeparator
string. When used in conjunction with the quoteFieldNamesWith
option, field names will be separated by this string and bracketed individually per the quoteFieldNamesWith
configuration (e.g., [table name].[field name] = 'value'
instead of [table name.field name] = 'value'
).formatQuery
export format "natural_language", similar to the "sql" or "cel" formats but with English-language operators.ParseNumbersMethod
renamed to ParseNumberMethod
(singular) to better reflect its assocation with the parseNumber
method as opposed to the parseNumbers
prop.formatQuery
uses actual JSON objects instead of manually constructing JSON.parse
-able strings. This should lead to more reliably valid results.operator
is "between" or "notBetween", (2) the values are numeric, and (3) parseNumbers
is true
, formatQuery
will place the smaller value first and the larger value second, regardless of their order in the rule's value
property.parseJSONata
encounters an expression group where only two conditions exist for the same field, one greater-than and one less-than, a single "between"/"notBetween" rule will be generated. Previously a rule group with two separate rules would be generated.MantineValueSelector
no longer sets the value to ""
when clicking the selected option again.Changelog
[v7.6.1] - 2024-08-02
useReactDnD
, useRuleDnD
, useRuleGroupDnD
, and useInlineCombinatorDnD
) are now exported from @react-querybuilder/dnd
.formatQuery
correctly handles values that are lists of numbers when parseNumbers
is true
.