# Introduction to downloadthis

This package provides a wrapper around `bsplus::bs_button()`, which has to goal to provide a download button in HTML outputs from R Markdown without the need to have `runtime: shiny`.

Currently, the download buttons functionality (embedded files) is not supported in Internet Explorer.

Please, refer to the Customizing buttons with css vignette for tips on how to customize the buttons.

You can easily produce a download button as follows:

## Data frames

### Passing a data frame to the function

    library(downloadthis)

    mtcars %>%
      download_this(
        output_name = "mtcars dataset",
        output_extension = ".csv",
        button_label = "Download data as csv",
        button_type = "default",
        has_icon = TRUE,
        icon = "fa fa-save"
      )

## Lists (only `.xlsx` and `.rds` are supported)

### Passing a list with data frames to the function

    list(mtcars, iris) %>%
      download_this(
        output_name = "mtcars and iris datasets",
        output_extension = ".xlsx",
        button_label = "Download datasets as xlsx",
        button_type = "warning",
        has_icon = TRUE,
        icon = "fa fa-save"
      )

### Passing a named list with data frames to the function

    list("mtcars dataset" = mtcars, "iris dataset" = iris) %>%
      download_this(
        output_name = "mtcars and iris datasets",
        output_extension = ".xlsx",
        button_label = "Download datasets as xlsx",
        button_type = "warning",
        has_icon = TRUE,
        icon = "fa fa-save"
      )

## R Objects

In case you want to make any R object available for download, you may use the `.rds` extension.

    vector_example <- 1:10
    linear_model <- lm(mpg ~ gear, data = mtcars)

    list(mtcars, iris, vector_example, linear_model) %>%
      download_this(
        output_name = "datasets, vector, and linear model",
        output_extension = ".rds",
        button_label = "Download as rds",
        button_type = "warning",
        has_icon = TRUE,
        icon = "fa fa-save"
      )

## Web address

    ## Link in Github repo
    download_link(
      link = "https://github.com/fmmattioni/downloadthis/raw/master/inst/example/file_1.pdf",
      button_label = "Download pdf file",
      button_type = "danger",
      has_icon = TRUE,
      icon = "fa fa-save",
      self_contained = FALSE
    )

## Local files

### Single file

    download_file(
      path = system.file("assets/css/all.min.css", package = "downloadthis"),
      output_name = "CSS file from downloadthis",
      button_label = "Download css file",
      button_type = "danger",
      has_icon = TRUE,
      icon = "fa fa-save",
      self_contained = FALSE
    )

### Multiple files

    path_files <- list.files(path = system.file("assets/css", package = "downloadthis"), full.names = TRUE)

    download_file(
      path = path_files,
      output_name = "Files from downloadthis",
      button_label = "Download files",
      button_type = "danger",
      has_icon = TRUE,
      icon = "fa fa-save",
      self_contained = FALSE
    )

## Local directory

    download_dir(
      path = system.file("assets", package = "downloadthis"),
      output_name = "example dir",
      button_label = "Download directory",
      button_type = "success",
      has_icon = TRUE,
      icon = "fa fa-save",
      self_contained = FALSE
    )

## ggplot2

    library(ggplot2)

    plot <- ggplot(cars, aes(speed, dist)) +
      geom_point()

    plot

    download_this(plot)
    #> Saving 3 x 3 in image