The Bootstrap framework lets you add some JavaScript functionality to your web site by adding attributes to your HTML tags - Bootstrap takes care of the JavaScript < https://getbootstrap.com/javascript>. If you are using R Markdown or Shiny, you can use these functions to create collapsible sections, accordion panels, modals, tooltips, popovers, and an accordion sidebar framework (not described at Bootstrap site).
You can install the latest released version from CRAN with:
install.packages("bsplus")
or the latest development version from GitHub with:
# install.packages("devtools")devtools::install_github("ijlyttle/bsplus")
To see all of this in action, you are referred to the overview article at this package's pkgdown site.
The goals of this package are:
This family of functions lets you build another dimension to your shiny apps, although you can still use it rmarkdown HTML documents. Rather than explain, you can see it demonstrated in a shiny app. If you would like some explanation, please see this article.
These functions make it easier to incorporate help-documentation into your shiny apps - functions for incorporating tooltips, popovers, and modals into the labels of shiny inputs. You can see this shiny app for a demonstration, and this article for some explanation.
A carousel is a Boostrap JavaScript component used to enclose a set of (typically) images, providing controls to move slides back-and-forth - as shown in this article. I think that this could be a more-useful tool if an "easy" way can be found to populate a carousel with images produced by gganimate.
In this package, there are function families for:
bs_collapse()
bs_accordion()
bs_accordion_sidebar()
bs_embed_tooltip()
bs_embed_popover()
bs_modal()
bs_carousel()
There are also helper functions:
shiny_iconlink()
, shinyInput_label_embed()
data-
and aria-
attributes of tags: bs_set_data()
, bs_set_aria()
One of the goals of this package is to implement consistent grammar and vocabulary. To keep the namespace clean(er), many of the functions have the prefix bs_
.
Let's start with the conventions used to name the functions:
bs_noun()
, used to create a tag
. For example, use bs_accordion()
to create an accordion panel-set.
bs_verb(tag, ...)
, used to take an action on a tag
. For example, use bs_append()
to append a panel to an accordion panel-set.
bs_verb_noun(tag, ...)
used to take an action on a tag
using a thing
. For example, use bs_embed_tooltip()
to embed a tooltip into a tag
.
use_bs_noun()
used to add a bit of Javascript to your HTML, just like the shinyjs function useShinyJS()
. This is necessary for bs_accordion_sidebar()
, bs_embed_tooltip()
, or bs_embed_popover()
to work properly.
Often we use the words element and tag interchangeably - we are talking about HTML elements. In the grammar of this documentation (and package), it can be useful to think about direct objects and indirect objects, so the word tag is used to denote direct objects, and the words element or thing are used to denote indirect objects.
In the context of a set of piped functions, the first argument will always be the direct object; the name of the first argument of many functions is tag
- you will be sending the tag through the pipe.
bs_append(tag, ...)
used to append something to a tag, perhaps a panel into an accordion-group.bs_attach_foo(tag, ...)
used to attach the id
of an element (foo) to another tag, for example, you could create a modal window using bs_modal()
, then you could attach the id
of the modal window to the tag using bs_attach_modal()
bs_emded_foo(tag, ...)
used to embed something (a foo) into a tag, for example, bs_embed_tooltip()
bs_set_opts(tag, ...)
used to set some options for the items yet to be appended to a tag.Let's consider the differences between append
, attach
, and embed
:
id
of an element, not the element itself. However, we can attach an id
of an element to more than one tag.This package draws inspiration from shinyBS, written by Eric Bailey, and leans heavily on htmltools, written by RStudio.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
fixes an S3/S4 dispatch bug in bs_attr()
(#34)
adds wrappers for Bootstrap components: bs_button()
to create buttons, bs_panel()
to create panels
version bump for development
deprecates render_html_fragment()
(#24, solution proposed by @jpmarindiaz)
adds carousel: bs_carousel()
adds function to embed help links into labels of shiny inputs, shinyInput_label_embed()
adds vignettes (articles for pkgdown)
adds modals, tooltips, and popovers: bs_modal()
, bs_embed_tooltip()
, bs_embed_popover()
adds pkgdown documentation: http://ijlyttle.github.io/bsplus/
adds a NEWS.md
file to track changes to the package