Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moment removal #1527

Merged
merged 29 commits into from
Nov 17, 2018
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8329608
initial commit, moment replaced with dayjs, tests are WIP
Darrken Oct 16, 2018
b59d1c7
updating tests to include dayjs locales
Darrken Oct 16, 2018
00ab0d0
updating doc examples
Darrken Oct 16, 2018
658e8d2
starting to convert over to date-fns
Oct 17, 2018
9e4b278
simplified month dropdown
Oct 17, 2018
147e1cc
more function replacements, fixed a while loop
Oct 17, 2018
e7fc05e
some locale changes, fixed another while loop
Oct 17, 2018
b5a2302
converting dayjs functions to date-fns
Oct 17, 2018
ae30172
most functions converted, utc tests failing
Oct 18, 2018
a5ffcfc
updated localization to use date-fns, removed the few utc methods
Darrken Oct 19, 2018
b785561
newDate/parseDate and test fixes
Darrken Oct 19, 2018
d296bd4
fixed some month dropdown issues, tests
Darrken Oct 19, 2018
01848a3
converting to date-fns 2alpha for better localization support
Oct 23, 2018
7b35e08
all tests passing
Oct 23, 2018
00c1ea2
converting some proptypes to dates
Oct 24, 2018
acda6aa
removed moment dependency
Oct 24, 2018
4514e28
fixed getWeeks so it returns a number
Oct 24, 2018
928a959
simplified formatDate function, updating examples
Oct 24, 2018
cfe2513
more example fixes, isTimeInDisabledRange fix
Oct 24, 2018
f99700f
getStartOfWeek gets locale
Oct 24, 2018
8ddcc27
Merge remote-tracking branch 'upstream/master' into remove-moment
Oct 25, 2018
2a6f5b6
updated docs
Oct 25, 2018
7be8096
importing individual date-fns functions, formatting
Oct 25, 2018
527c5d2
Merge remote-tracking branch 'upstream/master' into remove-moment
Oct 25, 2018
5ee2d7d
single quote reverts
Oct 25, 2018
f39d470
fixed chinese locale case
Darrken Oct 25, 2018
e0560f5
clearing up some import description in readme
Darrken Oct 29, 2018
a459761
Merge remote-tracking branch 'upstream/master' into remove-moment
Nov 8, 2018
ff74e10
updated example date formats
Darrken Nov 8, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 39 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,22 @@ The package can be installed via NPM:
npm install react-datepicker --save
```

You’ll need to install React, PropTypes, and Moment.js separately since those dependencies aren’t included in the package. Below is a simple example of how to use the Datepicker in a React view. You will also need to require the CSS file from this package (or provide your own). The example below shows how to include the CSS from this package if your build system supports requiring CSS files (Webpack is one that does).
You’ll need to install React and PropTypes separately since those dependencies aren’t included in the package. If you need to use a locale other than the default en-US, you'll also need to import that into your project from date-fns (see Localization section below). Below is a simple example of how to use the Datepicker in a React view. You will also need to require the CSS file from this package (or provide your own). The example below shows how to include the CSS from this package if your build system supports requiring CSS files (Webpack is one that does).

```js
import React from 'react';
import DatePicker from 'react-datepicker';
import moment from 'moment';

import 'react-datepicker/dist/react-datepicker.css';

// CSS Modules, react-datepicker-cssmodules.css
// import 'react-datepicker/dist/react-datepicker-cssmodules.css';

