js: Convert static/js/search.js to ES6 module.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2021-02-27 16:04:58 -08:00
committed by Tim Abbott
parent 9d9c716dd2
commit b9137e3de8
15 changed files with 43 additions and 44 deletions

View File

@@ -176,7 +176,6 @@
"realm_night_logo": false, "realm_night_logo": false,
"recent_topics": false, "recent_topics": false,
"reminder": false, "reminder": false,
"search": false,
"search_pill_widget": false, "search_pill_widget": false,
"server_events": false, "server_events": false,
"settings": false, "settings": false,

View File

@@ -15,7 +15,7 @@ set_global("location", {
}); });
set_global("to_$", () => window_stub); set_global("to_$", () => window_stub);
set_global("search", { rewiremock("../../static/js/search").with({
update_button_visibility: () => {}, update_button_visibility: () => {},
}); });
set_global("document", "document-stub"); set_global("document", "document-stub");

View File

@@ -92,7 +92,8 @@ rewiremock("../../static/js/muting_ui").with(muting_ui);
const narrow = set_global("narrow", {}); const narrow = set_global("narrow", {});
const navigate = set_global("navigate", {}); const navigate = set_global("navigate", {});
const reactions = set_global("reactions", {}); const reactions = set_global("reactions", {});
const search = set_global("search", {}); const search = {__esModule: true};
rewiremock("../../static/js/search").with(search);
const stream_list = set_global("stream_list", {}); const stream_list = set_global("stream_list", {});
const subs = set_global("subs", {}); const subs = set_global("subs", {});

View File

@@ -30,7 +30,8 @@ rewiremock("../../static/js/message_scroll").with(message_scroll);
set_global("message_util", {}); set_global("message_util", {});
const notifications = set_global("notifications", {}); const notifications = set_global("notifications", {});
set_global("page_params", {}); set_global("page_params", {});
const search = set_global("search", {}); const search = {__esModule: true};
rewiremock("../../static/js/search").with(search);
const stream_list = set_global("stream_list", {}); const stream_list = set_global("stream_list", {});
const message_view_header = set_global("message_view_header", {}); const message_view_header = set_global("message_view_header", {});
const top_left_corner = {__esModule: true}; const top_left_corner = {__esModule: true};

View File

