Merged in feat/sw-3218-move-sidepeek-to-design-system (pull request #2598)
feat(SW-3218): Move SidePeek to design-system * Remove SidePeekProvider dependency on Next * Remove dependency on i18n in sidepeek * Inline types * Move SidePeek to design-system * Fix align-items value Approved-by: Bianca Widstam
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
'use client'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { SidePeekContext } from './index'
|
||||
|
||||
interface SidepeekProviderProps extends React.PropsWithChildren {
|
||||
onOpen?: (sidePeek: string) => void
|
||||
onClose?: () => void
|
||||
searchParams: URLSearchParams
|
||||
}
|
||||
|
||||
export default function SidePeekProvider({
|
||||
children,
|
||||
searchParams,
|
||||
onOpen,
|
||||
onClose,
|
||||
}: SidepeekProviderProps) {
|
||||
const [activeSidePeek, setActiveSidePeek] = useState<string | null>(null)
|
||||
useEffect(() => {
|
||||
const sidePeekParam = searchParams.get('s')
|
||||
if (sidePeekParam !== activeSidePeek) {
|
||||
setActiveSidePeek(sidePeekParam)
|
||||
}
|
||||
}, [searchParams, activeSidePeek])
|
||||
|
||||
useEffect(() => {
|
||||
if (activeSidePeek && onOpen) {
|
||||
onOpen(activeSidePeek)
|
||||
}
|
||||
}, [activeSidePeek, onOpen])
|
||||
|
||||
function handleClose(isOpen: boolean) {
|
||||
if (!isOpen) {
|
||||
onClose?.()
|
||||
setActiveSidePeek(null)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<SidePeekContext.Provider value={{ handleClose, activeSidePeek }}>
|
||||
{children}
|
||||
</SidePeekContext.Provider>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
'use client'
|
||||
import { createContext } from 'react'
|
||||
|
||||
interface ISidePeekContext {
|
||||
handleClose: (isOpen: boolean) => void
|
||||
activeSidePeek: string | null
|
||||
}
|
||||
|
||||
export const SidePeekContext = createContext<ISidePeekContext | null>(null)
|
||||
Reference in New Issue
Block a user