class Example extends React.Component {
constructor (props) {
super(props)
constructor(props) {
super(props);
this.state = {
startDate: moment()
startDate: new Date()
};
this.handleChange = this.handleChange.bind(this);
}
Expand All @@ -48,10 +47,12 @@ class Example extends React.Component {
}

render() {
return <DatePicker
return (
<DatePicker
selected={this.state.startDate}
onChange={this.handleChange}
/>;
/>
);
}
}
```
Expand All @@ -67,7 +68,8 @@ The most basic use of the DatePicker can be described with:
You can use `onSelect` event handler which fires each time some calendar date has been selected

```js
<DatePicker selected={this.state.date}
<DatePicker
selected={this.state.date}
onSelect={this.handleSelect} //when day is clicked
onChange={this.handleChange} //only when value has changed
/>
Expand All @@ -86,7 +88,8 @@ You can also include a time picker by adding the showTimeSelect prop
selected={this.state.date}
onChange={this.handleChange}
showTimeSelect
dateFormat="LLL" />
dateFormat="Pp"
/>
```

Times will be displayed at 30-minute intervals by default (default configurable via timeInterval prop)
Expand All @@ -95,14 +98,22 @@ More examples of how to use the time picker are given on the [main website](http

### Localization

The date picker relies on [moment.js internationalization](http://momentjs.com/docs/#/i18n/) to localize its display components. By default, the date picker will use the locale globally set in moment, which is English. Locales can be changed in the following ways:
The date picker relies on [date-fns internationalization](https://date-fns.org/v2.0.0-alpha.18/docs/I18n) to localize its display components. By default, the date picker will use the locale globally set, which is English. Provided are 3 helper methods to set the locale:

- **registerLocale** (string, object): loads an imported locale object from date-fns
- **setDefaultLocale** (string): sets a registered locale as the default for all datepicker instances
- **getDefaultLocale**: returns a string showing the currently set default locale

- **Globally** by calling `moment.locale(lang)`
- **Picker-specific** by providing the `locale` prop
To load an alternate locale:

Locales can be further configured in moment with various [customization options](http://momentjs.com/docs/#/customization/).
- Import the helper methods you need: `import { registerLocale, setDefaultLocale } from DatePicker;`
- Import the locale from date-fns: `import fi from 'date-fns/locale/fi';`
- Register the locale: `registerLocale('fi', fi);`

_As of version 0.23, the `weekdays` and `weekStart` DatePicker props have been removed. Instead, they can be configured with the `weekdaysMin` and `week.dow` moment locale customization options._
Locales can be changed in the following ways:

- **Globally** - `setDefaultLocale('fi');`
- **Picker-specific** by providing the `locale` prop - `<DatePicker locale='fi' ... />`

## Compatibility

Expand All @@ -111,6 +122,7 @@ _As of version 0.23, the `weekdays` and `weekStart` DatePicker props have been r
We're always trying to stay compatible with the latest version of React. We can't support all older versions of React.

Latest compatible versions:

- React 15.5 or newer: All above React-datepicker v.0.40.0
- React 15.4.1: needs React-datepicker v0.40.0, newer won't work (due to react-onclickoutside dependencies)
- React 0.14 or newer: All above React-datepicker v0.13.0
Expand All @@ -121,31 +133,32 @@ Latest compatible versions:

The date picker is compatible with the latest versions of Chrome, Firefox, and IE10+.

Unfortunately, it is difficult to support legacy browsers while maintaining our ability to develop new features in the future. For IE9 support, it is known that the [classlist polyfill](https://www.npmjs.com/package/classlist-polyfill) is needed, but this may change or break at any point in the future.
Unfortunately, it is difficult to support legacy browsers while maintaining our ability to develop new features in the future. For IE9 support, it is known that the [classlist polyfill](https://www.npmjs.com/package/classlist-polyfill) is needed, but this may change or break at any point in the future.

## Local Development

The `master` branch contains the latest version of the Datepicker component. To start your example app, you can run `yarn start`. This starts a simple webserver on http://localhost:8080.

You can run `yarn test` to execute the test suite and linters. To help you develop the component we’ve set up some tests that cover the basic functionality (can be found in `/tests`). Even though we’re big fans of testing, this only covers a small piece of the component. We highly recommend you add tests when you’re adding new functionality.
You can run `yarn test` to execute the test suite and linters. To help you develop the component we’ve set up some tests that cover the basic functionality (can be found in `/tests`). Even though we’re big fans of testing, this only covers a small piece of the component. We highly recommend you add tests when you’re adding new functionality.

### The examples

The examples are hosted within the docs folder and are ran in the simple app that loads the Datepicker. To extend the examples with a new example, you can simply duplicate one of the existing examples and change the unique properties of your example.

## Accessibility

### Keyboard support

* *Left*: Move to the previous day.
* *Right*: Move to the next day.
* *Up*: Move to the previous week.
* *Down*: Move to the next week.
* *PgUp*: Move to the previous month.
* *PgDn*: Move to the next month.
* *Home*: Move to the previous year.
* *End*: Move to the next year.
* *Enter/Esc/Tab*: close the calendar. (Enter & Esc calls preventDefault)
- _Left_: Move to the previous day.
- _Right_: Move to the next day.
- _Up_: Move to the previous week.
- _Down_: Move to the next week.
- _PgUp_: Move to the previous month.
- _PgDn_: Move to the next month.
- _Home_: Move to the previous year.
- _End_: Move to the next year.
- _Enter/Esc/Tab_: close the calendar. (Enter & Esc calls preventDefault)

## License

Copyright (c) 2017 HackerOne Inc. and individual contributors. Licensed under MIT license, see [LICENSE](LICENSE) for the full license.
Copyright (c) 2018 HackerOne Inc. and individual contributors. Licensed under MIT license, see [LICENSE](LICENSE) for the full license.
Loading