Anna Kurylo
2018-10-17 ccc40e94e2da9fe9aa1cb560b97e3e618cefb1da
DateTime.js
@@ -1,3 +1,5 @@
/* eslint-disable */
'use strict';
var assign = require('object-assign'),
@@ -8,15 +10,26 @@
   CalendarContainer = require('./src/CalendarContainer')
   ;
var viewModes = Object.freeze({
   YEARS: 'years',
   MONTHS: 'months',
   DAYS: 'days',
   TIME: 'time',
});
var TYPES = PropTypes;
var Datetime = createClass({
   displayName: 'DateTime',
   propTypes: {
      // value: TYPES.object | TYPES.string,
      // defaultValue: TYPES.object | TYPES.string,
      // viewDate: TYPES.object | TYPES.string,
      onFocus: TYPES.func,
      onBlur: TYPES.func,
      onChange: TYPES.func,
      onViewModeChange: TYPES.func,
      onNavigateBack: TYPES.func,
      onNavigateForward: TYPES.func,
      locale: TYPES.string,
      utc: TYPES.bool,
      input: TYPES.bool,
@@ -24,7 +37,7 @@
      // timeFormat: TYPES.string | TYPES.bool,
      inputProps: TYPES.object,
      timeConstraints: TYPES.object,
      viewMode: TYPES.oneOf(['years', 'months', 'days', 'time']),
      viewMode: TYPES.oneOf([viewModes.YEARS, viewModes.MONTHS, viewModes.DAYS, viewModes.TIME]),
      isValidDate: TYPES.func,
      open: TYPES.bool,
      strictParsing: TYPES.bool,
@@ -38,9 +51,24 @@
      if ( state.open === undefined )
         state.open = !this.props.input;
      state.currentView = this.props.dateFormat ? (this.props.viewMode || state.updateOn || 'days') : 'time';
      state.currentView = this.props.dateFormat ?
         (this.props.viewMode || state.updateOn || viewModes.DAYS) : viewModes.TIME;
      return state;
   },
   parseDate: function (date, formats) {
      var parsedDate;
      if (date && typeof date === 'string')
         parsedDate = this.localMoment(date, formats.datetime);
      else if (date)
         parsedDate = this.localMoment(date);
      if (parsedDate && !parsedDate.isValid())
         parsedDate = null;
      return parsedDate;
   },
   getStateFromProps: function( props ) {
@@ -49,18 +77,13 @@
         selectedDate, viewDate, updateOn, inputValue
         ;
      if ( date && typeof date === 'string' )
         selectedDate = this.localMoment( date, formats.datetime );
      else if ( date )
         selectedDate = this.localMoment( date );
      selectedDate = this.parseDate(date, formats);
      if ( selectedDate && !selectedDate.isValid() )
         selectedDate = null;
      viewDate = this.parseDate(props.viewDate, formats);
      viewDate = selectedDate ?
         selectedDate.clone().startOf('month') :
         this.localMoment().startOf('month')
      ;
         viewDate ? viewDate.clone().startOf('month') : this.localMoment().startOf('month');
      updateOn = this.getUpdateOn(formats);
@@ -83,14 +106,14 @@
   getUpdateOn: function( formats ) {
      if ( formats.date.match(/[lLD]/) ) {
         return 'days';
         return viewModes.DAYS;
      } else if ( formats.date.indexOf('M') !== -1 ) {
         return 'months';
         return viewModes.MONTHS;
      } else if ( formats.date.indexOf('Y') !== -1 ) {
         return 'years';
         return viewModes.YEARS;
      }
      return 'days';
      return viewModes.DAYS;
   },
   getFormats: function( props ) {
@@ -104,7 +127,7 @@
      if ( formats.date === true ) {
         formats.date = locale.longDateFormat('L');
      }
      else if ( this.getUpdateOn(formats) !== 'days' ) {
      else if ( this.getUpdateOn(formats) !== viewModes.DAYS ) {
         formats.time = '';
      }
@@ -133,7 +156,7 @@
      if ( updatedState.open === undefined ) {
         if ( typeof nextProps.open !== 'undefined' ) {
            updatedState.open = nextProps.open;
         } else if ( this.props.closeOnSelect && this.state.currentView !== 'time' ) {
         } else if ( this.props.closeOnSelect && this.state.currentView !== viewModes.TIME ) {
            updatedState.open = false;
         } else {
            updatedState.open = this.state.open;
@@ -172,6 +195,10 @@
               updatedState.inputValue = updatedState.selectedDate.format(formats.datetime);
            }
         }
      }
      if ( nextProps.viewDate !== this.props.viewDate ) {
         updatedState.viewDate = moment(nextProps.viewDate);
      }
      //we should only show a valid date if we are provided a isValidDate function. Removed in 2.10.3
      /*if (this.props.isValidDate) {
@@ -218,8 +245,8 @@
   setDate: function( type ) {
      var me = this,
         nextViews = {
            month: 'days',
            year: 'months'
            month: viewModes.DAYS,
            year: viewModes.MONTHS,
         }
      ;
      return function( e ) {
@@ -231,26 +258,29 @@
      };
   },
   addTime: function( amount, type, toSelected ) {
      return this.updateTime( 'add', amount, type, toSelected );
   subtractTime: function( amount, type, toSelected ) {
      var me = this;
      return function() {
         me.props.onNavigateBack( amount, type );
         me.updateTime( 'subtract', amount, type, toSelected );
      };
   },
   subtractTime: function( amount, type, toSelected ) {
      return this.updateTime( 'subtract', amount, type, toSelected );
   addTime: function( amount, type, toSelected ) {
      var me = this;
      return function() {
         me.props.onNavigateForward( amount, type );
         me.updateTime( 'add', amount, type, toSelected );
      };
   },
   updateTime: function( op, amount, type, toSelected ) {
      var me = this;
      var update = {},
         date = toSelected ? 'selectedDate' : 'viewDate';
      return function() {
         var update = {},
            date = toSelected ? 'selectedDate' : 'viewDate'
         ;
      update[ date ] = this.state[ date ].clone()[ op ]( amount, type );
         update[ date ] = me.state[ date ].clone()[ op ]( amount, type );
         me.setState( update );
      };
      this.setState( update );
   },
   allowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'],
@@ -347,7 +377,7 @@
   },
   handleClickOutside: function() {
      if ( this.props.input && this.state.open && !this.props.open ) {
      if ( this.props.input && this.state.open && !this.props.open && !this.props.disableOnClickOutside ) {
         this.setState({ open: false }, function() {
            this.props.onBlur( this.state.selectedDate || this.state.inputValue );
         });
@@ -436,6 +466,8 @@
   onBlur: function() {},
   onChange: function() {},
   onViewModeChange: function() {},
   onNavigateBack: function() {},
   onNavigateForward: function() {},
   timeFormat: true,
   timeConstraints: {},
   dateFormat: true,
@@ -449,3 +481,4 @@
Datetime.moment = moment;
module.exports = Datetime;
/* eslint-enable */