diff --git a/404.html b/404.html index ab3b4d5f1..9cd6c26f8 100644 --- a/404.html +++ b/404.html @@ -39,7 +39,7 @@ diff --git a/CONTRIBUTING.html b/CONTRIBUTING.html index aa43f39f8..7ab80bc87 100644 --- a/CONTRIBUTING.html +++ b/CONTRIBUTING.html @@ -17,7 +17,7 @@ diff --git a/LICENSE-text.html b/LICENSE-text.html index 1ecb64bc1..86fa9fdd0 100644 --- a/LICENSE-text.html +++ b/LICENSE-text.html @@ -17,7 +17,7 @@ diff --git a/TODO-promises.html b/TODO-promises.html index d9797135b..09f9a187e 100644 --- a/TODO-promises.html +++ b/TODO-promises.html @@ -17,7 +17,7 @@ diff --git a/apple-touch-icon-120x120.png b/apple-touch-icon-120x120.png index f8105ebe6..af3734efb 100644 Binary files a/apple-touch-icon-120x120.png and b/apple-touch-icon-120x120.png differ diff --git a/apple-touch-icon-152x152.png b/apple-touch-icon-152x152.png index d50a1d1e6..0e5c0a01e 100644 Binary files a/apple-touch-icon-152x152.png and b/apple-touch-icon-152x152.png differ diff --git a/apple-touch-icon-180x180.png b/apple-touch-icon-180x180.png index 23de33ed1..acb7861c9 100644 Binary files a/apple-touch-icon-180x180.png and b/apple-touch-icon-180x180.png differ diff --git a/apple-touch-icon-60x60.png b/apple-touch-icon-60x60.png index f4a1d4761..55fac61af 100644 Binary files a/apple-touch-icon-60x60.png and b/apple-touch-icon-60x60.png differ diff --git a/apple-touch-icon-76x76.png b/apple-touch-icon-76x76.png index 9c62339a5..ddf4796a9 100644 Binary files a/apple-touch-icon-76x76.png and b/apple-touch-icon-76x76.png differ diff --git a/apple-touch-icon.png b/apple-touch-icon.png index 0a20c2c30..fcf983836 100644 Binary files a/apple-touch-icon.png and b/apple-touch-icon.png differ diff --git a/authors.html b/authors.html index e9dd19ef3..79217b387 100644 --- a/authors.html +++ b/authors.html @@ -17,7 +17,7 @@ @@ -199,14 +199,14 @@
Chang W, Cheng J, Allaire J, Sievert C, Schloerke B, Xie Y, Allen J, McPherson J, Dipert A, Borges B (2024). shiny: Web Application Framework for R. -R package version 1.8.1.9000, +R package version 1.8.1.9001, https://github.com/rstudio/shiny, https://shiny.posit.co/.
@Manual{,
title = {shiny: Web Application Framework for R},
author = {Winston Chang and Joe Cheng and JJ Allaire and Carson Sievert and Barret Schloerke and Yihui Xie and Jeff Allen and Jonathan McPherson and Alan Dipert and Barbara Borges},
year = {2024},
- note = {R package version 1.8.1.9000,
+ note = {R package version 1.8.1.9001,
https://github.com/rstudio/shiny},
url = {https://shiny.posit.co/},
}
diff --git a/favicon-16x16.png b/favicon-16x16.png
index 0ceb14d1e..4835409eb 100644
Binary files a/favicon-16x16.png and b/favicon-16x16.png differ
diff --git a/favicon-32x32.png b/favicon-32x32.png
index 97c45502a..c38dd2479 100644
Binary files a/favicon-32x32.png and b/favicon-32x32.png differ
diff --git a/index.html b/index.html
index 19ceb774e..1e9237531 100644
--- a/index.html
+++ b/index.html
@@ -40,7 +40,7 @@
diff --git a/news/index.html b/news/index.html
index 1a21c151d..1df44cb00 100644
--- a/news/index.html
+++ b/news/index.html
@@ -17,7 +17,7 @@
@@ -51,7 +51,8 @@
.recalculating CSS class when they are first bound, up until the first render. This makes it possible/easier to show progress indication when the output is calculating for the first time. (#4039)useBusyIndicators() and busyIndicatorOptions(), for enabling and customizing busy indication. Busy indicators provide a visual cue to users when the server is busy calculating outputs or otherwise serving requests to the client. When enabled, a spinner is shown on each calculating/recalculating output, and a pulsing banner is shown at the top of the page when the app is otherwise busy. (#4040).recalculating CSS class when they are first bound, up until the first render. This makes it possible/easier to show progress indication when the output is calculating for the first time. (#4039)Bootstrap 5 support. (#3410 and rstudio/bslib#304)
bslib::bs_theme(version = 5) to a page layout function with a theme argument (e.g., fluidPage(), navbarPage(), etc).Closed #3322, #3313, #1823, #3321, #3320, #1928, and #2310: Various improvements to navbarPage(), tabsetPanel(), tabPanel(), navbarMenu(), etc. Also, these functions are now powered by the bslib package’s new nav() API (consider using bslib’s API to create better looking and more fully featured navs). (#3388)
Closed #3322, #3313, #1823, #3321, #3320, #1928, and #2310: Various improvements to navbarPage(), tabsetPanel(), tabPanel(), navbarMenu(), etc. Also, these functions are now powered by the bslib package’s new nav() API (consider using bslib’s API to create better looking and more fully featured navs). (#3388)
All uses of list(...) have been replaced with rlang::list2(...). This means that you can use trailing , without error and use rlang’s !!! operator to “splice” a list of argument values into .... We think this’ll be particularly useful for passing a list of tabPanel() to their consumers (i.e., tabsetPanel(), navbarPage(), etc). For example, tabs <- list(tabPanel("A", "a"), tabPanel("B", "b")); navbarPage(!!!tabs). (#3315 and #3328)
installExprFunction() and exprToFunction() are now able to handle quosures when quoted = TRUE. So render-functions which call these functions (such as with htmlwidgets) can now understand quosures. Users can also use rlang::inject() to unquote a quosure for evaluation. This also means that render function no longer need env and quoted parameters; that information can be embedded into a quosure which is then passed to the render function. Better documentation was added for how to create render functions. (#3472)
icon(lib="fontawesome") is now powered by the fontawesome package, which will make it easier to use the latest FA icons in the future (by updating the fontawesome package). (#3302)
When busy indicators are enabled (see useBusyIndicators()), a spinner is
+shown on each calculating/recalculating output, and a pulsing banner is shown
+at the top of the page when the app is otherwise busy. This function allows
+you to customize the appearance of those busy indicators. To apply the
+customization, include the result of this function inside the app's UI.
busyIndicatorOptions(
+ ...,
+ spinner_type = NULL,
+ spinner_color = NULL,
+ spinner_size = NULL,
+ spinner_delay = NULL,
+ spinner_selector = NULL,
+ pulse_background = NULL,
+ pulse_height = NULL,
+ pulse_speed = NULL
+)Currently ignored.
The type of spinner. Pre-bundled types include: +'ring', 'ring2', 'ring3', 'bars', 'bars2', 'bars3', 'pulse', 'pulse2', 'pulse3', 'dots', 'dots2', 'dots3'.
+A path to a local SVG file can also be provided. The SVG should adhere to +the following rules:
The SVG itself should contain the animation.
It should avoid absolute sizes (the spinner's containing DOM element
+size is set in CSS by spinner_size, so it should fill that container).
It should avoid setting absolute colors (the spinner's containing DOM element
+color is set in CSS by spinner_color, so it should inherit that color).
The color of the spinner. This can be any valid CSS +color. Defaults to the app's "primary" color if Bootstrap is on the page.
The size of the spinner. This can be any valid CSS size.
The amount of time to wait before showing the spinner. +This can be any valid CSS time and can be useful for not showing the spinner +if the computation finishes quickly.
A character string containing a CSS selector for
+scoping the spinner customization. The default (NULL) will apply the
+spinner customization to the parent element of the spinner.
A CSS background definition for the pulse. The +default uses a +linear-gradient +of the theme's indigo, purple, and pink colors.
The height of the pulsing banner. This can be any valid +CSS size.
The speed of the pulsing banner. This can be any valid CSS +time.
useBusyIndicators() for enabling/disabling busy indicators.
if (FALSE) { # rlang::is_interactive()
+
+library(bslib)
+
+card_ui <- function(id, spinner_type = id) {
+ card(
+ busyIndicatorOptions(spinner_type = spinner_type),
+ card_header(paste("Spinner:", spinner_type)),
+ plotOutput(shiny::NS(id, "plot"))
+ )
+}
+
+card_server <- function(id, simulate = reactive()) {
+ moduleServer(
+ id = id,
+ function(input, output, session) {
+ output$plot <- renderPlot({
+ Sys.sleep(1)
+ simulate()
+ plot(x = rnorm(100), y = rnorm(100))
+ })
+ }
+ )
+}
+
+ui <- page_fillable(
+ useBusyIndicators(),
+ input_task_button("simulate", "Simulate", icon = icon("refresh")),
+ layout_columns(
+ card_ui("ring"),
+ card_ui("bars"),
+ card_ui("dots"),
+ card_ui("pulse"),
+ col_widths = 6
+ )
+)
+
+server <- function(input, output, session) {
+ simulate <- reactive(input$simulate)
+ card_server("ring", simulate)
+ card_server("bars", simulate)
+ card_server("dots", simulate)
+ card_server("pulse", simulate)
+}
+
+shinyApp(ui, server)
+}
+