На самом деле, после игры с этим я рекомендую использовать uiOutput
с renderUI
.
Без использования uiOutput
функция downloadButton
игнорируется (оценивается только downloadHandler
), поэтому параметр width
не был установлен, а также вы не можете изменять меткуКнопка.
Все решено с помощью uiOutput
.
---
title: "Full width downloadButton"
output:
flexdashboard::flex_dashboard:
css: styles.css
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
```
Inputs {.sidebar}
-----------------------------------------------------------------------
```{r}
# Create placeholder for the downloadButton
uiOutput("downloadUI")
```
```{r}
# Create the actual downloadButton
output$downloadUI <- renderUI( {
downloadButton("downBtn", "Download Iris data", style = "width:100%;")
})
# Add download handling
output$downBtn <- downloadHandler(
filename = function() {
"iris.csv"
},
content = function(file) {
write.csv(iris, file, row.names = FALSE)
}
)
```
Я установил width
, используя inlineCSS с аргументом style
, но выможет (и должен) использовать внешнюю таблицу стилей, если у вас несколько правил CSS.
Использование внешней таблицы стилей (файл CSS)
Внешний файл CSS можно использовать в Flexdashboard, добавив css: path/filename.css
в заголовок YAML.
---
title: "Full width downloadButton"
output:
flexdashboard::flex_dashboard:
css: styles.css
runtime: shiny
---
В этом случае приложение пытается прочитать файл с именем styles.css
в той же папке, что и Rmd
.
Создать файл CSS вту же папку и добавьте правило:
#downBtn {
width: 100%;
}
Теперь вы можете удалить style = "width:100%;"
из downloadButton
и по-прежнему получать кнопку полной ширины.
Вывод: