-
Notifications
You must be signed in to change notification settings - Fork 81
Description
The reason why reactable() currently doesn't fill the RStudio IDE viewer pane (which is the default {htmlwidgets} behavior) is that reactable() passes a default value of "auto" to createWidget()'s height/width
Lines 220 to 221 in f6a4e0a
| width = "auto", | |
| height = "auto", |
Lines 718 to 724 in f6a4e0a
| htmlwidgets::createWidget( | |
| name = "reactable", | |
| reactR::reactMarkup(component), | |
| width = width, | |
| height = height, | |
| # Don't limit width when rendered inside an R Notebook | |
| sizingPolicy = htmlwidgets::sizingPolicy(knitr.figure = FALSE), |
This is because htmlwidgets::createWidget() assumes non-NULL values are user specified values. This isn't very well documented, but you can see evidence of this in http://www.htmlwidgets.org/develop_intro.html as well as the code {htmlwidgets} uses to resolve sizingPolicy():
I've also noticed that we can't simply change width/height's default in reactable to NULL, because of this:
Lines 710 to 716 in f6a4e0a
| if (static) { | |
| # HACK: widget_html is the only way to customize the widget HTML, but it | |
| # doesn't have access to the widget attributes. To work around this, we attach | |
| # the widget attributes as an attribute on width, which just happens to be passed | |
| # as-is for static rendered HTML widgets. | |
| attr(width, "ssrGetAttribs") <- function() component$attribs | |
| } |
However, I think I have an idea for removing that "hack", which will allow for non-NULL width.
(P.S., I ran across this because we're currently working on a new fill setting in htmlwidgets::sizingPolicy() that allows widgets to fill a container marked with htmltools::bindFillRole(container = TRUE), which will power "resizable cards" https://rstudio.github.io/bslib/articles/cards.html#responsive-sizing )