rstudio / htmltools

Tools for HTML generation and output
https://rstudio.github.io/htmltools/
214 stars 67 forks source link

`bindFillRole` warning on object type `shiny.tag.list` #378

Closed PaulC91 closed 1 year ago

PaulC91 commented 1 year ago

Hey I'm getting a stream of the following warning message repeated over and over in the console whenever I launch a shiny app after updating to the latest htmltools and shiny packages.

Warning: bindFillRole() only works on htmltools::tag() objects (e.g., div(), p(), etc.), not objects of type 'shiny.tag.list'.

Thanks.

gadenbuie commented 1 year ago

Thanks for the report @PaulC91. I think this situation is the motivation behind the open issue #374. That said, it'd be helpful if you could share the results of devtools::session_info() or some more context about the packages and functions used in your app. That information will better help us understand the scope of this problem.


For my notes, here's a very minimal reprex

library(htmltools)

bindFillRole(
  tagList(div(id = "test")),
  item = TRUE
)
#> Warning: `bindFillRole()` only works on htmltools::tag() objects (e.g., div(),
#> p(), etc.), not objects of type 'shiny.tag.list'.
#>
#> <div id="test"></div>

When the input to bindFillRole() has a class, that class is printed in the warning message

bindFillRole(
  leaflet::leaflet(),
  item = TRUE
)
#> Warning: `bindFillRole()` only works on htmltools::tag() objects (e.g., div(),
#> p(), etc.), not objects of type 'leaflet'.
PaulC91 commented 1 year ago

Thanks for the quick response Garrick.

See session info below. In terms of context, this particular app has a shiny::navbarPage UI (not the new bslib version). I use several shinyWidgets inputs and someshinydashboard elements like boxes via shinyWidgets::useShinydashboard(). I do make use of tagList in some cases, for example my entire UI is a tagList to include head information, example:

ui <- tagList(
    tags$head(
      ...
    ),
    navbarPage(
      ...
   )
)

Or to wrap different text tags, example:

title = tagList("Title", tags$small("subtitle"))

But I think the warnings are coming are coming from internal code and not just my own due to the sheer number of them.

Many thanks, Paul

─ Session info ──────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.2.1 (2022-06-23)
 os       macOS Big Sur ... 10.16
 system   x86_64, darwin17.0
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Europe/Paris
 date     2023-05-17
 pandoc   NA

