Skip to main content

Navigation

Pure functions for navigating between months, years, and decades.

import { navigate, canNavigate, goToMonth, goToYear, goToNextMonth, goToPrevMonth } from '@gentleduck/calendar'
import type { Navigation, Adapter } from '@gentleduck/calendar'
import { navigate, canNavigate, goToMonth, goToYear, goToNextMonth, goToPrevMonth } from '@gentleduck/calendar'
import type { Navigation, Adapter } from '@gentleduck/calendar'

Functions

Navigate to the next or previous month, year, or decade. Pure function.

navigate(adapter: Adapter.IDateAdapter<TDate>, date: TDate, direction: Navigation.Direction, unit: Navigation.Unit) => TDate
navigate(adapter: Adapter.IDateAdapter<TDate>, date: TDate, direction: Navigation.Direction, unit: Navigation.Unit) => TDate
ParamTypeDescription
adapterAdapter.IDateAdapter<TDate>Date adapter
dateTDateCurrent date
directionNavigation.DirectionNavigation direction
unitNavigation.UnitNavigation unit

Returns the new date after navigation.


canNavigate

Check whether navigation in a given direction is allowed, respecting fromDate and toDate constraints.

canNavigate(
  adapter: Adapter.IDateAdapter<TDate>,
  date: TDate,
  direction: Navigation.Direction,
  unit: Navigation.Unit,
  constraints?: { fromDate?: TDate; toDate?: TDate }
) => boolean
canNavigate(
  adapter: Adapter.IDateAdapter<TDate>,
  date: TDate,
  direction: Navigation.Direction,
  unit: Navigation.Unit,
  constraints?: { fromDate?: TDate; toDate?: TDate }
) => boolean
ParamTypeDescription
adapterAdapter.IDateAdapter<TDate>Date adapter
dateTDateCurrent date
directionNavigation.DirectionDirection to check
unitNavigation.UnitNavigation unit
constraints{ fromDate?: TDate; toDate?: TDate }Optional bounds. fromDate is the earliest navigable date, toDate is the latest.

Returns true if navigation is within bounds.


Helper functions

goToMonth

Navigate to a specific month within the current year. Used by the month picker view. The month parameter is 0-indexed (0 = January, 11 = December). Returns the 1st of the target month.

import { goToMonth } from '@gentleduck/calendar'
 
goToMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate, month: number) => TDate
import { goToMonth } from '@gentleduck/calendar'
 
goToMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate, month: number) => TDate

goToYear

Navigate to a specific year. Used by the year picker view.

goToYear(adapter: Adapter.IDateAdapter<TDate>, current: TDate, year: number) => TDate
goToYear(adapter: Adapter.IDateAdapter<TDate>, current: TDate, year: number) => TDate

goToNextMonth

Shorthand for navigate(adapter, date, 'next', 'month').

goToNextMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate) => TDate
goToNextMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate) => TDate

goToPrevMonth

Shorthand for navigate(adapter, date, 'prev', 'month').

goToPrevMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate) => TDate
goToPrevMonth(adapter: Adapter.IDateAdapter<TDate>, current: TDate) => TDate