Scrollable calendar

A calendar component that allows a user to scroll through many months of dates at a time.

Default

Storybook failed to load.

Range

Storybook failed to load.

Localised

Storybook failed to load.

Scrollable calendar grid

Storybook failed to load.

bpk-component-scrollable-calendar

Backpack scrollable calendar component.

Installation

Check the main Readme for a complete installation guide.

Usage

import { Component } from 'react';
import { DateUtils } from '@skyscanner/backpack-web/bpk-component-calendar';
import BpkScrollableCalendar, { CALENDAR_SELECTION_TYPE } from '@skyscanner/backpack-web/bpk-component-scrollable-calendar';
import format from 'date-fns/format';

const formatDateFull = date => format(date, 'EEEE, do MMMM yyyy');
const formatMonth = date => format(date, 'MMMM yyyy');
const daysOfWeek = [
  {
    name: 'Sunday',
    nameAbbr: 'Sun',
    index: 0,
    isWeekend: true,
  },
  // ...
];

export default class App extends Component {
  constructor() {
    super();

    this.state = {
      selectionConfiguration: {
        type: CALENDAR_SELECTION_TYPE.single,
        date: null,
      }
    };
  }

  handleDateSelect = (date) => {
    this.setState({
      selectionConfiguration: {
        type: this.props.selectionConfiguration.type,
        date: date,
      },
    });
  };

  render() {
    return (
      <BpkScrollableCalendar
        id="calendar"
        onDateSelect={this.handleDateSelect}
        formatMonth={formatMonth}
        formatDateFull={formatDateFull}
        daysOfWeek={daysOfWeek}
        weekStartsOn={1}
        selectionConfiguration={this.state.selectionConfiguration}
        // Subtract one day from today's date to make today selectable by default
        minDate={DateUtils.addDays(new Date(), -1)}
        maxDate={DateUtils.addMonths(new Date(), 12)}
      />
    );
  }
}

Props

Check out the full list of props on Skyscanner's design system documentation website.

Props

Storybook failed to load.