Files
medusa-store/packages/admin/dashboard/src/hooks/use-debounced-search.tsx
Kasper Fabricius Kristensen 0fe1201435 feat(admin-sdk,admin-bundler,admin-shared,medusa): Restructure admin packages (#8988)
**What**
- Renames /admin-next -> /admin
- Renames @medusajs/admin-sdk -> @medusajs/admin-bundler
- Creates a new package called @medusajs/admin-sdk that will hold all tooling relevant to creating admin extensions. This is currently `defineRouteConfig` and `defineWidgetConfig`, but will eventually also export methods for adding custom fields, register translation, etc. 
  - cc: @shahednasser we should update the examples in the docs so these functions are imported from `@medusajs/admin-sdk`. People will also need to install the package in their project, as it's no longer a transient dependency.
  - cc: @olivermrbl we might want to publish a changelog when this is merged, as it is a breaking change, and will require people to import the `defineXConfig` from the new package instead of `@medusajs/admin-shared`.
- Updates CODEOWNERS so /admin packages does not require a review from the UI team.
2024-09-04 19:00:25 +00:00

30 lines
759 B
TypeScript

import debounce from "lodash/debounce"
import { useCallback, useEffect, useState } from "react"
/**
* Hook for debouncing search input
* @returns searchValue, onSearchValueChange, query
*/
export const useDebouncedSearch = () => {
const [searchValue, onSearchValueChange] = useState("")
const [debouncedQuery, setDebouncedQuery] = useState("")
// eslint-disable-next-line react-hooks/exhaustive-deps
const debouncedUpdate = useCallback(
debounce((query: string) => setDebouncedQuery(query), 300),
[]
)
useEffect(() => {
debouncedUpdate(searchValue)
return () => debouncedUpdate.cancel()
}, [searchValue, debouncedUpdate])
return {
searchValue,
onSearchValueChange,
query: debouncedQuery || undefined,
}
}