Skip to contents

Coverage Status CRAN_Status_Badge Downloads Total downloads

R’s interface for dragula library for moving around elements in shiny app.

Installation:

source("https://install-github.me/zzawadz/dragulaR")

Live examples

Every app in inst/apps/ is also published as a static Shinylive build - it runs entirely in the browser via WebAssembly, with no Shiny server involved. Try them without installing anything at https://zzawadz.github.io/dragulaR/.

To build the site yourself:

# shinylive resolves the wasm binary from where dragulaR was installed,
# so install it from r-universe to get the development build
install.packages("dragulaR", repos = "https://zzawadz.r-universe.dev")
install.packages(c("shinylive", "shinydashboard"))
Rscript tools/build-shinylive.R _shinylive
Rscript -e 'httpuv::runStaticServer("_shinylive")'

The output in _shinylive/ is static files only, so it can be served from GitHub Pages or any static host.

Demo:

Drag’n’drop plots:

library(dragulaR)
runApp(system.file("apps/example01-dragula", package = "dragulaR"))
Dragging plots between containers
Dragging plots between containers

Track what is in the containers:

runApp(system.file("apps/example02-input", package = "dragulaR"))
Tracking which elements are in each container
Tracking which elements are in each container

Works with renderUI

runApp(system.file("apps/example06-dragula-dynamic-elements-renderUI", package = "dragulaR"))
Dragula working with renderUI
Dragula working with renderUI
runApp(
  system.file("apps/example06-dragula-dynamic-elements-renderUI", package = "dragulaR"),
  display.mode = "showcase")

Pass options to dragula

See dragula README for valid options.

runApp(
  system.file("apps/example07-input-options", package = "dragulaR"),
  display.mode = "showcase")

Limit maximum items in a container

Use the maxItems option to restrict the number of items that can be dropped into a container:

# Limit "Model" container to 3 items maximum
dragula(c("Available", "Model"), maxItems = list(Model = 3))

# Run the example app
runApp(system.file("apps/example08-max-items", package = "dragulaR"))

All examples

library(dragulaR)
dir(system.file("apps/", package = "dragulaR"))
# dashboard-example
# example01-dragula
# example02-input
# example03-dragula-get-elements-order
# example04-dragula-module
# example05-dragula-dynamic-elements
# example06-dragula-dynamic-elements-renderUI
# example07-input-options
# example08-max-items