@react-querybuilder/bulma
Advanced tools
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
.Changelog
[v7.6.0] - 2024-07-11
onMoveRule
and onMoveGroup
, called before a rule or group is moved (via drag-and-drop) or shifted. If the result of the callback is false
, the move will be cancelled. If true
, the move will proceed as normal. Alternatively, a full query object can be returned representing the new state if some other modifications were necessary.onAddRule
and onAddGroup
callbacks can now return true
instead of the entire rule/group to allow the addition to proceed as normal.parseSpEL
was not handling the matches
operator correctly when its value was a single character.formatQuery
"elasticsearch" output for "contains" and "doesNotContain" operators.Changelog
[v7.5.2] - 2024-06-27
parseMongoDB
was not handling the $regex
operator correctly when its value was a single character.Changelog
[v7.5.1] - 2024-06-25
useMergedContext
no longer returns values that are not explicitly typed in UseMergedContextProps
.key
is no longer required in the parameter passed to getCompatContextProvider
.dragging
property of the object passed to canDrop
is no longer a stale reference to the rule/group being dragged.Changelog
[v7.5.0] - 2024-06-15
gap
for layout spacing, which means the minimum react-native
version is now 0.71.0
.useQueryBuilder
hook has been reinstated. It does nothing more than call useQueryBuilderSetup
and useQueryBuilderSchema
, which no longer need to be called from separate components.useQueryBuilderQuery
hook to retrieve the full, current query object during the render pass of a custom component. It requires no parameters and should be used in place of the previously recommended hook useQueryBuilderSelector
, which requires a selector function generated with getQuerySelectorById(props.schema.qbId)
. While useQueryBuilderSelector
is not deprecated, it is no longer recommended except in very special circumstances.useQueryBuilderSelector
no longer returns undefined
during the first render pass (and neither does the new hook useQueryBuilderQuery
).parse*
methods properly escape commas in string values for "between" and "in" operators.Changelog
[v7.4.4] - 2024-06-10
JSON.stringify
.