Fix search input character loss: capture value at beforeSwap not beforeRequest

This commit is contained in:
igor 2026-04-26 17:11:31 +12:00
parent 909484b1ae
commit d3045a3165

View file

@ -1417,7 +1417,7 @@ const layoutPage = (options = {}) => {
document.addEventListener('click',function(e){var btn=e.target.closest('.notelist-item');if(!btn)return;var form=document.getElementById('note-editor-form');var status=document.getElementById('autosave-status');var dirty=status&&status.querySelector('.autosave-edited');if(!form||!dirty)return;_log('notelist-item click intercepted, flushing save');e.preventDefault();e.stopImmediatePropagation();flushSave(function(saved){if(saved){_log('flushSave done, re-clicking note');btn.click()}})},true);
(function(){var _al=${settings.autoLogout ? 'true' : 'false'};var _alMs=${Number(settings.autoLogoutMinutes) || 15}*60000;if(!_al)return;_log('autoLogout enabled, timeout',_alMs/60000,'min');var _last=Date.now();['keydown','click','input','scroll','touchstart'].forEach(function(evt){document.addEventListener(evt,function(){_last=Date.now()},true)});setInterval(function(){if(Date.now()-_last>_alMs){_log('autoLogout: inactive for',_alMs/60000,'min, logging out');window.location.assign('/logout')}},30000)})();
window.joplockLiveSearch=${settings.liveSearch ? 'true' : 'false'};
(function(){var _navSearchPendingValue=null;function enableLiveSearch(){var el=document.getElementById('nav-search');if(!el||!window.joplockLiveSearch||el.dataset.liveSearch)return;el.dataset.liveSearch='1';el.setAttribute('hx-trigger','search-submit, input changed delay:300ms');el.addEventListener('htmx:beforeRequest',function(e){var v=el.value;if(v.length>0&&v.length<3){e.preventDefault();return}_navSearchPendingValue=el.value});htmx.process(el)}function restoreNavSearch(){if(_navSearchPendingValue===null)return;var el=document.getElementById('nav-search');if(!el)return;var cur=el.value;if(cur!==_navSearchPendingValue){el.value=_navSearchPendingValue;el.selectionStart=el.selectionEnd=el.value.length}_navSearchPendingValue=null}enableLiveSearch();document.body.addEventListener('htmx:afterSettle',function(){enableLiveSearch();restoreNavSearch()})})();
(function(){var _navSearchSavedValue=null;function enableLiveSearch(){var el=document.getElementById('nav-search');if(!el||!window.joplockLiveSearch||el.dataset.liveSearch)return;el.dataset.liveSearch='1';el.setAttribute('hx-trigger','search-submit, input changed delay:300ms');el.addEventListener('htmx:beforeRequest',function(e){var v=el.value;if(v.length>0&&v.length<3){e.preventDefault();return}});htmx.process(el)}function restoreNavSearch(){if(_navSearchSavedValue===null)return;var el=document.getElementById('nav-search');if(!el){_navSearchSavedValue=null;return;}el.value=_navSearchSavedValue;el.selectionStart=el.selectionEnd=el.value.length;_navSearchSavedValue=null}enableLiveSearch();document.body.addEventListener('htmx:beforeSwap',function(e){var target=e.detail&&e.detail.target;if(target&&target.id==='nav-panel'){var el=document.getElementById('nav-search');if(el)_navSearchSavedValue=el.value}});document.body.addEventListener('htmx:afterSettle',function(){enableLiveSearch();restoreNavSearch()})})();
function confirmLogout(event){
var ok=window.confirm('Log out?\\n\\nThis clears local data on this device, including the current session and saved UI state. Your notes and other server data remain on the server.');
if(!ok&&event)event.preventDefault();