- Welcome
- Getting started
- Latest updates
- Foundations
-
Components
- Accordion
- Alert
- Alignment
- App Search Modal
- Aria live
- Autosuggest
- Badge
- Banner alert
- Bar chart
- Blockquote
- Bottom navigation
- Bottom sheet
- Breadcrumb
- Breakpoint
- Button
- Calendar
- Card
- Card list
- Card button
- Carousel
- Checkbox
- Chip
- Chip group
- Code
- Content cards
- Data Table
- Datepicker
- Description list
- Dialog
- Divider
- Drawer
- Field Set
- Flare
- Flat list
- Flight leg
- Floating action button
- Floating notification
- Form label
- Form validation
- Graphic promotion
- Horizontal navigation
- Icon
- Image
- Image Gallery
- Infinite scroll
- Info Banner
- Inset Banner
- Link
- List
- Map
- Mobile scroll container
- Modal
- Navigation bar
- Navigation Tab Group
- Nudger
- Overlay
- Page indicator
- Pagination
- Panel
- Phone input
- Picker
- Popover
- Price
- Progress bar
- Radio button
- Rating
- Rating Bar
- Scrollable calendar
- Search Modal
- Section header
- Section list
- Select
- Skeleton
- Skip link
- Slider
- Snackbar
- Snippet
- Spinner
- Split input
- Star rating
- Swap Button
- Switch
- Table
- Text
- Text input
- Theming
- Ticket
- Toast
- Tooltip
- Touchable native feedback
- Touchable overlay
- Search Input Summary
- Content
- Accessibility
- Contributing
- Localisation
Datepicker
The date picker is an input control that allows the user to pick a single date. It embeds a calendar component in a popover.
Default
Default calendar, input and popover configuration. See the BpkCalendar documentation for more examples.
With Ranges
The datepicker can be configured to support ranges.
With multiple inputs
If the datepicker is configured to use range mode the datepicker can be configured to open when supplying multiple inputs and triggering the same calendar to input a start and end date.
bpk-component-datepicker
Backpack datepicker component.
Installation
Check the main Readme for a complete installation guide.
Usage
import { Component } from 'react';
import BpkDatepicker, { CALENDAR_SELECTION_TYPE } from '@skyscanner/backpack-web/bpk-component-datepicker';
import format from 'date-fns/format';
const formatDate = date => format(date, 'dd/MM/yyyy');
const formatDateFull = date => format(date, '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 (
<BpkDatepicker
id="datepicker"
daysOfWeek={daysOfWeek}
weekStartsOn={1}
changeMonthLabel="Change month"
closeButtonText="Close"
title="Departure date"
getApplicationElement={() => document.getElementById('pagewrap')}
formatDate={formatDate}
formatMonth={formatMonth}
formatDateFull={formatDateFull}
onDateSelect={this.handleDateSelect}
selectionConfiguration={this.state.selectionConfiguration}
/>
);
}
}
By default BpkCalendar is used but the calendar component is fully configurable through the calendarComponent prop.
import { Component } from 'react';
import BpkDatepicker from '@skyscanner/backpack-web/bpk-component-datepicker';
import {
BpkCalendarNav,
BpkCalendarGridHeader,
BpkCalendarGridWithTransition,
BpkCalendarDate,
withCalendarState,
composeCalendar,
} from '@skyscanner/backpack-web/bpk-component-calendar';
import { colorSagano } from '@skyscanner/bpk-foundations-web/tokens/base.es6';
const ColoredCalendarDate = props =>
<BpkCalendarDate {...props} style={{ backgroundColor: colorSagano }} />;
const CalendarWithColoredDates = withCalendarState(
composeCalendar(
BpkCalendarNav,
BpkCalendarGridHeader,
BpkCalendarGridWithTransition,
ColoredCalendarDate,
),
);
const CustomPicker = () => (
<BpkDatepicker
id="datepicker"
calendarComponent={CalendarWithColoredDates}
daysOfWeek={daysOfWeek}
weekStartsOn={1}
changeMonthLabel="Change month"
closeButtonText="Close"
title="Departure date"
getApplicationElement={() => document.getElementById('pagewrap')}
formatDate={formatDate}
formatMonth={formatMonth}
formatDateFull={formatDateFull}
onDateSelect={this.handleDateSelect}
selectionConfiguration={this.state.selectionConfiguration}
/>
);
Theming: In order to theme the modal, a renderTarget needs to be supplied as a function which returns a DOM node in the scope of a BpkThemeProvider.
Props
Check out the full list of props on Skyscanner's design system documentation website.
Props
Made with ❤️ by Skyscanner © 2024
© 2024 Skyscanner Backpack. Page last updated on Oct 2, 2023, 15:51