英文:
Can bslib nested card fullscreen behavior show just the nested card?
问题
When I use the option full_screen = TRUE
with nested card
s, clicking the fullscreen icon maximizes both cards. Can it be set to show just the internal card as fullscreen?
当我使用选项 full_screen = TRUE
与嵌套的 card
时,点击全屏图标会使两个卡片都最大化。是否可以设置仅显示内部卡片为全屏?
英文:
When I use the option full_screen = TRUE
with nested card
s, clicking the fullscreen icon maximizes both cards. Can it be set to show just the internal card as fullscreen?
library(shiny)
library(bslib)
ui = page(
card(
full_screen = F,
card_header(
"Main card",
),
card(
full_screen = T,
card_header(
"Plot card"
),
plotOutput("plot")
# )
)
)
)
server = function(input, output)
{
output$plot = renderPlot(hist(rnorm(100)))
}
shinyApp(ui, server)
答案1
得分: 1
这是使用JavaScript的解决方案:
library(shiny)
library(bslib)
# 定义自定义JavaScript
js <- '
function toggleFullscreen(element) {
if (!document.fullscreenElement) {
element.requestFullscreen().catch(console.log);
} else {
document.exitFullscreen();
}
}
$(document).on("shiny:connected", function() {
$("#nestedCard").on("click", function() {
toggleFullscreen(document.querySelector("#nestedCard"));
});
});
'
ui = page(
headerPanel("Nested Fullscreen Card"),
mainPanel(
tags$head(tags$script(HTML(js))), # 注入自定义JS
tags$div(
id = "mainCard",
class = "card",
tags$div(
class = "card-body",
tags$h5("Main card", class = "card-title"),
tags$div(
id = "nestedCard",
class = "card",
tags$div(
class = "card-body",
tags$h5("Plot card", class = "card-title"),
plotOutput("plot")
)
)
)
)
)
)
server = function(input, output)
{
output$plot = renderPlot(hist(rnorm(100)))
}
shinyApp(ui, server)
英文:
Here is solution using Javascript:
library(shiny)
library(bslib)
# Define custom JavaScript
js <- '
function toggleFullscreen(element) {
if (!document.fullscreenElement) {
element.requestFullscreen().catch(console.log);
} else {
document.exitFullscreen();
}
}
$(document).on("shiny:connected", function() {
$("#nestedCard").on("click", function() {
toggleFullscreen(document.querySelector("#nestedCard"));
});
});
'
ui = page(
headerPanel("Nested Fullscreen Card"),
mainPanel(
tags$head(tags$script(HTML(js))), # Inject custom JS
tags$div(
id = "mainCard",
class = "card",
tags$div(
class = "card-body",
tags$h5("Main card", class = "card-title"),
tags$div(
id = "nestedCard",
class = "card",
tags$div(
class = "card-body",
tags$h5("Plot card", class = "card-title"),
plotOutput("plot")
)
)
)
)
)
)
server = function(input, output)
{
output$plot = renderPlot(hist(rnorm(100)))
}
shinyApp(ui, server)
答案2
得分: 0
问题已在较新版本的 bslib
中得到解决:
https://github.com/rstudio/bslib/issues/558
英文:
The problem has been fixed in a newer version of bslib
:
https://github.com/rstudio/bslib/issues/558
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论