react-moment-proptypes
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.