2 <div class="search-bar">
3 <label for="search" class="search-label"></label>
8 @input="search($event.target.value)"
9 @keyup.enter.exact="$emit('search-open')"
10 @keyup.alt.enter="$emit('search-open', '_blank')"
20 this._keyListener = function (event) {
21 if (event.key === "/") {
22 event.preventDefault();
25 if (event.key === "Escape") {
29 document.addEventListener("keydown", this._keyListener.bind(this));
31 // fill seach from get parameter.
32 const search = new URLSearchParams(window.location.search).get("search");
34 this.$refs.search.value = search;
41 this.$emit("search-focus");
42 this.$nextTick(() => {
43 this.$refs.search.focus();
46 setSearchURL: function (value) {
47 const url = new URL(window.location);
49 url.searchParams.delete("search");
51 url.searchParams.set("search", value);
53 window.history.replaceState("search", null, url);
56 this.setSearchURL("");
57 this.$refs.search.value = "";
58 this.$refs.search.blur();
59 this.$emit("search-cancel");
61 search: function (value) {
62 this.setSearchURL(value);
63 this.$emit("input", value.toLowerCase());
67 document.removeEventListener("keydown", this._keyListener);
72 <style lang="scss" scoped></style>