react-moment-proptypes

React proptype for moment module

Usage no npm install needed!

<script type="module">
  import reactMomentProptypes from 'https://cdn.skypack.dev/react-moment-proptypes';
</script>

README

react-moment-proptypes

Build Status Coverage Status

A React Proptype Validator to check if passed prop is a moment.js construct

Example

var momentPropTypes = require('react-moment-proptypes');

var TestClass = React.createClass({
  propTypes : {
    dateThing : momentPropTypes.momentObj,
    dateThingWithPredicate : momentPropTypes.momentObj.withPredicate(
      function isUTC(momentObject) {
        return momentObject.isUTC();
      }
    ),
    stringThing : momentPropTypes.momentString,
    durationThing: momentPropTypes.momentDurationObj,
  },

  render : function() {
    return null
  },
});

// Class Use
<TestClass dateThing={moment()}
           dateThingWithPredicate={moment.utc()}
           stringThing={'12-12-2014'}
           durationThing={moment.duration(3, 'hours')}/>

Moment Configuration

createFromInputFallback

Moment provides a moment.createFromInputFallback method you can define to create additional parsing rules.

With some versions of moment you may receive the following console warning:

Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: not a date, _f: undefined, _strict: undefined, _locale: [object Object]
Error
    at [... stack trace]

Example implementations can be found at the given documentation link.

Tests

Tests were approached with enzyme and React's test utility renderer

  • npm test for running unit and integration tests
  • npm run coverage for current test coverage

Moment Versions

  • npm run test-all to test against tested moment version (1.6.0, 1.7.0, current)

If there is a desire for varying moment legacy support I'm willing to add it, but will stick to YAGNI until then.