UNPKG

react-widgets

Version:

An à la carte set of polished, extensible, and accessible inputs built for React

109 lines (78 loc) 3.22 kB
'use strict'; var babelHelpers = require('./babelHelpers.js'); exports.__esModule = true; var _dateArithmetic = require('date-arithmetic'); var _dateArithmetic2 = babelHelpers.interopRequireDefault(_dateArithmetic); var _constants = require('./constants'); var _constants2 = babelHelpers.interopRequireDefault(_constants); var _localizers = require('./localizers'); var directions = _constants2['default'].directions; var calendarViewUnits = _constants2['default'].calendarViewUnits; var dates = babelHelpers._extends(_dateArithmetic2['default'], { parse: function parse(date, format, culture) { return _localizers.date.parse(date, format, culture); }, format: function format(date, _format, culture) { return _localizers.date.format(date, _format, culture); }, monthsInYear: function monthsInYear(year) { var months = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], date = new Date(year, 0, 1); return months.map(function (i) { return dates.month(date, i); }); }, firstVisibleDay: function firstVisibleDay(date, culture) { var firstOfMonth = dates.startOf(date, 'month'); return dates.startOf(firstOfMonth, 'week', _localizers.date.startOfWeek(culture)); }, lastVisibleDay: function lastVisibleDay(date, culture) { var endOfMonth = dates.endOf(date, 'month'); return dates.endOf(endOfMonth, 'week', _localizers.date.startOfWeek(culture)); }, visibleDays: function visibleDays(date, culture) { var current = dates.firstVisibleDay(date, culture), last = dates.lastVisibleDay(date, culture), days = []; while (dates.lte(current, last, 'day')) { days.push(current); current = dates.add(current, 1, 'day'); } return days; }, move: function move(date, min, max, unit, direction) { var isMonth = unit === 'month', isUpOrDown = direction === directions.UP || direction === directions.DOWN, rangeUnit = calendarViewUnits[unit], addUnit = isMonth && isUpOrDown ? 'week' : calendarViewUnits[unit], amount = isMonth || !isUpOrDown ? 1 : 4, newDate; if (direction === directions.UP || direction === directions.LEFT) amount *= -1; newDate = dates.add(date, amount, addUnit); return dates.inRange(newDate, min, max, rangeUnit) ? newDate : date; }, merge: function merge(date, time) { if (time == null && date == null) return null; if (time == null) time = new Date(); if (date == null) date = new Date(); date = dates.startOf(date, 'day'); date = dates.hours(date, dates.hours(time)); date = dates.minutes(date, dates.minutes(time)); date = dates.seconds(date, dates.seconds(time)); return dates.milliseconds(date, dates.milliseconds(time)); }, sameMonth: function sameMonth(dateA, dateB) { return dates.eq(dateA, dateB, 'month'); }, today: function today() { return this.startOf(new Date(), 'day'); }, yesterday: function yesterday() { return this.add(this.startOf(new Date(), 'day'), -1, 'day'); }, tomorrow: function tomorrow() { return this.add(this.startOf(new Date(), 'day'), 1, 'day'); } }); exports['default'] = dates; module.exports = exports['default'];