valueBoxModule

Andy Merlino

2021-09-23

valueBoxModule

valueboxModule does not have anything to do with user feedback, but we use it frequently, so we decided to include it in shinyFeedback.

valueBoxModule is similar to shinydashboard::valueBox() but it moves the value box UI from the server to the UI. Moving the value box UI to the UI has the benefit of only rendering the box once when the page is loaded rather than delaying the initial render until the initial value is calculated and rerendering the box each time that the value updates. By moving the box content to the UI, the value box does not flash onto the screen when rendered.

valueBoxModule also allows for more custom styling of the box colors than shinydashboard::valueBox().

library(shiny)
library(shinyFeedback)


server <- function(input, output, session) {
  
  count <- reactiveVal(0)
  
  observeEvent(input$counter_button, {
    count(count() + 1)
  })
  
  callModule(
    valueBoxModule,
    "betterBox",
    value = count
  )
}

ui <- fluidPage(
  fluidRow(
    column(
      12,
      actionButton(
        "counter_button",
        "+1"
      )
    )
  ),
  br(),
  fluidRow(
    valueBoxModuleUI(
      "betterBox",
      "Counter",
      icon = icon("rocket")
    )
  )
)


shinyApp(ui, server)