Rebuild global search as a live search palette

- Press / or Ctrl+K (or click the top bar box) for results as you type,
  grouped by type, with keyboard navigation and recent clients when empty
- Ticket/invoice/quote numbers jump to the top; Enter opens immediately
- Phone, IP (any interface) and MAC matching; app pages offered by name
- Full results page rebuilt on the same search: totals, links into each
  list page, ticket conversation and document text matches
- Passwords no longer rendered into the results page; reveal/copy go
  through the audited endpoint
- Fix stray }); breaking inline scripts on asset and contact pages
This commit is contained in:
johnnyq
2026-10-08 17:40:46 -04:00
parent 9bfd26d57b
commit f7e5655e05
10 changed files with 1681 additions and 908 deletions

View File

@@ -81,6 +81,7 @@
<script src="/js/ajax_modal.js"></script>
<script src="/js/confirm_modal.js"></script>
<script src="/js/date_filter.js"></script>
<script src="/js/global_search.js"></script>
</body>
</html>

View File

@@ -8,16 +8,19 @@
</li>
</ul>
<!-- SEARCH FORM -->
<!-- SEARCH - js/global_search.js turns this box into the opener for the
search palette (also on / and Ctrl+K). Without the script it is still
a plain form posting to the full results page. -->
<form class="navbar-search ms-auto" role="search" action="/agent/global_search.php">
<label for="navbar-search-input" class="visually-hidden">Search everywhere</label>
<div class="navbar-search-field">
<input class="form-control" type="search" id="navbar-search-input" name="query"
placeholder="Search everywhere" autocomplete="off"
placeholder="Search everywhere" autocomplete="off" aria-keyshortcuts="/ Control+K"
value="<?php if (isset($_GET['query'])) { echo escapeHtml($_GET['query']); } ?>">
<button class="navbar-search-submit" type="submit" aria-label="Submit search">
<i class="fas fa-search" aria-hidden="true"></i>
</button>
<kbd class="navbar-search-kbd d-none d-lg-inline" aria-hidden="true">/</kbd>
</div>
</form>