UNPKG

9.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"DatePicker.js","sources":["../src/components/DateRangePicker/DatePicker.js"],"sourcesContent":["import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport dayjs from 'dayjs'\nimport { GU } from '../../style'\nimport { eachDayOfInterval } from '../../utils'\nimport { Selector } from './components'\nimport MonthDay from './MonthDay'\n\nfunction DatePicker({\n initialDate,\n onSelect,\n datesRangeStart,\n datesRangeEnd,\n hideYearSelector,\n yearFormat,\n hideMonthSelector,\n monthFormat,\n monthYearFormat,\n hideWeekDays,\n weekDayFormat,\n ...props\n}) {\n const [selectedDate, setSelectedDate] = useState(initialDate)\n\n const setDate = ({ year, add }) => event => {\n setSelectedDate(\n dayjs(selectedDate)\n .startOf('month')\n [add ? 'add' : 'subtract'](1, year ? 'year' : 'month')\n .toDate()\n )\n }\n\n const today = dayjs()\n .startOf('day')\n .toDate()\n\n const selectedDayjs = dayjs(selectedDate || today)\n\n const isSelected = day => {\n if (datesRangeStart || datesRangeEnd) {\n return (\n day.isSame(datesRangeStart, 'day') || day.isSame(datesRangeEnd, 'day')\n )\n }\n return false\n }\n\n const isInRange = day => {\n if (datesRangeStart && datesRangeEnd) {\n return day.isAfter(datesRangeStart) && day.isBefore(datesRangeEnd)\n }\n }\n\n return (\n <div\n css={`\n display: grid;\n `}\n {...props}\n >\n {!hideYearSelector && (\n <Selector\n prev={setDate({ year: true, add: false })}\n next={setDate({ year: true, add: true })}\n small\n >\n {selectedDayjs.format(yearFormat)}\n </Selector>\n )}\n\n {!hideMonthSelector && (\n <Selector\n prev={setDate({ year: false, add: false })}\n next={setDate({ year: false, add: true })}\n >\n {selectedDayjs.format(\n !hideYearSelector ? monthFormat : monthYearFormat\n )}\n </Selector>\n )}\n\n <div\n css={`\n display: grid;\n grid-template: auto / repeat(7, 1fr);\n width: ${31.5 * GU}px;\n `}\n >\n {!hideWeekDays &&\n eachDayOfInterval({\n start: selectedDayjs.startOf('week'),\n end: selectedDayjs.endOf('week'),\n }).map(day => {\n const dayJs = dayjs(day)\n return (\n <MonthDay key={dayJs.format('dd')} weekDay>\n {dayJs.format(weekDayFormat)}\n </MonthDay>\n )\n })}\n\n {eachDayOfInterval({\n start: selectedDayjs.startOf('month').startOf('week'),\n end: selectedDayjs.endOf('month').endOf('week'),\n }).map(day => {\n const dayJs = dayjs(day)\n return (\n <MonthDay\n key={dayJs.valueOf()}\n disabled={!selectedDayjs.isSame(dayJs, 'month')}\n selected={isSelected(dayJs)}\n inRange={isInRange(dayJs)}\n rangeBoundaryBegin={\n datesRangeStart &&\n datesRangeEnd &&\n dayJs.isSame(datesRangeStart, 'day')\n }\n rangeBoundaryEnd={\n datesRangeStart &&\n datesRangeEnd &&\n dayJs.isSame(datesRangeEnd, 'day')\n }\n today={dayJs.isSame(today, 'day')}\n onClick={() => onSelect(dayJs.toDate())}\n >\n {dayJs.format(props.dayFormat)}\n </MonthDay>\n )\n })}\n </div>\n </div>\n )\n}\n\nDatePicker.propTypes = {\n /**\n * For displaying a selected dates range - start\n */\n datesRangeStart: PropTypes.instanceOf(Date),\n /**\n * For displaying a selected dates range - end\n */\n datesRangeEnd: PropTypes.instanceOf(Date),\n /**\n * Initial date - calendar will start from here.\n */\n initialDate: PropTypes.instanceOf(Date),\n\n // Events\n onSelect: PropTypes.func,\n\n // Visibility\n hideMonthSelector: PropTypes.bool,\n hideWeekDays: PropTypes.bool,\n hideYearSelector: PropTypes.bool,\n\n // Formatting\n dayFormat: PropTypes.string,\n monthFormat: PropTypes.string,\n monthYearFormat: PropTypes.string,\n weekDayFormat: PropTypes.string,\n yearFormat: PropTypes.string,\n}\n\nDatePicker.defaultProps = {\n onSelect: () => {},\n dayFormat: 'D',\n monthFormat: 'MMMM',\n monthYearFormat: 'MMMM YYYY',\n weekDayFormat: 'ddd',\n yearFormat: 'YYYY',\n}\n\nexport default DatePicker\n"],"names":["DatePicker","initialDate","onSelect","datesRangeStart","datesRangeEnd","hideYearSelector","yearFormat","hideMonthSelector","monthFormat","monthYearFormat","hideWeekDays","weekDayFormat","props","useState","selectedDate","setSelectedDate","setDate","year","add","event","dayjs","startOf","toDate","today","selectedDayjs","isSelected","day","isSame","isInRange","isAfter","isBefore","React","Selector","format","GU","eachDayOfInterval","start","end","endOf","map","dayJs","MonthDay","valueOf","dayFormat","propTypes","PropTypes","instanceOf","Date","func","bool","string","defaultProps"],"mappings":"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"}
\No newline at end of file