mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
Be consistent about when we display search buttons
Show the buttons iff
- the search input is focused,
- the search input has non-empty contents, or
- we are narrowed.
(imported from commit f5c98471a2db4ab522160960dd1271471a9db555)
This commit is contained in:
@@ -5,7 +5,9 @@
|
|||||||
<div id="searchbox" class="always_in_view">
|
<div id="searchbox" class="always_in_view">
|
||||||
<form id="searchbox_form" class="form-search form-inline">
|
<form id="searchbox_form" class="form-search form-inline">
|
||||||
<div id="search_arrows">
|
<div id="search_arrows">
|
||||||
<input class="search-query" id="search_query" type="text" placeholder="Search…" onfocus="search.focus_search();" autocomplete="off">
|
<input class="search-query" id="search_query" type="text" placeholder="Search…"
|
||||||
|
onfocus="search.focus_search();" onblur="search.update_button_visibility();"
|
||||||
|
autocomplete="off">
|
||||||
<button class="btn search_button search_button_middle" type="button" id="search_up" onclick="search.search_button_handler(true);"><i class="icon-chevron-up"></i></button>
|
<button class="btn search_button search_button_middle" type="button" id="search_up" onclick="search.search_button_handler(true);"><i class="icon-chevron-up"></i></button>
|
||||||
<button class="btn search_button search_button_middle" type="button" id="search_down" onclick="search.search_button_handler(false);"><i class="icon-chevron-down"></i></button>
|
<button class="btn search_button search_button_middle" type="button" id="search_down" onclick="search.search_button_handler(false);"><i class="icon-chevron-down"></i></button>
|
||||||
<button class="btn search_button" type="button" id="search_exit" onclick="search.clear_search();"><i class="icon-remove"></i></button>
|
<button class="btn search_button" type="button" id="search_exit" onclick="search.clear_search();"><i class="icon-remove"></i></button>
|
||||||
|
|||||||
@@ -229,6 +229,7 @@ exports.activate = function (operators, opts) {
|
|||||||
// Put the narrow operators in the URL fragment and search bar
|
// Put the narrow operators in the URL fragment and search bar
|
||||||
hashchange.save_narrow(operators);
|
hashchange.save_narrow(operators);
|
||||||
$('#search_query').val(unparse(operators));
|
$('#search_query').val(unparse(operators));
|
||||||
|
search.update_button_visibility();
|
||||||
};
|
};
|
||||||
|
|
||||||
// This is the message we're about to select, within the narrowed view.
|
// This is the message we're about to select, within the narrowed view.
|
||||||
|
|||||||
@@ -125,6 +125,36 @@ function searchbox_sorter(items) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.update_button_visibility = function (will_be_focused) {
|
||||||
|
var search_query = $('#search_query');
|
||||||
|
var focused = search_query.is(':focus') || will_be_focused;
|
||||||
|
|
||||||
|
// Show buttons iff the search input is focused, or has non-empty contents,
|
||||||
|
// or we are narrowed.
|
||||||
|
if (focused
|
||||||
|
|| search_query.val()
|
||||||
|
|| narrow.active()) {
|
||||||
|
|
||||||
|
if ($('.search_button').is(':visible')) {
|
||||||
|
// Already visible, and the width manipulation below
|
||||||
|
// will break if we do it again.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Shrink the searchbox to make room for the buttons.
|
||||||
|
var new_width = search_query.width() -
|
||||||
|
$('.search_button').outerWidth(true)*3;
|
||||||
|
search_query.width(new_width);
|
||||||
|
$("#search_arrows").addClass("input-append");
|
||||||
|
$('.search_button').show();
|
||||||
|
} else {
|
||||||
|
// Hide buttons.
|
||||||
|
$('#search_query').width('');
|
||||||
|
$("#search_arrows").removeClass("input-append");
|
||||||
|
$("#search_up, #search_down").removeAttr("disabled");
|
||||||
|
$('.search_button').blur().hide();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
exports.initialize = function () {
|
exports.initialize = function () {
|
||||||
$( "#search_query" ).typeahead({
|
$( "#search_query" ).typeahead({
|
||||||
source: function (query, process) {
|
source: function (query, process) {
|
||||||
@@ -179,6 +209,7 @@ exports.initialize = function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$("#searchbox_form").keydown(function (e) {
|
$("#searchbox_form").keydown(function (e) {
|
||||||
|
exports.update_button_visibility();
|
||||||
var code = e.which;
|
var code = e.which;
|
||||||
var search_query_box = $("#search_query");
|
var search_query_box = $("#search_query");
|
||||||
if (code === 13 && search_query_box.is(":focus")) {
|
if (code === 13 && search_query_box.is(":focus")) {
|
||||||
@@ -318,27 +349,8 @@ function clear_search_cache() {
|
|||||||
cached_term = "";
|
cached_term = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_buttons() {
|
|
||||||
if (!$('.search_button').is(':visible')) {
|
|
||||||
// Shrink the searchbox to make room for the buttons.
|
|
||||||
var search_query = $('#search_query');
|
|
||||||
var new_width = search_query.width() -
|
|
||||||
$('.search_button').outerWidth(true)*3;
|
|
||||||
search_query.width(new_width);
|
|
||||||
$("#search_arrows").addClass("input-append");
|
|
||||||
$('.search_button').show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hide_buttons() {
|
|
||||||
$('#search_query').width('');
|
|
||||||
$("#search_arrows").removeClass("input-append");
|
|
||||||
$("#search_up, #search_down").removeAttr("disabled");
|
|
||||||
$('.search_button').blur().hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.focus_search = function () {
|
exports.focus_search = function () {
|
||||||
show_buttons();
|
exports.update_button_visibility(true);
|
||||||
disable_search_arrows_if(false, ["up", "down"]);
|
disable_search_arrows_if(false, ["up", "down"]);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -350,8 +362,8 @@ exports.clear_search = function () {
|
|||||||
narrow.deactivate();
|
narrow.deactivate();
|
||||||
$('table tr').removeHighlight();
|
$('table tr').removeHighlight();
|
||||||
// Clear & reset searchbox to its normal size
|
// Clear & reset searchbox to its normal size
|
||||||
$('#search_query').val('');
|
$('#search_query').val('').blur();
|
||||||
hide_buttons();
|
exports.update_button_visibility();
|
||||||
clear_search_cache();
|
clear_search_cache();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user