From af3d54c70b447ae2c6d42112b4d3a42a047fd17f Mon Sep 17 00:00:00 2001 From: JJ Allaire Date: Sat, 9 Apr 2016 09:38:07 -0400 Subject: [PATCH] call widget.resize when slides are shown --- inst/www/htmlwidgets.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/inst/www/htmlwidgets.js b/inst/www/htmlwidgets.js index 821e7ea3..b8379847 100644 --- a/inst/www/htmlwidgets.js +++ b/inst/www/htmlwidgets.js @@ -588,20 +588,13 @@ "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", resizeHandler ); - } - // This is needed for the specific case of ioslides, which - // flips slides between display:none and display:block. - // Ideally we would not have to have ioslide-specific code - // here, but rather have ioslides raise a generic event, - // but the rmarkdown package just went to CRAN so the - // window to getting that fixed may be long. - if (window.addEventListener) { - // It's OK to limit this to window.addEventListener - // browsers because ioslides itself only supports - // such browsers. - on(document, "slideenter", resizeHandler); - on(document, "slideleave", resizeHandler); + // subscribe to custom shown event fired by ioslides and reveal.js (and + // perhaps other slide frameworks). This is necessary because some widgets + // (e.g. dygraphs) which start out as display:none have height == 0 and + // width == 0 and this doesn't change when it becomes visible + window.jQuery(el).closest('slide').on('shown', resizeHandler); + window.jQuery(el).closest('section.slide').on('shown', resizeHandler); } }