@@ -195,7 +195,7 @@ run_test("initialize", () => {
assert(!is_blurred); assert(!is_blurred);
assert(is_append_search_string_called); assert(is_append_search_string_called);
search.is_using_input_method = true; search.__Rewire__("is_using_input_method", true);
_setup("stream:Verona"); _setup("stream:Verona");
assert.equal(opts.updater("stream:Verona"), "stream:Verona"); assert.equal(opts.updater("stream:Verona"), "stream:Verona");
@@ -222,7 +222,7 @@ run_test("initialize", () => {
searchbox.trigger("focusout"); searchbox.trigger("focusout");
assert.deepEqual(searchbox.css(), {"box-shadow": "unset"}); assert.deepEqual(searchbox.css(), {"box-shadow": "unset"});
search.is_using_input_method = false; search.__Rewire__("is_using_input_method", false);
searchbox_form.trigger("compositionend"); searchbox_form.trigger("compositionend");
assert(search.is_using_input_method); assert(search.is_using_input_method);
@@ -303,7 +303,7 @@ run_test("initialize", () => {
assert(is_blurred); assert(is_blurred);
_setup("ver"); _setup("ver");
search.is_using_input_method = true; search.__Rewire__("is_using_input_method", true);
searchbox_form.trigger(ev); searchbox_form.trigger(ev);
// No change on Enter keyup event when using input tool // No change on Enter keyup event when using input tool
assert(!is_blurred); assert(!is_blurred);

View File

@@ -161,7 +161,7 @@ run_test("initialize", () => {
assert.equal(opts.updater("stream:Verona"), "stream:Verona"); assert.equal(opts.updater("stream:Verona"), "stream:Verona");
assert(is_blurred); assert(is_blurred);
search.is_using_input_method = true; search.__Rewire__("is_using_input_method", true);
_setup("stream:Verona"); _setup("stream:Verona");
assert.equal(opts.updater("stream:Verona"), "stream:Verona"); assert.equal(opts.updater("stream:Verona"), "stream:Verona");
assert(!is_blurred); assert(!is_blurred);
@@ -181,7 +181,7 @@ run_test("initialize", () => {
search_query_box.trigger("blur"); search_query_box.trigger("blur");
assert.equal(search_query_box.val(), "test string"); assert.equal(search_query_box.val(), "test string");
search.is_using_input_method = false; search.__Rewire__("is_using_input_method", false);
searchbox_form.trigger("compositionend"); searchbox_form.trigger("compositionend");
assert(search.is_using_input_method); assert(search.is_using_input_method);
@@ -261,7 +261,7 @@ run_test("initialize", () => {
assert(is_blurred); assert(is_blurred);
_setup("ver"); _setup("ver");
search.is_using_input_method = true; search.__Rewire__("is_using_input_method", true);
searchbox_form.trigger(ev); searchbox_form.trigger(ev);
// No change on Enter keyup event when using input tool // No change on Enter keyup event when using input tool
assert(!is_blurred); assert(!is_blurred);

View File

@@ -119,7 +119,6 @@ const upload = zrequire("upload");
const compose = zrequire("compose"); const compose = zrequire("compose");
zrequire("composebox_typeahead"); zrequire("composebox_typeahead");
zrequire("narrow"); zrequire("narrow");
zrequire("search");
zrequire("notifications"); zrequire("notifications");
zrequire("stream_list"); zrequire("stream_list");
zrequire("starred_messages"); zrequire("starred_messages");

View File

@@ -27,7 +27,6 @@ import "../reload";
import "../compose_actions"; import "../compose_actions";
import "../subs"; import "../subs";
import "../ui"; import "../ui";
import "../search";
import "../composebox_typeahead"; import "../composebox_typeahead";
import "../navigate"; import "../navigate";
import "../list_util"; import "../list_util";

View File

@@ -49,7 +49,6 @@ declare let realm_icon: any;
declare let realm_logo: any; declare let realm_logo: any;
declare let recent_topics: any; declare let recent_topics: any;
declare let reminder: any; declare let reminder: any;
declare let search: any;
declare let search_pill_widget: any; declare let search_pill_widget: any;
declare let server_events: any; declare let server_events: any;
declare let settings: any; declare let settings: any;

View File

@@ -6,6 +6,7 @@ const info_overlay = require("./info_overlay");
const invite = require("./invite"); const invite = require("./invite");
const message_viewport = require("./message_viewport"); const message_viewport = require("./message_viewport");
const overlays = require("./overlays"); const overlays = require("./overlays");
const search = require("./search");
const settings_panel_menu = require("./settings_panel_menu"); const settings_panel_menu = require("./settings_panel_menu");
const top_left_corner = require("./top_left_corner"); const top_left_corner = require("./top_left_corner");
const ui_util = require("./ui_util"); const ui_util = require("./ui_util");

View File

@@ -15,6 +15,7 @@ const message_edit = require("./message_edit");
const muting_ui = require("./muting_ui"); const muting_ui = require("./muting_ui");
const overlays = require("./overlays"); const overlays = require("./overlays");
const popovers = require("./popovers"); const popovers = require("./popovers");
const search = require("./search");
const stream_popover = require("./stream_popover"); const stream_popover = require("./stream_popover");
const topic_zoom = require("./topic_zoom"); const topic_zoom = require("./topic_zoom");

View File

@@ -5,6 +5,7 @@ const render_message_view_header = require("../templates/message_view_header.hbs
const narrow_state = require("./narrow_state"); const narrow_state = require("./narrow_state");
const peer_data = require("./peer_data"); const peer_data = require("./peer_data");
const rendered_markdown = require("./rendered_markdown"); const rendered_markdown = require("./rendered_markdown");
const search = require("./search");
function get_formatted_sub_count(sub_count) { function get_formatted_sub_count(sub_count) {
if (sub_count >= 1000) { if (sub_count >= 1000) {

View File

@@ -12,6 +12,7 @@ const message_scroll = require("./message_scroll");
const narrow_state = require("./narrow_state"); const narrow_state = require("./narrow_state");
const people = require("./people"); const people = require("./people");
const resize = require("./resize"); const resize = require("./resize");
const search = require("./search");
const search_pill = require("./search_pill"); const search_pill = require("./search_pill");
const stream_data = require("./stream_data"); const stream_data = require("./stream_data");
const stream_topic_history = require("./stream_topic_history"); const stream_topic_history = require("./stream_topic_history");

View File

@@ -1,17 +1,15 @@
"use strict"; import {Filter} from "./filter";
import * as narrow_state from "./narrow_state";
const {Filter} = require("./filter"); import * as search_pill from "./search_pill";
const narrow_state = require("./narrow_state"); import * as search_suggestion from "./search_suggestion";
const search_pill = require("./search_pill"); import * as ui_util from "./ui_util";
const search_suggestion = require("./search_suggestion");
const ui_util = require("./ui_util");
// Exported for unit testing // Exported for unit testing
exports.is_using_input_method = false; export let is_using_input_method = false;
exports.narrow_or_search_for_term = function (search_string) { export function narrow_or_search_for_term(search_string) {
const search_query_box = $("#search_query"); const search_query_box = $("#search_query");
if (exports.is_using_input_method) { if (is_using_input_method) {
// Neither narrow nor search when using input tools as // Neither narrow nor search when using input tools as
// `updater` is also triggered when 'enter' is triggered // `updater` is also triggered when 'enter' is triggered
// while using input tool // while using input tool
@@ -43,7 +41,7 @@ exports.narrow_or_search_for_term = function (search_string) {
search_query_box.trigger("blur"); search_query_box.trigger("blur");
} }
return search_query_box.val(); return search_query_box.val();
}; }
function update_buttons_with_focus(focused) { function update_buttons_with_focus(focused) {
const search_query_box = $("#search_query"); const search_query_box = $("#search_query");
@@ -55,11 +53,11 @@ function update_buttons_with_focus(focused) {
} }
} }
exports.update_button_visibility = function () { export function update_button_visibility() {
update_buttons_with_focus($("#search_query").is(":focus")); update_buttons_with_focus($("#search_query").is(":focus"));
}; }
exports.initialize = function () { export function initialize() {
const search_query_box = $("#search_query"); const search_query_box = $("#search_query");
const searchbox_form = $("#searchbox_form"); const searchbox_form = $("#searchbox_form");
const searchbox = $("#searchbox"); const searchbox = $("#searchbox");
@@ -100,7 +98,7 @@ exports.initialize = function () {
search_pill.append_search_string(search_string, search_pill_widget.widget); search_pill.append_search_string(search_string, search_pill_widget.widget);
return search_query_box.val(); return search_query_box.val();
} }
return exports.narrow_or_search_for_term(search_string); return narrow_or_search_for_term(search_string);
}, },
sorter(items) { sorter(items) {
return items; return items;
@@ -124,12 +122,12 @@ exports.initialize = function () {
// we suppress searching triggered by this Enter key by checking // we suppress searching triggered by this Enter key by checking
// `is_using_input_method` before searching. // `is_using_input_method` before searching.
// More details in the commit message that added this line. // More details in the commit message that added this line.
exports.is_using_input_method = true; is_using_input_method = true;
}); });
searchbox_form searchbox_form
.on("keydown", (e) => { .on("keydown", (e) => {
exports.update_button_visibility(); update_button_visibility();
const code = e.which; const code = e.which;
if (code === 13 && search_query_box.is(":focus")) { if (code === 13 && search_query_box.is(":focus")) {
// Don't submit the form so that the typeahead can instead // Don't submit the form so that the typeahead can instead
@@ -139,8 +137,8 @@ exports.initialize = function () {
} }
}) })
.on("keyup", (e) => { .on("keyup", (e) => {
if (exports.is_using_input_method) { if (is_using_input_method) {
exports.is_using_input_method = false; is_using_input_method = false;
return; return;
} }
const code = e.which; const code = e.which;
@@ -153,7 +151,7 @@ exports.initialize = function () {
// indicate that they've done what they need to do) // indicate that they've done what they need to do)
// Pill is already added during keydown event of input pills. // Pill is already added during keydown event of input pills.
exports.narrow_or_search_for_term(search_query_box.val()); narrow_or_search_for_term(search_query_box.val());
search_query_box.trigger("blur"); search_query_box.trigger("blur");
update_buttons_with_focus(false); update_buttons_with_focus(false);
} }
@@ -163,7 +161,7 @@ exports.initialize = function () {
// but the code was moved here from elsewhere, and it would be // but the code was moved here from elsewhere, and it would be
// more work to re-order everything and make them private. // more work to re-order everything and make them private.
search_query_box.on("focus", exports.focus_search); search_query_box.on("focus", focus_search);
search_query_box.on("blur", (e) => { search_query_box.on("blur", (e) => {
// The search query box is a visual cue as to // The search query box is a visual cue as to
// whether search or narrowing is active. If // whether search or narrowing is active. If
@@ -193,7 +191,7 @@ exports.initialize = function () {
} }
} }
setTimeout(() => { setTimeout(() => {
exports.update_button_visibility(); update_button_visibility();
}, 100); }, 100);
}); });
@@ -206,14 +204,14 @@ exports.initialize = function () {
searchbox.css({"box-shadow": "unset"}); searchbox.css({"box-shadow": "unset"});
}); });
} }
}; }
exports.focus_search = function () { export function focus_search() {
// The search bar is not focused yet, but will be. // The search bar is not focused yet, but will be.
update_buttons_with_focus(true); update_buttons_with_focus(true);
}; }
exports.initiate_search = function () { export function initiate_search() {
message_view_header.open_search_bar_and_close_narrow_description(); message_view_header.open_search_bar_and_close_narrow_description();
$("#searchbox").css({"box-shadow": "inset 0px 0px 0px 2px hsl(204, 20%, 74%)"}); $("#searchbox").css({"box-shadow": "inset 0px 0px 0px 2px hsl(204, 20%, 74%)"});
$("#search_query").typeahead("lookup").trigger("select"); $("#search_query").typeahead("lookup").trigger("select");
@@ -221,12 +219,10 @@ exports.initiate_search = function () {
$("#search_query").trigger("focus"); $("#search_query").trigger("focus");
ui_util.place_caret_at_end($("#search_query")[0]); ui_util.place_caret_at_end($("#search_query")[0]);
} }
}; }
exports.clear_search_form = function () { export function clear_search_form() {
$("#search_query").val(""); $("#search_query").val("");
$("#search_query").trigger("blur"); $("#search_query").trigger("blur");
$(".search_button").prop("disabled", true); $(".search_button").prop("disabled", true);
}; }
window.search = exports;

View File

@@ -34,6 +34,7 @@ const reload = require("./reload");
const resize = require("./resize"); const resize = require("./resize");
const rows = require("./rows"); const rows = require("./rows");
const scroll_bar = require("./scroll_bar"); const scroll_bar = require("./scroll_bar");
const search = require("./search");
const sent_messages = require("./sent_messages"); const sent_messages = require("./sent_messages");
const settings_panel_menu = require("./settings_panel_menu"); const settings_panel_menu = require("./settings_panel_menu");
const settings_toggle = require("./settings_toggle"); const settings_toggle = require("./settings_toggle");