From 4cbabffb5a72daca6cba827c74201a12b722c933 Mon Sep 17 00:00:00 2001 From: DivadNojnarg Date: Sat, 16 Mar 2024 15:31:35 +0100 Subject: [PATCH] start checkbox --- NAMESPACE | 3 - NEWS.md | 3 + R/f7-inputs.R | 184 ++---------------- _pkgdown.yml | 2 - inst/examples/checkbox/app.R | 22 +++ inst/examples/checkboxgroup/app.R | 29 +++ man/checkbox.Rd | 82 ++------ man/checkboxgroup.Rd | 66 ++++--- man/f7-deprecated.Rd | 23 +-- .../mac-4.3/checkbox/checkbox-app-001.json | 5 + .../mac-4.3/checkbox/checkbox-app-001_.png | Bin 0 -> 17972 bytes .../checkbox/checkboxgroup-app-001.json | 5 + .../checkbox/checkboxgroup-app-001_.png | Bin 0 -> 95623 bytes .../checkbox/checkboxgroup-app-002.json | 5 + .../checkbox/checkboxgroup-app-002_.new.png | Bin 0 -> 89410 bytes .../checkbox/checkboxgroup-app-002_.png | Bin 0 -> 89408 bytes .../actionsheet-app-004_.new.png | Bin 31948 -> 31849 bytes tests/testthat/test-checkbox.R | 64 ++++++ 18 files changed, 212 insertions(+), 281 deletions(-) create mode 100644 inst/examples/checkbox/app.R create mode 100644 inst/examples/checkboxgroup/app.R create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001.json create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001_.png create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001.json create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001_.png create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-002.json create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-002_.new.png create mode 100644 tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-002_.png create mode 100644 tests/testthat/test-checkbox.R diff --git a/NAMESPACE b/NAMESPACE index 0d01b4dd..2fa76587 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -114,8 +114,6 @@ export(f7Tooltip) export(f7ValidateInput) export(f7VirtualList) export(f7VirtualListItem) -export(f7checkBox) -export(f7checkBoxGroup) export(getF7Colors) export(hideF7Preloader) export(insertF7Tab) @@ -129,7 +127,6 @@ export(updateF7App) export(updateF7AutoComplete) export(updateF7Button) export(updateF7Card) -export(updateF7Checkbox) export(updateF7DatePicker) export(updateF7Entity) export(updateF7Fab) diff --git a/NEWS.md b/NEWS.md index 1ee09d2a..6ef71cb7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,7 @@ - `f7AddMessages()` is definitely removed. Deprecated from previous releases. - `f7Appbar()` has been removed in Framework7. We have no alternative to replace it. - `f7ShowNavbar()` and `f7HideNavbar()` are removed, as long time deprecated. +- `f7checkBox()` and `f7checkBoxGroup()` are removed, as long time deprecated. ## Deprecation - `f7Accordion()`: @@ -27,6 +28,8 @@ We now return an object of objects which becomes a list of lists. - `f7Block()` gains an `outline` parameter (add grey border). - `f7Button()` get a new `tonal` style. - `f7Card()` get a new `raised` and `divider` parameters. +- `f7CheckboxGroup()` has a new `position` parameter to control +the check icon position. Default to left. - Fix various issues in documentation. # shinyMobile 1.0.1 diff --git a/R/f7-inputs.R b/R/f7-inputs.R index 2e4b1225..41c48276 100644 --- a/R/f7-inputs.R +++ b/R/f7-inputs.R @@ -905,34 +905,7 @@ updateF7DatePicker <- function(inputId, value = NULL, ..., #' @param value Initial value (TRUE or FALSE). #' #' @rdname checkbox -#' @examples -#' if (interactive()) { -#' library(shiny) -#' library(shinyMobile) -#' -#' shinyApp( -#' ui = f7Page( -#' title = "My app", -#' f7SingleLayout( -#' navbar = f7Navbar(title = "f7Checkbox"), -#' f7Card( -#' f7Checkbox( -#' inputId = "check", -#' label = "Checkbox", -#' value = FALSE -#' ), -#' verbatimTextOutput("test") -#' ) -#' ) -#' ), -#' server = function(input, output) { -#' output$test <- renderPrint({ -#' input$check -#' }) -#' } -#' ) -#' } -#' # +#' @example inst/examples/checkbox/app.R #' @export f7Checkbox <- function(inputId, label, value = FALSE) { value <- shiny::restoreInput(id = inputId, default = value) @@ -950,95 +923,21 @@ f7Checkbox <- function(inputId, label, value = FALSE) { ) } - - -#' Deprecated functions -#' -#' \code{f7checkBox} creates a checkbox input. Use \link{f7Checkbox} instead. -#' -#' @rdname f7-deprecated -#' @inheritParams f7checkBoxGroup -#' @keywords internal -#' @export -f7checkBox <- function(inputId, label, value = FALSE) { - .Deprecated( - "f7Checkbox", - package = "shinyMobile", - "f7checkBox will be removed in future release. Please use - f7Checkbox instead.", - old = as.character(sys.call(sys.parent()))[1L] - ) - f7Checkbox(inputId, label, value) -} - - #' Update Framework7 checkbox #' #' \code{updateF7Checkbox} changes the value of a checkbox input on the client. #' #' @rdname checkbox #' @param inputId The id of the input object. -#' @param label The label to set for the input object. +#' @param label The label to set for the input object. Does not work. #' @param value The value to set for the input object. #' @param session The Shiny session object. -#' -#' @export -#' -#' @examples -#' if (interactive()) { -#' library(shiny) -#' library(shinyMobile) -#' -#' ui <- f7Page( -#' f7SingleLayout( -#' navbar = f7Navbar(title = "updateF7CheckBox"), -#' f7Slider( -#' inputId = "controller", -#' label = "Number of observations", -#' max = 10, -#' min = 0, -#' value = 1, -#' step = 1, -#' scale = TRUE -#' ), -#' f7checkBox( -#' inputId = "check", -#' label = "Checkbox" -#' ) -#' ) -#' ) -#' -#' server <- function(input, output, session) { -#' observe({ -#' # TRUE if input$controller is odd, FALSE if even. -#' x_even <- input$controller %% 2 == 1 -#' -#' if (x_even) { -#' showNotification( -#' id = "notif", -#' paste("The slider is ", input$controller, "and the checkbox is", input$check), -#' duration = NULL, -#' type = "warning" -#' ) -#' } else { -#' removeNotification("notif") -#' } -#' -#' updateF7Checkbox("check", value = x_even) -#' }) -#' } -#' -#' shinyApp(ui, server) -#' } updateF7Checkbox <- function(inputId, label = NULL, value = NULL, session = shiny::getDefaultReactiveDomain()) { message <- dropNulls(list(label = label, value = value)) session$sendInputMessage(inputId, message) } - - - #' Framework7 checkbox group #' #' \code{f7CheckboxGroup} creates a checkbox group input @@ -1047,50 +946,33 @@ updateF7Checkbox <- function(inputId, label = NULL, value = NULL, #' @param label Checkbox group label. #' @param choices Checkbox group choices. #' @param selected Checkbox group selected value. +#' @param position Check mark position. +#' \code{"left"} or \code{"right"}. #' #' @export #' @rdname checkboxgroup #' -#' @examples -#' if (interactive()) { -#' library(shiny) -#' library(shinyMobile) -#' -#' shiny::shinyApp( -#' ui = f7Page( -#' title = "My app", -#' f7SingleLayout( -#' navbar = f7Navbar(title = "f7CheckboxGroup"), -#' f7CheckboxGroup( -#' inputId = "variable", -#' label = "Choose a variable:", -#' choices = colnames(mtcars)[-1], -#' selected = NULL -#' ), -#' tableOutput("data") -#' ) -#' ), -#' server = function(input, output) { -#' output$data <- renderTable( -#' { -#' mtcars[, c("mpg", input$variable), drop = FALSE] -#' }, -#' rownames = TRUE -#' ) -#' } -#' ) -#' } -f7CheckboxGroup <- function(inputId, label, choices = NULL, selected = NULL) { +#' @example inst/examples/checkboxgroup/app.R +f7CheckboxGroup <- function( + inputId, label, choices = NULL, selected = NULL, + position = c("left", "right")) { + position <- match.arg(position) + position <- switch(position, + "left" = "start", + "right" = "end" + ) selectedPosition <- if (!is.null(selected)) match(selected, choices) else NULL - choicesTag <- lapply(X = seq_along(choices), function(i) { shiny::tags$li( shiny::tags$label( - class = "item-checkbox item-content", + class = sprintf("item-checkbox item-checkbox-icon-%s item-content", position), shiny::tags$input( type = "checkbox", name = inputId, - value = choices[[i]] + value = choices[[i]], + checked = if (!is.null(selectedPosition)) { + if (i == selectedPosition) NA + } ), shiny::tags$i(class = "icon icon-checkbox"), shiny::tags$div( @@ -1101,15 +983,13 @@ f7CheckboxGroup <- function(inputId, label, choices = NULL, selected = NULL) { ) }) - if (!is.null(selected)) choicesTag[[selectedPosition]]$children[[1]]$children[[1]]$attribs[["checked"]] <- NA - shiny::tagList( shiny::tags$div( class = "block-title", label ), shiny::tags$div( - class = "list shiny-input-checkboxgroup", + class = "list list-strong-ios list-outline-ios list-dividers-ios shiny-input-checkboxgroup", id = inputId, shiny::tags$ul( choicesTag @@ -1118,32 +998,6 @@ f7CheckboxGroup <- function(inputId, label, choices = NULL, selected = NULL) { ) } - - -#' Deprecated functions -#' -#' \code{f7checkBoxGroup} creates a checkbox group input. -#' Use \link{f7CheckboxGroup} instead -#' -#' @rdname f7-deprecated -#' @inheritParams f7checkBoxGroup -#' @keywords internal -#' @export -f7checkBoxGroup <- function(inputId, label, choices = NULL, selected = NULL) { - .Deprecated( - "f7CheckboxGroup", - package = "shinyMobile", - "f7checkBoxGroup will be removed in future release. Please use - f7CheckboxGroup instead.", - old = as.character(sys.call(sys.parent()))[1L] - ) - - f7CheckboxGroup(inputId, label, choices, selected) -} - - - - #' Create option html tag based on choice input #' #' Used by \link{f7SmartSelect} and \link{f7Select} diff --git a/_pkgdown.yml b/_pkgdown.yml index 9de0d110..36e4d476 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -68,9 +68,7 @@ reference: desc: slider, radio, checkboxes, ... contents: - '`f7AutoComplete`' - - '`f7checkBox`' - '`f7Checkbox`' - - '`f7checkBoxGroup`' - '`f7CheckboxGroup`' - '`f7ColorPicker`' - '`f7DatePicker`' diff --git a/inst/examples/checkbox/app.R b/inst/examples/checkbox/app.R new file mode 100644 index 00000000..4ce9d067 --- /dev/null +++ b/inst/examples/checkbox/app.R @@ -0,0 +1,22 @@ +library(shiny) +library(shinyMobile) + +app <- shinyApp( + ui = f7Page( + f7SingleLayout( + navbar = f7Navbar(title = "updateF7Checkbox"), + f7Block(f7Button("update", "Toggle checkbox")), + f7Checkbox( + inputId = "checkbox", + label = "Checkbox", + value = FALSE + ) + ) + ), server = function(input, output, session) { + observeEvent(input$update, { + updateF7Checkbox("checkbox", value = !input$checkbox) + }) + } +) + +if (interactive() || identical(Sys.getenv("TESTTHAT"), "true")) app diff --git a/inst/examples/checkboxgroup/app.R b/inst/examples/checkboxgroup/app.R new file mode 100644 index 00000000..63c2d8ce --- /dev/null +++ b/inst/examples/checkboxgroup/app.R @@ -0,0 +1,29 @@ +library(shiny) +library(shinyMobile) + +app <- shinyApp( + ui = f7Page( + title = "My app", + f7SingleLayout( + navbar = f7Navbar(title = "f7CheckboxGroup"), + f7CheckboxGroup( + inputId = "checkboxgroup", + label = "Choose a variable:", + choices = colnames(mtcars)[-1], + selected = "disp", + position = "right" + ), + tableOutput("data") + ) + ), + server = function(input, output) { + output$data <- renderTable( + { + mtcars[, c("mpg", input$checkboxgroup), drop = FALSE] + }, + rownames = TRUE + ) + } +) + +if (interactive() || identical(Sys.getenv("TESTTHAT"), "true")) app diff --git a/man/checkbox.Rd b/man/checkbox.Rd index 97e630c4..4219025a 100644 --- a/man/checkbox.Rd +++ b/man/checkbox.Rd @@ -17,7 +17,7 @@ updateF7Checkbox( \arguments{ \item{inputId}{The id of the input object.} -\item{label}{The label to set for the input object.} +\item{label}{The label to set for the input object. Does not work.} \item{value}{The value to set for the input object.} @@ -29,76 +29,26 @@ updateF7Checkbox( \code{updateF7Checkbox} changes the value of a checkbox input on the client. } \examples{ -if (interactive()) { - library(shiny) - library(shinyMobile) +library(shiny) +library(shinyMobile) - shinyApp( - ui = f7Page( - title = "My app", - f7SingleLayout( - navbar = f7Navbar(title = "f7Checkbox"), - f7Card( - f7Checkbox( - inputId = "check", - label = "Checkbox", - value = FALSE - ), - verbatimTextOutput("test") - ) - ) - ), - server = function(input, output) { - output$test <- renderPrint({ - input$check - }) - } - ) -} -# -if (interactive()) { - library(shiny) - library(shinyMobile) - - ui <- f7Page( +app <- shinyApp( + ui = f7Page( f7SingleLayout( - navbar = f7Navbar(title = "updateF7CheckBox"), - f7Slider( - inputId = "controller", - label = "Number of observations", - max = 10, - min = 0, - value = 1, - step = 1, - scale = TRUE - ), - f7checkBox( - inputId = "check", - label = "Checkbox" + navbar = f7Navbar(title = "updateF7Checkbox"), + f7Block(f7Button("update", "Toggle checkbox")), + f7Checkbox( + inputId = "checkbox", + label = "Checkbox", + value = FALSE ) ) - ) - - server <- function(input, output, session) { - observe({ - # TRUE if input$controller is odd, FALSE if even. - x_even <- input$controller \%\% 2 == 1 - - if (x_even) { - showNotification( - id = "notif", - paste("The slider is ", input$controller, "and the checkbox is", input$check), - duration = NULL, - type = "warning" - ) - } else { - removeNotification("notif") - } - - updateF7Checkbox("check", value = x_even) + ), server = function(input, output, session) { + observeEvent(input$update, { + updateF7Checkbox("checkbox", value = !input$checkbox) }) } +) - shinyApp(ui, server) -} +if (interactive() || identical(Sys.getenv("TESTTHAT"), "true")) app } diff --git a/man/checkboxgroup.Rd b/man/checkboxgroup.Rd index 608bbc14..26327f42 100644 --- a/man/checkboxgroup.Rd +++ b/man/checkboxgroup.Rd @@ -4,7 +4,13 @@ \alias{f7CheckboxGroup} \title{Framework7 checkbox group} \usage{ -f7CheckboxGroup(inputId, label, choices = NULL, selected = NULL) +f7CheckboxGroup( + inputId, + label, + choices = NULL, + selected = NULL, + position = c("left", "right") +) } \arguments{ \item{inputId}{Checkbox group input.} @@ -14,37 +20,41 @@ f7CheckboxGroup(inputId, label, choices = NULL, selected = NULL) \item{choices}{Checkbox group choices.} \item{selected}{Checkbox group selected value.} + +\item{position}{Check mark position. +\code{"left"} or \code{"right"}.} } \description{ \code{f7CheckboxGroup} creates a checkbox group input } \examples{ -if (interactive()) { - library(shiny) - library(shinyMobile) +library(shiny) +library(shinyMobile) - shiny::shinyApp( - ui = f7Page( - title = "My app", - f7SingleLayout( - navbar = f7Navbar(title = "f7CheckboxGroup"), - f7CheckboxGroup( - inputId = "variable", - label = "Choose a variable:", - choices = colnames(mtcars)[-1], - selected = NULL - ), - tableOutput("data") - ) - ), - server = function(input, output) { - output$data <- renderTable( - { - mtcars[, c("mpg", input$variable), drop = FALSE] - }, - rownames = TRUE - ) - } - ) -} +app <- shinyApp( + ui = f7Page( + title = "My app", + f7SingleLayout( + navbar = f7Navbar(title = "f7CheckboxGroup"), + f7CheckboxGroup( + inputId = "checkboxgroup", + label = "Choose a variable:", + choices = colnames(mtcars)[-1], + selected = "disp", + position = "right" + ), + tableOutput("data") + ) + ), + server = function(input, output) { + output$data <- renderTable( + { + mtcars[, c("mpg", input$checkboxgroup), drop = FALSE] + }, + rownames = TRUE + ) + } +) + +if (interactive() || identical(Sys.getenv("TESTTHAT"), "true")) app } diff --git a/man/f7-deprecated.Rd b/man/f7-deprecated.Rd index bb0222b2..b8159e71 100644 --- a/man/f7-deprecated.Rd +++ b/man/f7-deprecated.Rd @@ -1,9 +1,7 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/f7-inputs.R, R/f7-tabs.R, -% R/f7-validate-inputs.R, R/f7Popover.R, R/f7Preloader.R, R/manifest.R -\name{f7checkBox} -\alias{f7checkBox} -\alias{f7checkBoxGroup} +% Please edit documentation in R/f7-tabs.R, R/f7-validate-inputs.R, +% R/f7Popover.R, R/f7Preloader.R, R/manifest.R +\name{f7InsertTab} \alias{f7InsertTab} \alias{f7RemoveTab} \alias{f7ValidateInput} @@ -12,12 +10,8 @@ \alias{f7ShowPreloader} \alias{hideF7Preloader} \alias{create_manifest} -\title{Deprecated functions} +\title{Framework7 tab insertion} \usage{ -f7checkBox(inputId, label, value = FALSE) - -f7checkBoxGroup(inputId, label, choices = NULL, selected = NULL) - f7InsertTab( id, tab, @@ -63,8 +57,6 @@ create_manifest( ) } \arguments{ -\item{inputId}{Input to validate.} - \item{id}{\link{f7Tabs} id.} \item{tab}{\link{f7Tab} to insert.} @@ -77,6 +69,8 @@ create_manifest( \item{session}{shiny session.} +\item{inputId}{Input to validate.} + \item{info}{Additional text to display below the input field.} \item{pattern}{Pattern for validation. Regex.} @@ -118,11 +112,6 @@ This function creates a www folder for your shiny app. Must specify the path. It creates 1 folders to contain icons and the manifest.json file. } \description{ -\code{f7checkBox} creates a checkbox input. Use \link{f7Checkbox} instead. - -\code{f7checkBoxGroup} creates a checkbox group input. -Use \link{f7CheckboxGroup} instead - \code{removeF7Tab} removes an \link{f7Tab} in an \link{f7Tabs}. Use \link{removeF7Tab} instead diff --git a/tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001.json b/tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001.json new file mode 100644 index 00000000..5aa10550 --- /dev/null +++ b/tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001.json @@ -0,0 +1,5 @@ +{ + "input": { + "checkbox": false + } +} diff --git a/tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001_.png b/tests/testthat/_snaps/mac-4.3/checkbox/checkbox-app-001_.png new file mode 100644 index 0000000000000000000000000000000000000000..20980f47cbee97ec83983fe4219a08346e8552ea GIT binary patch literal 17972 zcmeHvX;72dx-Pc6<#a1}dVADn?ru=FARx2M$73r-rWPc~U}zfw0Rx)I5Fm-&w9<-z z1|nlfE0f3&WeQ_ZQHDT>%tL^Hkc0pskN^o}x+{Cv{c-D7-CK2j+}gFT{2+Xb?_1wm z>m8rxec{1Ro~~+NYksYwqM`=5@T0ei%HBB@l`oC|Z66qUIYB$6qVk;zn`&Zu$9X|Y{y_?VLwDYgKzjbr}kHH^9Zkm%It0r9&N$F0ED+-Q zBRvW*Yv!G)1@)6O}$soxPm#U+zDW%(@*nwUO$d#H%4D^&dhPT~sb7 zx>bG}&ZyscXI}0_ymai%%1A}lp-hM4PKh@!v6`Y+YO)M=){8R{V|E-4&6fGHwj;J+ zELbp_j1C}2;{^f%%V9gvDn>=+E@|1}n>pjoYYP5jEBKTZ-H{Q0?+fW6PH@8Q;~x2K zBWOL3t8MmZ`Ik8*Ri2X;-KT$6$ZF^Jt%MJiK=6#nv8ufNbO(p4t#Q4JCwzulMTbxo z3S$lDDdVFAtfy(qA|3Ud?qe(s09tV6_7~D9i|aifA89(Vk(nAc z$zltUb?gWlkF^^q74IefuXBOXuTjfm6$RZAM}K&5+7XkX24wjG4f~V& zuIU$XH(PqUB1T?aE8;TD_8&EM&ose2wt+LQ_ve~(71YW+``9T9`smBifXO>q9^L`1 zRx$0exYdsH1BhwU63%Et7D1xed`I8p<-i-4pXfR@_V{=?`S5aqT&}mrjzbuYaEpYVk8K-l zMxJ@du6K8(Pr2t~yzcdHg9TJz67$7S%F`|~WxRC!D6N?4_CVA;7ewua;N8~Y9<$kI5qFtXK+ zkKe_#Z9(^`X$G;>9;_8ajYz>V8*26`fAp=Lk)do}TpvAJD-hq?f0Qkk zDDY9F)@RhyvCAX9AC49k3=r&nC*>oSboQuUaHafR+H?9QR1e*3?xm{ugKQ zT&G!VJLLjUklM~|M)=aJYpAv6qef&B6Fvj>dupNEt6yl=CTOq6ym{7*#hI5nj=gd2k2te zuovxRWsP?;TrS;dW>2jM_^OJ!AY`6XQkaGFA-{0TUaeksrw(VfI+jPif zE6f$*X}9yfK4#psTRZ*}XFy9u4JIv^I^Q2tF;_@96h>qwGe1Nt0;-zXF{HRB2jGdgKo`EMhrFGR(BEP z_UAd+`W*Ly;Ii>}c9o?kWCd!1WTHi!JPiF<+L6!|pn&0YC&ZXWIV*R;6Sx2*bSicd z+d(W3qv59GBn14KTmv1WDMPoS=kjx9Uc{%rro3cAek!jz8BV+%u+}D-Z4(dmRXow0 zgp&z%D+4YAC=MY{c2FG4rWNEEOup=XYPb1#uVv(B?lfxLNy94Pf|1b_C#OSvPThIw zu6yC>6J9P1TmM=M^tOL_xyQ;FSN0=u6ZNSV*p7an^k<>;j)=G@MGo|T|Pmk29iMW8-E*IgVmtD$XEDx*A@w^zr-n8FcV0hBITfK?XMX>JIb9-JI;~MXz$g z6Y#R*kn@?k1!q!JIkj$P)cFpFljx#kdn9MTL*!u#$=?JX+p7-jVUZ$PBO&BEjm+pg zJbpkywK zD-$0Y%{XCfO#A)JAtc+M19ditdH=_gyi>RT%hQFmsEuCa*C~GO@WidQj~8(#UY|{L z88pm+#hqh)+j;*W{r!VO$Yr7@)!bF@i9*Eq5bqFld#iyv2A|PJeB7fvT<=OKP5YIC zqGA5a_2_2aHYvFpBvj5kEwy!}7qOtYm@EB0P;R9T|9#Wyn%Nm{&?bI6UrrUv-#hTz z3XTRZ6HUkyZPe{3MdFM%eP`G;4R4WWb#&MdB9aSXt{71?Z%elSmu^!p4h6 zK1Z?{z|K{m#7{!^iRB&Bw#SZ*`gLTL4B!mQya)lZMuFJ^x13nr$Sci(^_sS>W@qRa zTijTmtB+wihlYkKZA7_*-@iH}T)t~tOM^Pqjs--8Z7#j$)-Kx5Bn(%Nc45R%x-F95 z_w)zX*2*JdSH@_~;e;Yjf<5cEG*b_vVUBEMyC9~$ed^G%WGl%TBm@^)#d8H{U#c@d9crVQr{8@LY?`qU1|z78C*((Die{^gvWPHe$cLu7eLi2+DwAgmdX z8>kpBgHycLnM1)j{IdAs=4eRYof}Nky{c+2+qM$lTR<_XYI-n}H+2SU!1d)05FA1q z$|}oX?THnBFtgIq(uzwVZ13*fs&w0_QxHKxuwD>67(&At_%EBRV<}Rqd!9h<-5oUM z)5~axDyUApnfLwK`zBkKvwCRpC0q&Z>twU-{=7PYTr$eBzP0}6YHgoq#K?krOwL3{6YB6^T@rrNsUCXYvHbyX?p* zdZ1gh8J5eEqZS8ecQ!oJh^n_bJ;=#xKFdJUC{;05Z*pSOwpI0#9~Y1WhqO1iM_)J49d&Ecn_e^B|-MyXl&P6)($Q$hQUrs!cJ)k?EJPDb_ zNC;+9&06~IsF}zEjgou;_h> zypXO(kQw_}Zy?y+t(EY1ze7f$ypA5j7}(8O^e_;b^Vw9jz~$R|Sn2JC)?>~a^Ej+) zWlilx5RnT&hH`!S_pka2`&9KzF#5&ZNRP^!*fx3=evf>pPu4NA0#rf#gR%9SsPUSs zyr(m@L$#s0%og9i(weTuo6X{g1$|dj%nzbJp6Cy~4oR(#oczIOmgtQx9IJjQZLY7k z;t-OcR4NrQ$?{`0bAo$P-JTmmbTRA1zOBR~q$N-H;`3_Ao@c3OZj;nPDZwKy6OJkS z4)*RhqtuUt?251^Am@0AXx*y4v(gxC!>2%I6NJ1raRvXIV3_{-lbBy*!K7Am(X1%b z%n>6MZ$wZQSEecbd$}2k&R+jmye~rOMY!cfg-l({^)io2dF%~kvZNVR1>;q|!(Fd_ z8g&eEK0_NnSr;CzoS^Z1UG~$bVQbUNF&Xs%2x+-rlbf3x@;(1x-zIn1ha5elowWIl z-KQ5Jbw9ryV!l$IQSC)&*LQl!>r8{*si^qsMpA4g)NLpILrZn*fH#@czG&HY_G#69 zb)A;e*)67_Qcdf~>x7ypKbfrNs&~03VH3+5m2&1?U%ro*#PPfX0$Td*(A&m+`wnX0 z01gSIWcd1BwFYSsjGfT8;wRzfoLoTm5pxCd?6!@rf(nq*DifPXr0mD)fCj|srPOdz zQ4+gDA>;ey)92ov#Ti_+j}KawCvH*emS0vvVSQ&(?w0_YU%A8c=1uHwX)Tgdb@Gdx zL@#R51BG@V2Z$HmWMZ0yYe~aZlbUurC5L?K*h32cxWMw=j+~*Pq04uc9;1Zp&=DNz zCoQWR7b3?_LO272r-{j_>O4y%yXujKWeq~|YsZusJb*kfirtA?qlomlBd;E9I1 zr{=c$3vA6Kn^VSz-JB1~AIP?4DEqjo#I#LAatS$N*uEiB#{2>6?;oLVe@jt15Zcx6 z55cMP7$7VDl$Pd~>2-Q7*N9wV*t^!s&u`^7S*xxp`a&sPtie(@&K>5RtOJ^k;{AS= zq!uc501>MP#!)g7#oKvI-Fa%J0vTo6sM zCbbCyY^H9dXp1X@O}28Gy4x#OQH@>UU2+fT)mVJn?($tKeaywrE=S*|1CwIZt#?}- zGhA|e0Yo=9e7sdvYuxy1b2nYE9JN>QBe7f{a#*7_-Chv%p|LPt(tD-1dWlEu-v!8+ zI^ZI|6vsr9Z?X=15z|e#8yRsc2XyUEu9$|h>><03JC{uz`Go+{Y(4tc++rm* z(3ap3PXz)+E^CDQ?HlSDEJjWq_Tz{{GO0u}$|;h1f>W_;`oMjy8sau@s#LV#b-i0} z?I*i6WnT2l`<{9@HMIOLmIi+z{_Jx=Y4kPQu|CEY6mh>~QwJnp^uS`)%3ZpLePTnY18>U=sb(Ikx9xJP4J{>u{g@q{m zg8S+-%fgD&ZQKE%70f2>MRG&^j=M#}UDm`Q7BRDJ0C@RAaLq^#Kt-h9dmLicLZ*Yg zt9I<8z`;E#cMmsuf06ug?ya2=ASs2q(`l2y#(uhpiwCij-J%suZ9@s4YRru@6Woq_ z6yX3LVObE%v_i7`dyPqyry!#;1F@zWu^Q5@=S64`cl&-!B{?8BX&D?YQq3>fY|Il!7p;Oe1wyWIxu(7_rTqfn_EydBKBR1|lxEabRjP zhDi)xZMv;t7un1Clhk2u8AhYB3*h;B(H&^uRC<5=a{mygw;ZuRBSX(G`MqAVj|wkV zv+V&8{i)<_Fo6DmJTSb@L}QC+tuguOwzH=IvKB}10F)gFX;0#G6~qLxhsScp#a|s# zX1e+4L>_*tCAKedCD!d}vf5;^A4vdy0g<%~Hof;<`8SqvQ<@@U+hKD2% zoST=Iqb#Gws_0J4M;gP(UH@>-Lzm#fg-j=-V%N+Hsl%0~8`l7TQ>&fW^Xp_NM-L#d zd_Xyb6`>kqqFZ?xkwmSIoiT=`WMOg=k!DgWYh;uGkoKtH)b|ISq&K3QxNIuDLc#u+ zGW;AR48nGLXt-Sag~ji%ncLdLJok#5z9s?5GOT%_rqypL;0qO%ztf2L-RrM`ik7yu z!2svc)bHC_S<_^t#1Td9m?Ge}O2IlJX4_C@?s;t^h7YmOtgdu`x~o}VGl3hoifKH5 z+%vx|=%A{xnVHwZc{QON>vCoJA_|Zm0EK1&gm?Si-uTcL!5wD+KjFWO&j}a*@r{!G z8AlX>NLF$#?MR+8dI~`(hP4ZA>yZJ=`#~HyM>|^9FdPxz^}X$KL_Xry@=^-b#9tGd}Tp!KV^hee%jr;!h4>JXxRe zB=Dp1R!Nu15*YYNWsf@e`10T9{@+}@unw70Wo~MNx6L`wzy9YUX#e|s@tXpC5i$L-ZF93-!!F^?MV*fGX-BG$ zRzLbRa@@2pGf9U4kC(&(hO^n?KA^Gh#=HmSDi}$@_MMHtiu-auo0M(tckwRy#_%y! z?bz6{8-vlM?n>^RqSlq3Y(@@7yMxb|d))yihS45;Vg(i_FS7d4{p z?QMgXr`OJSVd}h(1BzUQX~U2$+C~hP^?jXL_ihh`JC;;d^1gEfXoxu4=){TMrw($& zhi?DDJz$oWcUj<(yD@dv0rkQ2=Frn`{JIRl$QEk9nS*0IDdEVI^i;@ z%@NpGmcej2-5pmoSRWBUzHtfFzdjfu$aK~1Z9SVBmR{yj$Li7wALo%Pr(G~Zi_<%A zI)vMg-$qPUp|%+d<;}}wfpvU(oR>&#%nR4Hz3s3gTF4AvoVY#tGq0hJySu^~z{(uT zb&%Jg@ad+hHY2*-^$P(FH=Yp4Gd45h!7+KHVrCzyB))^9VHbBZpt?CMk=NqZ5?j;q z1A06~0U>gV+)#v;ok>rJumYM*<+Nzpn8bb!c%0k^hlU!?rmnWH)IC4)zwi; zh@fYfzPLe=Apm*f1zg@!l!wY37EcE!)o#V=&|565tQnB#CFi2!nNB*4`d$ywY)*qVW2Q*Jts;y`|8uym}C^&W`H+DRH?&CE#!a`*Xh0qs6 zIgzeu)kE5zu#5!|X#npRy4kdW?{1TJt>m3TA>x=DsTKa-xXPGzlS4`hux)4dO;FrI zdc@$(bnRE+boT;heGUxm0n(4x(+k*7d`04SvRx7VOnYMKwUk{vgP*wmwx8JXUDBF# zp+DcrAqR#1r-PMoQ@Bd(R*|bIzILo5B5q1niTq__FaBy zd2q719)0IDRyxBUdNKd$&qDJksC=|FK5i1jXmh%8tIM-6cR0iTIpSPGgD+&&cdz^pF8cBVUS`L;1!5K%l*wNcI1%O;x+)odeOTXOdj5+8=sI9%(K3S$=d;1q% z)GqhV+DFRN#zDu8geh_~Aw=Eov~}djg-j3I-r(pCrw~KWs-O?B21u4Rdi@N@=&J)b zi)m)PkH66$O5PepD2g*f+fA ztP9E^Dd#7V=PAe-cj5%tBEmV}#zen6!-Iyy-Kl=@ zV!8vCW9r-Wt$EnZsj3EOXfhVjU;9P!+^cJO&d9LnHqNXUT#M3AFV56gmkOJ`o>SV%c$X>2c}UP=3)JaOePttaGWIt z$0_F3x!#v#9=~mY$S!TZ)VVKW7*YL5)7I2KBWk+oTBmj+lVUgDCKS$od}b${DE4V> zR78F8CO$_&-2)6Fes+4~rSFzY3h_O2x>*Q7ssE9aLAfBGEQQYGLvWLN*dUg;C3bmH zcF^TTEquH1W%p$}&NK>w^L5^uT)*1Luu0dlsft^DcQ38>=eNI&y!00$gI#Gj1tZv7 zsBrdgyfy#a079r8isY1TjMalAetF<$Y{#%wYM@HnU)>Xa^LN+Z} zn%FU?X$UFar{)a}$j{^qfQM`8g#9W~l2GH83MB{7R(SIT!^`)7#vRbIw%=NL8omW+ zD0JTkFE^}Uhhr>q0Y`&32MUG16w)2K)N=`fLkT$??on6}+s>ges-VmxzhvCB^*V7T zj^^CT%UAjW2Y7pILx|hO$davm6N~GMJybX#A*jW4$E^6&1G0DHe%{{tI*dkI*-CXV zs^)`&VNy^v4sY(}zwSNWyt$a=Q(SW1v~|7=)L33oQTsB#y|g0)XKI0%o}eDqqBO;j8K7V;uz-@G^S4AW}C$ zy3uBtaKW^LTLv(@WkF2SJmTttJcg2YRP{j5+xA4(pRjfd#Oj2jU~{-nwhLTxI>_zB zu*mV3p&9n#KczCFg8G0H{7PIgT@XtrZBN$;azW9_OpC-Y;j8Q9ABn1ZLbI9puEUvI zLX`nlv^TF?myolst!Qwei{l!&)${ILnqchDw|%F>E45J{&onRmswzn6z?`VKq+bAk zbw+)45?RsBZ}QDdJ`Io5MYAWTx8|_k9nmQD$yUD>=$$Jy4lkhYOz-ej>n8VUm2izH*K2H zqehK@nN?Gb_?vl_!+e%p86@+qA`2TFd`m(Yjm)LCJ$Ff|hi|Ef^GB+Dan&s``PD6E zlH7e;%dBojw9jI_%3Z~!qTl{^=x}9Tg}6N^F%CZt62Enm28*fqdwY|mFXH_Y09sL5 zhd2IXWc81D=>IYzy=TbpmF@_k2|xV(zRiu*Jk&G#jIrau*Q(;|uk;1$GdVTuKZ0M* zF_z|A&3dyR==&uU;syV)X{aX+>}oo!1CmpI?rZ&7T3zOBt#{YU$ye7FhW+k52B@l3 zF|4>i%WoKJ`K2>ETO4Nz=8?ynTzU1Kms}Fl%%c|9{(KC*+VYQ-Jp0Mh8^gC#?l8kh zRfEsZ=98-~wD0qPve%VMYsj^eb-I6RX^_=@ke22(Q}853wQ6L;FHzZaqB7d-rvx`& zf2Rawf2w@(FLu#D;eM6OsG{sfaz8#hOYQ6H7~<3Ot&Pv7s`oASX8G+-gUySXpdevUW>JjYSc69VeY z+ZTyF%IbdXn7>1Nk_!yZ97nHtRr--&xWxyCyUC?Y=CxFwaW|OnuGi(7yQB_z;!a<1 z4K?MU+&Cv#&T-tHIBWOm4`z8)l@-Jr2D9zfiNC37b924Hy(Fajp>%g#)hrfF8m(Mx z3*MmjycRsy&9wP%na)!Vpq3Sg*{&;^jAsUyK7alLD0@dNxsnadg#*b??g1DM&MI`Hq%f{p8oZsw^Iv*?Y;=q-bR!O(XiMxl9G#08$r58>;l9Q_&J0IVQtJ{{FzX z>xsCR7|C*i3c_GW;UVIXu%e=1?2=Gu9>!P z)^4tdg79e3G%^Mp^J{}%jqpN(WUbYB2GC>n1ii%<7 zfcGqjp;+exV?x)O78-AoXBu~A`09PnJEVzd#;T5DH4KKeFhc zw+B*uJ{@NeRowsub|dW6TYFp$nsH8|5>XKm{-BwPkfGxc_WqA=@EZgJew)y97StE0 zF60}7Ka5`$jkoQv3s8dI@|Oe&An#sEQESu98la*8Y>}v3?%~6SN1^r1#1-D1)hka7 z@@(J%aw(?|(FK|wD$0unkaQ=-G1Eg}eO0-DaySA~wo5?WXb9Q6clY+^>>_7cVsQqC zj=T3{pYX8=rDg+4%Gq}MR)~_I107hQ0FnfsmIubPA%qmZ0Y{tgglc* z@fp^)LJr*v2atG!vW);C=*7N3WTdFue|Pw>jyDO`E@j(xc&6-A8|qM0LU7%>Nhdo% ziF3G`(E?fn`b=A;O#? zwC65r$Bul{%xf&DyD|72v_70tnw9e1eNGcQoZxKG_+_W`Kg*!c&pf0HAV4o_p0qp#SeNtbLmr0-D^`r?$qKxk`hs ztZobd{yq!L>;!6Q*enCZ4!zSKy)}viq6xzT&^z%u1lgq#9=bmFeFUhIV&uYhD~@(XRp)UONyeZyei+h*tFgr{3W=}Utl05BcJh9yNr zj=og(9l96Tz$+vxphOFn7Y@V|93cfo3n(g=5k5)^cCifW7heqFzv|qE;0%kFgy~Xe zFf-Gm!MXL?Sd~98%f+wN?6GobXjeS$Fy`N;I3MD1ByFbh^|2>*l*AOcU3C=trh^|g z05Z$1W#8G0a^HW%rn)cW8lCsm0-psghST!#AQF&9?0_iNJ4jP!C%}_;@&7s;=s!)L z?SG%f{k(<$3t9V5*j4>m+W&No?w>{SStS3eo?>0WAccSsu5$N`e5`K5_sE{TdsM;I zuS)d)=0BCF|L5=K!0%7}`z`SO+kaD*I1l_qNdxTrLdlnWzWwvbd{%*wG82Sb7+DF6Tf literal 0 HcmV?d00001 diff --git a/tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001.json b/tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001.json new file mode 100644 index 00000000..7aa74d69 --- /dev/null +++ b/tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001.json @@ -0,0 +1,5 @@ +{ + "input": { + "checkboxgroup": "disp" + } +} diff --git a/tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001_.png b/tests/testthat/_snaps/mac-4.3/checkbox/checkboxgroup-app-001_.png new file mode 100644 index 0000000000000000000000000000000000000000..e95e6c2757edb8fb4e463a194cac6f63f3ebf9fa GIT binary patch literal 95623 zcmeFZcT|(x*Di{>k*#iFTd-2L8btcG0Me~sKsq7xs7Pm9T%`IrpCP-GA;l=YHpW*D)9)ro8WZ*P3h2XFl_pD^N{E;q=KX zCz+U-PD7tP(O_aaHpaxnEb!}b@D8@G^-m_IKbW9T9%{KI&JVj9Xipt9tcW8;)H{AT z^ZVwAKxwALU4^!mf}-aFnwpw-yX^)_ETjfaOf4kTuErnxRvnIccm1UB#_rzR5xEn8 zPSnWgRVRl9gasIEIvdV7vhJ?cUV!*D8*kB)#FGWlL@qM2T#zhbKOIdX)9@#@&` zwTut{WcuIljXpig>k0}A%AT*QuJqddVYhTLUdA<gt#HIlLM*c%b*l1{VXtQ^u>uR?PTB`L|*{HR3n=3@J9kr>Hh2eRAF!WD^e zE+Is|2BkN^sBj6dwMmqgk?AQ^a3%hVNl_dbk@S+(RY*&7-g=hK8so6Xm_w679VYa~ zISxWzo^m@uD`^`FV~IuNPGX1qBeOn3z~Rbt}>& zw6LV0tE#+kYH~8Wr$?Ec4iy z%^j=#L)m*A`shA=R0b@;zq}CK5gx2iR^fi&~QWcm-%p#n!XEEX< z9$7v45)u*~J4u_=MJYS;G2a@!z3z5?LBZYb-CpeFv#G~VU%4eG0!MCgsy(;14)lg= z;ij{ul@l796odMz;VUaEr0ik6Yod>O((NCEC769Pss8loQvq@DO_5yf2>;V_&7=l} z6M=z}o{)lXGtQPIjWqw$TG@}@zgM^=yf{$Y^Vp5feVh%YR}rdA%pFETFn#%|Xcg_q?;%>H zwwxyEX1A=({yKZ^T;8@6eY^NxZJlS5b(y~eW6Qp2$eQ1sr5pi~S)H9A{WdmS;nHbS zI-I!#-_MSUI~2E!@*Rkx?KfVLY(qH3ja*z@3i9*Sy}fHBoo7F#JU&i-A8SNhMjppm z60xZCrJ4iv%a<>&u2OqW1z*H^Ja~{_e&_Dp^_Id@=ku*fF$-A z!5)IiRNrd*Rg;O}FwfjB()(8cm)4Gp&GS9(h$6d#BQm0nVx`T;z$%nkw6Kn~OIJRq ziRQQLTsw81ofCi2$OBfv@uFEe8;_R{xs(aKh?g^Qt`tJdJ|hSX3Jl(9HjXX6BW>Pc zD2Wt3iqP=q$q+EUs4?m`VPYOAl!jo5(-MJYe zaCg#qaY(%zotWBJrlX8raS9ZEk|Rby?=sM-C3o^#O{V#Zpc6Ni0{k_udZnr60}1b2Uwm`c=uamEqf`Ok9{$ zpFLAEHO++Z2}mjA=lgIbB7v`MiuPI`-jusFg>5An7$i=OjeV-BlIE22P8||uzo2;6 zv{e*;2`w270ntT9c3ZvJvVZ7&Z2;@#oPlCXa&ulyCkwaNt1CVroV~WeKRm{gZ8tii zSL68}VzD}@Ff~1$%VSq%IA1;kY}&!;jasa5QqRi9#>wF_%oF7#DVGjSO|+KN^ADNr z9}QoL>ZADKxjAu#GnO-Lsj#^%;|Aa%Y^zthu8Ud?JV}ytxi@@4)}reM2!Y+fA_QzP zW&c3bY-eL3HadNOZ^yFd$4lU1UD+>Q%rgNNvC|OR`4OpLL9Se)?B^S6bq?yEN=8^$ z97}l@n+4&MyqP&fGD4wHDpngq?wKN|AQmmN5m?{x{1E6cFJ5SWGrYFb+6 zv8uEzbb>qib#K0xr{{WK6fZkF%!#!jjMsc7*U*Eq4kuRYU&Nmp{v?Ckhn|EU9p| zR6=Rz?B;*tu8aOwh#zwQC_e%mXUi(iww~4tXmOG}~u9BWx ze;;R^&3k){hO=9eTBj@}tT&4g;%I$+>|WfCKUe+T;DyD-#EWPzgE_+SbqYIWr-55P z_`Mwz>$t7wL+iiDGrjM%cA=hIDzkR(Z6@LE>Oj>Lo90%{bs-_cQLh6(2u8d0%D