rstudio / bslib

Tools for theming Shiny and R Markdown via Bootstrap 3, 4, or 5.
https://rstudio.github.io/bslib/
Other
443 stars 49 forks source link

Nested accordion not correctly interpreting `multiple` parameter value #819

Open lmullany opened 9 months ago

lmullany commented 9 months ago

Description of Problem

When using bslib::accordion() and bslib::accordion_panel(), as below, I have an accordion with s (say s=3) panels. I want each of the accordion_panel objects to contain an accordion, which itself contains t (say t=2) panels. No problem constructing this, as below:

Upon initiation, all three panels and each of the nested accordions are closed. As requested on the outer/parent accordion, only one accordion panel is allowed to be open (multiple=FALSE), and this works well.

However, although each of the inner accordions also have multiple=FALSE, multiple panels within these inner accordions do open (i.e. the panels in the inner accordion do not automatically close when another panel within that inner accordion is selected).

Furthemore, if we set the inner accordion to multiple=TRUE, then the outer panel will close when clicking on a closed inner panel

library(shiny)
library(bslib)

accordion(
  accordion_panel(
    title = "panel_1",
    accordion(
      accordion_panel(title = "panel_1_sub_1", HTML("panel 1, subpanel 1 content")),
      accordion_panel(title = "panel_1_sub_2", HTML("panel 1, subpanel 2 content")),
      open=FALSE,
      multiple=FALSE # this is not working

    )
  ),
  accordion_panel(
    title = "panel_2",
    accordion(
      accordion_panel(title = "panel_2_sub_1", HTML("panel 2, subpanel 1 content")),
      accordion_panel(title = "panel_2_sub_2", HTML("panel 2, subpanel 2 content")),
      open=FALSE, 
      multiple=FALSE # this is not working
    )
  ),
  accordion_panel(
    title = "panel_3",
    accordion(
      accordion_panel(title = "panel_3_sub_1", HTML("panel 3, subpanel 1 content")),
      accordion_panel(title = "panel_3_sub_2", HTML("panel 3, subpanel 2 content")),
      open=FALSE, 
      multiple=TRUE # this is not working (closes parent panel)
    )
  ),
  open=FALSE, 
  multiple=FALSE # this is working fine
)

Session Info

─ Session info ────────────────────────────────────────────────
 setting  value
 version  R version 4.2.0 (2022-04-22 ucrt)
 os       Windows 10 x64 (build 19044)
 system   x86_64, mingw32
 ui       RStudio
 language (EN)
 collate  English_United States.utf8
 ctype    English_United States.utf8
 tz       America/New_York
 date     2023-10-05
 rstudio  2022.02.2+485 Prairie Trillium (desktop)
 pandoc   2.12 @ C:\\Users\\<username>\\ANACON~1\\Scripts\\pandoc.exe

