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>

Reply via email to