**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.
30 lines
759 B
TypeScript
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,
|
|
}
|
|
}
|