─ Packages ────────────────────────────────────────────────────
 package     * version    date (UTC) lib source
 bslib       * 0.5.1.9000 2023-10-05 [1] Github (rstudio/bslib@b9ac2cf)
 cachem        1.0.8      2023-05-01 [1] CRAN (R 4.2.3)
 callr         3.7.3      2022-11-02 [1] CRAN (R 4.2.2)
 cli           3.6.1      2023-03-23 [1] CRAN (R 4.2.3)
 crayon        1.5.2      2022-09-29 [1] CRAN (R 4.2.2)
 curl          5.0.2      2023-08-14 [1] CRAN (R 4.2.3)
 desc          1.4.2      2022-09-08 [1] CRAN (R 4.2.2)
 devtools      2.4.5      2022-10-11 [1] CRAN (R 4.2.2)
 digest        0.6.33     2023-07-07 [1] CRAN (R 4.2.0)
 ellipsis      0.3.2      2021-04-29 [1] CRAN (R 4.2.0)
 fansi         1.0.4      2023-01-22 [1] CRAN (R 4.2.3)
 fastmap       1.1.1      2023-02-24 [1] CRAN (R 4.2.3)
 fs            1.6.3      2023-07-20 [1] CRAN (R 4.2.0)
 glue          1.6.2      2022-02-24 [1] CRAN (R 4.2.0)
 htmltools     0.5.6      2023-08-10 [1] CRAN (R 4.2.3)
 htmlwidgets   1.6.2      2023-03-17 [1] CRAN (R 4.2.3)
 httpuv        1.6.11     2023-05-11 [1] CRAN (R 4.2.3)
 jquerylib     0.1.4      2021-04-26 [1] CRAN (R 4.2.0)
 jsonlite      1.8.7      2023-06-29 [1] CRAN (R 4.2.0)
 later         1.3.1      2023-05-02 [1] CRAN (R 4.2.3)
 lifecycle     1.0.3      2022-10-07 [1] CRAN (R 4.2.2)
 magrittr      2.0.3      2022-03-30 [1] CRAN (R 4.2.0)
 memoise       2.0.1      2021-11-26 [1] CRAN (R 4.2.0)
 mime          0.12       2021-09-28 [1] CRAN (R 4.2.0)
 miniUI        0.1.1.1    2018-05-18 [1] CRAN (R 4.2.1)
 pillar        1.9.0      2023-03-22 [1] CRAN (R 4.2.3)
 pkgbuild      1.4.2      2023-06-26 [1] CRAN (R 4.2.0)
 pkgconfig     2.0.3      2019-09-22 [1] CRAN (R 4.2.0)
 pkgload       1.3.2.1    2023-07-08 [1] CRAN (R 4.2.3)
 prettyunits   1.1.1      2020-01-24 [1] CRAN (R 4.2.0)
 processx      3.8.2      2023-06-30 [1] CRAN (R 4.2.0)
 profvis       0.3.8      2023-05-02 [1] CRAN (R 4.2.3)
 promises      1.2.1      2023-08-10 [1] CRAN (R 4.2.3)
 ps            1.7.5      2023-04-18 [1] CRAN (R 4.2.3)
 purrr         1.0.2      2023-08-10 [1] CRAN (R 4.2.3)
 R6            2.5.1      2021-08-19 [1] CRAN (R 4.2.0)
 Rcpp          1.0.11     2023-07-06 [1] CRAN (R 4.2.0)
 remotes       2.4.2.1    2023-07-18 [1] CRAN (R 4.2.3)
 rlang         1.1.1      2023-04-28 [1] CRAN (R 4.2.3)
 rprojroot     2.0.3      2022-04-02 [1] CRAN (R 4.2.0)
 rstudioapi    0.15.0     2023-07-07 [1] CRAN (R 4.2.0)
 sass          0.4.7      2023-07-15 [1] CRAN (R 4.2.3)
 sessioninfo   1.2.2      2021-12-06 [1] CRAN (R 4.2.0)
 shiny       * 1.7.5      2023-08-12 [1] CRAN (R 4.2.3)
 stringi       1.7.12     2023-01-11 [1] CRAN (R 4.2.2)
 stringr       1.5.0      2022-12-02 [1] CRAN (R 4.2.3)
 tibble        3.2.1      2023-03-20 [1] CRAN (R 4.2.3)
 urlchecker    1.0.1      2021-11-30 [1] CRAN (R 4.2.2)
 usethis       2.2.2      2023-07-06 [1] CRAN (R 4.2.0)
 utf8          1.2.3      2023-01-31 [1] CRAN (R 4.2.3)
 vctrs         0.6.3      2023-06-14 [1] CRAN (R 4.2.3)
 xtable        1.8-4      2019-04-21 [1] CRAN (R 4.2.0)

───────────────────────────────────────────────────────────────
gadenbuie commented 9 months ago

Thanks for the report @lmullany and for the detailed reprex. I can reproduce the problem as described. I don't have a fix at the moment, but we'll look into this soon.