Skip to contents

Currently only works in Shiny applications.

Usage

cal_events(
  cal,
  afterRenderSchedule = NULL,
  beforeCreateSchedule = NULL,
  beforeDeleteSchedule = NULL,
  beforeUpdateSchedule = NULL,
  clickDayname = NULL,
  clickMorecalendar = NULL,
  clickSchedule = NULL,
  clickTimezonesCollapseBtncalendar = NULL,
  selectDateTime = NULL
)

Arguments

cal

A calendar htmlwidget object.

afterRenderSchedule

Fire this event by every single schedule after rendering whole calendar.

beforeCreateSchedule

Fire this event when select time period in daily, weekly, monthly.

beforeDeleteSchedule

Fire this event when delete a schedule.

beforeUpdateSchedule

Fire this event when drag a schedule to change time in daily, weekly, monthly.

clickDayname

Fire this event when click a day name in weekly.

clickMorecalendar

Fire this event when click a schedule.

clickSchedule

Fire this event when click a schedule.

clickTimezonesCollapseBtncalendar

Fire this event by clicking timezones collapse button.

selectDateTime

Occurs when dragging and dropping a specific date or time then dropping.

Value

A calendar htmlwidget object.

Note

All arguments must be JavaScript function wrapped in htmlwidgets::JS().

Examples

library(shiny)
library(toastui)

calendarProps <- data.frame(
  id = paste0("cal_", 1:3),
  name = c("TODO", "Meetings", "Tasks"),
  color = c("#FFF", "#FFF", "#000"),
  backgroundColor = c("#E41A1C", "#377EB8", "#4DAF4A"),
  borderColor = c("#a90000", "#005288", "#0a7f1c")
)

n <- 20
date_start <- sample(
  seq(from = as.POSIXct(Sys.Date()-14), by = "1 hour", length.out = 24*7*4),
  n, TRUE
)
date_end <- date_start + sample(1:25, n, TRUE) * 3600
schedules <- data.frame(
  id = paste0("event_", 1:n),
  calendarId = paste0("cal_", sample(1:3, n, TRUE)),
  title = LETTERS[1:n],
  body = paste("Body schedule", letters[1:n]),
  start = format(date_start, format = "%Y-%m-%d %H:00:00"),
  end = format(date_end, format = "%Y-%m-%d %H:00:00"),
  category = sample(c("allday", "time", "task"), n, TRUE),
  stringsAsFactors = FALSE
)

ui <- fluidPage(
  tags$h2("Custom click event"),
  fluidRow(
    column(
      width = 8,
      calendarOutput(outputId = "cal")
    ),
    column(
      width = 4,
      verbatimTextOutput(outputId = "res_click")
    )
  )
)

server <- function(input, output, session) {
  
  output$cal <- renderCalendar({
    calendar(useDetailPopup = FALSE) %>%
      cal_props(calendarProps) %>%
      cal_schedules(schedules) %>%
      cal_events(
        clickSchedule = JS("function(event) {Shiny.setInputValue('click', event)}")
      )
  })
  
  output$res_click <- renderPrint(input$click)
  
}

if (interactive())
  shinyApp(ui, server)