{"id":13654046,"url":"https://github.com/dreamRs/shinyWidgets","last_synced_at":"2025-04-23T07:30:27.897Z","repository":{"id":38224961,"uuid":"85872107","full_name":"dreamRs/shinyWidgets","owner":"dreamRs","description":"shinyWidgets : Extend widgets available in shiny","archived":false,"fork":false,"pushed_at":"2024-04-09T07:34:11.000Z","size":22618,"stargazers_count":801,"open_issues_count":95,"forks_count":152,"subscribers_count":23,"default_branch":"master","last_synced_at":"2024-04-09T08:40:47.311Z","etag":null,"topics":["r","shiny"],"latest_commit_sha":null,"homepage":"https://dreamrs.github.io/shinyWidgets/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreamRs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-03-22T20:18:18.000Z","updated_at":"2024-04-15T09:40:57.376Z","dependencies_parsed_at":"2024-04-15T09:40:44.677Z","dependency_job_id":"8e2fef1b-d6b1-40bb-8b61-517e08cfe504","html_url":"https://github.com/dreamRs/shinyWidgets","commit_stats":{"total_commits":704,"total_committers":44,"mean_commits":16.0,"dds":"0.25568181818181823","last_synced_commit":"b86e81b12a52b5e3648843cb82edb3bcc019f26e"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamRs%2FshinyWidgets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamRs%2FshinyWidgets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamRs%2FshinyWidgets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamRs%2FshinyWidgets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreamRs","download_url":"https://codeload.github.com/dreamRs/shinyWidgets/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250390799,"owners_count":21422784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["r","shiny"],"created_at":"2024-08-02T02:01:22.502Z","updated_at":"2025-04-23T07:30:27.886Z","avatar_url":"https://github.com/dreamRs.png","language":"R","readme":"# shinyWidgets\n\n\u003e Extend widgets available in [shiny](https://github.com/rstudio/shiny)\n\n\u003c!-- badges: start --\u003e\n[![CRAN status](https://www.r-pkg.org/badges/version/shinyWidgets)](https://CRAN.R-project.org/package=shinyWidgets)\n[![cranlogs](https://cranlogs.r-pkg.org/badges/shinyWidgets?color=brightgreen)](https://CRAN.R-project.org/package=shinyWidgets)\n[![cran checks](https://badges.cranchecks.info/worst/shinyWidgets.svg)](https://cran.r-project.org/web/checks/check_results_shinyWidgets.html)\n[![Coverage Status](https://img.shields.io/codecov/c/github/dreamRs/shinyWidgets/master.svg)](https://app.codecov.io/github/dreamRs/shinyWidgets?branch=master)\n[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/dreamRs/shinyWidgets?branch=master\u0026svg=true)](https://ci.appveyor.com/project/dreamRs/shinyWidgets)\n[![R-CMD-check](https://github.com/dreamRs/shinyWidgets/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/dreamRs/shinyWidgets/actions/workflows/R-CMD-check.yaml)\n\u003c!-- badges: end --\u003e\n\n\n## Overview\n\nThis package provide custom widgets and other components to enhance your shiny applications.\n\nYou can replace classical checkboxes with switch button, add colors to radio buttons and checkbox group, use buttons as radio or checkboxes.\nEach widget has an `update` method to change the value of an input from the server.\n\n\n\n## Installation\n\nInstall from [CRAN](https://CRAN.R-project.org/package=shinyWidgets) with:\n\n```r\ninstall.packages(\"shinyWidgets\")\n```\n\nOr install the development version from [GitHub](https://github.com/dreamRs/shinyWidgets) with:\n\n```r\n# install.packages(\"remotes\")\nremotes::install_github(\"dreamRs/shinyWidgets\")\n```\n\n\n## Demo\n\nA gallery application is included in the package. Once installed, use the following command to launch it:\n\n```r\nshinyWidgets::shinyWidgetsGallery()\n```\n\nA live version is available here : http://shinyapps.dreamrs.fr/shinyWidgets\n\n\n## Widgets\n\n### Single checkbox\n\n* **Bootstrap switch**\n\nTurn checkboxes into toggle switches : \n\n![switchInput](man/figures/switchInput.png)\n\n```r\nswitchInput(inputId = \"id\", value = TRUE)\n```\n\n\n* **Material switch**\n\nTurn checkboxes into toggle switches :\n\n![materialSwitch](man/figures/materialSwitch.png)\n\n```r\nmaterialSwitch(inputId = \"id\", label = \"Primary switch\", status = \"danger\")\n```\n\n\n* **Pretty checkbox**\n\n```r\nprettyCheckbox(\n  inputId = \"id\", label = \"Check me!\", icon = icon(\"check\")\n)\n```\n\n\n* **Pretty switch**\n\n```r\nprettySwitch(\n  inputId = \"id\",\n  label = \"Switch:\",\n  fill = TRUE, \n  status = \"primary\"\n)\n```\n\n\n* **Pretty toggle**\n\n```r\nprettyToggle(\n  inputId = \"id\",\n  label_on = \"Checked!\",\n  label_off = \"Unchecked...\"\n)\n```\n\n### Checkboxes and radio buttons\n\n* **Bootstrap buttons**\n\n![checkboxGroupButtons](man/figures/checkboxGroupButtons.png)\n\n```r\ncheckboxGroupButtons( # or radioGroupButtons\n  inputId = \"id\",\n  label = \"Choice: \",\n  choices = c(\"A\", \"B\", \"C\")\n)\n```\n\n* **Pretty checkbox group and radio buttons**\n\n```r\nprettyCheckboxGroup( # or prettyRadioButtons\n  inputId = \"id\",\n  label = \"Choice\",\n  choices = c(\"A\", \"B\", \"c\"),\n  outline = TRUE,\n  plain = TRUE,\n  status = \"primary\",\n  icon = icon(\"check\")\n)\n```\n\n\n### Select menu\n\n* **Bootstrap select picker**\n\nSelect menu with lot of configurations options available:\n\n![pickerInput](man/figures/pickerInput.png)\n\n```r\npickerInput(\n  inputId = \"id\", \n  label = \"Select:\", \n  choices = month.name, \n  options = pickerOptions(\n    actionsBox = TRUE, \n    size = 10,\n    selectedTextFormat = \"count \u003e 3\"\n  ), \n  multiple = TRUE\n)\n```\n\n* **Virtual select**\n\nSelect menu that can support long list of choices:\n\n![virtualSelectInput](man/figures/virtual-select.png)\n\n```r\nvirtualSelectInput(\n  inputId = \"id\",\n  label = \"Select:\",\n  choices = list(\n    \"Spring\" = c(\"March\", \"April\", \"May\"),\n    \"Summer\" = c(\"June\", \"July\", \"August\"),\n    \"Autumn\" = c(\"September\", \"October\", \"November\"),\n    \"Winter\" = c(\"December\", \"January\", \"February\")\n  ),\n  showValueAsTags = TRUE,\n  search = TRUE,\n  multiple = TRUE\n)\n```\n\n\n### Date picker\n\n* **Air Datepicker**\n\nDate (or month or year) picker with lot of options and a timepicker integrated :\n\n![airDatepickerInput](man/figures/air-datepicker.png)\n\n```r\nairDatepickerInput(\n  inputId = \"id\",\n  label = \"Select:\",\n  placeholder = \"Placeholder\",\n  multiple = 5, \n  clearButton = TRUE\n)\n```\n\n### Sliders\n\n* **Slider with Text**\n\nSlider with strings, to pass whatever you want:\n\n![sliderText](man/figures/sliderText.png)\n\n```r\nsliderTextInput(\n  inputId = \"id\", \n  label = \"Choice:\", \n  grid = TRUE, \n  force_edges = TRUE,\n  choices = c(\n    \"Strongly disagree\",\n    \"Disagree\",\n    \"Neither agree nor disagree\", \n    \"Agree\", \n    \"Strongly agree\"\n  )\n)\n```\n\n\n* **noUiSlider**\n\nA range slider that can be colored, have more than two handles and positioned vertically (among other things):\n\n![noUiSliderInput](man/figures/nouislider.png)\n\n```r\nnoUiSliderInput(\n  inputId = \"id\",\n  label = \"Select:\",\n  min = 0, \n  max = 600,\n  value = c(100, 220, 400),\n  tooltips = TRUE,\n  step = 1\n)\n```\n\n\n\n### Tree\n\n* **Tree check**\n\nSelect value(s) in a hierarchical structure:\n\n![treeInput](man/figures/treeinput.png)\n\n```r\ntreeInput(\n  inputId = \"ID2\",\n  label = \"Select cities:\",\n  choices = create_tree(cities),\n  returnValue = \"text\",\n  closeDepth = 1\n)\n```\n\n\n\n### Text\n\n* **Search**\n\nA text input only triggered by hitting 'Enter' or clicking search button : \n\n![search_input](man/figures/search_input.png)\n\n```r\nsearchInput(\n  inputId = \"id\", \n  label = \"Enter your search :\", \n  placeholder = \"This is a placeholder\", \n  btnSearch = icon(\"search\"), \n  btnReset = icon(\"remove\"), \n  width = \"100%\"\n)\n```\n\n\n\n## Other functionnalities\n\n### Sweet Alert\n\nShow an alert message to the user to provide some feedback, via [sweetalert2](https://sweetalert2.github.io/) library:\n\n![sendSweetAlert](man/figures/show_alert.png)\n\nSee examples in `?show_alert`.\n\n\nRequest confirmation from the user :\n\n![confirmSweetAlert](man/figures/ask_confirmation.png)\n\nSee examples in `?ask_confirmation`.\n\n\n\n### Dropdown button\n\nHide input in a button : \u003cbr\u003e\n![dropdown_off](man/figures/dropdown_btn_off.png)\n![dropdown_on](man/figures/dropdown_btn_on.png)\n\n```r\ndropdownButton(\n  tags$h3(\"List of Input\"),\n  selectInput(inputId = 'xcol', label = 'X Variable', choices = names(iris)),\n  selectInput(inputId = 'ycol', label = 'Y Variable', choices = names(iris), selected = names(iris)[[2]]),\n  sliderInput(inputId = 'clusters', label = 'Cluster count', value = 3, min = 1, max = 9),\n  circle = TRUE,\n  status = \"danger\", \n  icon = icon(\"gear\"), width = \"300px\",\n  tooltip = tooltipOptions(title = \"Click to see inputs !\")\n)\n```\n\nSee also `?dropMenu()`\n\n\n\n## Development\n\nThis package use [{packer}](https://github.com/JohnCoene/packer) to manage JavaScript assets, see packer's [documentation](https://packer.john-coene.com/#/) for more.\n\nInstall nodes modules with:\n\n```r\npacker::npm_install()\n```\n\nModify inputs bindings in `srcjs/inputs/`, then run:\n\n```r\npacker::bundle()\n```\n\nRe-install R package and try functions.\n\n\n\n","funding_links":[],"categories":["R","Tools","UI Components"],"sub_categories":["Packages","Bootstrap"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FdreamRs%2FshinyWidgets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FdreamRs%2FshinyWidgets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FdreamRs%2FshinyWidgets/lists"}