Security News
Input Validation Vulnerabilities Dominate MITRE's 2024 CWE Top 25 List
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
react-timezone-select
Advanced tools
Another react timezone select component, I know.. However this one has a few key benefits!
While looking around for a good option, I had trouble finding a timezone select components which:
1) Adjusted the choices automatically with Daylight Savings Time (DST)
2) Didn't have a huge list of choices to scroll through when technically only 24 (ish) are necessary
Update: v0.7+ now built with
spacetime
instead ofmoment.js
, reducing bundle size by ~66%!
Update: v0.10+ now built with Typescript!
This demo is also available in the ./examples
directory. Simply run npm start
after installing everything and the webpack dev server will begin, where you can find the demo at localhost:3001
.
We also have some examples available on Codesandbox using this component with the datetime library spacetime as well as with moment, showing how one might use this component in a real application.
npm install react-timezone-select
import React, { useState } from 'react'
import ReactDOM from 'react-dom'
import TimezoneSelect from 'react-timezone-select'
const App = () => {
const [selectedTimezone, setSelectedTimezone] = useState('')
return (
<div className='App'>
<h2>react-timezone-select</h2>
<blockquote>Please make a selection</blockquote>
<div className='select-wrapper'>
<TimezoneSelect
value={selectedTimezone}
onChange={setSelectedTimezone}
/>
</div>
<h3>Output:</h3>
<div
style={{
backgroundColor: '#ccc',
padding: '20px',
margin: '20px auto',
borderRadius: '5px',
maxWidth: '600px',
}}
>
<pre
style={{
margin: '0 20px',
fontWeight: 500,
fontFamily: 'monospace',
}}
>
{JSON.stringify(selectedTimezone, null, 2)}
</pre>
</div>
</div>
)
}
const rootElement = document.getElementById('root')
ReactDOM.render(<App />, rootElement)
If you'd like the user's own timezone to be set as the initially selected option, we can make use of the new Intl
browser api by setting the default state value to Intl.DateTimeFormat().resolvedOptions().timeZone
.
const [timezone, setTimezone] = useState(
Intl.DateTimeFormat().resolvedOptions().timeZone
)
Thanks @ndrwksr!
For now, Next.js isn't great about handling ESM packages. Until this gets fixed, a workaround involves using next-transpile-modules
like so:
// next.config.js
const withTM = require('next-transpile-modules')(['react-timezone-select']);
module.exports = withTM({
...
})
value
- Initial Timezone string
, i.e. 'Europe/Amsterdam'
or the full object from the onChange function: { value: string, label: string, abbrev: string, altName: string }
onBlur
- () => void
onChange
- (timezone) => void
timezone
parameter: {
value: 'America/Juneau'
label: '(GMT-8:00) Alaska,
abbrev: 'AHST',
offset: -8,
altName: 'Alaskan Standard Time'
}
labelStyle
- 'original' | 'altName' | 'abbrev'
timezones
- Custom Timezone Object - see below..react-select
propsNew in v0.9.11+
we've shipped a prop to allow users to either fully replace the timezone options or append custom choices of their own.
The timezones
prop takes a dictionary of timezones, i.e. an object where the key/value format is: { 'IANA Timezone Name' : 'Your Label' }
- don't worry we'll prepend the (GMT...)
part, just pass the city(s) or region(s) you want in your label.
For example:
import TimezoneSelect, { i18nTimezones } from 'react-timezone-select'
...
<TimezoneSelect
value={selectedTimezone}
onChange={setSelectedTimezone}
timezones={{
...i18nTimezones,
'America/Lima': 'Pittsburgh',
'Europe/Berlin': 'Frankfurt',
}}
/>
This will generate two additional choices in our dropdown, one with the label '(GMT-5:00) Pittsburgh'
and another with '(GMT+1:00) Frankfurt'
. One could also omit spreading in the i18nTimezones
object and pass in ones own completely custom list of timezone choices.
Pull requests are always welcome! Please stick to the prettier
settings, and if adding new features, please consider adding test(s) and some notes in the README, where appropriate.
FAQs
Usable, dynamic React Timezone Select
The npm package react-timezone-select receives a total of 47,018 weekly downloads. As such, react-timezone-select popularity was classified as popular.
We found that react-timezone-select demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.