Add products from an external catalog
export interface MessageEventData {
eventData: {
eventType: 'insertProduct';
payload: {
productId: string;
};
};
}
Integration Example
const EVENTS_MAP = {
CLICK: { eventName: "insertProduct", nativeEventName: "click" }
};
const sendEvent = (eventType, productId) => {
const parentWindow = window.parent;
if (parentWindow) {
const eventData = {
eventType,
payload: {
productId
}
};
parentWindow.postMessage({ eventData }, "*");
}
};
const addEventHandlers = ({ eventName, nativeEventName }) => {
const elementsWithEvent = document.querySelectorAll(
`[data-product-id]`
);
elementsWithEvent.forEach((element) => {
const productId = element.getAttribute("data-product-id");
const eventHandler = (event) => {
sendEvent(eventName, productId);
};
element.addEventListener(nativeEventName, eventHandler);
});
};
const removeEventHandlers = ({ nativeEventName }) => {
const elementsWithEvent = document.querySelectorAll(
`[data-product-id]`
);
elementsWithEvent.forEach((element) => {
if (element.eventHandler) {
element.removeEventListener(nativeEventName, element.eventHandler);
delete element.eventHandler;
}
});
};
const addClickHandlers = () => {
addEventHandlers(EVENTS_MAP.CLICK);
};
const removeEventListeners = () => {
removeEventHandlers(EVENTS_MAP.CLICK);
};
window.addEventListener("load", () => {
addClickHandlers();
});
window.addEventListener("beforeunload", removeEventListeners);Last updated