From e62f5e5e52070614c86627db0a7153a7ff2d2db0 Mon Sep 17 00:00:00 2001 From: Lionel Date: Sun, 13 Aug 2023 14:31:26 +0200 Subject: [PATCH] Added key shortcut Ctrl+Shift+F to focus filter field and disabled enter key --- plugins/tables-filter.php | 91 +++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/plugins/tables-filter.php b/plugins/tables-filter.php index aaf5dec9..68b9b809 100644 --- a/plugins/tables-filter.php +++ b/plugins/tables-filter.php @@ -6,43 +6,29 @@ * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) */ - class AdminerTablesFilter { function tablesPrint($tables) { ?> -
- -
- - -
-
- > -(function() { +var tablesFilterTimeout = null; +var tablesFilterValue = ''; -var timeout; -var lastValue = ''; -var filterField = qs('#filter-field'); - -function filter() { - timeout && (timeout = null); - var value = filterField.value.toLowerCase(); - if (value == lastValue) { +function tablesFilter(){ + var value = qs('#filter-field').value.toLowerCase(); + if (value == tablesFilterValue) { return; } - lastValue = value; + tablesFilterValue = value; if (value != '') { - var reg = (value + '').replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + var reg = (value + '').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, '\\$1'); reg = new RegExp('('+ reg + ')', 'gi'); } - if (window.sessionStorage) { + if (sessionStorage) { sessionStorage.setItem('adminer_tables_filter', value); } var tables = qsa('li', qs('#tables')); - var a; - var text; for (var i = 0; i < tables.length; i++) { - text = tables[i].getAttribute('data-table-name'); + var a = null; + var text = tables[i].getAttribute('data-table-name'); if (text == null) { a = qsa('a', tables[i])[1]; text = a.innerHTML.trim(); @@ -62,32 +48,45 @@ function filter() { } } -filterField.addEventListener('input', function input() { - timeout && window.clearTimeout(timeout); - timeout = window.setTimeout(filter, 200); -}); +function tablesFilterInput() { + window.clearTimeout(tablesFilterTimeout); + tablesFilterTimeout = window.setTimeout(tablesFilter, 200); +} -qs('#filter-field-reset').addEventListener('click', function() { - filterField.value = ''; - filterField.dispatchEvent(new Event('input')); -}); - -window.sessionStorage && document.addEventListener('DOMContentLoaded', function restore() { - var db = qs('#dbs select'); - var value; - db = db.options[db.selectedIndex].text; - if ( - db == sessionStorage.getItem('adminer_tables_filter_db') - && (value = sessionStorage.getItem('adminer_tables_filter')) - ) { - filterField.value = value; - filter(); +sessionStorage && document.addEventListener('DOMContentLoaded', function () { + if (qs('#dbs') != null) { + var db = qs('#dbs').querySelector('select'); + db = db.options[db.selectedIndex].text; + if (db == sessionStorage.getItem('adminer_tables_filter_db') && sessionStorage.getItem('adminer_tables_filter')){ + qs('#filter-field').value = sessionStorage.getItem('adminer_tables_filter'); + tablesFilter(); + } + sessionStorage.setItem('adminer_tables_filter_db', db); } - sessionStorage.setItem('adminer_tables_filter_db', db); + document.addEventListener('keyup', function(event) { + if (event.ctrlKey && event.shiftKey && event.key == 'F') { + qs('#filter-field').focus(); + return; + } + }); + qs('#filter-field').addEventListener('keydown', function(event) { + if (event.key == 'Enter' || event.keyCode == 13 || event.which == 13) { + event.preventDefault(); + return false; + } + }); }); - -})(); + +
+ +
+ + + +
+
+