Linne.Rd
Generate CSS from R code. Initialise a new CSS environment with new
,
use rule
to define CSS rules.
There are hundreds of attributes to pass to the three-dot
construct (...
), a comprehensive list of them can be found on
w3schools.
Note that Linne accepts camelCase for convenience, e.g.: font-size
or fontSize
.
define()
Linne$define(...)
...
Named variables to define.
Define variables.
Self: the Linne
object.
Linne$new()$define(baseColor = "blue")
rule()
Linne$rule(selector, ...)
selector
An object of class selector
as returned by the sel_*
family of functions.
...
Declarations: properties and their values. This accepts
camelcase, e.g.: font-style
or fontStyle
.
Rule
Define a CSS rule.
Self: the Linne
object.
Linne$new()$rule(sel_id("myButton"), color = "blue", fontSize = 50)
build()
Linne$build()
Builds CSS
Builds the CSS from definitions and rules.
Linne$ new()$ define(primary_color = 'red')$ rule( sel_id("myButton"), color = primary_color, fontSize = 50 )$ rule( sel_class("container"), backgroundColor = primary_color )$ build()
get_css()
Linne$get_css(build = TRUE)
build
Whether to build the CSS with the build
method.
Retrieve the CSS
A string.
Linne$new()$rule(sel_id("myId"), fontSize = 20)$get_css()
show_css()
Linne$show_css(build = TRUE)
build
Whether to build the CSS with the build
method.
Prints Generated CSS
Linne$new()$rule(sel_id("myButton"), color = "blue")$show_css()
import()
Linne$import(url)
url
URL to import.
Import
Import from a url or path.
Linne$new()$import('https://fonts.googleapis.com/css2?family=Roboto')
include()
Linne$include(build = TRUE)
build
Whether to build the CSS with the build
method.
Include in Shiny
Includes the CSS in shiny, place the call to this method anywhere in the shiny UI.
# generate CSS css <- Linne$ new()$ define(grey = '#c4c4c4')$ rule( sel_id("myButton"), backgroundColor = 'red', fontSize = 20, color = grey )$ rule( sel_class("aClass"), color = grey ) # include in an app library(shiny) ui <- fluidPage( css$include(), h1("Some text", class = "aClass"), actionButton("myButton", "Am I red?", class = "aClass") ) server <- function(input, output){ output$myPlot <- renderPlot(plot(cars)) } if(interactive()) shinyApp(ui, server)
write()
Linne$write(path = "style.css", pretty = FALSE, build = TRUE)
path
Path to file.
pretty
Whether to keep tabs and newlines.
build
Whether to build the CSS with the build
method.
Save
Write the CSS to file.
\dontrun{Linne$new()$rule(sel_id("id"), fontStyle = "italic")$write("styles.css")}
print()
Linne$print()
Prints information on the Linne object.
inject()
Linne$inject(build = TRUE, session = shiny::getDefaultReactiveDomain())
build
Whether to build the CSS with the build
method.
session
A valid shiny session.
Inject CSS
Dynamically inject CSS from the server of a shiny application.
library(shiny) ui <- fluidPage( useLinne(), actionButton("change", "Change me!") ) server <- function(input, output){ linne <- Linne$ new()$ rule( sel_id("change"), color = "white", backgroundColor = "black" ) observeEvent(input$change, { linne$inject() }) } if(interactive()) shinyApp(ui, server)
clone()
The objects of this class are cloneable with this method.
Linne$clone(deep = FALSE)
deep
Whether to make a deep clone.
## ------------------------------------------------ ## Method `Linne$define` ## ------------------------------------------------ Linne$new()$define(baseColor = "blue") ## ------------------------------------------------ ## Method `Linne$rule` ## ------------------------------------------------ Linne$new()$rule(sel_id("myButton"), color = "blue", fontSize = 50) ## ------------------------------------------------ ## Method `Linne$build` ## ------------------------------------------------ Linne$ new()$ define(primary_color = 'red')$ rule( sel_id("myButton"), color = primary_color, fontSize = 50 )$ rule( sel_class("container"), backgroundColor = primary_color )$ build() ## ------------------------------------------------ ## Method `Linne$get_css` ## ------------------------------------------------ Linne$new()$rule(sel_id("myId"), fontSize = 20)$get_css()#> [1] "#myId{font-size:20px;}"## ------------------------------------------------ ## Method `Linne$show_css` ## ------------------------------------------------ Linne$new()$rule(sel_id("myButton"), color = "blue")$show_css()#> #myButton{ #> color:blue; #> }## ------------------------------------------------ ## Method `Linne$import` ## ------------------------------------------------ Linne$new()$import('https://fonts.googleapis.com/css2?family=Roboto') ## ------------------------------------------------ ## Method `Linne$include` ## ------------------------------------------------ # generate CSS css <- Linne$ new()$ define(grey = '#c4c4c4')$ rule( sel_id("myButton"), backgroundColor = 'red', fontSize = 20, color = grey )$ rule( sel_class("aClass"), color = grey ) # include in an app library(shiny) ui <- fluidPage( css$include(), h1("Some text", class = "aClass"), actionButton("myButton", "Am I red?", class = "aClass") )#>server <- function(input, output){ output$myPlot <- renderPlot(plot(cars)) } if(interactive()) shinyApp(ui, server) ## ------------------------------------------------ ## Method `Linne$write` ## ------------------------------------------------ if (FALSE) Linne$new()$rule(sel_id("id"), fontStyle = "italic")$write("styles.css") ## ------------------------------------------------ ## Method `Linne$inject` ## ------------------------------------------------ library(shiny) ui <- fluidPage( useLinne(), actionButton("change", "Change me!") ) server <- function(input, output){ linne <- Linne$ new()$ rule( sel_id("change"), color = "white", backgroundColor = "black" ) observeEvent(input$change, { linne$inject() }) } if(interactive()) shinyApp(ui, server)