Home > Mobile >  tabBox in shiny - get title above tabs
tabBox in shiny - get title above tabs

Time:10-22

Does anyone know how to make the title of a tabBox go above the tabs in a shinydashboard app? For example, in the figure below, the title is on the right, but I would like it to go on top of the box.

enter image description here

Code for this tabBox:

library(shiny)
library(shinydashboard)
  ui = dashboardPage(dashboardHeader(title = "tabBoxes"), dashboardSidebar(),
dashboardBody(
  fluidRow(
tabBox(title = HTML("Hello friend<br>"),
                      tabPanel("merp", "hi there"),
                      tabPanel("derp", "hello"),
                      tabPanel("herp", "howdy")
      ))
    )

)
  
  
  
  server = function(input, output) {
    # The currently selected tab from the first box
    output$tabset1Selected <- renderText({
      input$tabset1
    })
  }
shinyApp(ui = ui, server = server

)

CodePudding user response:

There is the side argument e.g

library(shiny)
library(shinydashboard)

body <- dashboardBody(
  fluidRow(
    tabBox(
      title = "First tabBox",
      # The id lets us use input$tabset1 on the server to find the current tab
      id = "tabset1", height = "250px",side = 'right',
      tabPanel("Tab1", "First tab content"),
      tabPanel("Tab2", "Tab content 2")
)
))

shinyApp(
  ui = dashboardPage(dashboardHeader(title = "tabBoxes"), dashboardSidebar(), body),
  server = function(input, output) {
    # The currently selected tab from the first box
    output$tabset1Selected <- renderText({
      input$tabset1
    })
  }
)

CodePudding user response:

For those who might look for the solution here, a pretty simple fix was to put the tabBox (with no title) inside of a box with a title:

library(shiny)
library(shinydashboard)
  ui = dashboardPage(dashboardHeader(title = "tabBoxes"), dashboardSidebar(),
dashboardBody(
  fluidRow(box(title = HTML("Hello friend<br>"),
tabBox(
                      tabPanel("merp", "hi there"),
                      tabPanel("derp", "hello"),
                      tabPanel("herp", "howdy"))
      ))
    )

)
  
  
  
  server = function(input, output) {
    # The currently selected tab from the first box
    output$tabset1Selected <- renderText({
      input$tabset1
    })
  }
shinyApp(ui = ui, server = server

)

enter image description here

  • Related