From 8435b5b52669c5785fcb00381a26b75f94a38ae5 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Fri, 2 Aug 2024 00:24:40 +0200 Subject: [PATCH 1/9] start 2.3.4 --- NEWS.md | 7 +++++++ _pkgdown.yml | 8 +++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index ceb7eb23..fc75946a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,10 @@ +# bs4Dash 2.3.4 + +- Added shinylive to support documentation examples. + +## Minor change +- Update jquery-ui to 1.13.2. Thanks @biognosys-so. + # bs4Dash 2.3.3 ## Breaking change (potential) diff --git a/_pkgdown.yml b/_pkgdown.yml index 94b212f8..8e85e181 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -240,8 +240,8 @@ navbar: articles: - title: User guide - desc: ~ - navbar: User Guide + desc: User Guide + navbar: ~ contents: - '`step-by-step`' - '`improved-boxes`' @@ -252,7 +252,9 @@ articles: news: releases: - - text: "bs4Dash 2.4.0.9000" + - text: "bs4Dash 2.3.4" + - text: "bs4Dash 2.3.3" + - text: "bs4Dash 2.3.0" - text: "bs4Dash 2.2.1" - text: "bs4Dash 2.1.0" - text: "bs4Dash 2.0.3" From 9cb189e1f025168d382b49f9e20267016400ccdc Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Thu, 8 Aug 2024 23:26:20 +0200 Subject: [PATCH 2/9] replace first link --- DESCRIPTION | 4 +++- R/sysdata.rda | Bin 0 -> 10331 bytes R/utils.R | 14 ++++++++++++++ _pkgdown.yml | 4 ++++ inst/shinylive/tools.R | 19 +++++++++++++++++++ netlify.toml | 2 -- vignettes/bs4Dash.Rmd | 34 ++++++---------------------------- 7 files changed, 46 insertions(+), 31 deletions(-) create mode 100644 R/sysdata.rda create mode 100644 inst/shinylive/tools.R delete mode 100644 netlify.toml diff --git a/DESCRIPTION b/DESCRIPTION index 0d6d2cea..aba71e2a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -11,7 +11,7 @@ Maintainer: David Granjon Description: Make 'Bootstrap 4' Shiny dashboards. Use the full power of 'AdminLTE3', a dashboard template built on top of 'Bootstrap 4' . -URL: https://rinterface.github.io/bs4Dash/index.html, https://github.com/RinteRface/bs4Dash +URL: https://rinterface.github.io/bs4Dash/index.html, https://github.com/RinteRface/bs4Dash, https://bs4dash.rinterface.com/ BugReports: https://github.com/RinteRface/bs4Dash/issues License: GPL (>= 2) | file LICENSE Imports: @@ -56,3 +56,5 @@ Collate: 'skinSelector.R' 'utils.R' RdMacros: lifecycle +Depends: + R (>= 2.10) diff --git a/R/sysdata.rda b/R/sysdata.rda new file mode 100644 index 0000000000000000000000000000000000000000..770fa7456cf38b4848d12f0811d0bc989e10782e GIT binary patch literal 10331 zcmV-hD5TdyT4*^jL0KkKS)=6y6#x!Zf3*KGzyS*X|N1}w|M0*6|L_1H00;mufeBzC zpD&o(sNZbvJKsC+Uv}@R^}fD>yW8E{X?EW`wM9A|_WI@RtLUxl``J3(J?CdVE%y6Q zzP_d|r(5gY*uBYnzWe9TcfNSn z!jnJ~6DCXnG8$rJ$$$YQX*D#->KZgO(dv33L;wI20T=)P2*?tYWMfD)05k%i6D9&+ zWEnIjCQTY?sp+AqlAthv0AvhQ1i)#gO&STKQ)tA(Wlw5)X`s}g00000s%;o1DUzSG zO*F!2G-S!6Nt&A|#Yd@#14fxL01Y631Zje3#0?q^Gy$L$6F>ozA)p?Eh0?n~-_*c} z-;%)q%pE2Lp&;Z82mr`WK|B_tPu?_GS_gCZh{%s|>(Gx*AVfJK8 zp1){diWuA%zZ@Oi#%4vK zUe3s4_Efkch!K7Oit!P_6u^k%kRmsrL|{O9W}CW{zmJptFMc>%)Ce1AIwtJ3ml2Rq z7d#&J2vyzP)M0ubJDif>-CeRO2$ZRw7*zKlL2YO*-~JK>Cv*+`)g>@=e|<_)dw#_> z4vty^4X|^!=g$Nqnn^RaAyy1gO5#V5De;@3W+fWvi{#0gZw%>UtKE6#EDdbq>E|Xo zCPcdB9dU`>*mF8Oqx{roGpF>@UF#aHEtmct2s#VG2=+Xz(bkq+?sq7S#rG#w-kaev zSF4MlITob3wuC;J(KEn~S(nMDAhNThZ#Dpgxbd%(`#h&R0aH}BD^rtJb^kCi_7{OQ5QN~1j?2Z zCOPr~)G$I~d3H;4m(J52cBMF$wk)uzv%w-{K}%AOEv&sZ38O@F2DS-DWSm17+@q`A znpQ?t4ZfBlAEV_%B)_!Otv?A5exTS(@hVkS;ifW5hs`Tzf!;J_pmZV60%8|E@YK@H z1Q5PemPxFxm3v!{N>S*vR&6QS%=Ze;c4B}c&fleM_g16r*;*63hpv#GFqkV-Ff+)R zz4Ux4i0DwHHEdRN@vNP1UzW6aUWbMShuV=5{PU{2o}Xi<21x1Yrw@U�{s!?`Ibs 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 literal 0 HcmV?d00001 diff --git a/R/utils.R b/R/utils.R index 2e06a257..7e8b4574 100644 --- a/R/utils.R +++ b/R/utils.R @@ -748,3 +748,17 @@ get_parent_args <- function() { cl <- sys.call(-3) as.list(cl)[-1] } + +# For shinylive examples +create_link_iframe <- function(link) { + shiny::tags$iframe( + class = "html-fill-item", + src = link, + height = "800", + width = "100%", + style = "border: 1px solid rgba(0,0,0,0.175); border-radius: .375rem;", + allowfullscreen = "", + allow = "autoplay", + `data-external` = "1" + ) +} \ No newline at end of file diff --git a/_pkgdown.yml b/_pkgdown.yml index 8e85e181..712c4799 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,3 +1,7 @@ +template: + bootstrap: 5 + +url: https://bs4dash.rinterface.com/ reference: - title: Basic dashboard functions desc: Dashboard skeleton functions diff --git a/inst/shinylive/tools.R b/inst/shinylive/tools.R new file mode 100644 index 00000000..066918d4 --- /dev/null +++ b/inst/shinylive/tools.R @@ -0,0 +1,19 @@ +pak::pak("parmsam/r-shinylive@feat/encode-decode-url") + +create_shinylive_links <- function(path) { + + dirs <- list.dirs(path)[-1] + + vapply( + list.dirs(path)[-1], + shinylive:::url_encode_dir, + FUN.VALUE = character(1) + ) +} + +create_vignettes_links <- function() { + create_shinylive_links("inst/examples/vignettes-demos") +} + +shinylive_links <- create_vignettes_links() +usethis::use_data(shinylive_links, internal = TRUE, overwrite = TRUE) \ No newline at end of file diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index 5f3a3db9..00000000 --- a/netlify.toml +++ /dev/null @@ -1,2 +0,0 @@ -[build] - publish = "docs" diff --git a/vignettes/bs4Dash.Rmd b/vignettes/bs4Dash.Rmd index c68f040f..2107da69 100644 --- a/vignettes/bs4Dash.Rmd +++ b/vignettes/bs4Dash.Rmd @@ -10,6 +10,7 @@ vignette: > --- ```{r, include = FALSE} +library(bslib) knitr::opts_chunk$set( collapse = TRUE, comment = "#>" @@ -83,33 +84,10 @@ Below is a simple app you may build with `{bs4Dash}`. Interestingly, you'll be a the scroll to top button feature if you scroll to the bottom (bottom-right corner), as well as the live theme switcher in the navigation bar that goes from light to dark. This new feature is exclusive to `{bs4Dash}`. -```{r basic-demo-code, eval=FALSE} -library(shiny) -library(bs4Dash) - -shinyApp( - ui = dashboardPage( - 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(), - body = dashboardBody( - lapply(getAdminLTEColors(), function(color) { - box(status = color) - }) - ), - controlbar = dashboardControlbar(), - title = "DashboardPage" - ), - server = function(input, output) { } +```{r basic-demo-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/scrollToTop"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-scrollToTop/", TRUE) -``` From 8c355cc32cb86e1d03fbf049f7bd37ee403fb632 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Thu, 8 Aug 2024 23:30:07 +0200 Subject: [PATCH 3/9] css preloader vignette --- vignettes/css-preloader.Rmd | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/vignettes/css-preloader.Rmd b/vignettes/css-preloader.Rmd index faa5a19f..dee347a0 100644 --- a/vignettes/css-preloader.Rmd +++ b/vignettes/css-preloader.Rmd @@ -10,6 +10,7 @@ vignette: > --- ```{r setup, include = FALSE} +library(bslib) knitr::opts_chunk$set( collapse = TRUE, comment = "#>" @@ -23,29 +24,10 @@ Pass the argument `preloader` to the `dashboardPage()` function. It expects a li That's all! -```{r waiter-code, eval=FALSE} -library(shiny) -library(bs4Dash) -library(waiter) -shinyApp( - ui = dashboardPage( - preloader = list(html = tagList(spin_1(), "Loading ..."), color = "#3c8dbc"), - header = dashboardHeader(), - sidebar = dashboardSidebar(), - body = dashboardBody( - actionButton("reload", "Reload") - ), - title = "Preloader" - ), - server = function(input, output, session) { - # fake reload - observeEvent(input$reload, { - session$reload() - }) - } +```{r waiter-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/preloader"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-preloader/", TRUE) -``` \ No newline at end of file From c5e2e329a1a894ba48d66749788184fbb73d5a09 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Thu, 8 Aug 2024 23:36:06 +0200 Subject: [PATCH 4/9] extra elements vignette --- vignettes/extra-elements.Rmd | 166 +++-------------------------------- 1 file changed, 12 insertions(+), 154 deletions(-) diff --git a/vignettes/extra-elements.Rmd b/vignettes/extra-elements.Rmd index 1dc0bc73..52c6f26e 100644 --- a/vignettes/extra-elements.Rmd +++ b/vignettes/extra-elements.Rmd @@ -10,6 +10,7 @@ vignette: > --- ```{r setup, include=FALSE} +library(bslib) knitr::opts_chunk$set(echo = TRUE) ``` @@ -22,66 +23,12 @@ expects to contain `accordionItems()`. Importantly, to guaranty the uniqueness o we must provide an __id__ parameter. This parameter allows to programmatically toggle any accordion item, through an `updateAccordion()` function. -```{r accordion-code, eval=FALSE} -library(shiny) -library(bs4Dash) - - shinyApp( - ui = dashboardPage( - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - radioButtons("controller", "Controller", choices = c(1, 2)), - br(), - accordion( - id = "accordion1", - accordionItem( - title = "Accordion 1 Item 1", - status = "danger", - collapsed = TRUE, - "This is some text!" - ), - accordionItem( - title = "Accordion 1 Item 2", - status = "warning", - collapsed = FALSE, - "This is some text!" - ) - ), - accordion( - id = "accordion2", - accordionItem( - title = "Accordion 2 Item 1", - status = "info", - collapsed = TRUE, - "This is some text!" - ), - accordionItem( - title = "Accordion 2 Item 2", - status = "success", - collapsed = FALSE, - "This is some text!" - ) - ) - ), - title = "Accordion" - ), - server = function(input, output, session) { - observeEvent(input$controller, { - updateAccordion(id = "accordion1", selected = input$controller) - }) - - observe(print(input$accordion1)) - - observeEvent(input$accordion1, { - toast(sprintf("You selected accordion N° %s", input$accordion1)) - }) - } - ) -``` - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-accordions/", TRUE) +```{r accordions-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/accordions"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" +) ``` ## User messages @@ -118,99 +65,10 @@ the color is inherited from the `userMessages()` status, while for a received me the color is gray by default. The __text__ argument refers to the message content. It may be simple text, shiny tags or event any combinations of shiny inputs/ouput, as shown in the below example. - -```{r chat-code, eval=FALSE} -shinyApp( - ui = dashboardPage( - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - fluidRow( - actionButton("remove", "Remove message"), - actionButton("add", "Add message"), - actionButton("update", "Update message") - ), - numericInput("index", "Message index:", 1, min = 1, max = 3), - br(), - br(), - userMessages( - width = 6, - status = "danger", - id = "message", - userMessage( - author = "Alexander Pierce", - date = "20 Jan 2:00 pm", - image = "https://adminlte.io/themes/AdminLTE/dist/img/user1-128x128.jpg", - type = "received", - "Is this template really for free? That's unbelievable!" - ), - userMessage( - author = "Sarah Bullock", - date = "23 Jan 2:05 pm", - image = "https://adminlte.io/themes/AdminLTE/dist/img/user3-128x128.jpg", - type = "sent", - "You better believe it!" - ) - ) - ), - title = "user Message" - ), - server = function(input, output, session) { - observeEvent(input$remove, { - updateUserMessages("message", action = "remove", index = input$index) - }) - observeEvent(input$add, { - updateUserMessages( - "message", - action = "add", - content = list( - author = "David", - date = "Now", - image = "https://i.pinimg.com/originals/f1/15/df/f115dfc9cab063597b1221d015996b39.jpg", - type = "received", - text = tagList( - sliderInput( - "obs", - "Number of observations:", - min = 0, - max = 1000, - value = 500 - ), - plotOutput("distPlot") - ) - ) - ) - }) - - output$distPlot <- renderPlot({ - hist(rnorm(input$obs)) - }) - - observeEvent(input$update, { - updateUserMessages( - "message", - action = "update", - index = input$index, - content = list( - text = tagList( - appButton( - inputId = "reload", - label = "Click me!", - icon = icon("sync"), - dashboardBadge(1, color = "danger") - ) - ) - ) - ) - }) - - observeEvent(input$reload, { - toast(title = "Yeah") - }) - } +```{r chat-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/userMessages"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-userMessages/") -``` \ No newline at end of file From b004868ca85258a7f31fa42220cfdabf59290a8e Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Mon, 19 Aug 2024 17:28:57 +0200 Subject: [PATCH 5/9] boxes + skins --- vignettes/improved-boxes.Rmd | 328 ++++------------------------------- vignettes/more-skins.Rmd | 127 ++------------ 2 files changed, 41 insertions(+), 414 deletions(-) diff --git a/vignettes/improved-boxes.Rmd b/vignettes/improved-boxes.Rmd index b0f7bf09..fac9ec86 100644 --- a/vignettes/improved-boxes.Rmd +++ b/vignettes/improved-boxes.Rmd @@ -8,6 +8,10 @@ vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- + +```{r setup, include=FALSE} +library(bslib) +``` ## Boxes on Steroids! @@ -24,86 +28,13 @@ is able to provide more interactivity to this component. For instance, you may: To benefit from that feature, one must pass the _id_ parameter and access it on the server side with `input$`. Let's consider an example: - -```{r boxAPI-code, eval=FALSE} -library(shiny) -library(bs4Dash) -ui <- dashboardPage( - title = "Box API", - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - tags$style("body { background-color: ghostwhite}"), - fluidRow( - actionButton("toggle_box", "Toggle Box"), - actionButton("remove_box", "Remove Box", class = "bg-danger"), - actionButton("restore_box", "Restore Box", class = "bg-success"), - actionButton("update_box", "Update Box", class = "bg-primary") - ), - br(), - box( - title = textOutput("box_state"), - "Box body", - id = "mybox", - collapsible = TRUE, - closable = TRUE, - plotOutput("plot") - ) - ) -) - -server <- function(input, output, session) { - output$plot <- renderPlot({ - req(!input$mybox$collapsed) - plot(rnorm(200)) - }) - - output$box_state <- renderText({ - state <- if (input$mybox$collapsed) "collapsed" else "uncollapsed" - paste("My box is", state) - }) - - observeEvent(input$toggle_box, { - updateBox("mybox", action = "toggle") - }) - observeEvent(input$remove_box, { - updateBox("mybox", action = "remove") - }) - - observeEvent(input$restore_box, { - updateBox("mybox", action = "restore") - }) - - observeEvent(input$update_box, { - updateBox( - "mybox", - action = "update", - options = list( - title = h2("New title", dashboardBadge(1, color = "primary")), - status = "danger", - solidHeader = TRUE, - width = 4 - ) - ) - }) - - observeEvent(input$mybox$visible, { - collapsed <- if (input$mybox$collapsed) "collapsed" else "uncollapsed" - visible <- if (input$mybox$visible) "visible" else "hidden" - message <- paste("My box is", collapsed, "and", visible) - toast( - title = message, - options = list( - autohide = TRUE, - class = "bg-pink", - position = "topRight" - ) - ) - }) -} - -shinyApp(ui, server) +```{r boxAPI-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/box-api"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" +) ``` We call the `updateBox()` function, specifying the action to accomplish: @@ -116,10 +47,6 @@ We call the `updateBox()` function, specifying the action to accomplish: Knowing the state of a box significantly opens new possibilities within the application, thereby increasing interactivity. If you want to know more about the underlying mechanisms, have a look at the box widget [documentation](https://adminlte.io/docs/3.1//javascript/card-widget.html). -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-box-api/", deps = TRUE) -``` - ### Box components With `{bs4Dash}`, you may embed labels, a sidebar and dropdown menus in the box header. @@ -139,102 +66,30 @@ do not want to show in the box, while the box body generally contains visualizat the latter displayed on the very right side of the box header, as depicted in Figure \@ref(fig:boxTools). Below is an example showing how to set up the sidebar and toggle it. -```{r boxSidebar-code, eval=FALSE} -shinyApp( - ui = dashboardPage( - header = dashboardHeader(), - body = dashboardBody( - box( - title = "Update box sidebar", - closable = TRUE, - width = 12, - height = "500px", - solidHeader = FALSE, - collapsible = TRUE, - actionButton("update", "Toggle card sidebar"), - sidebar = boxSidebar( - id = "mycardsidebar", - sliderInput( - "obs", - "Number of observations:", - min = 0, - max = 1000, - value = 500 - ) - ), - plotOutput("distPlot") - ) - ), - sidebar = dashboardSidebar() - ), - server = function(input, output, session) { - observe(print(input$mycardsidebar)) - - output$distPlot <- renderPlot({ - hist(rnorm(input$obs)) - }) - - observeEvent(input$update, { - updateBoxSidebar("mycardsidebar") - }) - } +```{r boxSidebar-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/box-sidebar"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` What is the interest of being able to toggle the sidebar on the server? Image you want -to open the sidebar as soon as the user clicks on a specific action button. This is definitely possible. - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-box-sidebar/") -``` +to open the sidebar as soon as the user clicks on a specific action button. #### Box Dropdown `boxDropdown()` is a super powerful tool since all dropdown items may behave like action buttons. This feature allows to seamlessly add interactivity to the box component and gather features in one place. In the example below, clicking on the first item triggers a `toast()`. -```{r boxDropdown-code, eval=FALSE} -shinyApp( - ui = dashboardPage( - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - box( - title = "Closable Box with dropdown", - closable = TRUE, - width = 12, - status = "warning", - solidHeader = FALSE, - collapsible = TRUE, - dropdownMenu = boxDropdown( - boxDropdownItem("Click me", id = "dropdownItem", icon = icon("heart")), - boxDropdownItem("item 2", href = "https://www.google.com/"), - dropdownDivider(), - boxDropdownItem("item 3", icon = icon("th")) - ), - "My box" - ) - ) - ), - server = function(input, output) { - observeEvent(input$dropdownItem, { - toast( - title = "Hi!", - options = list( - autohide = TRUE, - class = "bg-pink", - position = "topRight" - ) - ) - }) - } +```{r boxDropdown-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/box-dropdown"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-box-dropdown/") -``` - ### Other Boxes `{bs4Dash}` provides more box components to be able to adapt to various situations. What if you wanted to create a box with comments, with social content? @@ -262,59 +117,14 @@ userDescription( ``` `userBox()` is also entirely updatable from the server side, as it is built on top the `box()` function: - -```{r userBox-code, eval=FALSE} -shinyApp( - ui = dashboardPage( - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - actionButton("update_box", "Update"), - userBox( - id = "userbox", - title = userDescription( - title = "Nadia Carmichael", - subtitle = "lead Developer", - type = 2, - image = "https://adminlte.io/themes/AdminLTE/dist/img/user7-128x128.jpg", - ), - status = "primary", - gradient = TRUE, - background = "primary", - boxToolSize = "xl", - "Some text here!", - footer = "The footer here!" - ) - ), - title = "userBox" - ), - server = function(input, output) { - observeEvent(input$update_box, { - updateBox( - "userbox", - action = "update", - options = list( - title = userDescription( - title = "Jean Box", - subtitle = "Developer", - type = 1, - image = "https://adminlte.io/themes/AdminLTE/dist/img/user3-128x128.jpg", - ), - status = "danger", - background = NULL, - solidHeader = FALSE, - width = 4 - ) - ) - }) - } +```{r userBox-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/userBox"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-userBox/") -``` - #### socialBox A `socialBox()` is dedicated to contain events, comments, anything related to people. @@ -334,86 +144,10 @@ Right now, there is no programmatic way (understand no __update__ function is av will obviously fill this gap. The app below shows a combination of multiple elements in a `socialBox()`: - -```{r, eval=FALSE} -shinyApp( - ui = dashboardPage( - dashboardHeader(), - dashboardSidebar(), - dashboardBody( - socialBox( - id = "socialbox", - title = userBlock( - image = "https://adminlte.io/themes/AdminLTE/dist/img/user4-128x128.jpg", - title = "Social Box", - subtitle = "example-01.05.2018" - ), - actionButton("update_box", "Refresh"), - "Some text here!", - br(), br(), - tabsetPanel( - tabPanel( - "News", - attachmentBlock( - image = "https://www.sammobile.com/wp-content/uploads/2017/11/Camel.png", - title = "Test", - href = "https://google.com", - "This is the content" - ) - ), - tabPanel( - "Messages", - userMessages( - width = 12, - status = "danger", - userMessage( - author = "Alexander Pierce", - date = "20 Jan 2:00 pm", - image = "https://adminlte.io/themes/AdminLTE/dist/img/user1-128x128.jpg", - type = "received", - "Is this template really for free? That's unbelievable!" - ), - userMessage( - author = "Sarah Bullock", - date = "23 Jan 2:05 pm", - image = "https://adminlte.io/themes/AdminLTE/dist/img/user3-128x128.jpg", - type = "sent", - "You better believe it!" - ) - ) - ) - ), - lapply(X = 1:10, FUN = function(i) { - boxComment( - image = "https://adminlte.io/themes/AdminLTE/dist/img/user3-128x128.jpg", - title = paste("Comment", i), - date = "01.05.2018", - paste0("The ", i, "-th comment") - ) - }), - footer = "The footer here!" - ) - ), - title = "Social Box" - ), - server = function(input, output) { - observeEvent(input$update_box, { - updateBox( - "socialbox", - action = "update", - options = list( - title = userBlock( - image = "https://adminlte.io/themes/AdminLTE/dist/img/user3-128x128.jpg", - title = "Social Box updated", - subtitle = "today" - ) - ) - ) - }) - } +```{r socialBox-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/socialBox"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` - -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-socialBox/") -``` \ No newline at end of file diff --git a/vignettes/more-skins.Rmd b/vignettes/more-skins.Rmd index 5287d74e..0a749a34 100644 --- a/vignettes/more-skins.Rmd +++ b/vignettes/more-skins.Rmd @@ -23,39 +23,14 @@ knitr::opts_chunk$set( allowing the end user to change the app skin. There are 20 unique colors with 2 versions, light or dark. Note that the `dashboardControlbar()` is the perfect place to host the `skinSelector()`. -```{r skinSelector-code, eval=FALSE} -library(shiny) -library(bs4Dash) -shinyApp( - ui = dashboardPage( - header = dashboardHeader(), - sidebar = dashboardSidebar( - sidebarMenu( - menuItem( - text = "Item 1" - ), - menuItem( - text = "Item 2" - ) - ) - ), - body = dashboardBody(), - controlbar = dashboardControlbar( - collapsed = FALSE, - div(class = "p-3", skinSelector()), - pinned = TRUE - ), - title = "Skin Selector" - ), - server = function(input, output) { } +```{r skinSelector-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/skinSelector"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` -```{r, echo=FALSE} -# App output -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-skinSelector/", TRUE) -``` - ## Fresh [`{fresh}`](https://dreamrs.github.io/fresh/index.html) is developed by the [dreamRs](https://www.dreamrs.fr/) team. It is built on top of `{sass}`, which @@ -71,92 +46,10 @@ the sidebar component, `bs4dash_layout()` controls the main background color, `b contrast and `bs4dash_vars()` offers deeper customization (navbar, ...). The fresh theme below is based on some dark theme color palettes. -```{r fresh-code, eval=FALSE} -library(fresh) -# create the theme with a cyberpunk color palette -theme <- create_theme( - bs4dash_vars( - navbar_light_color = "#bec5cb", - navbar_light_active_color = "#FFF", - navbar_light_hover_color = "#FFF" - ), - bs4dash_yiq( - contrasted_threshold = 10, - text_dark = "#FFF", - text_light = "#272c30" - ), - bs4dash_layout( - main_bg = "#353c42" - ), - bs4dash_sidebar_light( - bg = "#272c30", - color = "#bec5cb", - hover_color = "#FFF", - submenu_bg = "#272c30", - submenu_color = "#FFF", - submenu_hover_color = "#FFF" - ), - bs4dash_status( - primary = "#5E81AC", danger = "#BF616A", light = "#272c30" - ), - bs4dash_color( - gray_900 = "#FFF", white = "#272c30" - ) -) - -# create tribble for box global config -box_config <- tibble::tribble( - ~background, ~labelStatus, - "danger", "warning", - "purple", "success", - "success", "primary", - "warning", "danger", - "fuchsia", "info" -) - -# box factory function -box_factory <- function(background, labelStatus) { - box( - title = "Cyberpunk Box", - collapsible = TRUE, - background = background, - height = "200px", - label = boxLabel(1, labelStatus) - ) -} - -# pmap magic -boxes <- purrr::pmap(box_config, box_factory) - -shinyApp( - ui = dashboardPage( - freshTheme = theme, - header = dashboardHeader( - leftUi = 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" - ) - ) - ), - sidebar = dashboardSidebar(), - body = dashboardBody(boxes), - controlbar = dashboardControlbar(), - title = "Fresh theming" - ), - server = function(input, output) { } +```{r fresh-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/vignettes-demos/fresh-theming"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" ) ``` - -```{r, echo=FALSE} -# App output -bs4Dash:::app_container("https://dgranjon.shinyapps.io/bs4Dash-fresh-theming/") -``` \ No newline at end of file From c27f73ee76279e3fb7f585df4fa8cb593759a3d1 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Tue, 20 Aug 2024 08:28:42 +0200 Subject: [PATCH 6/9] update index, readme --- .gitignore | 2 ++ R/sysdata.rda | Bin 10331 -> 26043 bytes README.md | 14 ++-------- index.Rmd | 31 +++++++++-------------- index.md | 69 ++++++++++++++++++++++++-------------------------- 5 files changed, 49 insertions(+), 67 deletions(-) diff --git a/.gitignore b/.gitignore index feee598a..c0416284 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ inst/examples/**/rsconnect .vscode *.icloud docs + +/.quarto/ diff --git a/R/sysdata.rda b/R/sysdata.rda index 770fa7456cf38b4848d12f0811d0bc989e10782e..55b073f9ce483550a92e8cc0469dfd324d6d2d61 100644 GIT binary patch literal 26043 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 Glhko&O$wm^ literal 10331 zcmV-hD5TdyT4*^jL0KkKS)=6y6#x!Zf3*KGzyS*X|N1}w|M0*6|L_1H00;mufeBzC zpD&o(sNZbvJKsC+Uv}@R^}fD>yW8E{X?EW`wM9A|_WI@RtLUxl``J3(J?CdVE%y6Q zzP_d|r(5gY*uBYnzWe9TcfNSn z!jnJ~6DCXnG8$rJ$$$YQX*D#->KZgO(dv33L;wI20T=)P2*?tYWMfD)05k%i6D9&+ zWEnIjCQTY?sp+AqlAthv0AvhQ1i)#gO&STKQ)tA(Wlw5)X`s}g00000s%;o1DUzSG zO*F!2G-S!6Nt&A|#Yd@#14fxL01Y631Zje3#0?q^Gy$L$6F>ozA)p?Eh0?n~-_*c} z-;%)q%pE2Lp&;Z82mr`WK|B_tPu?_GS_gCZh{%s|>(Gx*AVfJK8 zp1){diWuA%zZ@Oi#%4vK zUe3s4_Efkch!K7Oit!P_6u^k%kRmsrL|{O9W}CW{zmJptFMc>%)Ce1AIwtJ3ml2Rq z7d#&J2vyzP)M0ubJDif>-CeRO2$ZRw7*zKlL2YO*-~JK>Cv*+`)g>@=e|<_)dw#_> z4vty^4X|^!=g$Nqnn^RaAyy1gO5#V5De;@3W+fWvi{#0gZw%>UtKE6#EDdbq>E|Xo zCPcdB9dU`>*mF8Oqx{roGpF>@UF#aHEtmct2s#VG2=+Xz(bkq+?sq7S#rG#w-kaev zSF4MlITob3wuC;J(KEn~S(nMDAhNThZ#Dpgxbd%(`#h&R0aH}BD^rtJb^kCi_7{OQ5QN~1j?2Z zCOPr~)G$I~d3H;4m(J52cBMF$wk)uzv%w-{K}%AOEv&sZ38O@F2DS-DWSm17+@q`A znpQ?t4ZfBlAEV_%B)_!Otv?A5exTS(@hVkS;ifW5hs`Tzf!;J_pmZV60%8|E@YK@H z1Q5PemPxFxm3v!{N>S*vR&6QS%=Ze;c4B}c&fleM_g16r*;*63hpv#GFqkV-Ff+)R zz4Ux4i0DwHHEdRN@vNP1UzW6aUWbMShuV=5{PU{2o}Xi<21x1Yrw@U�{s!?`Ibs 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 diff --git a/README.md b/README.md index 1af7de88..02ddda27 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@
- +

