From 56ea646d69a1ca97933bc5a1471f9dbc440dab1f Mon Sep 17 00:00:00 2001 From: Giampaolo Bellavite Date: Sun, 13 May 2018 12:41:58 +0200 Subject: [PATCH] Cleanup week example #719 --- .../code-samples/examples/selected-week.js | 141 ++++++++++-------- docs/src/containers/ExamplePage.js | 4 +- docs/src/pages/examples/selected-week.js | 5 +- 3 files changed, 81 insertions(+), 69 deletions(-) diff --git a/docs/src/code-samples/examples/selected-week.js b/docs/src/code-samples/examples/selected-week.js index 7d9d6f7686..54b0853ea3 100644 --- a/docs/src/code-samples/examples/selected-week.js +++ b/docs/src/code-samples/examples/selected-week.js @@ -4,62 +4,57 @@ import moment from 'moment'; import DayPicker from 'react-day-picker'; import 'react-day-picker/lib/style.css'; -export default class Example extends React.Component { - state = { - hoverRange: null, - selectedDays: [], - }; - - daysFromWeek = weekStart => [ - weekStart, - moment(weekStart) - .add(1, 'days') - .toDate(), - moment(weekStart) - .add(2, 'days') - .toDate(), - moment(weekStart) - .add(3, 'days') - .toDate(), - moment(weekStart) - .add(4, 'days') - .toDate(), - moment(weekStart) - .add(5, 'days') - .toDate(), - moment(weekStart) - .add(6, 'days') - .toDate(), - ]; +function getWeekDays(weekStart) { + const days = [weekStart]; + for (let i = 1; i < 7; i += 1) { + days.push( + moment(weekStart) + .add(i, 'days') + .toDate() + ); + } + return days; +} - weekFromDay = date => ({ +function getWeekRange(date) { + return { from: moment(date) .startOf('week') .toDate(), to: moment(date) .endOf('week') .toDate(), - }); + }; +} + +export default class Example extends React.Component { + state = { + hoverRange: undefined, + selectedDays: [], + }; - handelDayChange = date => { - this.setState(prevState => ({ - ...prevState, - selectedDays: this.daysFromWeek(this.weekFromDay(date).from), - })); + handleDayChange = date => { + this.setState({ + selectedDays: getWeekDays(getWeekRange(date).from), + }); }; handleDayEnter = date => { - this.setState(prevState => ({ - ...prevState, - hoverRange: this.weekFromDay(date), - })); + this.setState({ + hoverRange: getWeekRange(date), + }); }; handleDayLeave = () => { - this.setState(prevState => ({ - ...prevState, - hoverRange: null, - })); + this.setState({ + hoverRange: undefined, + }); + }; + + handleWeekClick = (weekNumber, days, e) => { + this.setState({ + selectedDays: days, + }); }; render() { @@ -80,48 +75,64 @@ export default class Example extends React.Component { }; return ( -
+
+ {selectedDays.length === 7 && ( +
+ {moment(selectedDays[0]).format('LL')} –{' '} + {moment(selectedDays[6]).format('LL')} +
+ )} + diff --git a/docs/src/containers/ExamplePage.js b/docs/src/containers/ExamplePage.js index 4abcaeeaff..637744c056 100644 --- a/docs/src/containers/ExamplePage.js +++ b/docs/src/containers/ExamplePage.js @@ -70,7 +70,9 @@ export default function ExamplePage({ children, title }) { Select range on mouse enter - Select a week + + Selecting an entire week + diff --git a/docs/src/pages/examples/selected-week.js b/docs/src/pages/examples/selected-week.js index e9ad6db31f..c980083f62 100644 --- a/docs/src/pages/examples/selected-week.js +++ b/docs/src/pages/examples/selected-week.js @@ -6,9 +6,8 @@ import CodeSample from '../../ui/CodeSample'; export default () => (

- This example shows how to use the component’s state and{' '} - selectedDays to allow the selection amd hihlighting of a - week. + This example use the component’s state and selectedDays to + highlight and select an entire week.