dashboardSidebar() and dashboardControlbar() default skin value is NULL.
This allows them to inherit from the parent dashboardPage() dark parameter and have either
a full light or full dark skin. Therefore, it won't be possible anymore to apply a light sidebar background with the dashboardPage() when the main theme is dark and inversely. If you want to do so, you have to set dark = NULL, for instance:library(shiny)
library(bs4Dash)
shinyApp(
ui = dashboardPage(
dark = NULL,
header = dashboardHeader(
title = dashboardBrand(
title = "My dashboard",
color = "primary",
href = "https://adminlte.io/themes/v3",
image = "https://adminlte.io/themes/v3/dist/img/AdminLTELogo.png"
)
),
sidebar = dashboardSidebar(skin = "dark"),
body = dashboardBody(
box(status = "danger"),
box(status = "primary"),
box(status = "orange")
),
controlbar = dashboardControlbar(skin = "dark"),
title = "DashboardPage"
),
server = function(input, output) { }
)
headTitles parameter from bs4Table().New navbar navigation menu.
navbarTab(), navbarMenu() and updateNavbarTabs() to create navbar navigation.
This will close #108.dropdownHeader() function to display Bootstrap 4 dropdown headers.dropdownDivider() as it was invisible.tabItems() has .list parameter to pass tabItem() elements as list.tabBox(). Increase padding for card with pills. Thanks @HugoGit39
for reporting.accordionItem() with .list parameter in accordion(). Thanks @vladimirstroganov for reporting.menuItem element) in the sidebar.help parameter behavior in dashboardPage(). If NULL, no icon is shown. If FALSE, icon and toggle are shown but not checked. If TRUE the toggle is checked.pagination() and updatePagination(). Bootstrap 4 implementation of
pagination.menuItem() applied wrong class to any nested element that is not
a menuSubItem(). Thanks @echoplaza for reporting.notificationItem() href does not work.menuSubItems() with apply() adds some extra text. Added .list
param to menuItem() to programmatically pass menuSubItem() as list.tabsetPanel() renders below the list of tabPanels when vertical = TRUE.
Changed layout to fluidRow. Thanks @lucas-alcantara for reporting.valueBox() and infoBox() in the render function section.
Thanks @corderoortiz for reporting.data-toggle="tab" when href is not NULL in tabsetPanel(). Thanks @veer0318 for reporting.tabsetPanel() id's not properly generated when inserting tabs to non-empty tabset. Thanks @DarkSideOfTheMat for reporting and giving hints.{shiny} and remove position from tabsetPanel(). This was long
time deprecated.bs4DashGallery() and tabsetPanel(). We now use bs4Dash::tabsetPanel().type = "hidden" for tabsetPanel. Fixes #248.renderMenu() not working. See #234.list param to tabBox() to allow programmatically generated items, like
in tabsetPanel(). Thanks @mtopartThis release is a patch to fix an issue preventing the release of Shiny 1.7.0.
{waiter} package but no user impact. Thanks @JohnCoene.Patch to fix CRAN warning on Mac M1.
shiny:::processDeps in favor of htmltools::renderTags. Does not
impact end user.This is to align with shinydashboard and shinydashboardPlus.
navbar param becomes header.old_school, sidebar_mini, sidebar_collapsed, controlbar_collapsed,
controlbar_overlay, enable_preloader, loading_duration and
loading_background. These parameters move to dashboardSidebar, controlbar ...freshTheme parameter to pass {fresh} powered themes.options parameter to configure AdminLTE3.preloader to use {waiter} as a preloading engine.... becomes left.right_text becomes right.controlbarIcon accepts shiny::icon instead of the icon name.sidebarIcon accepts shiny::icon instead of the icon name.title, titleWidth and disablesrc becomes image.collapsed and overlay.title.inputId to id.inputId becomes id.updateControlbar.session is not mandatoryinputId moved to the end.inputId renamed to id.collapsed and minified.width.opacity, title, brandColor, url and src.child_indent becomes childIndent..list to pass programmatically generated bs4SidebarMenuItem.href and newTab.icon expects shiny::icon.img and text become image and name, respectively.solidHeader behavior.bs4Card(). This is now part of
the new bs4CardSidebar().bs4Card(). It is now part of the dropdownItemList().bs4Card(). This is to reduce the number of parameters of cards.closable is now FALSE for bs4Card().dropdownItemList by cardDropdowndropdownItemListItem by cardDropdownIteminputId becomes id.icon expects shiny::icon.solidHeader behavior.status becomes color.icon expects shiny::icon.status becomes color... for subtitleiconStatus.href and fill.gradientColor to gradient.src becomes image.status becomes color.userBlock() to pass on title.src becomes image.titleUrl becomes href.icon expects shiny::icon.tabBox() from {shinydashboard}badge becomes badgeStatustype.shiny::icon.labelText by headerText..list and href.align.notificationItem() and messageItem()bs4Table() API.bs4Stars(): grade and maxstar, respectively become value and grade.listGroupItem(), remove type and put it in listGroup(). src becomes href.status becomes color in blockQuote.src from carouselItem()bs4Ribbon(), status becomes color. Remove size.bs4Badge(), status becomes color.userMessage(), src becomes image and side becomes type.timelineItemMedia(), src becomes image.timelineItem(), timelineStart() and timelineEnd(), icon expects shiny::icon.status becomes color in timelineItem(), timelineLabel(), timelineStart() and timelineEnd().userPost() and userPostMedia(), src becomes image. Removed collapseStatus.bs4Stars(), status becomes color.bs4ShowTab(), bs4HideTab() and bs4RemoveTab(). shiny vanilla function should work well now.bs4TabPanel().bs4TabSetPanel() becomes bs4TabsetPanel() and is built on top of shiny::tabsetPanel.cardProfile(), add bordered. src becomes image.cardProfileItemList().updatebs4TabSetPanel(): selected takes the name of the tab instead of its index. This is more convenient (same as in shinydashboard)bs4InfoBox()attachmentBlock() title_url to titleUrl (to match with a new upcoming package...)descriptionBlock(): number_color, number_icon, right_border and margin_bottom become
camel case parms (numberColor, numberIcon, rightBorder and marginBottom)descriptionBlock() only need the name of the icon ('times') insteadbs4Jumbotron(): btn_name becomes btnNameuserPost(): collapse_status becomes collapseStatuseasyClose param to boxSidebar() to allow to close sidebar on outside-click. Thanks @predict42-patrick for the suggestion and JS code.gradient parameter to valuebox().dashboardPage() to automatically toggle all tooltips and popovers. Use
with bs4TooltipUI() and bs4PopoverUI().useAutoColor() leveraging new Shiny features and {thematic} to automatically
style plots depending on the dashboard background color.dashboardSidebar().dashboardPage().updateAccordion().actionButton() is updated to provide Bootstrap 4 features.appButton().updateUserMessages().userList() and userListItem().productList() and productListItem().userDescription() and userBlock().skinSelector.dashboardUserItem(), userOutput() and renderUser().bs4DashBrand for better dashboard titles.bs4ShowTab() and bs4HideTab(): thanks @fmmattioni for the reminder ;)bs4CardLayout(): simplify the way to deal with bs4Card()!bs4CloseAlert(): programmatically close bs4Alert()bs4Toast(): include the builtin AdminLTE3 toasts!bs4SidebarMenuItem() and bs4SidebarMenuSubItem() at start.bs4DropdownMenuItem() may act as an actionButtonbs4Card() is maximized, the collapsible icon is hidden (does not make sense to have it)bs4CardLabel() to add text labels in bs4Card()bs4CardSidebar(): access the status via input$id. Add updatebs4CardSidebar() to toggle the card sidebarbs4PopoverServer(), bs4PopoverUI(), bs4TooltipUI() and bs4TooltipServer()bs4TabSetPanel(): you may access the currently selected tab with input$idbs4TabSetPanel() and bs4TabCard() so as to select
between pills or tabs (cosmetic choice). If type is not provided, the behaviour is unchanged (pills are the default)bs4DashFooter()bs4DashSidebar(). Thanks @mppallantebs4DashNavbar(). This is reintroduced by adminlte with a new css class namebs4ProgressBar()bs4InfoBox() to allow icon color
to be independant from the card status (https://adminlte.io/themes/v3/pages/widgets.html). Thanks @rolando-gswbs4Sortable() is initialized each time a new sortable element is added. Fixes #198.taskItem().indicators and .list to carousel().insertTab() is using more shiny vanilla elements.bs4UserMenu() does not close when clicked inside.bs4SidebarMenu(): to use old AdminLTE2 styling for
item selectionbs4DashControlbar() when it is opened will close it.
To keep it open, see belowbs4DashControlbar(): allow to block the controlbar statebs4SidebarMenuItem to align with shinydashboardbs4TabSetPanel() by defaultbs4TabSetPanel()bs4TabPanel() param order to align with shinybs4Table() API.hidden type is not available for bs4Dash::tabsetPanel that uses an old version of the
shiny::tabsetPanel. Thanks @zilch42.bs4Controlbar() now collapse when clicked outside, clicking on an input triggering the updatebs4Controlbar() would toggle it twice. Thanks @dwhdaisliderInput z-index and bs4DashPage() preloader. Thanks @analytichealth for the reportbs4DashSidebar() url link. Thanks @pvictorbs4Alert()bs4DropdownMenu() examplebs4InsertTab()bs4DashControlbar() so that
renderUI works. Thanks @artemklevtsovupdatebs4TabSetPanel() with renderUI. Thanks @jyjekbs4SidebarMenuItem(). See https://github.com/RinteRface/bs4Dash/issues/35. Thanks @aldomannbs4DashNavbar() since it does not exist in the new
AdminLTE versionbs4DropdownMenuItem: change text to message, date to time. Add new params: from, src, status and type.bs4DashSidebar() input binding to indicate the state (collapse: FALSE, open: TRUE) as well as
updatebs4Sidebar() to programmatically toggle its statebs4Controlbar() input binding to indicate the state (collapse: FALSE, open: TRUE) as well as
updatebs4Controlbar() to programmatically toggle its statebs4Card() input binding to indicate the state (collapse: FALSE, open: TRUE, maximize, closed, ...) as well as
updatebs4Card() to programmatically toggle its statebs4InsertTab() to programmatically insert bs4TabPanel() in bs4TabSetPanel()bs4RemoveTab() to programmatically remove bs4TabPanel() in bs4TabSetPanel()bs4DashPage() has a new sidebar_mini parameter. When TRUE, the sidebar has a minimum
width when collapsed (you still see icons). When false, it behaves like in shinydashboardbs4InfoBox() can now navigate between tabs if the tabName parameter is specified. It must however correspond
to an existing bs4TabItem() in the body!bs4ValueBox() has a footer argument. It is different from the href parameter. Thanks @stefanfritschbs4DashSidebar()bs4DashNavbar() to reduce the navbar sizegetAdminLTEColors() to preview all available color themesbs4DashSidebar() has a fixed layout. This prevent from not seeing sidebar items
if the body contains too many elementsbs4DashPage() has options to change the bs4Controlbar() behavior when it expands (see controlbar_overlay)bs4SidebarMenu() has 3 new parameters: flat (design effect), child_indent and compactbs4Card()bs4UserMenu() for bs4DashNavbar()bs4Ribbon(), a sort of enhanced label for cards or any contentbs4Quote(), an improved blockquote tag for Bootstrap 4bs4Card(). Thanks @analytichealthcolumn() function from Shiny to make it work with Bootstrap 4. Thanks @federicomarinibs4DashNavbar() background color issue.bs4DashBody() so that when no element is in the sidebar and no tabItems
are in the body, margin between the sidebar, the controlbar is not 0bs4Jumbotron(), do not show a button. Thanks @davidlvbbs4ProgressBar(): remove height and width parameters. Add size parameter. This
fix the progress behaviour which was wrongbs4DashControlbarMenu(), bs4DashControlbarItem() and updatebs4ControlbarMenu()updatebs4TabItems() and updateTabItems() to programatically update the selected
sidebar tab and the corresponding body tabupdatebs4TabSetPanel() and updateTabsetPanel() (aliases) to dynamically update bs4TabSetPanel() from
the server sidebs4Card() and bs4TabCard(). In other words, allow full screen optionbs4SidebarMenu(). Now by adding an id to the menu,
the user can recover the currently selected tab. Thanks @rpodcastbs4DashPage() can also be dashboardPage()bs4TabSetPanel()bs4SidebarMenuSubItem()bs4Table(), bs4TableItems() and bs4TableItem()bs4SidebarMenuItem()bs4SidebarMenuSubItem()bs4DashSidebar() and bs4DashControlbar(). Thanks @jamiebonouserPost()bs4SidebarMenuItem()bs4TabSetPanel() to the gallerybs4TabCard()bs4InfoBox() class. Thanks @henry090.bs4DashControlbar() toggle if no bs4DashControlbar() is given in bs4DashPage()attachmentBlock() image (and replace http by https)bs4TabSetPanel() and bs4TabCard(). bs4TabSetPanel() can now be used independently of bs4TabCard().
Need to provide id argument to bs4TabCard().bs4DashPage()bs4TabCard(). Buttons visible by default. PR by @statnmapbs4DashPage()bs4Sortable() and all necessary javascript dependenciesuserPost(), userPostMedia(), userPostTagItems() and userPostTagItem()userMessages() and userMessage()descriptionBlock(), attachmentBlock() and cardPad()bs4SidebarUserPanel()cardProfile(), cardProfileItemList() and cardProfileItem()bs4SocialCard() and cardComment()userPost()bs4Card() to enable or disable overflowbs4Card() footer when footer is NULLbs4Accordion(): click on 1 item collapse all other items in the same accordion
add an id argument.bs4DashPage()bs4TabCard(). Thanks @stephLHbs4DashControlbar(). Thanks @stephLHbs4TabCard() max-height attribute. Thanks @stephLHbs4DropdownMenu(), add id arg to bs4DashControlbar() PR by @bjornlindbs4TabCard(). PR by @statnmapbs4Card() starts on a collapsed state, the content is displayed when
uncollapsed is pressed. Thanks @stanmap for the remark. (See here for a similar issue)bs4Card(): the collapse icon changes to + and - depending on the current collapse status.bs4DropdownMenu()bs4TabPanel(): handle tabName with space and with punctuation characters. Thanks @stephLHbs4TabCard(): when the user set 2 or more active tabs at the same time, only
the first one is selectedbs4TabCard(), as they have the same class (tab-pane).bs4Card()bs4ValueBox() footer is not shown when the external link is NULLbs4ValueBox() external link opens in a new pagebs4DashPage() to control the sidebar opening at startbs4DashGallery(). Add a "theme" argumentionicon() (implementation of ionicons)bs4DashNavbar() (#7, thanks @theRcast)