Files
medusa-store/www/api-reference/providers/modal.tsx
Shahed Nasser f07dc0384f docs,api-ref: added search filters (#4830)
* initial implementation of search modal

* added hit and search suggestions

* added support for multiple indices

* updated sample env

* added close when click outside dropdown

* test for mobile

* added mobile design

* added shortcut

* dark mode fixes

* added search to docs

* added plugins filter

* added React import

* moved filters to configurations

* handled error on page load

* change suggestion text

* removed hits limit

* handle select all

* open link in current tab

* change highlight colors

* added support for shortcuts + auto focus

* change header and footer

* redesigned search ui
2023-08-24 18:36:06 +03:00

56 lines
1.2 KiB
TypeScript

"use client"
import React, { useContext, useState } from "react"
import { createContext } from "react"
import Modal, { ModalProps } from "../components/Modal"
type ModalContextType = {
modalProps: ModalProps | null
setModalProps: (value: ModalProps | null) => void
closeModal: () => void
}
const ModalContext = createContext<ModalContextType | null>(null)
type ModalProviderProps = {
children?: React.ReactNode
}
const ModalProvider = ({ children }: ModalProviderProps) => {
const [modalProps, setModalProps] = useState<ModalProps | null>(null)
const closeModal = () => {
setModalProps(null)
}
return (
<ModalContext.Provider
value={{
modalProps,
setModalProps,
closeModal,
}}
>
{children}
{modalProps && (
<>
<div className="bg-medusa-bg-overlay dark:bg-medusa-bg-overlay-dark fixed top-0 left-0 z-[499] h-screen w-screen"></div>
<Modal {...modalProps} onClose={closeModal} />
</>
)}
</ModalContext.Provider>
)
}
export default ModalProvider
export const useModal = () => {
const context = useContext(ModalContext)
if (!context) {
throw new Error("useModal must be used within a ModalProvider")
}
return context
}