Skip to content

Commit fbd1be4

Browse files
authored
Update deps - adds support for GeoParquet (#333)
* update deps * simplify state by removing a useEffect (triggered by eslint plugin) zsh:1: command not found: :w * fix eslint error, by removing sync state change in useEffect https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
1 parent 6b0a53e commit fbd1be4

File tree

3 files changed

+22
-21
lines changed

3 files changed

+22
-21
lines changed

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
},
5757
"dependencies": {
5858
"hightable": "0.20.1",
59-
"hyparquet": "1.19.0",
59+
"hyparquet": "1.20.0",
6060
"hyparquet-compressors": "1.1.1",
6161
"icebird": "0.3.1"
6262
},
@@ -66,13 +66,13 @@
6666
"@testing-library/react": "16.3.0",
6767
"@types/node": "24.7.2",
6868
"@types/react": "19.2.2",
69-
"@types/react-dom": "19.2.1",
69+
"@types/react-dom": "19.2.2",
7070
"@vitejs/plugin-react": "5.0.4",
7171
"@vitest/coverage-v8": "3.2.4",
7272
"eslint": "9.37.0",
7373
"eslint-plugin-react": "7.37.5",
74-
"eslint-plugin-react-hooks": "6.1.1",
75-
"eslint-plugin-react-refresh": "0.4.23",
74+
"eslint-plugin-react-hooks": "7.0.0",
75+
"eslint-plugin-react-refresh": "0.4.24",
7676
"eslint-plugin-storybook": "9.1.10",
7777
"globals": "16.4.0",
7878
"jsdom": "27.0.0",
@@ -82,8 +82,8 @@
8282
"react-dom": "19.2.0",
8383
"storybook": "9.1.10",
8484
"typescript": "5.9.3",
85-
"typescript-eslint": "8.46.0",
86-
"vite": "7.1.9",
85+
"typescript-eslint": "8.46.1",
86+
"vite": "7.1.10",
8787
"vitest": "3.2.4"
8888
},
8989
"peerDependencies": {

src/components/Dropdown/Dropdown.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ReactNode, useEffect, useRef, useState } from 'react'
1+
import React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'
22
import { cn } from '../../lib/utils'
33
import styles from './Dropdown.module.css'
44

@@ -19,7 +19,7 @@ interface DropdownProps {
1919
* </Dropdown>
2020
*/
2121
export default function Dropdown({ label, align = 'left', className, children }: DropdownProps) {
22-
const [isOpen, setIsOpen] = useState(false)
22+
const [isOpen, _setIsOpen] = useState(false)
2323
const [focusedIndex, setFocusedIndex] = useState(-1)
2424

2525
const dropdownRef = useRef<HTMLDivElement>(null)
@@ -34,15 +34,21 @@ export default function Dropdown({ label, align = 'left', className, children }:
3434
))
3535
}
3636

37+
const setIsOpen = useCallback((value: React.SetStateAction<boolean>) => {
38+
_setIsOpen(prev => {
39+
const nextIsOpen = typeof value === 'function' ? value(prev) : value
40+
if (nextIsOpen) {
41+
// reset focus so we start at the first item
42+
setFocusedIndex(0)
43+
}
44+
return nextIsOpen
45+
})
46+
}, [])
47+
3748
function toggleDropdown() {
3849
setIsOpen(prev => !prev)
3950
}
4051

41-
// reset focus so we start at the first item
42-
useEffect(() => {
43-
if (isOpen) setFocusedIndex(0)
44-
}, [isOpen])
45-
4652
// whenever focusedIndex changes, focus the corresponding menu item
4753
useEffect(() => {
4854
if (isOpen && focusedIndex >= 0) {
@@ -116,7 +122,7 @@ export default function Dropdown({ label, align = 'left', className, children }:
116122
document.removeEventListener('keydown', handleEscape)
117123
document.removeEventListener('mousedown', handleClickOutside)
118124
}
119-
}, [])
125+
}, [setIsOpen])
120126

121127
return (
122128
<div

src/components/Layout/Layout.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,9 @@ interface LayoutProps {
2525
* @param props.title - page title
2626
*/
2727
export default function Layout({ children, progress, error, title }: LayoutProps) {
28-
const [showWelcome, setShowWelcome] = useState(false)
29-
const { customClass } = useConfig()
30-
3128
// Check localStorage on mount to see if the user has seen the welcome popup
32-
useEffect(() => {
33-
const dismissed = localStorage.getItem('welcome:dismissed') === 'true'
34-
setShowWelcome(!dismissed)
35-
}, [])
29+
const [showWelcome, setShowWelcome] = useState(() => localStorage.getItem('welcome:dismissed') !== 'true')
30+
const { customClass } = useConfig()
3631

3732
// Handle closing the welcome popup
3833
function handleCloseWelcome() {

0 commit comments

Comments
 (0)