diff --git a/scanpipe/templates/scanpipe/modals/resource_search_modal.html b/scanpipe/templates/scanpipe/modals/resource_search_modal.html new file mode 100644 index 0000000000..1a60b07b69 --- /dev/null +++ b/scanpipe/templates/scanpipe/modals/resource_search_modal.html @@ -0,0 +1,53 @@ + diff --git a/scanpipe/templates/scanpipe/resource_detail.html b/scanpipe/templates/scanpipe/resource_detail.html index 58c23e0f55..f6fb82f1f8 100644 --- a/scanpipe/templates/scanpipe/resource_detail.html +++ b/scanpipe/templates/scanpipe/resource_detail.html @@ -9,6 +9,7 @@ {% endblock %} {% block content %} + {% include 'scanpipe/modals/resource_search_modal.html' %}
{% include 'scanpipe/includes/navbar_header.html' %}
{% include 'scanpipe/includes/messages.html' %}
@@ -147,6 +148,31 @@ let is_full_screen = body.classList.toggle("full-screen"); editor.resize() }); + + // Resource search modal keyboard shortcut (Ctrl+K or /) + document.addEventListener('keydown', function (event) { + // Check if any input or textarea has focus + const activeElement = document.activeElement; + const isInputFocused = activeElement && ( + activeElement.tagName === 'INPUT' || + activeElement.tagName === 'TEXTAREA' || + activeElement.isContentEditable + ); + + // Open search modal on Ctrl+K or / (when no input is focused) + if ((event.ctrlKey && event.key === 'k') || (event.key === '/' && !isInputFocused)) { + event.preventDefault(); + openModal('resource-search-modal'); + // Focus the search input after a short delay to ensure modal is visible + setTimeout(function() { + const searchInput = document.getElementById('resource-search-input'); + if (searchInput) { + searchInput.focus(); + searchInput.select(); + } + }, 50); + } + }); } {% endblock %} \ No newline at end of file