1

There are 2 dateinputs: date1 and date2. The date2 should not be before date1. How to make the dependency in UI?

What should I write in min = of date2?
I have tried: min = input$date1, min = 'input$date1', min = 'input.date1', 'min = 'input.date1'', "min = 'input$date1'", "min = 'input.date1'" but it doesn't work.

library(shiny)

ui <- fluidPage(
   dateInput("date1", "date 1"),
   dateInput("date2", "date 2 = not be before date 1", min = 'input.date1') 
)

server <- function(input, output) {
}

shinyApp(ui = ui, server = server)
stakowerflol
  • 979
  • 1
  • 11
  • 20

2 Answers2

2

Also can use observeEvent

library(shiny)

ui <- fluidPage(
  dateInput("date1", "date 1"),
  dateInput("date2", "date 2 = not be before date 1") 
)

server <- function(input, output, session) {
  observeEvent(input$date1,{
    updateDateInput(session, "date2", min = input$date1 + 1,value = input$date1 + 1)
  })
}

shinyApp(ui = ui, server = server)
Pork Chop
  • 28,528
  • 5
  • 63
  • 77
1

Not sure whether you can achieve this purely in the UI, but you can use updateDateInput in the server logic to get the required behaviour:

library(shiny)

ui <- fluidPage(
  dateInput("date1", "date 1"),
  dateInput("date2", "date 2 = not be before date 1") 
)

server <- function(input, output, session) {
  observe({
    req(input$date1)
    ## whenever input$date1 changes, change min of input$date2
    updateDateInput(session, "date2", min = input$date1)
  })
}

shinyApp(ui = ui, server = server)
thothal
  • 16,690
  • 3
  • 36
  • 71