Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/js/google-tag-manager.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != "dataLayer" ? "&l=" + l : "";
j.async = true;
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, "script", "dataLayer", "GTM-5RDZ55LR");
22 changes: 15 additions & 7 deletions docs/js/search-tracking.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@
...payload,
}),
});
});

} catch (error) {
console.warn("Analytics API error:", error);
}
Expand Down Expand Up @@ -130,6 +132,7 @@
function trackResultClick(resultUrl, resultTitle, resultRank) {
const _q = lastSearchQuery.trim();


// Send result_click event exactly like Vue.js reference
sendAnalyticsEvent("doc-search-click", {
result_url: resultUrl,
Expand Down Expand Up @@ -218,6 +221,7 @@
let searchTimeout;
let lastTrackedQuery = "";


// Update context when search becomes active (like Vue.js modal opening)
const updateContextOnSearchActivation = () => {
try {
Expand Down Expand Up @@ -268,6 +272,7 @@

// Track search result clicks with enhanced logic
document.addEventListener("click", function (e) {

// Multiple ways to detect search result clicks
const isSearchResult =
e.target.closest(".md-search-result__item") ||
Expand All @@ -285,6 +290,7 @@
return;
}


// Check if search is active (more lenient check)
const searchContainer = document.querySelector(".md-search");
const searchInput = document.querySelector(".md-search__input");
Expand All @@ -301,20 +307,21 @@
// Update context right before tracking click (ensure fresh data)
updateContextOnSearchActivation();

const resultInfo = extractResultInfo(e.target);
const resultInfo = extractResultInfo(e.target);

if (resultInfo && resultInfo.url) {
if (resultInfo && resultInfo.url) {
trackResultClick(resultInfo.url, resultInfo.title, resultInfo.rank);
} else {
console.warn("Could not extract result info from clicked element");
}
});
});

}

/**
* Initialize feedback tracking - new functionality for page feedback
*/
function initializeFeedbackTracking() {
function initializeFeedbackTracking() {

// Track feedback button clicks
document.addEventListener("click", function (e) {
Expand All @@ -323,7 +330,8 @@

if (!feedbackButton) {
return;
}
}


// Get feedback value from data-md-value attribute
const feedbackValue = feedbackButton.getAttribute("data-md-value");
Expand All @@ -344,7 +352,7 @@
// Track the feedback
trackPageFeedback(feedbackValueNum, pageUrl, pageTitle);
});

}

/**
Expand Down Expand Up @@ -395,7 +403,7 @@
testClickDetection: function () {
const searchResults = document.querySelectorAll(
".md-search-result__item, .md-search-result, [data-md-component='search-result']"
);
);
return searchResults;
},
testFeedbackDetection: function () {
Expand Down
9 changes: 5 additions & 4 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@ extra_css:
- css/landing-page.css
extra_javascript:
- https://unpkg.com/openapi-explorer@0/dist/browser/openapi-explorer.min.js
- js/ms-clarity.js
- js/zinc.js
- js/vector_co.js
# - js/ms-clarity.js
# - js/zinc.js
# - js/vector_co.js
- js/search-close-minimal.js
- js/search-tracking.js
- https://buttons.github.io/buttons.js
- js/reo.js
# - js/reo.js
- js/landing-individual-card-ms-tracking.js
- js/google-tag-manager.js
extra:
# social:
# - icon: fontawesome/brands/linkedin
Expand Down