Extended Prop Types
Useful proptypes for React components. Developed for and tested on ClassDojo's web app.
Usage
This module exports a set of proptype validators.
; static propTypes = myDate: ExtendedPropTypesdateisRequired mySatanicString: ExtendedPropTypesisRequired ;
If you only need a few of the provided functions, individual validators can be imported under /lib/validators
.
; static propTypes = mySpecialObject: isRequired ;
It may be convenient to not have to reference both the original proptypes object and also this one. To resolve this, you can use one of two methods:
extended-proptypes/lib/extend-from-react
imports{PropTypes}
fromreact
and adds all of its methods to this module's export.extended-proptypes/lib/extend-from-standalone
importsPropTypes
fromprop-types
and adds all of its methods to this module's export.
;; static propTypes = myEmailAddress: PropTypesemailAddressisRequired myArrayOrObject: PropTypes ;
When NODE_ENV === "production"
, since React will not validate PropTypes, this method exports stubbed versions of each validator.
New Prop Types
All validators expose basic and isRequired
versions.
React:
elementWithType(Type)
: A react element matching the provided type, which may be a class or a function.
Collections
collection
: An array or a plain object.collectionOf(validator)
: An array or a plain object whose values match the provided validator.keyedObject(regex)
: An object whose keys match the provided regex.keyedObjectOf(regex, validator)
: An object whose keys match the provided regex and whose values match the provided validator.iterable
: An iterable. Errors if enviroment does not support symbols.
General Primatives
constant(val)
: The provided val, only.primative
: a number, a string, or a boolean.stringMatching(regex)
: A string that matches the provided regex.stringWithLength(min, max=Infinity)
: A string with length between min and max, inclusive. If only one argument is provided, requires exactly that length.hex
: A string consisting of hex characters, with an optional 0x at the beginning.date
: A date object.dateBetween(min, max=Infinity)
: A date object which is within the provided interval.time
: A value parsable bynew Date()
.timeBetween(min, max=Infinity)
: A value parsable bynew Date()
which is within the provided interval.uuid
: A uuid string (e.g.123e4567-e89b-12d3-a456-426655440000
).locale
: A locale string, likeen-US
orjp
.emailAddress
: An email address (regex taken from the highest-upvoted SO answer).
CSS
percent
: A percentage.cssLength
: A single css length, like24px
,43%
or4rem
.cssSize
: Between 1 and 4 css lengths.color
: A hex or rgb(a) string
MongoDB-specific
mongoId
: A 24-character hex string.mongoIdKeyedObject
: An object whose keys are mongo ids.mongoIdKeyedObjectOf(validator)
: An object whose keys are mongo ids and whose values match the provided validator.