─ Packages ──────────────────────────────────────────────────────────────────
 package            * version    date (UTC) lib source
 anytime              0.3.9      2020-08-27 [1] CRAN (R 4.2.0)
 assertthat           0.2.1      2019-03-21 [1] CRAN (R 4.2.0)
 backports            1.4.1      2021-12-13 [1] CRAN (R 4.2.0)
 bit                  4.0.4      2020-08-04 [1] CRAN (R 4.2.0)
 bit64                4.0.5      2020-08-30 [1] CRAN (R 4.2.0)
 broom                1.0.0      2022-07-01 [1] CRAN (R 4.2.0)
 bslib                0.4.2.9000 2023-05-15 [1] Github (rstudio/bslib@0cca4ce)
 cachem               1.0.6      2021-08-19 [1] CRAN (R 4.2.0)
 callr                3.7.1      2022-07-13 [1] CRAN (R 4.2.0)
 cellranger           1.1.0      2016-07-27 [1] CRAN (R 4.2.0)
 cli                  3.4.1      2022-09-23 [1] CRAN (R 4.2.0)
 clipr              * 0.8.0      2022-02-22 [1] CRAN (R 4.2.0)
 colorspace           2.0-3      2022-02-21 [1] CRAN (R 4.2.0)
 countup            * 0.1.1      2022-11-24 [1] Github (johncoene/countup@e8d8c6f)
 crayon               1.5.1      2022-03-26 [1] CRAN (R 4.2.0)
 crosstalk            1.2.0      2021-11-04 [1] CRAN (R 4.2.0)
 curl                 4.3.2      2021-06-23 [1] CRAN (R 4.2.0)
 data.table           1.14.2     2021-09-27 [1] CRAN (R 4.2.0)
 DBI                  1.1.3      2022-06-18 [1] CRAN (R 4.2.0)
 dbplyr               2.2.1      2022-06-27 [1] CRAN (R 4.2.0)
 digest               0.6.29     2021-12-01 [1] CRAN (R 4.2.0)
 dplyr              * 1.1.0      2023-01-29 [1] CRAN (R 4.2.0)
 ellipsis             0.3.2      2021-04-29 [1] CRAN (R 4.2.0)
 fansi                1.0.3      2022-03-24 [1] CRAN (R 4.2.0)
 farver               2.1.1      2022-07-06 [1] CRAN (R 4.2.0)
 fastmap              1.1.1      2023-02-24 [1] CRAN (R 4.2.0)
 fontawesome          0.4.0      2022-10-25 [1] CRAN (R 4.2.1)
 forcats            * 0.5.2      2022-08-19 [1] CRAN (R 4.2.0)
 fs                   1.5.2      2021-12-08 [1] CRAN (R 4.2.0)
 gargle               1.2.0      2021-07-02 [1] CRAN (R 4.2.0)
 generics             0.1.3      2022-07-05 [1] CRAN (R 4.2.0)
 ggplot2            * 3.4.0      2022-11-04 [1] CRAN (R 4.2.0)
 glue                 1.6.2      2022-02-24 [1] CRAN (R 4.2.0)
 googledrive          2.0.0      2021-07-08 [1] CRAN (R 4.2.0)
 googlesheets4        1.0.1      2022-08-13 [1] CRAN (R 4.2.0)
 gtable               0.3.0      2019-03-25 [1] CRAN (R 4.2.0)
 haven                2.5.0      2022-04-15 [1] CRAN (R 4.2.0)
 here                 1.0.1      2020-12-13 [1] CRAN (R 4.2.0)
 highcharter        * 0.9.4      2022-01-03 [1] CRAN (R 4.2.0)
 hms                  1.1.2      2022-08-19 [1] CRAN (R 4.2.0)
 htmltools            0.5.5.9000 2023-05-17 [1] Github (rstudio/htmltools@73fd307)
 htmlwidgets          1.6.2      2023-03-17 [1] CRAN (R 4.2.0)
 httpuv               1.6.5      2022-01-05 [1] CRAN (R 4.2.0)
 httr                 1.4.4      2022-08-17 [1] CRAN (R 4.2.0)
 igraph               1.3.4      2022-07-19 [1] CRAN (R 4.2.0)
 jquerylib            0.1.4      2021-04-26 [1] CRAN (R 4.2.0)
 jsonlite             1.8.0      2022-02-22 [1] CRAN (R 4.2.0)
 later                1.3.0      2021-08-18 [1] CRAN (R 4.2.0)
 lattice              0.20-45    2021-09-22 [1] CRAN (R 4.2.1)
 leaflet            * 2.1.1      2023-03-19 [1] Github (paulc91/leaflet@7d86c88)
 leaflet.extras       1.0.0      2018-04-21 [1] CRAN (R 4.2.0)
 leaflet.minicharts * 0.6.2      2022-08-30 [1] Github (rte-antares-rpackage/leaflet.minicharts@8a9a602)
 leaflet.providers    1.9.0      2019-11-09 [1] CRAN (R 4.2.0)
 lifecycle            1.0.3      2022-10-07 [1] CRAN (R 4.2.0)
 lubridate          * 1.8.0      2021-10-07 [1] CRAN (R 4.2.0)
 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)
 modelr               0.1.9      2022-08-19 [1] CRAN (R 4.2.0)
 munsell              0.5.0      2018-06-12 [1] CRAN (R 4.2.0)
 nanotime             0.3.6      2022-03-06 [1] CRAN (R 4.2.0)
 paint                0.1.5      2022-08-24 [1] Github (milesmcbain/paint@0b27c48)
 pak                  0.4.0      2023-01-15 [1] CRAN (R 4.2.0)
 pillar               1.8.1      2022-08-19 [1] CRAN (R 4.2.0)
 pkgconfig            2.0.3      2019-09-22 [1] CRAN (R 4.2.0)
 processx             3.7.0      2022-07-07 [1] CRAN (R 4.2.0)
 promises             1.2.0.1    2021-02-11 [1] CRAN (R 4.2.0)
 ps                   1.7.1      2022-06-18 [1] CRAN (R 4.2.0)
 purrr              * 0.3.4      2020-04-17 [1] CRAN (R 4.2.0)
 quantmod             0.4.20     2022-04-29 [1] CRAN (R 4.2.0)
 R6                   2.5.1      2021-08-19 [1] CRAN (R 4.2.0)
 Rcpp                 1.0.9      2022-07-08 [1] CRAN (R 4.2.0)
 RcppCCTZ             0.2.11     2022-08-06 [1] CRAN (R 4.2.0)
 reactable          * 0.3.0      2022-05-26 [1] CRAN (R 4.2.0)
 reactR               0.4.4      2021-02-22 [1] CRAN (R 4.2.0)
 readr              * 2.1.2      2022-01-30 [1] CRAN (R 4.2.0)
 readxl               1.4.1      2022-08-17 [1] CRAN (R 4.2.0)
 reprex               2.0.2      2022-08-17 [1] CRAN (R 4.2.0)
 rlang                1.0.6      2022-09-24 [1] CRAN (R 4.2.0)
 rlist                0.4.6.2    2021-09-03 [1] CRAN (R 4.2.0)
 rprojroot            2.0.3      2022-04-02 [1] CRAN (R 4.2.0)
 rvest                1.0.3      2022-08-19 [1] CRAN (R 4.2.0)
 sass                 0.4.2      2022-07-16 [1] CRAN (R 4.2.0)
 scales               1.2.1      2022-08-20 [1] CRAN (R 4.2.0)
 sessioninfo        * 1.2.2      2021-12-06 [1] CRAN (R 4.2.0)
 sever              * 0.0.7      2021-07-14 [1] CRAN (R 4.2.0)
 shiny              * 1.7.4.9002 2023-05-17 [1] Github (rstudio/shiny@90539bf)
 shinydashboard     * 0.7.2      2021-09-30 [1] CRAN (R 4.2.0)
 shinyjs              2.1.0      2021-12-23 [1] CRAN (R 4.2.0)
 shinylogs          * 0.2.1      2022-04-18 [1] CRAN (R 4.2.0)
 shinyWidgets       * 0.7.5      2022-11-17 [1] CRAN (R 4.2.1)
 stringi              1.7.8      2022-07-11 [1] CRAN (R 4.2.0)
 stringr            * 1.4.1      2022-08-20 [1] CRAN (R 4.2.0)
 tibble             * 3.1.8      2022-07-22 [1] CRAN (R 4.2.0)
 tidyr              * 1.2.0      2022-02-01 [1] CRAN (R 4.2.0)
 tidyselect           1.2.0      2022-10-10 [1] CRAN (R 4.2.0)
 tidyverse          * 1.3.2      2022-07-18 [1] CRAN (R 4.2.0)
 TTR                  0.24.3     2021-12-12 [1] CRAN (R 4.2.0)
 tzdb                 0.3.0      2022-03-28 [1] CRAN (R 4.2.0)
 usethis            * 2.1.6      2022-05-25 [1] CRAN (R 4.2.0)
 utf8                 1.2.2      2021-07-24 [1] CRAN (R 4.2.0)
 vctrs                0.5.2      2023-01-23 [1] CRAN (R 4.2.0)
 waiter             * 0.2.5      2022-01-03 [1] CRAN (R 4.2.0)
 withr                2.5.0      2022-03-03 [1] CRAN (R 4.2.0)
 xml2                 1.3.3      2021-11-30 [1] CRAN (R 4.2.0)
 xtable               1.8-4      2019-04-21 [1] CRAN (R 4.2.0)
 xts                  0.12.1     2020-09-09 [1] CRAN (R 4.2.0)
 yaml                 2.3.5      2022-02-21 [1] CRAN (R 4.2.0)
 zoo                  1.8-10     2022-04-15 [1] CRAN (R 4.2.0)

 [1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library

─────────────────────────────────────────────────────────────────────────────
cpsievert commented 1 year ago

@PaulC91 it'd be great to know more about where this warning is being generated, but if it helps ease your mind, this warning is only relevant (at least at the moment) when implementing a filling layout via bslib.

So, if you're not looking to implement a filling layout, it should be fine to suppress this particular warning message, perhaps with something like:

ui <- tagList(div(id = "test"))
rlang::try_fetch(
  bindFillRole(ui, item = TRUE),
  htmltools_fill_role_object = function(w) { NULL }
)
PaulC91 commented 1 year ago

Hey @cpsievert

I just discovered the warning was being called whenever a reactable was being rendered. But I had a fairly old version of that package locally and updating to the latest version has solved the issue.

Thanks for your time and for all the great work on bslib!