mirror of
https://github.com/rstudio/shiny.git
synced 2026-04-29 03:00:45 -04:00
* Add option to use bootstraplib and have selectInput() theming variables * Use getShinyOption() * Have useBsTheme() error out with informative messages if a theme isn't active * Better Sass variables defaults that account for both bootswatch themes and bs_theme_base_colors() * Add Carson as an author * Provide better BS3/BS4 selectize sass variable defaults as a patch to the source files * tidy up tools script * add sass to suggests * yarn install && yarn build * Wrap sass compilation into reusable function * Bring -color-item closer to -color-input * Leverage the new sass::output_file() * naming change * Sync up with other PRs * Sync up DESCRIPTION * Forgot to update CSS output file logic * document
124 lines
4.6 KiB
R
124 lines
4.6 KiB
R
#!/usr/bin/env Rscript
|
|
library(rprojroot)
|
|
|
|
## -----------------------------------------------------------------
|
|
## First, download the main selectize.js and css
|
|
## -----------------------------------------------------------------
|
|
|
|
version <- "0.12.4"
|
|
dest_dir <- find_package_root_file("inst/www/shared/selectize")
|
|
tag <- paste0("v", version)
|
|
dest_file <- file.path(tempdir(), paste0("selectize.js-", version, ".zip"))
|
|
url <- sprintf("https://github.com/selectize/selectize.js/archive/%s.zip", tag)
|
|
|
|
download.file(url, dest_file)
|
|
unzipped <- tempdir()
|
|
unzip(dest_file, exdir = unzipped)
|
|
|
|
unlink(dest_dir, recursive = TRUE)
|
|
|
|
dir.create(file.path(dest_dir, "js"), recursive = TRUE)
|
|
file.copy(
|
|
file.path(unzipped, paste0("selectize.js-", version), "dist", "js", "standalone", "selectize.min.js"),
|
|
file.path(dest_dir, "js"),
|
|
overwrite = TRUE
|
|
)
|
|
|
|
dir.create(file.path(dest_dir, "css"), recursive = TRUE)
|
|
file.copy(
|
|
file.path(unzipped, paste0("selectize.js-", version), "dist", "css", "selectize.bootstrap3.css"),
|
|
file.path(dest_dir, "css"),
|
|
overwrite = TRUE
|
|
)
|
|
|
|
## -----------------------------------------------------------------
|
|
## Second, download accessibility plugin
|
|
## -----------------------------------------------------------------
|
|
|
|
version <- "927d81e9ea86acac1724d57b2ce9f3c962fd34c4"
|
|
url <- sprintf("https://github.com/SLMNBJ/selectize-plugin-a11y/archive/%s.zip", version)
|
|
dest_file <- file.path(tempdir(), paste0("selectize-plugin-a11y-", version, ".zip"))
|
|
download.file(url, dest_file)
|
|
|
|
unzipped <- tempdir()
|
|
unzip(dest_file, exdir = unzipped)
|
|
|
|
dir.create(file.path(dest_dir, "accessibility", "js"), recursive = TRUE)
|
|
file.copy(
|
|
file.path(unzipped, paste0("selectize-plugin-a11y-", version), "selectize-plugin-a11y.js"),
|
|
file.path(dest_dir, "accessibility", "js"),
|
|
overwrite = TRUE
|
|
)
|
|
|
|
tmpdir <- tempdir()
|
|
|
|
## -----------------------------------------------------------------
|
|
## Third, download Bootstrap 4 SASS port of selectize less
|
|
## This is using a specific sha because this hasn't been included in an official release
|
|
## https://github.com/papakay/selectize-bootstrap-4-style/pull/19
|
|
## -----------------------------------------------------------------
|
|
|
|
version <- "5013be4e97a14bef47bc8badcc78e6762815ef38"
|
|
zip_src <- sprintf("https://github.com/papakay/selectize-bootstrap-4-style/archive/%s.zip", version)
|
|
zip_target <- file.path(tmpdir, "select-bs4.zip")
|
|
download.file(zip_src, zip_target)
|
|
unzip(zip_target, exdir = dirname(zip_target))
|
|
target <- "inst/www/shared/selectize/scss"
|
|
unlink(target, recursive = TRUE)
|
|
dir.create(target)
|
|
file.rename(
|
|
file.path(tmpdir, sprintf("selectize-bootstrap-4-style-%s/src/selectize", version)),
|
|
target
|
|
)
|
|
|
|
# Remove the unnecessary imports of Bootstrap
|
|
scss_file <- "inst/www/shared/selectize/scss/selectize.bootstrap4.scss"
|
|
scss <- readLines(scss_file)
|
|
scss <- scss[!grepl('@import\\s+"\\.\\./bootstrap', scss)]
|
|
writeLines(scss, scss_file)
|
|
|
|
## -----------------------------------------------------------------
|
|
## Fourth, download Bootstrap 3 SASS port
|
|
## https://github.com/herschel666/selectize-scss
|
|
## Note that the base selectize.scss, as well as the plugins, are identical
|
|
## to the BS4 port, so we only need the selectize.bootstrap3.scss file
|
|
## -----------------------------------------------------------------
|
|
|
|
version <- "0.10.1"
|
|
zip_src <- sprintf("https://github.com/herschel666/selectize-scss/archive/v%s.zip", version)
|
|
zip_target <- file.path(tmpdir, "select-bs3.zip")
|
|
download.file(zip_src, zip_target)
|
|
unzip(zip_target, exdir = dirname(zip_target))
|
|
target <- "inst/www/shared/selectize/scss/selectize.bootstrap3.scss"
|
|
file.rename(
|
|
file.path(tmpdir, sprintf("selectize-scss-%s/src/selectize.bootstrap3.scss", version)),
|
|
target
|
|
)
|
|
|
|
|
|
# =============================================================================
|
|
# Apply patches
|
|
# =============================================================================
|
|
# The version of selectize-plugin-a11y that we use is modified from the base version
|
|
# in the following ways:
|
|
# * In our version, each option item has their own unique id to be announced to screen readers when selection changes.
|
|
|
|
patch_dir <- find_package_root_file("tools/selectize-patches")
|
|
|
|
for (patch in list.files(patch_dir, full.names = TRUE)) {
|
|
tryCatch(
|
|
{
|
|
message(sprintf("Applying %s", basename(patch)))
|
|
withr::with_dir(find_package_root_file(), system(sprintf("git apply %s", patch)))
|
|
},
|
|
error = function(e) {
|
|
quit(save = "no", status = 1)
|
|
}
|
|
)
|
|
}
|
|
|
|
# =============================================================================
|
|
# Generate minified js
|
|
# =============================================================================
|
|
withr::with_dir(find_package_root_file("tools"), system("yarn grunt"))
|