Skip to content

Commit 32469d8

Browse files
committed
[skip publish] gen search widget fixer v2
1 parent d23770a commit 32469d8

File tree

2 files changed

+85
-2
lines changed

2 files changed

+85
-2
lines changed

src/js/lib/common.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,4 +437,87 @@ export const genSearchWidgetFixer = ({ fixedHeight, intervalDelay }) => {
437437
}
438438
}, intervalDelay);
439439
};
440+
441+
export const genSearchWidgetFixer2 = ({ fixedHeight }) => {
442+
let observer;
443+
let searchInputHandled = false;
444+
445+
function updateWidget() {
446+
const genSearchWidget = document.querySelector("gen-search-widget");
447+
if (!genSearchWidget || !genSearchWidget.shadowRoot) return;
448+
449+
const ucsResults = genSearchWidget.shadowRoot.querySelector("ucs-results");
450+
if (!ucsResults || !ucsResults.shadowRoot) return;
451+
452+
const ucsSummary = ucsResults.shadowRoot.querySelector("ucs-summary");
453+
if (ucsSummary && ucsSummary.shadowRoot) {
454+
const loaderContainer = ucsSummary.shadowRoot.querySelector(".loader-container");
455+
if (loaderContainer) {
456+
loaderContainer.style.height = `${fixedHeight + 45}px`;
457+
}
458+
const summaryContainer = ucsSummary.shadowRoot.querySelector(".summary-container");
459+
if (summaryContainer) {
460+
summaryContainer.style.height = summaryContainer.className.match(/expanded/) ? "auto" : `${fixedHeight}px`;
461+
}
462+
}
463+
464+
const ucsSearchBar = genSearchWidget.shadowRoot.querySelector("ucs-search-bar");
465+
if (ucsSearchBar && ucsSearchBar.shadowRoot) {
466+
const searchInput = ucsSearchBar.shadowRoot.querySelector("input");
467+
if (searchInput && !searchInputHandled) {
468+
searchInputHandled = true;
469+
searchInput.addEventListener('keyup', (event) => {
470+
if (event.key === 'Enter') {
471+
console.log('Search triggered by Enter key', searchInput.value);
472+
}
473+
});
474+
}
475+
if (searchInput) {
476+
searchInput.placeholder = 'Press Enter to search';
477+
}
478+
}
479+
}
480+
481+
function observeWidget() {
482+
// Disconnect previous observer if any
483+
if (observer) observer.disconnect();
484+
485+
const genSearchWidget = document.querySelector("gen-search-widget");
486+
if (!genSearchWidget) return;
487+
488+
observer = new MutationObserver(() => {
489+
updateWidget();
490+
});
491+
492+
// Observe the shadowRoot of genSearchWidget for subtree changes
493+
if (genSearchWidget.shadowRoot) {
494+
observer.observe(genSearchWidget.shadowRoot, {
495+
childList: true,
496+
subtree: true
497+
});
498+
}
499+
// Initial update
500+
updateWidget();
501+
}
502+
503+
// Observe for the gen-search-widget being added to the DOM
504+
const rootObserver = new MutationObserver(() => {
505+
if (document.querySelector("gen-search-widget")) {
506+
observeWidget();
507+
}
508+
});
509+
rootObserver.observe(document.body, { childList: true, subtree: true });
510+
511+
// In case the widget is already present
512+
if (document.querySelector("gen-search-widget")) {
513+
observeWidget();
514+
}
515+
516+
// Hot reload cleanup
517+
if (import.meta.webpackHot) onReset(() => {
518+
if (observer) observer.disconnect();
519+
rootObserver.disconnect();
520+
});
521+
};
522+
440523
// TEST: genSearchWidgetFixer({ fixedHeight: 300, intervalDelay: 50 });

src/js/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
initializeIntercomBannerObserver,
1313
selectOpenedSubpage,
1414
renderNavbarLanguageSwitcher,
15-
genSearchWidgetFixer
15+
genSearchWidgetFixer2
1616
} from './lib/common';
1717
import { reset } from './lib/reset';
1818
import { addSidebarLinks } from './pages/bitrise-ci';
@@ -66,7 +66,7 @@ const main = async () => {
6666

6767
initializeIntercomBannerObserver();
6868

69-
genSearchWidgetFixer({ fixedHeight: 300, intervalDelay: 50 });
69+
genSearchWidgetFixer2({ fixedHeight: 300 });
7070

7171
onScroll();
7272
};

0 commit comments

Comments
 (0)