@@ -59,7 +59,7 @@ server <- function(input, output) { shinyApp(ui, server) ``` -Starting from v2.0.0, moving to `{bs4Dash}` is rather simple: +Moving to `{bs4Dash}` is rather simple, as we just replace `library(shinydashboard)`: ```r library(bs4Dash) @@ -92,14 +92,6 @@ server <- function(input, output) { shinyApp(ui, server) ``` - -## Upgrading bs4Dash to 2.0.0 -- `{bs4Dash}` is undergoing major rework to make it easier to come from `{shinydashboard}`. The current development version 2.0.0 provides a 1:1 supports, in other word moving from `{shinydashboard}` to `{bs4Dash}` is accomplished by changing `library(shinydashboard)` to `library(bs4Dash)`. - -- `{bs4Dash}` v2.0.0 also provides 1:1 with `{shinydashboardPlus}` to ease compatibility. - -- Apps built with `{bs4Dash}` version <= 0.5.0 are definitely not compatible with v2.0.0 due to substantial breaking changes in the API. We advise users to keep the old version for old apps and move to to the new version for newer apps. - ## Installation ```r @@ -110,8 +102,6 @@ install.packages("bs4Dash") ``` ## Demo - -See a working example on shinyapps.io [here](https://dgranjon.shinyapps.io/bs4DashDemo/). You may also run: ```r diff --git a/index.Rmd b/index.Rmd index e22a613a..8b2c6607 100644 --- a/index.Rmd +++ b/index.Rmd @@ -1,8 +1,11 @@ --- output: github_document +always_allow_html: true --- ```{r setup, include=FALSE} +library(bslib) +library(bs4Dash) knitr::opts_chunk$set(echo = TRUE) ``` @@ -20,9 +23,13 @@ knitr::opts_chunk$set(echo = TRUE)
-
- -
+```{r socialBox-code, eval=TRUE, echo=FALSE} +card( + bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/showcase"]), + full_screen = TRUE, + style = "margin: 0 auto; float: none;" +) +```
@@ -30,13 +37,8 @@ knitr::opts_chunk$set(echo = TRUE) -
- -```{r, echo=FALSE} -bs4Dash:::app_container("https://dgranjon.shinyapps.io/virtual_patient_v2/", deps = TRUE) -``` -## New users moving to bs4Dash v2.0.0 +## From shinydashboard to bs4Dash Taking the simple `{shinydashboard}` example: @@ -73,7 +75,7 @@ server <- function(input, output) { shinyApp(ui, server) ``` -Starting from v2.0.0, moving to `{bs4Dash}` is rather simple: +Moving to `{bs4Dash}` is rather simple, as we just replace `library(shinydashboard)`: ```r library(bs4Dash) @@ -106,14 +108,6 @@ server <- function(input, output) { shinyApp(ui, server) ``` - -## Upgrading bs4Dash to 2.0.0 -- `{bs4Dash}` is undergoing major rework to make it easier to come from `{shinydashboard}`. The current development version 2.0.0 provides a 1:1 supports, in other word moving from `{shinydashboard}` to `{bs4Dash}` is accomplished by changing `library(shinydashboard)` to `library(bs4Dash)`. - -- `{bs4Dash}` v2.0.0 also provides 1:1 with `{shinydashboardPlus}` to ease compatibility. - -- Apps built with `{bs4Dash}` version <= 0.5.0 are definitely not compatible with v2.0.0 due to substantial breaking changes in the API. We advise users to keep the old version for old apps and move to to the new version for newer apps. - ## Installation ```r @@ -124,7 +118,6 @@ install.packages("bs4Dash") ``` ## Demo -See a working example on shinyapps.io [here](https://dgranjon.shinyapps.io/bs4DashDemo/). You may also run: ```r diff --git a/index.md b/index.md index 2d9aaa91..3809a551 100644 --- a/index.md +++ b/index.md @@ -1,43 +1,45 @@ -# bs4Dash -[![R build status](https://github.com/RinteRface/bs4Dash/workflows/R-CMD-check/badge.svg)](https://github.com/RinteRface/bs4Dash/actions) +# bs4Dash + +[![R build +status](https://github.com/RinteRface/bs4Dash/workflows/R-CMD-check/badge.svg)](https://github.com/RinteRface/bs4Dash/actions) [![version](https://www.r-pkg.org/badges/version/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![cranlogs](https://cranlogs.r-pkg.org/badges/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![total](https://cranlogs.r-pkg.org/badges/grand-total/bs4Dash)](https://www.rpackages.io/package/bs4Dash) -[![Codecov test coverage](https://codecov.io/gh/RinteRface/bs4Dash/branch/master/graph/badge.svg)](https://codecov.io/gh/RinteRface/bs4Dash?branch=master) +[![Codecov test +coverage](https://codecov.io/gh/RinteRface/bs4Dash/branch/master/graph/badge.svg)](https://codecov.io/gh/RinteRface/bs4Dash?branch=master) -> Bootstrap 4 shinydashboard using [AdminLTE3](https://github.com/ColorlibHQ/AdminLTE) +> Bootstrap 4 shinydashboard using +> [AdminLTE3](https://github.com/ColorlibHQ/AdminLTE)
-
- +
+
+ +
+ + + + +

- -
- -
+ -
-
-
- -
-
-## New users moving to bs4Dash v2.0.0 +## From shinydashboard to bs4Dash Taking the simple `{shinydashboard}` example: -```r +``` r library(shiny) library(shinydashboard) @@ -70,9 +72,10 @@ server <- function(input, output) { shinyApp(ui, server) ``` -Starting from v2.0.0, moving to `{bs4Dash}` is rather simple: +Moving to `{bs4Dash}` is rather simple, as we just replace +`library(shinydashboard)`: -```r +``` r library(bs4Dash) ui <- dashboardPage( dashboardHeader(title = "Basic dashboard"), @@ -103,17 +106,9 @@ server <- function(input, output) { shinyApp(ui, server) ``` - -## Upgrading bs4Dash to 2.0.0 -- `{bs4Dash}` is undergoing major rework to make it easier to come from `{shinydashboard}`. The current development version 2.0.0 provides a 1:1 supports, in other word moving from `{shinydashboard}` to `{bs4Dash}` is accomplished by changing `library(shinydashboard)` to `library(bs4Dash)`. - -- `{bs4Dash}` v2.0.0 also provides 1:1 with `{shinydashboardPlus}` to ease compatibility. - -- Apps built with `{bs4Dash}` version <= 0.5.0 are definitely not compatible with v2.0.0 due to substantial breaking changes in the API. We advise users to keep the old version for old apps and move to to the new version for newer apps. - ## Installation -```r +``` r # latest devel version devtools::install_github("RinteRface/bs4Dash") # from CRAN @@ -122,23 +117,25 @@ install.packages("bs4Dash") ## Demo -See a working example on shinyapps.io [here](https://dgranjon.shinyapps.io/bs4DashDemo/). You may also run: -```r +``` r library(bs4Dash) bs4DashGallery() ``` ## Issues -Issues are listed [here](https://github.com/RinteRface/bs4Dash/issues). - +Issues are listed [here](https://github.com/RinteRface/bs4Dash/issues). ## Acknowledgement -I warmly thank [Glyphicons](https://www.glyphicons.com) creator for providing them for free with Bootstrap. +I warmly thank [Glyphicons](https://www.glyphicons.com) creator for +providing them for free with Bootstrap. ## Code of Conduct - -Please note that the bs4Dash project is released with a [Contributor Code of Conduct](https:/contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree toabide by its terms. + +Please note that the bs4Dash project is released with a [Contributor +Code of +Conduct](https:/contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). +By contributing to this project, you agree toabide by its terms. From f39b6a2a560bf94d580f808c3f95689d2f0f4c0d Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Tue, 20 Aug 2024 08:37:19 +0200 Subject: [PATCH 7/9] bump deps --- DESCRIPTION | 2 +- inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.css | 0 inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.js | 2 +- inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.min.js | 0 inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.min.js.map | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/accordions-binding.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/cards.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/controlbar.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/feedbacks.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/leftSidebar.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/miscellaneous.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/navbar.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/output-bindings.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/pagination-widget.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/tabs.js | 0 srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/userMessages.js | 0 tools/jstools.R | 4 ++-- vignettes/more-skins.Rmd | 1 + 18 files changed, 5 insertions(+), 4 deletions(-) rename inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.css (100%) rename inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.js (99%) rename inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.min.js (100%) rename inst/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/bs4Dash.min.js.map (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/accordions-binding.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/cards.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/controlbar.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/feedbacks.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/leftSidebar.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/miscellaneous.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/navbar.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/output-bindings.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/pagination-widget.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/tabs.js (100%) rename srcjs/{bs4Dash-2.3.3 => bs4Dash-2.3.4}/userMessages.js (100%) diff --git a/DESCRIPTION b/DESCRIPTION index aba71e2a..dfaeb65c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: bs4Dash Type: Package Title: A 'Bootstrap 4' Version of 'shinydashboard' -Version: 2.3.3 +Version: 2.3.4 Authors@R: c( person("David", "Granjon", email = "dgranjon@ymail.com", role = c("aut", "cre")), person(family = "RinteRface", role = "cph"), diff --git a/inst/bs4Dash-2.3.3/bs4Dash.css b/inst/bs4Dash-2.3.4/bs4Dash.css similarity index 100% rename from inst/bs4Dash-2.3.3/bs4Dash.css rename to inst/bs4Dash-2.3.4/bs4Dash.css diff --git a/inst/bs4Dash-2.3.3/bs4Dash.js b/inst/bs4Dash-2.3.4/bs4Dash.js similarity index 99% rename from inst/bs4Dash-2.3.3/bs4Dash.js rename to inst/bs4Dash-2.3.4/bs4Dash.js index 251493ac..06224759 100644 --- a/inst/bs4Dash-2.3.3/bs4Dash.js +++ b/inst/bs4Dash-2.3.4/bs4Dash.js @@ -932,7 +932,7 @@ $(function () { break; default: console.warn(`${config.status} does not belong to allowed statuses!`) } - + closeButton = ''; if (config.closable) { diff --git a/inst/bs4Dash-2.3.3/bs4Dash.min.js b/inst/bs4Dash-2.3.4/bs4Dash.min.js similarity index 100% rename from inst/bs4Dash-2.3.3/bs4Dash.min.js rename to inst/bs4Dash-2.3.4/bs4Dash.min.js diff --git a/inst/bs4Dash-2.3.3/bs4Dash.min.js.map b/inst/bs4Dash-2.3.4/bs4Dash.min.js.map similarity index 100% rename from inst/bs4Dash-2.3.3/bs4Dash.min.js.map rename to inst/bs4Dash-2.3.4/bs4Dash.min.js.map diff --git a/srcjs/bs4Dash-2.3.3/accordions-binding.js b/srcjs/bs4Dash-2.3.4/accordions-binding.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/accordions-binding.js rename to srcjs/bs4Dash-2.3.4/accordions-binding.js diff --git a/srcjs/bs4Dash-2.3.3/cards.js b/srcjs/bs4Dash-2.3.4/cards.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/cards.js rename to srcjs/bs4Dash-2.3.4/cards.js diff --git a/srcjs/bs4Dash-2.3.3/controlbar.js b/srcjs/bs4Dash-2.3.4/controlbar.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/controlbar.js rename to srcjs/bs4Dash-2.3.4/controlbar.js diff --git a/srcjs/bs4Dash-2.3.3/feedbacks.js b/srcjs/bs4Dash-2.3.4/feedbacks.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/feedbacks.js rename to srcjs/bs4Dash-2.3.4/feedbacks.js diff --git a/srcjs/bs4Dash-2.3.3/leftSidebar.js b/srcjs/bs4Dash-2.3.4/leftSidebar.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/leftSidebar.js rename to srcjs/bs4Dash-2.3.4/leftSidebar.js diff --git a/srcjs/bs4Dash-2.3.3/miscellaneous.js b/srcjs/bs4Dash-2.3.4/miscellaneous.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/miscellaneous.js rename to srcjs/bs4Dash-2.3.4/miscellaneous.js diff --git a/srcjs/bs4Dash-2.3.3/navbar.js b/srcjs/bs4Dash-2.3.4/navbar.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/navbar.js rename to srcjs/bs4Dash-2.3.4/navbar.js diff --git a/srcjs/bs4Dash-2.3.3/output-bindings.js b/srcjs/bs4Dash-2.3.4/output-bindings.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/output-bindings.js rename to srcjs/bs4Dash-2.3.4/output-bindings.js diff --git a/srcjs/bs4Dash-2.3.3/pagination-widget.js b/srcjs/bs4Dash-2.3.4/pagination-widget.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/pagination-widget.js rename to srcjs/bs4Dash-2.3.4/pagination-widget.js diff --git a/srcjs/bs4Dash-2.3.3/tabs.js b/srcjs/bs4Dash-2.3.4/tabs.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/tabs.js rename to srcjs/bs4Dash-2.3.4/tabs.js diff --git a/srcjs/bs4Dash-2.3.3/userMessages.js b/srcjs/bs4Dash-2.3.4/userMessages.js similarity index 100% rename from srcjs/bs4Dash-2.3.3/userMessages.js rename to srcjs/bs4Dash-2.3.4/userMessages.js diff --git a/tools/jstools.R b/tools/jstools.R index 87837819..28d2fa65 100644 --- a/tools/jstools.R +++ b/tools/jstools.R @@ -8,12 +8,14 @@ pkg_version <- as.character(utils::packageVersion("bs4Dash")) tmp_old_version <- list.dirs("srcjs", full.names = FALSE, recursive = FALSE) old_version <- strsplit(tmp_old_version, "-")[[1]][2] new_srcjs_folder_name <- sprintf("srcjs/bs4Dash-%s", pkg_version) +outputDir <- sprintf("inst/bs4Dash-%s", pkg_version) if (old_version != pkg_version) { file.rename( file.path("srcjs", tmp_old_version), new_srcjs_folder_name ) + dir.create(outputDir) } # Validate ---------------------------------------------------------------- @@ -26,8 +28,6 @@ bs4DashJS <- list.files( # jshint_file(input = bs4DashJS, options = jshint_options(jquery = TRUE, globals = list("Shiny", "app"))) -outputDir <- sprintf("inst/bs4Dash-%s", pkg_version) - # Concat ----------------------------------------------------------------- # This just aggregates all srcjs files into one big .js file. There is no minifications, ... See next step for terser diff --git a/vignettes/more-skins.Rmd b/vignettes/more-skins.Rmd index 0a749a34..a13db4b5 100644 --- a/vignettes/more-skins.Rmd +++ b/vignettes/more-skins.Rmd @@ -11,6 +11,7 @@ vignette: > ```{r setup, include=FALSE} library(shiny) +library(bslib) knitr::opts_chunk$set( collapse = TRUE, comment = "#>" From cb8420627678c5cdb294ef318da179182a7834e5 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Tue, 3 Sep 2024 19:49:23 +0200 Subject: [PATCH 8/9] update index.Rmd --- _pkgdown.yml | 1 - index.Rmd | 8 +++----- index.md | 8 +++----- pkgdown/extra.css | 24 ++++++++++++++++++++++++ pkgdown/extra.js | 18 +++++++++++++++++- vignettes/.gitignore | 2 ++ 6 files changed, 49 insertions(+), 12 deletions(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index 712c4799..d301dc82 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -244,7 +244,6 @@ navbar: articles: - title: User guide - desc: User Guide navbar: ~ contents: - '`step-by-step`' diff --git a/index.Rmd b/index.Rmd index 8b2c6607..8b5f11f1 100644 --- a/index.Rmd +++ b/index.Rmd @@ -14,16 +14,14 @@ knitr::opts_chunk$set(echo = TRUE) [![R build status](https://github.com/RinteRface/bs4Dash/workflows/R-CMD-check/badge.svg)](https://github.com/RinteRface/bs4Dash/actions) [![version](https://www.r-pkg.org/badges/version/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![cranlogs](https://cranlogs.r-pkg.org/badges/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) -[![total](https://cranlogs.r-pkg.org/badges/grand-total/bs4Dash)](https://www.rpackages.io/package/bs4Dash) +[![total](https://cranlogs.r-pkg.org/badges/grand-total/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![Codecov test coverage](https://codecov.io/gh/RinteRface/bs4Dash/branch/master/graph/badge.svg)](https://codecov.io/gh/RinteRface/bs4Dash?branch=master) - - > Bootstrap 4 shinydashboard using [AdminLTE3](https://github.com/ColorlibHQ/AdminLTE)
-```{r socialBox-code, eval=TRUE, echo=FALSE} +```{r showcase-code, eval=TRUE, echo=FALSE} card( bs4Dash:::create_link_iframe(bs4Dash:::shinylive_links["inst/examples/showcase"]), full_screen = TRUE, @@ -34,7 +32,7 @@ card(
- +bs4Dash usage medical dashboard
diff --git a/index.md b/index.md index 3809a551..20c94cee 100644 --- a/index.md +++ b/index.md @@ -5,18 +5,16 @@ status](https://github.com/RinteRface/bs4Dash/workflows/R-CMD-check/badge.svg)](https://github.com/RinteRface/bs4Dash/actions) [![version](https://www.r-pkg.org/badges/version/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![cranlogs](https://cranlogs.r-pkg.org/badges/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) -[![total](https://cranlogs.r-pkg.org/badges/grand-total/bs4Dash)](https://www.rpackages.io/package/bs4Dash) +[![total](https://cranlogs.r-pkg.org/badges/grand-total/bs4Dash)](https://CRAN.R-project.org/package=bs4Dash) [![Codecov test coverage](https://codecov.io/gh/RinteRface/bs4Dash/branch/master/graph/badge.svg)](https://codecov.io/gh/RinteRface/bs4Dash?branch=master) - - > Bootstrap 4 shinydashboard using > [AdminLTE3](https://github.com/ColorlibHQ/AdminLTE)
-
+
@@ -31,7 +29,7 @@ coverage](https://codecov.io/gh/RinteRface/bs4Dash/branch/master/graph/badge.svg
- +bs4Dash usage medical dashboard
diff --git a/pkgdown/extra.css b/pkgdown/extra.css index ee68e323..1f23c93f 100644 --- a/pkgdown/extra.css +++ b/pkgdown/extra.css @@ -902,3 +902,27 @@ fieldset:disabled a.btn { -moz-transition: -moz-transform 0.3s 0.7s, opacity 0s 0.7s; transition: transform 0.3s 0.7s, opacity 0s 0.7s; } + +/* bslib cards */ +.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen="true"]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border="true"]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius="true"]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen="true"]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,0.15);margin:0.2rem 0.4rem;padding:0.55rem !important;font-size:.8rem;cursor:pointer;opacity:0.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen="false"]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media (max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:0.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:0.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}} + +/* fill css for fullscreen cards */ +.html-fill-container { + display: flex; + flex-direction: column; + /* Prevent the container from expanding vertically or horizontally beyond its + parent's constraints. */ + min-height: 0; + min-width: 0; +} +.html-fill-container > .html-fill-item { + /* Fill items can grow and shrink freely within + available vertical space in fillable container */ + flex: 1 1 auto; + min-height: 0; + min-width: 0; +} +.html-fill-container > :not(.html-fill-item) { + /* Prevent shrinking or growing of non-fill items */ + flex: 0 0 auto; +} diff --git a/pkgdown/extra.js b/pkgdown/extra.js index c4e6f3ef..357a19f3 100644 --- a/pkgdown/extra.js +++ b/pkgdown/extra.js @@ -114,4 +114,20 @@ jQuery(document).ready(function ($) { (label.offset().left > resizeElement.offset().left + resizeElement.outerWidth()) ? label.removeClass('is-hidden') : label.addClass('is-hidden'); } } -}); \ No newline at end of file +}); + +/*! bslib 0.7.0.9000 | (c) 2012-2024 RStudio, PBC. | License: MIT + file LICENSE */ +"use strict";(()=>{var f=(r,e)=>()=>(r&&(e=r(r=0)),e);var X=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var k=(r,e,t)=>{if(!e.has(r))throw TypeError("Cannot "+t)};var v=(r,e,t)=>(k(r,e,"read from private field"),t?t.call(r):e.get(r)),H=(r,e,t)=>{if(e.has(r))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(r):e.set(r,t)};var O=(r,e,t)=>(k(r,e,"access private method"),t);var h=(r,e,t)=>new Promise((i,n)=>{var s=o=>{try{d(t.next(o))}catch(b){n(b)}},l=o=>{try{d(t.throw(o))}catch(b){n(b)}},d=o=>o.done?i(o.value):Promise.resolve(o.value).then(s,l);d((t=t.apply(r,e)).next())});function y(r,e){u&&u.inputBindings.register(new r,"bslib."+e)}function _(r,e){window.bslib=window.bslib||{},window.bslib[r]?console.error(`[bslib] Global window.bslib.${r} was already defined, using previous definition.`):window.bslib[r]=e}function w(r,e){return Object.prototype.hasOwnProperty.call(r,e)&&r[e]!==void 0}function U(r){let e=["a[href]","area[href]","button","details summary","input","iframe","select","textarea",'[contentEditable=""]','[contentEditable="true"]','[contentEditable="TRUE"]',"[tabindex]"],t=[':not([tabindex="-1"])',":not([disabled])"],i=e.map(s=>s+t.join("")),n=r.querySelectorAll(i.join(", "));return Array.from(n)}function E(...r){return h(this,null,function*(){if(!u)throw new Error("This function must be called in a Shiny app.");return u.renderContentAsync?yield u.renderContentAsync.apply(null,r):yield u.renderContent.apply(null,r)})}var u,m,L=f(()=>{"use strict";u=window.Shiny,m=u?u.InputBinding:class{}});var R,B=f(()=>{"use strict";L();R=class extends m{find(e){return $(e).find(".accordion.bslib-accordion-input")}getValue(e){let i=this._getItemInfo(e).filter(n=>n.isOpen()).map(n=>n.value);return i.length===0?null:i}subscribe(e,t){$(e).on("shown.bs.collapse.accordionInputBinding hidden.bs.collapse.accordionInputBinding",function(i){t(!0)})}unsubscribe(e){$(e).off(".accordionInputBinding")}receiveMessage(e,t){return h(this,null,function*(){let i=t.method;if(i==="set")this._setItems(e,t);else if(i==="open")this._openItems(e,t);else if(i==="close")this._closeItems(e,t);else if(i==="remove")this._removeItem(e,t);else if(i==="insert")yield this._insertItem(e,t);else if(i==="update")yield this._updateItem(e,t);else throw new Error(`Method not yet implemented: ${i}`)})}_setItems(e,t){let i=this._getItemInfo(e),n=this._getValues(e,i,t.values);i.forEach(s=>{n.indexOf(s.value)>-1?s.show():s.hide()})}_openItems(e,t){let i=this._getItemInfo(e),n=this._getValues(e,i,t.values);i.forEach(s=>{n.indexOf(s.value)>-1&&s.show()})}_closeItems(e,t){let i=this._getItemInfo(e),n=this._getValues(e,i,t.values);i.forEach(s=>{n.indexOf(s.value)>-1&&s.hide()})}_insertItem(e,t){return h(this,null,function*(){let i=this._findItem(e,t.target);i||(i=t.position==="before"?e.firstElementChild:e.lastElementChild);let n=t.panel;if(i?yield E(i,n,t.position==="before"?"beforeBegin":"afterEnd"):yield E(e,n),this._isAutoClosing(e)){let s=$(n.html).attr("data-value");$(e).find(`[data-value="${s}"] .accordion-collapse`).attr("data-bs-parent","#"+e.id)}})}_removeItem(e,t){let i=this._getItemInfo(e).filter(s=>t.target.indexOf(s.value)>-1),n=Shiny==null?void 0:Shiny.unbindAll;i.forEach(s=>{n&&n(s.item),s.item.remove()})}_updateItem(e,t){return h(this,null,function*(){let i=this._findItem(e,t.target);if(!i)throw new Error(`Unable to find an accordion_panel() with a value of ${t.target}`);if(w(t,"value")&&(i.dataset.value=t.value),w(t,"body")){let s=i.querySelector(".accordion-body");yield E(s,t.body)}let n=i.querySelector(".accordion-header");if(w(t,"title")){let s=n.querySelector(".accordion-title");yield E(s,t.title)}if(w(t,"icon")){let s=n.querySelector(".accordion-button > .accordion-icon");yield E(s,t.icon)}})}_getItemInfo(e){return Array.from(e.querySelectorAll(":scope > .accordion-item")).map(i=>this._getSingleItemInfo(i))}_getSingleItemInfo(e){let t=e.querySelector(".accordion-collapse"),i=()=>$(t).hasClass("show");return{item:e,value:e.dataset.value,isOpen:i,show:()=>{i()||$(t).collapse("show")},hide:()=>{i()&&$(t).collapse("hide")}}}_getValues(e,t,i){let n=i!==!0?i:t.map(l=>l.value);return this._isAutoClosing(e)&&(n=n.slice(n.length-1,n.length)),n}_findItem(e,t){return e.querySelector(`[data-value="${t}"]`)}_isAutoClosing(e){return e.classList.contains("autoclose")}};y(R,"accordion")});var S,z=f(()=>{"use strict";S=class{constructor(){this.resizeObserverEntries=[],this.resizeObserver=new ResizeObserver(e=>{let t=new Event("resize");if(window.dispatchEvent(t),!window.Shiny)return;let i=[];for(let n of e)n.target instanceof HTMLElement&&n.target.querySelector(".shiny-bound-output")&&n.target.querySelectorAll(".shiny-bound-output").forEach(s=>{if(i.includes(s))return;let{binding:l,onResize:d}=$(s).data("shinyOutputBinding");if(!l||!l.resize)return;let o=s.shinyResizeObserver;if(o&&o!==this||(o||(s.shinyResizeObserver=this),d(s),i.push(s),!s.classList.contains("shiny-plot-output")))return;let b=s.querySelector('img:not([width="100%"])');b&&b.setAttribute("width","100%")})})}observe(e){this.resizeObserver.observe(e),this.resizeObserverEntries.push(e)}unobserve(e){let t=this.resizeObserverEntries.indexOf(e);t<0||(this.resizeObserver.unobserve(e),this.resizeObserverEntries.splice(t,1))}flush(){this.resizeObserverEntries.forEach(e=>{document.body.contains(e)||this.unobserve(e)})}}});var I,q=f(()=>{"use strict";I=class{constructor(e,t){this.watching=new Set,this.observer=new MutationObserver(i=>{let n=new Set;for(let{type:s,removedNodes:l}of i)if(s==="childList"&&l.length!==0)for(let d of l)d instanceof HTMLElement&&(d.matches(e)&&n.add(d),d.querySelector(e)&&d.querySelectorAll(e).forEach(o=>n.add(o)));if(n.size!==0)for(let s of n)try{t(s)}catch(l){console.error(l)}})}observe(e){let t=this._flush();if(this.watching.has(e)){if(!t)return}else this.watching.add(e);t?this._restartObserver():this.observer.observe(e,{childList:!0,subtree:!0})}unobserve(e){this.watching.has(e)&&(this.watching.delete(e),this._flush(),this._restartObserver())}_restartObserver(){this.observer.disconnect();for(let e of this.watching)this.observer.observe(e,{childList:!0,subtree:!0})}_flush(){let e=!1,t=Array.from(this.watching);for(let i of t)document.body.contains(i)||(this.watching.delete(i),e=!0);return e}}});var a,g,D=f(()=>{"use strict";L();z();q();a=class{constructor(e){var t;e.removeAttribute(a.attr.ATTR_INIT),(t=e.querySelector(`script[${a.attr.ATTR_INIT}]`))==null||t.remove(),this.card=e,a.instanceMap.set(e,this),a.shinyResizeObserver.observe(this.card),a.cardRemovedObserver.observe(document.body),this._addEventListeners(),this.overlay=this._createOverlay(),this._setShinyInput(),this._exitFullScreenOnEscape=this._exitFullScreenOnEscape.bind(this),this._trapFocusExit=this._trapFocusExit.bind(this)}enterFullScreen(e){var t;e&&e.preventDefault(),this.card.id&&this.overlay.anchor.setAttribute("aria-controls",this.card.id),document.addEventListener("keydown",this._exitFullScreenOnEscape,!1),document.addEventListener("keydown",this._trapFocusExit,!0),this.card.setAttribute(a.attr.ATTR_FULL_SCREEN,"true"),document.body.classList.add(a.attr.CLASS_HAS_FULL_SCREEN),this.card.insertAdjacentElement("beforebegin",this.overlay.container),(!this.card.contains(document.activeElement)||(t=document.activeElement)!=null&&t.classList.contains(a.attr.CLASS_FULL_SCREEN_ENTER))&&(this.card.setAttribute("tabindex","-1"),this.card.focus()),this._emitFullScreenEvent(!0),this._setShinyInput()}exitFullScreen(){document.removeEventListener("keydown",this._exitFullScreenOnEscape,!1),document.removeEventListener("keydown",this._trapFocusExit,!0),this.overlay.container.remove(),this.card.setAttribute(a.attr.ATTR_FULL_SCREEN,"false"),this.card.removeAttribute("tabindex"),document.body.classList.remove(a.attr.CLASS_HAS_FULL_SCREEN),this._emitFullScreenEvent(!1),this._setShinyInput()}_setShinyInput(){if(!this.card.classList.contains(a.attr.CLASS_SHINY_INPUT)||!u)return;if(!u.setInputValue){setTimeout(()=>this._setShinyInput(),0);return}let e=this.card.getAttribute(a.attr.ATTR_FULL_SCREEN);u.setInputValue(this.card.id+"_full_screen",e==="true")}_emitFullScreenEvent(e){let t=new CustomEvent("bslib.card",{bubbles:!0,detail:{fullScreen:e}});this.card.dispatchEvent(t)}_addEventListeners(){let e=this.card.querySelector(`:scope > * > .${a.attr.CLASS_FULL_SCREEN_ENTER}`);e&&e.addEventListener("click",t=>this.enterFullScreen(t))}_exitFullScreenOnEscape(e){if(!(e.target instanceof HTMLElement))return;let t=["select[open]","input[aria-expanded='true']"];e.target.matches(t.join(", "))||e.key==="Escape"&&this.exitFullScreen()}_trapFocusExit(e){if(!(e instanceof KeyboardEvent)||e.key!=="Tab")return;let t=e.target===this.card,i=e.target===this.overlay.anchor,n=this.card.contains(e.target),s=()=>{e.preventDefault(),e.stopImmediatePropagation()};if(!(n||t||i)){s(),this.card.focus();return}let l=U(this.card).filter(A=>!A.classList.contains(a.attr.CLASS_FULL_SCREEN_ENTER));if(!(l.length>0)){s(),this.overlay.anchor.focus();return}if(t)return;let o=l[l.length-1],b=e.target===o;if(i&&e.shiftKey){s(),o.focus();return}if(b&&!e.shiftKey){s(),this.overlay.anchor.focus();return}}_createOverlay(){let e=document.createElement("div");e.id=a.attr.ID_FULL_SCREEN_OVERLAY,e.onclick=this.exitFullScreen.bind(this);let t=this._createOverlayCloseAnchor();return e.appendChild(t),{container:e,anchor:t}}_createOverlayCloseAnchor(){let e=document.createElement("a");return e.classList.add(a.attr.CLASS_FULL_SCREEN_EXIT),e.tabIndex=0,e.setAttribute("aria-expanded","true"),e.setAttribute("aria-label","Close card"),e.setAttribute("role","button"),e.onclick=t=>{this.exitFullScreen(),t.stopPropagation()},e.onkeydown=t=>{(t.key==="Enter"||t.key===" ")&&this.exitFullScreen()},e.innerHTML=this._overlayCloseHtml(),e}_overlayCloseHtml(){return"Close "}static getInstance(e){return a.instanceMap.get(e)}static initializeAllCards(e=!0){if(document.readyState==="loading"){a.onReadyScheduled||(a.onReadyScheduled=!0,document.addEventListener("DOMContentLoaded",()=>{a.initializeAllCards(!1)}));return}e&&a.shinyResizeObserver.flush();let t=`.${a.attr.CLASS_CARD}[${a.attr.ATTR_INIT}]`;if(!document.querySelector(t))return;document.querySelectorAll(t).forEach(n=>new a(n))}},g=a;g.attr={ATTR_INIT:"data-bslib-card-init",CLASS_CARD:"bslib-card",ATTR_FULL_SCREEN:"data-full-screen",CLASS_HAS_FULL_SCREEN:"bslib-has-full-screen",CLASS_FULL_SCREEN_ENTER:"bslib-full-screen-enter",CLASS_FULL_SCREEN_EXIT:"bslib-full-screen-exit",ID_FULL_SCREEN_OVERLAY:"bslib-full-screen-overlay",CLASS_SHINY_INPUT:"bslib-card-input"},g.shinyResizeObserver=new S,g.cardRemovedObserver=new I(`.${a.attr.CLASS_CARD}`,e=>{let t=a.getInstance(e);t&&t.card.getAttribute(a.attr.ATTR_FULL_SCREEN)==="true"&&t.exitFullScreen()}),g.instanceMap=new WeakMap,g.onReadyScheduled=!1;_("Card",g)});var c,p,F,P=f(()=>{"use strict";L();z();c=class{constructor(e){this.windowSize="";var n;c.instanceMap.set(e,this),this.layout={container:e,main:e.querySelector(":scope > .main"),sidebar:e.querySelector(":scope > .sidebar"),toggle:e.querySelector(":scope > .collapse-toggle")};let t=this.layout.sidebar.querySelector(":scope > .sidebar-content > .accordion");t&&((n=t==null?void 0:t.parentElement)==null||n.classList.add("has-accordion"),t.classList.add("accordion-flush")),this._initSidebarCounters(),this._initSidebarState(),(this._isCollapsible("desktop")||this._isCollapsible("mobile"))&&this._initEventListeners(),c.shinyResizeObserver.observe(this.layout.main),e.removeAttribute("data-bslib-sidebar-init");let i=e.querySelector(":scope > script[data-bslib-sidebar-init]");i&&e.removeChild(i)}get isClosed(){return this.layout.container.classList.contains(c.classes.COLLAPSE)}static getInstance(e){return c.instanceMap.get(e)}_isCollapsible(e="desktop"){let{container:t}=this.layout,i=e==="desktop"?"collapsibleDesktop":"collapsibleMobile",n=t.dataset[i];return n===void 0?!0:n.trim().toLowerCase()!=="false"}static initCollapsibleAll(e=!0){if(document.readyState==="loading"){c.onReadyScheduled||(c.onReadyScheduled=!0,document.addEventListener("DOMContentLoaded",()=>{c.initCollapsibleAll(!1)}));return}let t=`.${c.classes.LAYOUT}[data-bslib-sidebar-init]`;if(!document.querySelector(t))return;e&&c.shinyResizeObserver.flush(),document.querySelectorAll(t).forEach(n=>new c(n))}_initEventListeners(){var t;let{toggle:e}=this.layout;e.addEventListener("click",i=>{i.preventDefault(),this.toggle("toggle")}),(t=e.querySelector(".collapse-icon"))==null||t.addEventListener("transitionend",()=>this._finalizeState()),!(this._isCollapsible("desktop")&&this._isCollapsible("mobile"))&&window.addEventListener("resize",()=>this._handleWindowResizeEvent())}_initSidebarCounters(){let{container:e}=this.layout,t=`.${c.classes.LAYOUT}> .main > .${c.classes.LAYOUT}:not([data-bslib-sidebar-open="always"])`;if(!(e.querySelector(t)===null))return;function n(o){return o=o?o.parentElement:null,o&&o.classList.contains("main")&&(o=o.parentElement),o&&o.classList.contains(c.classes.LAYOUT)?o:null}let s=[e],l=n(e);for(;l;)s.unshift(l),l=n(l);let d={left:0,right:0};s.forEach(function(o){let A=o.classList.contains("sidebar-right")?d.right++:d.left++;o.style.setProperty("--_js-toggle-count-this-side",A.toString()),o.style.setProperty("--_js-toggle-count-max-side",Math.max(d.right,d.left).toString())})}_getWindowSize(){let{container:e}=this.layout;return window.getComputedStyle(e).getPropertyValue("--bslib-sidebar-js-window-size").trim()}_initialToggleState(){var n,s;let{container:e}=this.layout,t=this.windowSize==="desktop"?"openDesktop":"openMobile",i=(s=(n=e.dataset[t])==null?void 0:n.trim())==null?void 0:s.toLowerCase();return i===void 0||["open","always"].includes(i)?"open":["close","closed"].includes(i)?"close":"open"}_initSidebarState(){this.windowSize=this._getWindowSize();let e=this._initialToggleState();this.toggle(e,!0)}_handleWindowResizeEvent(){let e=this._getWindowSize();!e||e==this.windowSize||this._initSidebarState()}toggle(e,t=!1){typeof e=="undefined"?e="toggle":e==="closed"&&(e="close");let{container:i,sidebar:n}=this.layout,s=this.isClosed;if(["open","close","toggle"].indexOf(e)===-1)throw new Error(`Unknown method ${e}`);if(e==="toggle"&&(e=s?"open":"close"),s&&e==="close"||!s&&e==="open"){t&&this._finalizeState();return}e==="open"&&(n.hidden=!1),i.classList.toggle(c.classes.TRANSITIONING,!t),i.classList.toggle(c.classes.COLLAPSE),t&&this._finalizeState()}_finalizeState(){let{container:e,sidebar:t,toggle:i}=this.layout;e.classList.remove(c.classes.TRANSITIONING),t.hidden=this.isClosed,i.setAttribute("aria-expanded",this.isClosed?"false":"true");let n=new CustomEvent("bslib.sidebar",{bubbles:!0,detail:{open:!this.isClosed}});t.dispatchEvent(n),$(t).trigger("toggleCollapse.sidebarInputBinding"),$(t).trigger(this.isClosed?"hidden":"shown")}},p=c;p.shinyResizeObserver=new S,p.classes={LAYOUT:"bslib-sidebar-layout",COLLAPSE:"sidebar-collapsed",TRANSITIONING:"transitioning"},p.onReadyScheduled=!1,p.instanceMap=new WeakMap;F=class extends m{find(e){return $(e).find(`.${p.classes.LAYOUT} > .bslib-sidebar-input`)}getValue(e){let t=p.getInstance(e.parentElement);return t?!t.isClosed:!1}setValue(e,t){let i=t?"open":"close";this.receiveMessage(e,{method:i})}subscribe(e,t){$(e).on("toggleCollapse.sidebarInputBinding",function(i){t(!0)})}unsubscribe(e){$(e).off(".sidebarInputBinding")}receiveMessage(e,t){let i=p.getInstance(e.parentElement);i&&i.toggle(t.method)}};y(F,"sidebar");_("Sidebar",p)});var T,M,C,x,N,W=f(()=>{"use strict";L();N=class extends m{constructor(){super(...arguments);H(this,C);H(this,T,new WeakMap);H(this,M,new WeakMap)}find(t){return $(t).find(".bslib-task-button")}getValue(t){var i;return{value:(i=v(this,T).get(t))!=null?i:0,autoReset:t.hasAttribute("data-auto-reset")}}getType(){return"bslib.taskbutton"}subscribe(t,i){v(this,M).has(t)&&this.unsubscribe(t);let n=()=>{var s;v(this,T).set(t,((s=v(this,T).get(t))!=null?s:0)+1),i(!0),O(this,C,x).call(this,t,"busy")};v(this,M).set(t,n),t.addEventListener("click",n)}unsubscribe(t){let i=v(this,M).get(t);i&&t.removeEventListener("click",i)}receiveMessage(n,s){return h(this,arguments,function*(t,{state:i}){O(this,C,x).call(this,t,i)})}};T=new WeakMap,M=new WeakMap,C=new WeakSet,x=function(t,i){t.disabled=i==="busy";let n=t.querySelector("bslib-switch-inline");n&&(n.case=i)};y(N,"task-button")});function V(r){if(window.Shiny)for(let[e,t]of Object.entries(r))Shiny.addCustomMessageHandler(e,t)}var j=f(()=>{"use strict"});var Z=X(Y=>{B();D();P();W();L();j();var K={"bslib.toggle-input-binary":r=>h(Y,null,function*(){let e=document.getElementById(r.id);e||console.warn("[bslib.toggle-input-binary] No element found",r);let t=$(e).data("shiny-input-binding");if(!(t instanceof m)){console.warn("[bslib.toggle-input-binary] No input binding found",r);return}let i=r.value;typeof i=="undefined"&&(i=!t.getValue(e)),yield t.receiveMessage(e,{value:i})})};window.Shiny&&V(K);function G(){let r=document.createElement("div");r.innerHTML=` + `,document.body.appendChild(r.children[0])}document.readyState==="complete"?G():document.addEventListener("DOMContentLoaded",G)});Z();})(); + //# sourceMappingURL=components.min.js.map \ No newline at end of file diff --git a/vignettes/.gitignore b/vignettes/.gitignore index 097b2416..9e2bd63c 100644 --- a/vignettes/.gitignore +++ b/vignettes/.gitignore @@ -1,2 +1,4 @@ *.html *.R + +/.quarto/ From 2b76dc5ee1c6cef46f59d1e0ba7dd612f7e81ecd Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Tue, 3 Sep 2024 20:03:00 +0200 Subject: [PATCH 9/9] update CRAN comments --- DESCRIPTION | 2 +- NEWS.md | 1 + R/tabs.R | 6 +++--- cran-comments.md | 12 ++++++++++-- man/insertTab.Rd | 8 ++++---- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dfaeb65c..d67e90e4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -32,7 +32,7 @@ Suggests: DT, thematic (>= 0.1.2) Encoding: UTF-8 -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.2 VignetteBuilder: knitr Collate: 'feedbacks.R' diff --git a/NEWS.md b/NEWS.md index fc75946a..0d8f2315 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ ## Minor change - Update jquery-ui to 1.13.2. Thanks @biognosys-so. +- Fix CRAN NOTES. # bs4Dash 2.3.3 diff --git a/R/tabs.R b/R/tabs.R index a2a4cbc7..67e39ff9 100644 --- a/R/tabs.R +++ b/R/tabs.R @@ -261,11 +261,11 @@ tabsetPanel <- function(..., id = NULL, selected = NULL, -#' Insert a \link{tabPanel} in a \link{tabsetPanel} +#' Insert a \link[shiny]{tabPanel} in a \link{tabsetPanel} #' #' @param inputId \link{tabsetPanel} id. -#' @param tab \link{tabPanel} to insert. -#' @param target \link{tabPanel} after of before which the new tab will be inserted. +#' @param tab \link[shiny]{tabPanel} to insert. +#' @param target \link[shiny]{tabPanel} after of before which the new tab will be inserted. #' @param position Insert before or after: \code{c("before", "after")}. #' @param select Whether to select the newly inserted tab. FALSE by default. #' @param session Shiny session object. diff --git a/cran-comments.md b/cran-comments.md index abe17c18..157bad12 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -9,5 +9,13 @@ There were no ERRORs or WARNINGs or NOTEs. ## Note -This release will fixe the NOTES on https://cran.r-project.org/web/checks/check_results_bs4Dash.html. -Update: re-submissiom fixing issue with `omicsTools` reverse dependency. \ No newline at end of file +Fix a 3 NOTES: + +> Version: 2.3.3 +Check: Rd cross-references +Result: NOTE + Found the following Rd file(s) with Rd \link{} targets missing package + anchors: + insertTab.Rd: tabPanel + Please provide package anchors for all Rd \link{} targets not in the + package itself and the base packages. \ No newline at end of file diff --git a/man/insertTab.Rd b/man/insertTab.Rd index f91a6f57..1ec5f748 100644 --- a/man/insertTab.Rd +++ b/man/insertTab.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/tabs.R \name{insertTab} \alias{insertTab} -\title{Insert a \link{tabPanel} in a \link{tabsetPanel}} +\title{Insert a \link[shiny]{tabPanel} in a \link{tabsetPanel}} \usage{ insertTab( inputId, @@ -16,9 +16,9 @@ insertTab( \arguments{ \item{inputId}{\link{tabsetPanel} id.} -\item{tab}{\link{tabPanel} to insert.} +\item{tab}{\link[shiny]{tabPanel} to insert.} -\item{target}{\link{tabPanel} after of before which the new tab will be inserted.} +\item{target}{\link[shiny]{tabPanel} after of before which the new tab will be inserted.} \item{position}{Insert before or after: \code{c("before", "after")}.} @@ -27,7 +27,7 @@ insertTab( \item{session}{Shiny session object.} } \description{ -Insert a \link{tabPanel} in a \link{tabsetPanel} +Insert a \link[shiny]{tabPanel} in a \link{tabsetPanel} } \examples{ if (interactive()) {