| Title: | 'jQuery QueryBuilder' Input for 'Shiny' | 
| Version: | 1.0.4 | 
| Description: | A highly configurable 'jQuery' plugin offering a simple interface to create complex queries/filters in 'Shiny'. The outputted rules can easily be parsed into a set of 'R' and/or 'SQL' queries and used to filter data. Custom parsing of the rules is also supported. For more information about 'jQuery QueryBuilder' see https://querybuilder.js.org/. | 
| License: | MIT + file LICENSE | 
| URL: | https://github.com/hfshr/jqbr, https://hfshr.github.io/jqbr/ | 
| BugReports: | https://github.com/hfshr/jqbr/issues | 
| Imports: | htmltools, jsonlite, shiny | 
| Suggests: | bslib, packer, testthat (≥ 3.0.0) | 
| Config/testthat/edition: | 3 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| NeedsCompilation: | no | 
| Packaged: | 2025-09-09 10:15:33 UTC; root | 
| Author: | Harry Fisher [aut, cre] | 
| Maintainer: | Harry Fisher <harryfisher21@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-09-09 12:20:07 UTC | 
Apply query to a dataframe
Description
Filter a dataframe using the output of a queryBuilder. The return_value
Should be set to r_rules, and the list of filters should contain column names
that are present in the data as their id value.
Usage
filter_table(data = NULL, filters = NULL)
Arguments
data | 
 
  | 
filters | 
 output from queryBuilder when   | 
Value
A filtered version of the input data.frame
Examples
library(shiny)
library(jqbr)
filters <- list(
  list(
    id = "cyl",
    type = "integer",
    input = "radio",
    values = list(
      4,
      6,
      8
    )
  )
)
ui <- fluidPage(
  queryBuilderInput(
    inputId = "r_filter",
    filters = filters,
    return_value = "r_rules"
  ),
  tableOutput("cars")
)
server <- function(input, output) {
  output$cars <- renderTable({
    filter_table(mtcars, input$r_filter)
  })
}
if (interactive()) {
  shinyApp(ui, server)
}
queryBuilderInput
Description
Shiny input bindings for queryBuilder.
Usage
queryBuilderInput(
  inputId,
  width = "100%",
  filters,
  plugins = NULL,
  rules = NULL,
  optgroups = NULL,
  default_filter = NULL,
  sort_filters = FALSE,
  allow_groups = TRUE,
  allow_empty = FALSE,
  display_errors = FALSE,
  conditions = c("AND", "OR"),
  default_condition = "AND",
  inputs_separator = ",",
  display_empty_filter = TRUE,
  select_placeholder = "------",
  operators = NULL,
  add_na_filter = FALSE,
  return_value = c("r_rules", "rules", "sql", "all")
)
Arguments
inputId | 
 string. Input id for the builder.  | 
width | 
 Width of the builder. Default if "100%".  | 
filters | 
 list of list specifying the available filters in the builder. See example for a See https://querybuilder.js.org/#filters for details on the possible options  | 
plugins | 
 list of optional plugins.  | 
rules | 
 Initial set of rules. By default the builder will contain one empty rule  | 
optgroups | 
 List of groups in the filters and operators dropdowns.  | 
default_filter | 
 string. The   | 
sort_filters | 
 boolean \| string. Sort filters alphabetically, or with a custom JS function.  | 
allow_groups | 
 boolean \| integer. Number of allowed nested groups.
  | 
allow_empty | 
 boolean. If   | 
display_errors | 
 boolean. If   | 
conditions | 
 string. Array of available group conditions. Use the
  | 
default_condition | 
 Default active condition. Default 'AND'.  | 
inputs_separator | 
 string used to separate multiple inputs (for between operator). default is ",".  | 
display_empty_filter | 
 boolean. Default   | 
select_placeholder | 
 string. Label of the "no filter" option.  | 
operators | 
 NULL or list. If a list, format should follow that described here: https://querybuilder.js.org/#operators  | 
add_na_filter | 
 bool. Default is FALSE .If   | 
return_value | 
 string. On of   | 
Value
A htmltools::tagList() containing the queryBuilder
dependencies and configuration that can be added to a shiny UI definition.
Examples
library(shiny)
library(jqbr)
ui <- fluidPage(
  useQueryBuilder(),
  queryBuilderInput(
    inputId = "qb",
    filters = list(
      list(
        id = "name",
        type = "string"
      )
    )
  )
)
server <- function(input, output) {
  observeEvent(input$qb, {
    print(input$qb)
  })
}
# Add is_na filter
ui <- fluidPage(
  useQueryBuilder(),
  queryBuilderInput(
    inputId = "qb",
    add_na_filter = TRUE,
    return_value = "r_rules",
    filters = list(
      list(
        id = "name",
        type = "string"
      )
    )
  )
)
server <- function(input, output) {
  observeEvent(input$qb, {
    print(input$qb)
  })
}
if (interactive()) {
  shinyApp(ui, server)
}
run_jqbr_demo
Description
Run the jqbr demo app
Usage
run_jqbr_demo()
Value
A Shiny app
Examples
if (interactive()) {
  run_jqbr_demo()
}
updateQueryBuilder
Description
Update a queryBuilder with available methods.
Usage
updateQueryBuilder(
  inputId,
  setFilters = NULL,
  addFilter = NULL,
  setRules = NULL,
  destroy = FALSE,
  reset = FALSE,
  session = shiny::getDefaultReactiveDomain()
)
Arguments
inputId | 
 inputId of builder to update.  | 
setFilters | 
 list of lists container new filters.  | 
addFilter | 
 Named list containing   | 
setRules | 
 List of rules apply to the builder.  | 
destroy | 
 bool.   | 
reset | 
 bool.   | 
session | 
 The session object passed to function given to shinyServer. Default is getDefaultReactiveDomain().  | 
Value
An updated queryBuilderInput()
Examples
library(shiny)
library(jqbr)
# Button to reset the build an remove all rules
ui <- fluidPage(
  useQueryBuilder(),
  queryBuilderInput(
    inputId = "qb",
    filters = list(
      list(
        id = "name",
        type = "string"
      )
    )
  ),
  actionButton("reset", "Reset")
)
server <- function(input, output) {
  observeEvent(input$reset, {
    updateQueryBuilder(
      inputId = "qb",
      reset = TRUE
    )
  })
}
if (interactive()) {
  shinyApp(ui, server)
}
useQueryBuilder
Description
Make a call to useQueryBuilder in your ui code to load the
required dependencies for the queryBuilder and optionally specify the
bootstrap version to use.
Usage
useQueryBuilder(bs_version = c("3", "4", "5"))
Arguments
bs_version | 
 The version of bootstrap to use with the builder. Possible values are "3", "4" or "5"  | 
Value
list. html dependency for queryBuilderBinding.
See htmltools::htmlDependency() for further information.