Components
Duration
Duration is a primitive component used to format durations of time according to our date & time formatting guidelines.
Please refer to our date & time formatting guidelines for more detailed information on how we format durations.
import { Duration } from '@sproutsocial/racine'
<Box display='flex' justifyContent='center'><Duration milliseconds={123456789} invalidMillisecondsLabel='Not Available' /></Box>
When the milliseconds
prop is not a valid duration of time, Duration will automatically render an em dash to represent a null value. Always provide an invalidMillisecondsLabel
prop to Duration so that a text alternative for screen reader users will be added to any null values.
<Box display='flex' justifyContent='center'><Duration milliseconds={null} invalidMillisecondsLabel='Not Available' /></Box>
Properties
Note: This component uses the Text component under the hood, and accepts all of the props of that component in addition to those listed above.
Recipes
Long display
<Box display='flex' justifyContent='center'><Duration milliseconds={123456789} display='long' /></Box>
Display Units
Use the displayUnits
prop to let Duration
know which time units to render. Passing in an empty object will return the default displayUnits
.
<Box display='flex' justifyContent='center'><Durationmilliseconds={123456789}displayUnits={{hours: true,minutes: true,}}/></Box>
Negative milliseconds
When milliseconds
is negative, Duration will return the same result as if it were 0.
<Box display='flex' justifyContent='center'><Duration milliseconds={-123456789} /></Box>
Helpers
formatDuration()
formatDuration()
is a helper function that returns a string version of the content that gets rendered in the Duration component. It accepts all the same props as the Duration component listed above.
<Text>{formatDuration({milliseconds: 123456789})}</Text>
getDurationMaxDisplayUnits()
getDurationMaxDisplayUnits()
is a helper function that gets the largest number of display units based on the milliseconds value. For example, if you want to render only the 2 highest display units, you could call getDurationMaxDisplayUnits
with the argument maxDisplayUnits: 2
. Doing so would return either {days: true, hours: true}
, {hours: true, minutes: true}
, {minutes: true, seconds: true}
, or {seconds: true, milliseconds: true}
, all depending on the size of the milliseconds
.
() => {const milliseconds = 123456789;return (<Box display='flex' justifyContent='center'><Durationmilliseconds={milliseconds}displayUnits={getDurationMaxDisplayUnits({milliseconds,maxDisplayUnits: 2,})}/></Box>)}