Package 'regexSelect'

Title: Regular Expressions in 'shiny' Select Lists
Description: 'shiny' extension that adds regular expression filtering capabilities to the choice vector of the select list.
Authors: Jonathan Sidi [aut, cre]
Maintainer: Jonathan Sidi <[email protected]>
License: GPL-2 | GPL-3
Version: 1.0.0
Built: 2024-11-19 04:40:18 UTC
Source: https://github.com/yonicd/regexselect

Help Index


Create a selectize list input control with regular expression capabilities

Description

Create a selectize list that can be used to choose a single or multiple items from a list of values with extension for regular expression.

Usage

regexSelect(input, output, session, data)

Arguments

input

The input slot that will be used to access the value.

output

The output variable to read the list of values returned be regex query

session

The session of the shiny application

data

reactive element contains a character vector where matches are sought, or an object which can be coerced by as.character to a character vector

Value

reactive character vector

Examples

if(interactive()){
ui <- shiny::fluidPage(
regexSelectUI(id = "a", label = "Variable:",choices = names(iris)),
shiny::tableOutput("data")
)


ui.show <- shiny::fluidPage(
regexSelectUI(id = "a", label = "Variable:",choices = names(iris),checkbox.show = TRUE),
shiny::tableOutput("data")
)

server <- function(input, output, session) {
 curr_cols<-shiny::callModule(regexSelect, "a",shiny::reactive(names(iris)))
 
 shiny::observeEvent(curr_cols(),{
 cols_now<-curr_cols()
 if(length(cols_now)==0)  cols_now<-names(data())
 output$data <- shiny::renderTable({iris[,cols_now , drop = FALSE]}, rownames = TRUE)
 })
}

#do not show regex checkboxes
shiny::shinyApp(ui, server)

#show regex checkboxes
shiny::shinyApp(ui.show, server)
 }

Create UI object for a selectize list input control with regular expression capabilities

Description

Create UI object for a selectize list that can be used to choose a single or multiple items from a list of values with extension for regular expression.

Usage

regexSelectUI(id, label, choices, checkbox.selected = c("enable",
  "ignore.case"), checkbox.inline = TRUE, checkbox.show = FALSE)

Arguments

id

id of shiny module used in regexSelect

label

character, label of the selectize object

choices

List of values to select from. If elements of the list are named, then that name rather than the value is displayed to the user. This can also be a named list whose elements are (either named or unnamed) lists or vectors. If this is the case, the outermost names will be used as the "optgroup" label for the elements in the respective sublist. This allows you to group and label similar choices.

checkbox.selected

character, options of the checkbox to set as TRUE, see details, Default: c("enable", "ignore.case")

checkbox.inline

boolean, render the checkbox choices inline (i.e. horizontally), Default: TRUE

checkbox.show

boolean, show the checkbox options as part of UI output or hide them, Default: FALSE

Details

checkbox.selected is used as a proxy for ellipses to pass arguments to a grep(selectize value, selectize choices,value=TRUE,...). This makes the options in checkbox.selected the same as the arguments that pass to grep: ignore.case, perl,fixed and invert.

In addition there are two more arguments that the user can set enable which toggles the grep functionality to return it to regular selectize with options multiple=TRUE and create=TRUE. The other argument is retain, this lets the user control if the search terms are added to the selectize choices or to keep it as originally entered, there by converting the selectize into a search field. If checkbox.show is false the initial values passed through checkbox.selected will be used.

Value

A list of HTML elements that can be added to a UI definition.

Examples

if(interactive()){
ui <- shiny::fluidPage(
regexSelectUI(id = "a", label = "Variable:",choices = names(iris)),
shiny::tableOutput("data")
)


ui.show <- shiny::fluidPage(
regexSelectUI(id = "a", label = "Variable:",choices = names(iris),checkbox.show = TRUE),
shiny::tableOutput("data")
)

server <- function(input, output, session) {
 curr_cols<-shiny::callModule(regexSelect, "a",shiny::reactive(names(iris)))
 
 shiny::observeEvent(curr_cols(),{
 cols_now<-curr_cols()
 if(length(cols_now)==0)  cols_now<-names(data())
 output$data <- shiny::renderTable({iris[,cols_now , drop = FALSE]}, rownames = TRUE)
 })
}

#do not show regex checkboxes
shiny::shinyApp(ui, server)

#show regex checkboxes
shiny::shinyApp(ui.show, server)
 }