Skip to content

Issue with minDate and maxDate in DatePicker.shinyInput #235

@BorisDelange

Description

@BorisDelange

Code example

library(shiny)
library(shiny.fluent)

ui <- fluidPage(
  shiny.fluent::DatePicker.shinyInput(
    inputId = "date",
    placeholder = "Select a date...",
    minDate = Sys.Date() - 30  # This generates a TypeError
  ),
  textOutput("selected_date")
)

server <- function(input, output, session) {
  output$selected_date <- renderText({
    paste("Selected date:", input$date)
  })
}

shinyApp(ui, server)

Bug description

When using DatePicker.shinyInput in the shiny.fluent package, setting the minDate property directly with Date objects in R results in an error.

Specifically, it throws a TypeError: e.getDate is not a function, indicating that the date object provided is not interpreted correctly by the underlying JavaScript component.

Here is an example code that causes this error in a Shiny app using shiny.fluent:

Expected behavior

DatePicker.shinyInput should accept minDate as an R Date object or should handle conversion to a JavaScript Date object directly.

Comments

A workaround is to explicitly convert the R date to a JavaScript Date object using htmlwidgets::JS. Here’s how this can be done:

shiny.fluent::DatePicker.shinyInput(
  inputId = "date",
  placeholder = "Select a date...",
  minDate = htmlwidgets::JS(sprintf("new Date('%s')", as.character(Sys.Date() - 30))),
  allowTextInput = TRUE
)

This workaround creates the JavaScript Date object in a format compatible with Fluent UI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions