Skip to content

Releases: fullcalendar/fullcalendar-workspace

v7.1.0

Choose a tag to compare

@arshaw arshaw released this 05 Sep 03:15

v7.0.2

Choose a tag to compare

@arshaw arshaw released this 24 Jul 22:11

v7.0.1

Choose a tag to compare

@arshaw arshaw released this 19 Jul 01:29

v7.0.0

Choose a tag to compare

@arshaw arshaw released this 19 Jun 07:11

v6.1.21

Choose a tag to compare

@arshaw arshaw released this 18 Jun 00:18

v7.0.0-rc.3

v7.0.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@arshaw arshaw released this 09 May 04:46
  • FIX: In React, event flicker after event drag-n-drop
  • FIX: In React/Preact, expose the CalendarRef type
  • FIX: In TimeGrid view, when snapDuration smaller than slotDuration, incorrect date-selection coordinates
  • FIX: With custom slotHeaderFormats, navLinks sometimes disabled (#8064)
  • FIX: For Shadcn/MUI toolbars, or users of CalendarController, button hints wrong for certain locales
  • FEATURE: Warn on unknown options
  • FEATURE: Warn on invalid class-name inputs
  • BREAKING: Renamed a few things for consistency. Apologies. Please update any forked themes.
    • Renamed info-prop .multiMonthColumnCount to .multiMonthColumns
    • Renamed type MountData to MountInfo
    • Reverted rename from weekTextLong to weekText. Use weekTextLong.
    • Reverted some renames for view-specific options:
      • Reverted views{}.viewClass. Use views{}.class/className.
      • Reverted views{}.viewContent. Use views{}.content.
      • Reverted views{}.viewDidMount. Use views{}.didMount.
      • Reverted views{}.viewWillUnmount. Use views{}.willUnmount.

v7.0.0-rc.2

v7.0.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@arshaw arshaw released this 23 Apr 21:53
  • FIX: full-height calendar inside flexed/gridded parent results in infinite loop/endless width (#8051)
  • FIX: virtualization & scrolling: Slot header is not rendering properly (#8052)
  • FIX: virtualization: Now indicator not shown (#8053)
  • FIX: virtualization: scrollLeft JS action will not render timeline (#8054)
  • FIX: Event color not changing when changed via Event::setProp (#8064)
  • FIX: Classic theme timeline event arrows appearing unnecessarily (#8055)
  • FIX: slotMinWidth takes precedence over natural min-width created by header cell inner-text (#7910)
  • FIX: more stable useId shim for React 17
  • FIX: revealed TableDisplayInfo/TableHeaderInfo/TableBodyInfo types for tableClass/tableHeaderClass/tableBodyClass
  • FIX: reduced vertical padding on Classic theme timeline header cells

v7.0.0-rc.1

v7.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@arshaw arshaw released this 12 Apr 19:44

Changes from v6

  • FEATURE: omitTrailing option added to Intl date formatting objects
  • FEATURE: eventPrintLayout setting for controlling TimeGrid print behavior
  • BREAKING: stickyHeaderDates renamed to tableHeaderSticky
  • BREAKING: stickyFooterScrollbar renamed to footerScrollbarSticky
  • BREAKING: listDaySideFormat renamed to listDayAltFormat
  • BREAKING: dayPopoverFormat renamed to popoverFormat
  • BREAKING: Custom view .classNames replaced by .viewClass; .content/.didMount/.willUnmount prefixed with view
  • BREAKING: weekText renamed to weekTextShort; weekTextLong renamed to weekText
  • BREAKING: nonBusinessClass renamed to nonBusinessHoursClass
  • BREAKING: titleRangeSeparator removed — range separator now determined by Intl API
  • BREAKING: defaultRangeSeparator removed — range separator now determined by Intl API
  • BREAKING: .updateSize() method removed — sizing is now automatic
  • BREAKING: eventClass, eventContent, eventDidMount, eventWillUnmount no longer apply to background events (use backgroundEventClass etc. to restore)
  • BREAKING: tableHeaderSticky (formerly stickyHeaderDates) no longer applies to list-view day-headers — those are now unconditionally sticky
  • BREAKING: validRange callback now receives start-of-day of "now" (stable), not the exact now timestamp
  • BREAKING: Date range formatting uses Intl and output has subtle differences (e.g. "10:00 – 11:00AM" vs old "10:00 AM – 11:00 AM")
  • BREAKING: All packages distributed as ESM only — no more CJS
  • BREAKING: The fullcalendar package no longer ships .global.min.js files (though JSDelivr still auto-minifies)
  • BREAKING: Render hook arg types renamed from *Data to *Info pattern (e.g. EventDisplayDataEventDisplayInfo, ViewDisplayDataViewDisplayInfo, DayHeaderDataDayHeaderInfo, etc.)
  • FIX: scrollTime slightly off when switching from Timeline month to week view (#5686)
  • FIX: Background events now print with 1px colored borders instead of white-out
  • FIX: Print-view limited to 1000 resources to prevent browser's print dialog from crashing

Changes from the v7 Betas

  • BREAKING: The render-hook callbacks argument types renamed from *Data -> *Info (ex: ListDayData -> ListDayInfo)
  • BREAKING: fillerClass setting's inHeader info prop renamed to inTableHeader.
  • BREAKING: buttonGroup* settings' inSelectionGroup info prop renamed to hasSelection
  • BREAKING: button* settings' inGroup info prop removed. Use boolean check on buttonGroup object prop instead
  • BREAKING: button* settings' inSelectGroup info prop removed. Use buttonGroup?.hasSelection instead
  • BREAKING: renamed Breezy theme palette file from honey.css -> amber.css
  • BREAKING: singleMonth* and singleMonthHeader* settings' colCount info prop renamed to multiMonthColumnCount
  • BREAKING: viewClass info props isFirst/isLast removed (expressed DOM sibling relationship). Test for .options.headerToolbar/footerToolbar instead.
  • BREAKING: updateSize was originally retained to force synchronous sizing adjustment, but now removed
  • FIX: ResizeObserver loop error w/ height:auto (#7929)
  • FIX: day headers disappear on every other week (#8041)
  • FIX: virtualization & dragging: Event is not at same position of mouse pointer (#8048)
  • FIX: slotMinWidth has no effect in v7 (#7910)
  • FIX: navLinks on day labels in timeline views cannot be disabled in v7 (#7911)
  • FIX: date-formatting with "today" circle looks strange with some locales (trailing ".") (#8020)
  • FIX: some stock themes incorrectly inheriting browser-default <a> tag color and underline
  • FIX: CSS fallbacks for browsers that don't suppport color-mix
  • FIX: stock themes font size defined with pixel units, more predictable
  • FIX: colorScheme='dark' on per-component level had lots of visual glitches
  • FIX: scheduler bundles accidentally omitted "adaptive" plugin (aka print plugin)
  • FIX: adaptive plugin, after print dialog, would be stuck in print-mode
  • FIX: broken styling in @fullcalendar/angular/skeleton.css (mismatch w/ HTML structure)
  • FIX: more-link badly positioned with disabled cells in day-row
  • FIX: more-link popover poorly positioned when opened
  • FIX: React drag-n-drop double event ghost
  • FIX: when displayEventTime:false, all-day list-view events still show "All-day"
  • FIX: now-indicator arrow in classic should have been clipped if past slotMaxTime
  • FIX: weird double-border at top of timeline views
  • FIX: print problems via window.print()

v7.0.0-beta.8

v7.0.0-beta.8 Pre-release
Pre-release

Choose a tag to compare

@arshaw arshaw released this 16 Mar 02:47

Changelog:

  • feature: colorScheme prop on component
  • feature: resourceCell* hooks now receive .field in data
  • feature: new Classic theme CSS variables:
    • --fc-classic-button
    • --fc-classic-button-border
    • --fc-classic-button-strong
    • --fc-classic-button-strong-border
    • --fc-classic-button-outline
    • --fc-classic-button-foreground
    • --fc-classic-background-event-opacity
    • --fc-classic-background-event-foreground-opacity
    • --fc-classic-small-dot-width
    • --fc-classic-large-dot-width

Misc changes:

themes.fullcalendar.io now has a "Code" button below each demo that helps you generate code for theme forking and other theme configuration.

v7.0.0-beta.7

v7.0.0-beta.7 Pre-release
Pre-release

Choose a tag to compare

@arshaw arshaw released this 03 Feb 23:30

React (@fullcalendar/react)

  • FEATURE: React connector is no longer just a connector with internal Preact rendering. @fullcalendar/react is now fully implemented in React, including working SSR and StrictMode.
  • FEATURE: @fullcalendar/core removed as peer dependency
  • BREAKING: temporal-polyfill added as peer dependency (more info below)
  • BREAKING: Many packages restructured into @fullcalendar/react and @fullcalendar/react-scheduler (new)
    • @fullcalendar/interaction -> @fullcalendar/react/interaction
    • @fullcalendar/daygrid -> @fullcalendar/react/daygrid
    • @fullcalendar/timegrid -> @fullcalendar/react/timegrid
    • @fullcalendar/list -> @fullcalendar/react/list
    • @fullcalendar/multimonth -> @fullcalendar/react/multimonth
    • @fullcalendar/theme-monarch -> @fullcalendar/react/themes/monarch
    • @fullcalendar/theme-forma -> @fullcalendar/react/themes/forma
    • @fullcalendar/theme-breezy -> @fullcalendar/react/themes/breezy
    • @fullcalendar/theme-pulse -> @fullcalendar/react/themes/pulse
    • @fullcalendar/theme-classic -> @fullcalendar/react/themes/classic
    • @fullcalendar/resource -> @fullcalendar/react-scheduler
    • @fullcalendar/adaptive -> @fullcalendar/react-scheduler/adaptive
    • @fullcalendar/scrollgrid -> @fullcalendar/react-scheduler/scrollgrid
    • @fullcalendar/timeline -> @fullcalendar/react-scheduler/timeline
    • @fullcalendar/resource-timeline -> @fullcalendar/react-scheduler/resource-timeline
    • @fullcalendar/resource-timegrid -> @fullcalendar/react-scheduler/resource-timegrid

Preact

  • FEATURE: FullCalendar implemented natively with Preact and finally exposed as packages: @fullcalendar/preact and @fullcalendar/preact-scheduler

Vue 3 (@fullcalendar/vue3)

  • FEATURE: @fullcalendar/core removed as peer dependency
  • BREAKING: temporal-polyfill added as peer dependency (more info below)
  • BREAKING: Many packages restructured into @fullcalendar/vue3 and @fullcalendar/vue3-scheduler (new)
    • @fullcalendar/interaction -> @fullcalendar/vue3/interaction
    • @fullcalendar/daygrid -> @fullcalendar/vue3/daygrid
    • @fullcalendar/timegrid -> @fullcalendar/vue3/timegrid
    • @fullcalendar/list -> @fullcalendar/vue3/list
    • @fullcalendar/multimonth -> @fullcalendar/vue3/multimonth
    • @fullcalendar/theme-monarch -> @fullcalendar/vue3/themes/monarch
    • @fullcalendar/theme-forma -> @fullcalendar/vue3/themes/forma
    • @fullcalendar/theme-breezy -> @fullcalendar/vue3/themes/breezy
    • @fullcalendar/theme-pulse -> @fullcalendar/vue3/themes/pulse
    • @fullcalendar/theme-classic -> @fullcalendar/vue3/themes/classic
    • @fullcalendar/resource -> @fullcalendar/vue3-scheduler
    • @fullcalendar/adaptive -> @fullcalendar/vue3-scheduler/adaptive
    • @fullcalendar/scrollgrid -> @fullcalendar/vue3-scheduler/scrollgrid
    • @fullcalendar/timeline -> @fullcalendar/vue3-scheduler/timeline
    • @fullcalendar/resource-timeline -> @fullcalendar/vue3-scheduler/resource-timeline
    • @fullcalendar/resource-timegrid -> @fullcalendar/vue3-scheduler/resource-timegrid

Angular (@fullcalendar/angular)

  • FIX: Restored Angular support for v7
  • BREAKING: Vanilla JS peer dependency renamed from @fullcalendar/core to fullcalendar
  • BREAKING: temporal-polyfill added as peer dependency (more info below)
  • BREAKING: Many packages restructured into @fullcalendar/angular and @fullcalendar/angular-scheduler (new)
    • @fullcalendar/interaction -> @fullcalendar/angular/interaction
    • @fullcalendar/daygrid -> @fullcalendar/angular/daygrid
    • @fullcalendar/timegrid -> @fullcalendar/angular/timegrid
    • @fullcalendar/list -> @fullcalendar/angular/list
    • @fullcalendar/multimonth -> @fullcalendar/angular/multimonth
    • @fullcalendar/theme-monarch -> @fullcalendar/angular/themes/monarch
    • @fullcalendar/theme-forma -> @fullcalendar/angular/themes/forma
    • @fullcalendar/theme-breezy -> @fullcalendar/angular/themes/breezy
    • @fullcalendar/theme-pulse -> @fullcalendar/angular/themes/pulse
    • @fullcalendar/theme-classic -> @fullcalendar/angular/themes/classic
    • @fullcalendar/resource -> @fullcalendar/angular-scheduler
    • @fullcalendar/adaptive -> @fullcalendar/angular-scheduler/adaptive
    • @fullcalendar/scrollgrid -> @fullcalendar/angular-scheduler/scrollgrid
    • @fullcalendar/timeline -> @fullcalendar/angular-scheduler/timeline
    • @fullcalendar/resource-timeline -> @fullcalendar/angular-scheduler/resource-timeline
    • @fullcalendar/resource-timegrid -> @fullcalendar/angular-scheduler/resource-timegrid

Vanilla JS (previously @fullcalendar/core)

  • BREAKING: renamed to fullcalendar
  • BREAKING: temporal-polyfill added as peer dependency (more info below)
  • BREAKING: Many packages restructured into fullcalendar and fullcalendar-scheduler (repurposed)
    • @fullcalendar/interaction -> fullcalendar/interaction
    • @fullcalendar/daygrid -> fullcalendar/daygrid
    • @fullcalendar/timegrid -> fullcalendar/timegrid
    • @fullcalendar/list -> fullcalendar/list
    • @fullcalendar/multimonth -> fullcalendar/multimonth
    • @fullcalendar/theme-monarch -> fullcalendar/themes/monarch
    • @fullcalendar/theme-forma -> fullcalendar/themes/forma
    • @fullcalendar/theme-breezy -> fullcalendar/themes/breezy
    • @fullcalendar/theme-pulse -> fullcalendar/themes/pulse
    • @fullcalendar/theme-classic -> fullcalendar/themes/classic
    • @fullcalendar/resource -> fullcalendar-scheduler
    • @fullcalendar/adaptive -> fullcalendar-scheduler/adaptive
    • @fullcalendar/scrollgrid -> fullcalendar-scheduler/scrollgrid
    • @fullcalendar/timeline -> fullcalendar-scheduler/timeline
    • @fullcalendar/resource-timeline -> fullcalendar-scheduler/resource-timeline
    • @fullcalendar/resource-timegrid -> fullcalendar-scheduler/resource-timegrid

Web Component (@fullcalendar/web-component)

  • FEATURE: @fullcalendar/core removed as peer dependency
  • BREAKING: temporal-polyfill added as peer dependency (more info below)
  • BREAKING: Many packages restructured into @fullcalendar/web-component and @fullcalendar/web-component-scheduler (new)
    • @fullcalendar/interaction -> @fullcalendar/web-component/interaction
    • @fullcalendar/daygrid -> @fullcalendar/web-component/daygrid
    • @fullcalendar/timegrid -> @fullcalendar/web-component/timegrid
    • @fullcalendar/list -> @fullcalendar/web-component/list
    • @fullcalendar/multimonth -> @fullcalendar/web-component/multimonth
    • @fullcalendar/theme-monarch -> @fullcalendar/web-component/themes/monarch
    • @fullcalendar/theme-forma -> @fullcalendar/web-component/themes/forma
    • @fullcalendar/theme-breezy -> @fullcalendar/web-component/themes/breezy
    • @fullcalendar/theme-pulse -> @fullcalendar/web-component/themes/pulse
    • @fullcalendar/theme-classic -> @fullcalendar/web-component/themes/classic
    • @fullcalendar/resource -> @fullcalendar/web-component-scheduler
    • @fullcalendar/adaptive -> @fullcalendar/web-component-scheduler/adaptive
    • @fullcalendar/scrollgrid -> @fullcalendar/web-component-scheduler/scrollgrid
    • @fullcalendar/timeline -> @fullcalendar/web-component-scheduler/timeline
    • @fullcalendar/resource-timeline -> @fullcalendar/web-component-scheduler/resource-timeline
    • @fullcalendar/resource-timegrid -> @fullcalendar/web-component-scheduler/resource-timegrid

temporal-polyfill Peer Dependency

The temporal-polyfill package is now a peer dependency of all the FullCalendar packages. This means you are required to install it.

The "Temporal" built-in browser API is coming to all modern browsers, and this package is a polyfill for it, which means it allows you to use it before it's officially supported.

FullCalendar DOES NOT INSTALL IT GLOBALLY but instead uses it internally. For v7, FullCalendar uses the tree-shakeable API, meaning the code-size impact will be minimal and there will be no side-effects.

Though FullCalendar does not install the polyfill globally, you are welcome to do so for your projects:

import 'temporal-polyfill/global'

Moment / Moment Timezone

  • BREAKING: moment package removed (@fullcalendar/moment)
    • Date formatting-string functionality moved to @fullcalendar/format-moment plugin
    • Date conversion utilities (toMoment and toMomentDuration) removed
  • BREAKING: moment-timezone support removed (@fullcalendar/moment-timezone) because time zone resolution is now built-in to FullCalendar via the temporal-polyfill peer dependency.

Luxon

  • BREAKING: Luxon 1 package removed (@fullcalendar/luxon)
  • BREAKING: Luxon 2 package removed (@fullcalendar/luxon2)
  • BREAKING: Luxon 3 package removed (@fullcalendar/luxon3)
    • Date formatting-string functionality moved to @fullcalendar/format-luxon3 plugin
    • Date conversion utilities (toLuxonDateTime and toLuxonDuration) removed
    • Luxon time zone support removed because time zone resolution is now built-in to FullCalendar via the temporal-polyfill peer dependency.

Bootstrap Theme

  • BREAKING: Bootstrap 4 theme support removed (@fullcalendar/bootstrap4)
  • BREAKING: Bootstrap 5 theme support removed (@fullcalendar/bootstrap5)