This is an automated email from the ASF dual-hosted git repository. ddekany pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/freemarker-docgen.git
commit cf5adb080d474f0f6d11670786eebf42ff631382 Author: ddekany <[email protected]> AuthorDate: Sun Jun 22 14:01:20 2025 +0200 Pagefind: Less confusing UI logic for hiding the search --- .../freemarker/docgen/core/statics/js/pagefind.js | 29 ++++++++++++++++++++++ .../org/freemarker/docgen/core/templates/page.ftlh | 6 ++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/statics/js/pagefind.js b/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/statics/js/pagefind.js index 2ba281b..56c7d90 100644 --- a/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/statics/js/pagefind.js +++ b/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/statics/js/pagefind.js @@ -65,14 +65,38 @@ function getPagefindPanelToggleButton() { return memoizedPagefindPanelToggleButton; } +var memoizedPagefindCloseButton = null; +function getPagefindCloseButton() { + if (memoizedPagefindCloseButton == null) { + const button = getPagefindPanel().querySelector('button.pagefind-ui__search-clear'); + if (!button) { + window.alert('Pagefind close button not found!'); + throw new Error('Pagefind close button not found!'); + } + memoizedPagefindCloseButton = button; + } + return memoizedPagefindCloseButton; +} + function hidePagefindPanel() { getPagefindPanel().style.display = 'none'; + getPagefindPanelToggleButton().style.visibility = 'visible'; getPagefindInput().blur(); } function showPagefindPanel() { + if (location.protocol === 'file:') { + window.alert('PLEASE NOTE: ' + + 'Due to the security restrictions of browsers (same origin policy), search is only expected to work ' + + 'if you visit via HTTP(S), and not via a "file:" URL. For local testing, use something like ' + + '"npx http-server"!'); + } + getPagefindPanel().style.display = 'block'; + getPagefindPanelToggleButton().style.visibility = 'hidden'; getPagefindInput().focus(); + + getPagefindCloseButton().style.visibility = 'visible'; } function togglePagefindPanel() { @@ -99,6 +123,11 @@ function addDocgenPagefindCustomizations() { } }); + const closeButton = getPagefindCloseButton(); + closeButton.addEventListener('click', (event) => { + hidePagefindPanel(); + }); + hidePagefindPanel(); } diff --git a/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/templates/page.ftlh b/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/templates/page.ftlh index 2500ab3..66751ec 100644 --- a/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/templates/page.ftlh +++ b/freemarker-docgen-core/src/main/resources/org/freemarker/docgen/core/templates/page.ftlh @@ -82,9 +82,9 @@ </#if> <#if hasSearch && pagefindBasedSearch> - <link href="pagefind/pagefind-ui.css" rel="stylesheet"> - <script src="pagefind/pagefind-ui.js"></script> - <script src="docgen-resources/js/pagefind.js"></script> + <link href="pagefind/pagefind-ui.css?${transformStartTime?long?c}" rel="stylesheet"> + <script src="pagefind/pagefind-ui.js?${transformStartTime?long?c}"></script> + <script src="docgen-resources/js/pagefind.js?${transformStartTime?long?c}"></script> </#if> </head> </#compress>
