Skip to main content

Search event integration

General information​

Search has two main components:

  • previewComponent — preview component
  • resultPageComponent — search results page

Inside these components, events are generated when the user interacts with buttons:

  • add to cart
  • remove from cart
  • add to wishlist
  • remove from wishlist

In order to synchronize the state of the site outside of the search components, it is necessary to subscribe to the corresponding events and update the settings component (settingsComponent).


Adding an item to the cart​

When an item is added to the cart from the search components, the addToCart event is triggered.

Handler implementation​

On the website side, you need to implement the onAddToCart function, which accepts the productId from the event:

const onAddToCart = ({ detail: productId }) => {}

Event subscription​

The function is called when an item is added to the cart:

previewComponent.addEventListener("addToCart", onAddToCart);
resultPageComponent.addEventListener("addToCart", onAddToCart);

Updating the settings component​

The handler must update settingsComponent, passing the actual state of the cart:

const cartProducts = {
10320617: 5,
13082044: 3,
80293500: 2,
// productId: quantity
};

settingsComponent.setAttribute("cart", JSON.stringify(cartProducts));

Full example​

const onAddToCart = ({ detail: productId }) => {
// The store must add the product to the cart on its side

const cartProducts = {
10320617: 5,
13082044: 3,
80293500: 2,
};

settingsComponent.setAttribute("cart", JSON.stringify(cartProducts));
console.log(`Product added to cart: ${productId}`);
};

previewComponent.addEventListener("addToCart", onAddToCart);
resultPageComponent.addEventListener("addToCart", onAddToCart);

Removing an item from the cart​

Inside the search components, the removeFromCart event is triggered.

Handler implementation​

const onRemoveFromCart = ({ detail: productId }) => {}

Event subscription​

previewComponent.addEventListener("removeFromCart", onRemoveFromCart);
resultPageComponent.addEventListener("removeFromCart", onRemoveFromCart);

Updating the settings component​

After removing the item, you need to update the cart state:

const cartProducts = {
10320617: 5,
13082044: 3,
80293500: 2,
};

settingsComponent.setAttribute("cart", JSON.stringify(cartProducts));

Full example​

const onRemoveFromCart = ({ detail: productId }) => {
// The store must remove the product from the current user's cart

const cartProducts = {
10320617: 5,
13082044: 3,
80293500: 2,
};

settingsComponent.setAttribute("cart", JSON.stringify(cartProducts));
console.log(`Product removed from cart: ${productId}`);
};

previewComponent.addEventListener("removeFromCart", onRemoveFromCart);
resultPageComponent.addEventListener("removeFromCart", onRemoveFromCart);

Adding an item to the Wishlist​

Inside the search components, the addToWishlist event is triggered.

Handler implementation​

const onAddToWishlist = ({ detail: productId }) => {}

Event subscription​

previewComponent.addEventListener("addToWishlist", onAddToWishlist);
resultPageComponent.addEventListener("addToWishlist", onAddToWishlist);

Updating the settings component​

The handler must update the wishlist state:

const wishlistProducts = {
10320617: true,
13082044: true,
80293500: true,
// productId: true
};

settingsComponent.setAttribute("wishlist", JSON.stringify(wishlistProducts));

Full example​

const onAddToWishlist = ({ detail: productId }) => {
// The store must add the product to the current user's wishlist

const wishlistProducts = {
10320617: true,
13082044: true,
};

settingsComponent.setAttribute("wishlist", JSON.stringify(wishlistProducts));
console.log(`Product added to wishlist: ${productId}`);
};

previewComponent.addEventListener("addToWishlist", onAddToWishlist);
resultPageComponent.addEventListener("addToWishlist", onAddToWishlist);

Removing an item from the Wishlist​

Inside the search components, the removeFromWishlist event is triggered.

Handler implementation​

const onRemoveFromWishlist = ({ detail: productId }) => {}

Event subscription​

previewComponent.addEventListener("removeFromWishlist", onRemoveFromWishlist);
resultPageComponent.addEventListener("removeFromWishlist", onRemoveFromWishlist);

Updating the settings component​

const wishlistProducts = {
10320617: true,
13082044: true,
80293500: true,
};

settingsComponent.setAttribute("wishlist", JSON.stringify(wishlistProducts));

Full example​

const onRemoveFromWishlist = ({ detail: productId }) => {
// The store must remove the product from the current user's wishlist

const wishlistProducts = {
10320617: true,
13082044: true,
};

settingsComponent.setAttribute("wishlist", JSON.stringify(wishlistProducts));
console.log(`Product removed from wishlist: ${productId}`);
};

previewComponent.addEventListener("removeFromWishlist", onRemoveFromWishlist);
resultPageComponent.addEventListener("removeFromWishlist", onRemoveFromWishlist);