Home > front end >  How to make only mondays selectable in daterangeinput in shiny R?
How to make only mondays selectable in daterangeinput in shiny R?

Time:05-11

Is there a way to imitate the daysofweekdisabled found in dateInput?

I want people to select only mondays.

CodePudding user response:

Unfortunately, there is no built-in feature of function dateRangeInput. However, one can create a hook to evaluate if a given input is valid or not i.e. both start and end date is on a Monday:

library(shiny)
library(lubridate)

ui <- fluidPage(
  dateRangeInput("daterange1", "Date range:",
    start = "2001-01-01",
    end   = "2010-12-31"
  ),
  textOutput("daterange1_valid")
)

server <- function(input, output, session) {
  output$daterange1_valid <- renderText({
    is_valid <- all(input$daterange1 %>% map_lgl(~ wday(.x, label = TRUE) == "Mon"))

    ifelse(is_valid, "valid", "not valid. Start and end must be on a Monday!")
  })
}

shinyApp(ui, server)

enter image description here

Another way is to just use two dateInput elements instead. This will allow you to also color days other than Monday grey in the picker.

  • Related