Create tours in Shiny apps using shepherd.js.
You can install the development version (recommended) of conductor
from GitHub with:
# install.packages("devtools")
devtools::install_github("etiennebacher/conductor")
You can also install the CRAN version, but the last bug corrections are not there yet:
install.packages("conductor")
If you already use cicerone
, then you should be able to use conductor
quite easily.
First, create a Conductor
with Conductor$new()
. This can be done anywhere, not necessarily in the ui
or server
parts of the app. You can also add some options in $new()
. To add steps in the tour, use $step()
. Steps can be attached to specific elements with el
, but if no el
is specified then the popover will be displayed in the center of the screen.
library(conductor)
conductor <- Conductor$
new()$
step(
title = "Hello there",
text = "This popover is displayed in the center of the screen."
)$
step(
el = "#test",
title = "This is a button",
text = "This button has no purpose. Its only goal is to serve as support for demo."
)
Then, call useConductor()
in the ui
and call conductor$init()$start()
anywhere in the server
.
library(shiny)
ui <- fluidPage(
useConductor(),
actionButton("test", "Test")
)
server <- function(input, output, session){
conductor$init()$start()
}
shinyApp(ui, server)
This is not at all the first package to enable tours in Shiny applications. Similar packages are:
The structure of the package, the code and the docs of conductor
are copied or largely inspired from cicerone
, by John Coene.
This package uses John Coene's {packer}
. If you want to contribute to the JavaScript files located in srcjs
, you should run packer::npm_install()
, do the modifications you want and then run:
packer::bundle()
devtools::load()
Please note that the conductor project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.