검색 필터링 유지

This commit is contained in:
nevermoregb 2025-03-28 16:18:06 +09:00
parent 5af68dcf3d
commit ad3af31e37
2 changed files with 47 additions and 46 deletions

View File

@ -1,17 +1,8 @@
<template>
<form @submit.prevent="search">
<div class="input-group mb-3 d-flex">
<input
type="text"
class="form-control"
placeholder="Search"
v-model="searchQuery"
@input="preventLeadingSpace"
/>
<button
type="submit"
class="btn btn-primary"
>
<input type="text" class="form-control" placeholder="Search" v-model="searchQuery" @input="preventLeadingSpace" />
<button type="submit" class="btn btn-primary">
<i class="bx bx-search bx-md"></i>
</button>
</div>
@ -19,7 +10,7 @@
</template>
<script setup>
import { ref } from "vue";
import { ref, watch } from 'vue';
const props = defineProps({
maxlength: {
@ -27,20 +18,30 @@ const props = defineProps({
default: 30,
required: false,
},
initKeyword: {
type: String,
},
});
const emits = defineEmits(["update:data"]);
const searchQuery = ref("");
const emits = defineEmits(['update:data']);
const searchQuery = ref('');
watch(
() => props.initKeyword,
(newVal, oldVal) => {
searchQuery.value = newVal;
},
);
// ( or )
const search = () => {
const trimmedQuery = searchQuery.value.trimStart();
if (trimmedQuery === "") {
emits("update:data", "");
if (trimmedQuery === '') {
emits('update:data', '');
return;
}
if (trimmedQuery.length < 2) {
alert("검색어는 최소 2글자 이상 입력해주세요.");
alert('검색어는 최소 2글자 이상 입력해주세요.');
searchQuery.value = '';
return;
}
@ -52,7 +53,7 @@ const search = () => {
searchQuery.value = trimmedQuery;
}
emits("update:data", searchQuery.value);
emits('update:data', searchQuery.value);
};
//

View File

@ -4,7 +4,7 @@
<div class="card-header d-flex flex-column">
<!-- 검색창 -->
<div class="mb-3 w-100">
<search-bar @update:data="search" @keyup.enter="searchOnEnter" class="flex-grow-1" />
<search-bar @update:data="search" @keyup.enter="searchOnEnter" :initKeyword="searchText" class="flex-grow-1" />
</div>
<div class="d-flex align-items-center" style="gap: 15px">
<!-- 리스트 갯수 선택 -->