The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
By default with {shinydashboard}
, all elements included
in the navbar will be displayed on the right side.
{shinydashboardPlus}
has a new option to add elements in
the left part of the dashboardHeader()
. Such items must be
passed in the leftUi argument (if multiple elements, they must
be wrapped in a tagList()
, as shown below).
library(shiny)
library(shinyWidgets)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
ui = dashboardPage(
header = dashboardHeader(
leftUi = tagList(
dropdownButton(
label = "Controls",
icon = icon("sliders-h"),
status = "primary",
circle = FALSE,
sliderInput(
inputId = "n",
label = "Number of observations",
min = 10, max = 100, value = 30
),
prettyToggle(
inputId = "na",
label_on = "NAs kept",
label_off = "NAs removed",
icon_on = icon("check"),
icon_off = icon("trash")
)
),
dropdownMenu(
type = "messages",
badgeStatus = "success",
messageItem(from = "Support Team", message = "This is the content of a message.", time = "5 mins"),
messageItem(from = "Support Team", message = "This is the content of another message.", time = "2 hours"),
messageItem(from = "New User", message = "Can I get some help?", time = "Today")
)
)
),
sidebar = dashboardSidebar(),
body = dashboardBody(
setShadow(class = "dropdown-menu")
),
title = "DashboardPage"
),
server = function(input, output) { }
)
This new feature perfectly works with the
dropdownButton()
from the {shinyWidgets}
packages by dreamRs (as long
as the screen size is large enough), as well as the classic
dropdownMenu()
from {shinydashboard}
. With
other individual elements, the result may not be as good, mainly for a
space reason. Indeed, a sliderInput()
would not be
optimized to be embedded in the header since its label which takes too
much space. This would require some CSS tricks, namely, reducing the
slider size, and this is not the philosophy of
{shinydashboardPlus}
.
dropdownMenu()
The new function dropdownBlock()
make it easy to embed
input elements in a left navbar menu. It does not hide when the user
click inside and is optimized to correctly render on mobile devices
(contrary to dropdownButton()
, see above).
shinyApp(
ui = dashboardPage(
header = dashboardHeader(
leftUi = tagList(
dropdownBlock(
id = "mydropdown",
title = "Dropdown 1",
icon = "sliders-h",
sliderInput(
inputId = "n",
label = "Number of observations",
min = 10, max = 100, value = 30
),
prettyToggle(
inputId = "na",
label_on = "NAs kept",
label_off = "NAs removed",
icon_on = icon("check"),
icon_off = icon("trash")
)
),
dropdownBlock(
id = "mydropdown2",
title = "Dropdown 2",
icon = "sliders-h",
prettySwitch(
inputId = "switch4",
label = "Fill switch with status:",
fill = TRUE,
status = "primary"
),
prettyCheckboxGroup(
inputId = "checkgroup2",
label = "Click me!",
thick = TRUE,
choices = c("Click me !", "Me !", "Or me !"),
animation = "pulse",
status = "info"
)
)
)
),
sidebar = dashboardSidebar(),
body = dashboardBody(
setShadow(class = "dropdown-menu")
),
title = "DashboardPage"
),
server = function(input, output) { }
)
In {shinydashboardPlus}
, taskItem()
,
messageItem()
and notificationItem
have a new
inputId parameter allowing them to behave like
shiny::actionButton
. This has always been quite frustrating
not to be able to interact more with these elements in
{shinydashboard}
.
In the same spirit of the sidebarUserPanel()
that
display user informations on the sidebar, the brand new
dashboardUser()
dropdown component may be used as an admin
panel or to display further information.
dashboardUserItem()
provides a refined column
container.
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
ui = dashboardPage(
header = dashboardHeader(userOutput("user")),
sidebar = dashboardSidebar(),
body = dashboardBody(),
title = "User dropdown"
),
server = function(input, output) {
output$user <- renderUser({
dashboardUser(
name = "Divad Nojnarg",
image = "https://adminlte.io/themes/AdminLTE/dist/img/user2-160x160.jpg",
title = "shinydashboardPlus",
subtitle = "Author",
footer = p("The footer", class = "text-center"),
fluidRow(
dashboardUserItem(
width = 6,
socialButton(
href = "https://dropbox.com",
icon = icon("dropbox")
)
),
dashboardUserItem(
width = 6,
socialButton(
href = "https://github.com",
icon = icon("github")
)
)
)
)
})
}
)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.