The Depict search modal
The Depict search modal is the component that captures users’ queries in a text field. This component is triggered when either of the following events occurs:- The
open
callback function, returned by theuseDepictSearchModal hook
, is called. - When a click event occurs on the
DepictSearchField
component. In both cases, you can align the top of the modal to the top of another DOM element by using thealignerRef
property.
📘 Modal alignment on smaller screensWhen the viewport height is below 900px, the search modal will overlook the element reference passed to the
alignerRef
property and center the search modal to the top of the viewport.React component API
The SDK is pre-built with React components and wrappers, making it a perfect fit for React.js and Next.js web applications. The following sections describe these components and their configuration.The DepictProvider
component
The DepictProvider
is a wrapper component for the root component of your entire application. It provides configuration to all Depict UI components beneath it
TypeScript
DepictProvider
configuration properties, their types, and descriptions:
This is the unique merchant identifier given by Depict.
This specifies the market identifier.
Locale object imported from
@depict-ai/react-ui/locales
. Determines- The translations for the UI
- The locale to request from backend
- The currency formatting used on the frontend
@depict-ai/js-ui/locales
have a backend_locale_
property equivalent to their name, so either import the locale with the correct name (recommended) or just set the backend_locale_
property to the correct value.You can modify or create your own locale object as long as it’s the same format as the ones in @depict-ai/js-ui/locales
.Configuration object lets you customize your website’s search parameters, see further below.
This function will be used internally by our components to navigate between
Depict Search UI pages.This prop is required in all applications that don’t
use Next.JS
Optionally you can override the default session id used for personalization here. This is the ID that will be used to tie together the different tracking events for a user.
A
<string, string>
map of custom metadata to include in API requests to DepictDisplayTransformers are functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way. See
Creating page URLs and enriching product
data.
search
property on the DepictProvider
wrapper is a configuration object that allows you to modify search parameters on your website. Use the config to tailor your search URL and behavior. The following table shows the search
object’s configuration properties:
The unique URL path to your website’s search page.
The URL parameter (or query string) for each search on your website.
Whether to enable showing product listing pages matching the search query, in the search modal and search page.
Enable or disable content search (seeing articles, FAQ, blog posts, etc in
search results).
The search modal component to use. You can switch between the classic and the new search modal. See here for screenshots. Provide one of the components here that you can import from the same package as the one you’re using to see this message (The default is SearchModalV2. That means that ClassicSearchModal can get tree-shaken if you use v2 but not vice-versa. To force SearchModalV2 from being tree-shaken, set process.env.NO_SEARCH_MODAL_DEFAULT to “true”.
SearchModalV2
or ClassicSearchModal
).
You also need to reflect the choice in SCSS, example:The useSearchField
hook
Use the useSearchField
hook to render a search field on your site. The destructured value is the SearchField
component to be nested within your application.
The SearchField
component displays a search field that opens the Depict search modal.
SearchField with the modal aligned to the search field
TypeScript
TypeScript
useSearchField
hook’s configuration properties, their types, and descriptions:
This is the ref of the element in the DOM to which you intend to align the
resulting modal.When not provided, the modal aligns on the SearchField itself.
When using multiple search instances on the same page, you need to set a
unique stateKey for each one. When only using one instance, leave this unset.
We recommend using an incrementing number, such as “1”, “2”, “3”, etc. To
associate a SearchField with a SearchPage keyed component, set the same
stateKey on both. If no stateKey is provided, the “default” instance will be
used.
The useSearchModal
hook
Use the useSearchModal
hook in place of the SearchField
component to dynamically open the search modal.
TypeScript
TypeScript
useSearchModal
hook’s configuration properties, their types, and descriptions:
This represents the location on the DOM to which the modal should be aligned.
Set this value to aligned to align the modal to an element on your website.
This is the ref of the element in the DOM to which you intend to align the
modal.
When using multiple search instances on the same page, you need to set a
unique stateKey for each one. When only using one instance, leave this unset.
We recommend using an incrementing number, such as “1”, “2”, “3”, etc. To
associate a modal with a SearchPage keyed component, set the same stateKey on
both. If no stateKey is provided, the “default” instance will be used.
The SearchPage
component
The SearchPage
component acts as the search results page on your site. It is responsible for rendering results from each search.
TypeScript
SearchPage
configuration properties, their types, and descriptions:
The React component to use for rendering products.
Used to customize breakpoints on the search results page. Handles the number
of product card columns displayed at each screen size.
The spacing between products.
Visibility of the search input field that’s part of SearchPage.
When using multiple search instances on the same page, you need to set a
unique stateKey for each one. When only using one instance, leave this unset.
We recommend using an incrementing number, such as “1”, “2”, “3”, etc. To
associate a modal with a SearchPage keyed component, set the same stateKey on
both. If no stateKey is provided, the “default” instance will be used.
A sparse array containing content blocks to show (or an empty slot or undefined if there’s no block at that index). See ReactContentBlock for how a content block looks like. The index is the row where the content block should be shown.
ReactContentBlock
type definition
ReactContentBlock
type definition