An action sheet may contain multiple buttons. Each of them triggers an action on the server side.
f7ActionSheet( id, buttons, grid = FALSE, session = shiny::getDefaultReactiveDomain() )
id | Unique id. This gives the state of the action sheet. input$id is TRUE when opened and inversely. Importantly, if the action sheet has never been opened, input$id is NULL. |
---|---|
buttons | list of buttons such as buttons <- list( list( text = "Notification", icon = f7Icon("info"), color = NULL ), list( text = "Dialog", icon = f7Icon("lightbulb_fill"), color = NULL ) ) The currently selected button may be accessed via input$<sheet_id>_button. The value is numeric. When the action sheet is closed, input$<sheet_id>_button is NULL. This is useful when you want to trigger events after a specific button click. |
grid | Whether to display buttons on a grid. Default to FALSE. |
session | Shiny session object. |
if (interactive()) { library(shiny) library(shinyMobile) shinyApp( ui = f7Page( title = "Action sheet", f7SingleLayout( navbar = f7Navbar("Action sheet"), br(), f7Button(inputId = "go", label = "Show action sheet", color = "red") ) ), server = function(input, output, session) { observe({ print(list( sheetOpen = input$action1, button = input$action1_button )) }) observeEvent(input$action1_button, { if (input$action1_button == 1) { f7Notif( text = "You clicked on the first button", icon = f7Icon("bolt_fill"), title = "Notification", titleRightText = "now" ) } else if (input$action1_button == 2) { f7Dialog( inputId = "test", title = "Click me to launch a Toast!", type = "confirm", text = "You clicked on the second button" ) } }) observeEvent(input$test, { f7Toast(text = paste("Alert input is:", input$test)) }) observeEvent(input$go, { f7ActionSheet( grid = TRUE, id = "action1", buttons = list( list( text = "Notification", icon = f7Icon("info"), color = NULL ), list( text = "Dialog", icon = f7Icon("lightbulb_fill"), color = NULL ) ) ) }) } ) ### in shiny module library(shiny) library(shinyMobile) sheetModuleUI <- function(id) { ns <- NS(id) f7Button(inputId = ns("go"), label = "Show action sheet", color = "red") } sheetModule <- function(input, output, session) { ns <- session$ns observe({ print(list( sheetOpen = input$action1, button = input$action1_button )) }) observeEvent(input$action1_button, { if (input$action1_button == 1) { f7Notif( text = "You clicked on the first button", icon = f7Icon("bolt_fill"), title = "Notification", titleRightText = "now" ) } else if (input$action1_button == 2) { f7Dialog( id = ns("test"), title = "Click me to launch a Toast!", type = "confirm", text = "You clicked on the second button", ) } }) observeEvent(input$test, { f7Toast(text = paste("Alert input is:", input$test)) }) observeEvent(input$go, { f7ActionSheet( grid = TRUE, id = ns("action1"), buttons = list( list( text = "Notification", icon = f7Icon("info"), color = NULL ), list( text = "Dialog", icon = f7Icon("lightbulb_fill"), color = NULL ) ) ) }) } shinyApp( ui = f7Page( title = "Action sheet", f7SingleLayout( navbar = f7Navbar("Action sheet"), br(), sheetModuleUI(id = "sheet1") ) ), server = function(input, output, session) { callModule(sheetModule, "sheet1") } ) }