---
title: "d_js"
author: "Colin Fay"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{d_js}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
## Using `{golem}` js functions
`{golem}` comes with a series of JavaScript functions that you can call from the server. These functions are added by default with `bundle_resources()` .
Then they are called with `golem::invoke_js("fonction", "ui_element")`.
This `ui_element` define the UI element to interact with. It can be a full jQuery selector, an id or a class. Note that you can add several elements and iterate other them.
`invoke_js` can be used with any function defined in a [JavaScript Custom Handler](https://shiny.rstudio.com/articles/communicating-with-js.html#from-r-to-javascript), that you can build with `golem::add_js_handler()`.
### `golem::invoke_js()`
+ `showid` & `hideid`, `showclass` & `hideclass` show and hide elements through their id or class.
```{r eval = FALSE}
golem::invoke_js("showid", ns("plot"))
```
+ `showhref` & `hidehref` hide and show a link by trying to match the `href` content.
```{r eval = FALSE}
golem::invoke_js("showhref", "panel2")
```
+ `clickon` click on the element. You have to use the full jQuery selector.
+ `show` & `hide` show and hide elements, using the full jQuery selector.
+ `disable` & `reable` able and disable specific element, using the full jQuery selector.
See `?golem::activate_js()` for the full list.
### A quick intro to jQuery selectors
+ `#plop`: the element with the id `plop`
+ `.pouet`: elements of class `pouet`
+ `"button:contains('this')"`: buttons with a text containing `'this'`
Note that in html, tags contains attributes. For example:
``` html
ThinkR
```
contains `href` & `data-value`. You can refer to these attributes with `[]` after the tag name.
+ `a[href = "https://thinkr.fr"]`: link with `href` being `https://thinkr.fr`
+ `a[data-value="panel2"]`: link with `data-value` being `"panel2"`