Move R Shiny showNotification to center of screen

后端 未结 1 1200
醉梦人生
醉梦人生 2021-02-08 02:14

I am looking at customizing the showNotification() functionality from Shiny.

https://gallery.shinyapps.io/116-notifications/

I would like the messag

相关标签:
1条回答
  • 2021-02-08 02:47

    You can use tags$style to overwrite the CSS class properties (in this case: .shiny-notification). You could also adjust other properties like width and height with that approach.

    The css part would be:

    .shiny-notification {
                 position:fixed;
                 top: calc(50%);
                 left: calc(50%);
                 }
    

    that sets the notification to 50% of screen width and 50% height width.

    You can include the css code in shiny by using the following in the ui function.

    tags$head(
          tags$style(
            HTML(CSS-CODE....)
          )
    )
    

    A full reproducible app is below:

    library(shiny)
    
    shinyApp(
      ui = fluidPage(
        tags$head(
          tags$style(
            HTML(".shiny-notification {
                 position:fixed;
                 top: calc(50%);
                 left: calc(50%);
                 }
                 "
                )
            )
        ),
        textInput("txt", "Content", "Text of message"),
        radioButtons("duration", "Seconds before fading out",
                     choices = c("2", "5", "10", "Never"),
                     inline = TRUE
        ),
        radioButtons("type", "Type",
                     choices = c("default", "message", "warning", "error"),
                     inline = TRUE
        ),
        checkboxInput("close", "Close button?", TRUE),
        actionButton("show", "Show"),
        actionButton("remove", "Remove most recent")
      ),
      server = function(input, output) {
        id <- NULL
    
        observeEvent(input$show, {
          if (input$duration == "Never")
            duration <- NA
          else 
            duration <- as.numeric(input$duration)
    
          type <- input$type
          if (is.null(type)) type <- NULL
    
          id <<- showNotification(
            input$txt,
            duration = duration, 
            closeButton = input$close,
            type = type
          )
        })
    
        observeEvent(input$remove, {
          removeNotification(id)
        })
      }
    )
    

    The app template used below i took from the code in the link you provided.

    0 讨论(0)
提交回复
热议问题