ref="search"
:value="value"
@input="search($event.target.value)"
- @keyup.enter.exact="$emit('search-open')"
- @keyup.alt.enter="$emit('search-open', '_blank')"
+ @keyup.enter.exact="open()"
+ @keyup.alt.enter="open('_blank')"
/>
</div>
</template>
<script>
export default {
name: "SearchInput",
- props: ["value"],
+ props: {
+ value: String,
+ hotkey: {
+ type: String,
+ default: "/",
+ },
+ },
mounted() {
this._keyListener = function (event) {
- if (event.key === "/") {
+ if (event.key === this.hotkey) {
event.preventDefault();
this.focus();
}
};
document.addEventListener("keydown", this._keyListener.bind(this));
- // fill seach from get parameter.
+ // fill search from get parameter.
const search = new URLSearchParams(window.location.search).get("search");
if (search) {
this.$refs.search.value = search;
}
},
methods: {
+ open: function (target = null) {
+ if (!this.$refs.search.value) {
+ return;
+ }
+ this.$emit("search-open", target);
+ },
focus: function () {
this.$emit("search-focus");
this.$nextTick(() => {