Security News
pnpm 9.5 Introduces Catalogs: Shareable Dependency Version Specifiers
pnpm 9.5 introduces a Catalogs feature, enabling shareable dependency version specifiers, reducing merge conflicts and improving support for monorepos.
react-day-picker
Advanced tools
Package description
The react-day-picker package is a flexible date picker component for React applications. It allows users to select dates or ranges of dates within a calendar interface. It is customizable and can be used to create various date-picking experiences in web applications.
Single Date Selection
This feature allows users to select a single date from the calendar. The 'onDayClick' event handler updates the state with the selected date.
import DayPicker from 'react-day-picker';
import 'react-day-picker/lib/style.css';
function MyDatePicker() {
const [selectedDay, setSelectedDay] = useState();
return (
<DayPicker
selectedDays={selectedDay}
onDayClick={(day) => setSelectedDay(day)}
/>
);
}
Range Selection
This feature enables users to select a range of dates. The 'DateUtils.addDayToRange' function is used to update the range state.
import DayPicker, { DateUtils } from 'react-day-picker';
import 'react-day-picker/lib/style.css';
function MyDateRangePicker() {
const [range, setRange] = useState({ from: undefined, to: undefined });
const handleDayClick = (day) => {
const range = DateUtils.addDayToRange(day, this.state.range);
setRange(range);
};
return (
<DayPicker
selectedDays={[range.from, { from: range.from, to: range.to }]}
onDayClick={handleDayClick}
/>
);
}
Customization
This feature allows for extensive customization of the calendar's appearance and behavior, including custom class names and replacing default components with custom ones.
import DayPicker from 'react-day-picker';
import 'react-day-picker/lib/style.css';
function MyStyledDatePicker() {
return (
<DayPicker
className='my-custom-class'
weekdayElement={<div>Custom Weekday</div>}
navbarElement={<div>Custom Navbar</div>}
/>
);
}
react-datepicker is a comprehensive date picker library for React. It offers similar functionalities to react-day-picker, such as single date selection, range selection, and customization options. It also provides additional features like time selection and predefined date ranges.
material-ui-pickers is a set of components that implement Material Design pickers for date and time in React. It integrates well with Material-UI and offers a different look and feel compared to react-day-picker, with similar functionality for date selection.
antd, or Ant Design, is a UI design language and React UI library that includes a DatePicker component. It offers a wide range of features and is designed to work within the Ant Design system, providing a different user experience compared to react-day-picker.
Readme
Minimalistic date picker built for React and moment.js.
npm install react-day-picker --save
See a live version of the example app, where the the component works together with an <input>
field. There, the past days are shown as "disabled" and cannot be selected.
This date picker does not have the concept of a selected date: instead, you specify custom day modifiers. A modifier is a string that classify the aspect (and eventually the behaviour) for each day appearing in the calendar.
By evaluating a function(day)
you provide, a modifier is appended for each day to the daypicker__day
class, using a BEM-like syntax.
For example, a disabled
modifier (daypicker__day--disabled
) may make it appearing as grayed-out, or a selected
(daypicker__day--selected
) modifier could highlight a range of selected days.
You are expected to use the state
of your component: set its state listening to the onTouchTap/onClick
DayPicker events (see API and example below).
You need to setup your own CSS. You can start from this css as example.
The following component implements the DayPicker and saves the selected day in its own state
.
It also adds the daypicker__day--today
CSS modifier for today, and a daypicker__day--selected
CSS modifier to the cell corresponding to the selected day.
var DayPicker = require('react-day-picker');
var moment = require('moment');
function isSameDay(a, b) {
return a.startOf('day').isSame(b.startOf('day'));
}
var MyDatePicker = React.createClass({
handleDayTouchTap(day, modifiers, event) {
this.setState({ selectedDay: day });
},
render() {
var modifiers = {
today: function (day) {
// add the `today` modifier for the current day
return isSameDay(moment(), day);
},
selected: function (day) {
// add the `selected` modifier for the selected day
return this.state.selectedDay
&& isSameDay(this.state.selectedDay, day);
}
};
return (
<DayPicker modifiers={ modifiers }
onDayTouchTap={this.handleDayTouchTap} />
);
}
});
React.render(<MyDatePicker/>, document.body);
git clone https://github.com/gpbl/react-day-picker.git
cd react-day-picker
npm install
npm run example
...then open http://localhost:8080.
moment object
A moment()
date object with the month to display in the calendar.
bool
Show the days outside the shown month.
Object
daypicker__day--<modifier>
true
, the modifier is applied, and eventually passed to the onDayTouchTap
payload.For example, the following modifiers will add the CSS class daypicker__day--disabled
to the days of the past:
modifiers = {
disabled: function (day) {
return day.diff(moment(), 'day') < 0;
}
}
<DayPicker modifiers={modifiers} />
function(day, modifiers, event)
function(day, modifiers, event)
Use one of these attributes to add an event handler when the user touches/clicks a day.
day <Object>
the touched day (a moment object)modifiers <Array>
array of modifiers for the touched day, e.g. ['disabled', 'today']
event <SyntheticEvent>
the original touch eventTo make the touch tap events working, you must inject react-tap-event-plugin client side.
function(day, modifiers, event)
function(day, modifiers, event)
Use this attribute to add an handler when the mouse enters/leaves a day element.
function(month)
function(month)
Use this attribute to add an handler when the user switch to the previous/next month.
FAQs
Unknown package
We found that react-day-picker demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 9.5 introduces a Catalogs feature, enabling shareable dependency version specifiers, reducing merge conflicts and improving support for monorepos.
Security News
A threat actor on BreachForums is selling an unverified npm vulnerability for account takeover, but npm has not officially confirmed the existence of this security concern.
Security News
Cyber insurance rates are dropping as the market matures, according to a new report projecting global premiums to reach $43 billion by 2030, driven by international market uptake and growth in the SME sector.