Skip to content

Commit 7a0f66a

Browse files
committed
support programmatic tab switch
1 parent f2fbf48 commit 7a0f66a

File tree

1 file changed

+17
-2
lines changed
  • packages/ui/src/components/widgets/TokenWidget/widget

1 file changed

+17
-2
lines changed

packages/ui/src/components/widgets/TokenWidget/widget/index.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ import {
77
useMemo,
88
useRef,
99
useState,
10-
type FC
10+
type FC,
11+
type Dispatch,
12+
type SetStateAction
1113
} from 'react'
1214
import { useRelayClient } from '../../../../hooks/index.js'
15+
import useFallbackState from '../../../../hooks/useFallbackState.js'
1316
import type { Address } from 'viem'
1417
import { formatUnits } from 'viem'
1518
import { usePublicClient } from 'wagmi'
@@ -40,6 +43,8 @@ type BaseTokenWidgetProps = {
4043
setFromToken?: (token?: Token) => void
4144
toToken?: Token
4245
setToToken?: (token?: Token) => void
46+
activeTab?: 'buy' | 'sell'
47+
setActiveTab?: (tab: 'buy' | 'sell') => void
4348
defaultToAddress?: Address
4449
defaultAmount?: string
4550
defaultTradeType?: 'EXACT_INPUT' | 'EXPECTED_OUTPUT'
@@ -90,6 +95,8 @@ const TokenWidget: FC<TokenWidgetProps> = ({
9095
setFromToken: setExternalFromToken,
9196
toToken: externalToToken,
9297
setToToken: setExternalToToken,
98+
activeTab: externalActiveTab,
99+
setActiveTab: setExternalActiveTab,
93100
defaultToAddress,
94101
defaultAmount,
95102
defaultTradeType,
@@ -172,7 +179,15 @@ const TokenWidget: FC<TokenWidgetProps> = ({
172179
const [usdInputValue, setUsdInputValue] = useState('')
173180
const [usdOutputValue, setUsdOutputValue] = useState('')
174181
const [tokenInputCache, setTokenInputCache] = useState('')
175-
const [activeTab, setActiveTab] = useState<'buy' | 'sell'>('buy')
182+
const [activeTab, setActiveTab] = useFallbackState<'buy' | 'sell'>(
183+
setExternalActiveTab && externalActiveTab ? externalActiveTab : 'buy',
184+
setExternalActiveTab && externalActiveTab
185+
? [
186+
externalActiveTab,
187+
setExternalActiveTab as Dispatch<SetStateAction<'buy' | 'sell'>>
188+
]
189+
: undefined
190+
)
176191
const tabTokenStateRef = useRef<{
177192
buy: { fromToken?: Token; toToken?: Token }
178193
sell: { fromToken?: Token; toToken?: Token }

0 commit comments

Comments
 (0)