fix: [approvals] 거래처 선택 후 드롭다운이 다시 열리는 문제 수정
- 선택 시 selected 플래그 설정 + blur로 포커스 해제 - onInput/onFocus에서 selected 상태면 검색 차단 - 다시 직접 타이핑 시 selected 해제되어 검색 재개
This commit is contained in:
@@ -599,6 +599,7 @@ function vendorSearch(item) {
|
||||
let dropdown = null;
|
||||
let results = [];
|
||||
let highlighted = -1;
|
||||
let selected = false;
|
||||
|
||||
function removeDropdown() {
|
||||
if (dropdown) { dropdown.remove(); dropdown = null; }
|
||||
@@ -640,16 +641,20 @@ function renderDropdown(inputEl) {
|
||||
item.vendor_id = results[idx].id;
|
||||
item.vendor_biz_no = results[idx].biz_no || '';
|
||||
inputEl.value = results[idx].name;
|
||||
inputEl.dispatchEvent(new Event('input', { bubbles: true }));
|
||||
selected = true;
|
||||
}
|
||||
removeDropdown();
|
||||
inputEl.blur();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
onInput(value) {
|
||||
if (selected) { selected = false; return; }
|
||||
item.vendor = value;
|
||||
item.vendor_id = null;
|
||||
item.vendor_biz_no = '';
|
||||
highlighted = -1;
|
||||
clearTimeout(debounceTimer);
|
||||
if (value.length < 1) { removeDropdown(); return; }
|
||||
@@ -657,7 +662,8 @@ function renderDropdown(inputEl) {
|
||||
},
|
||||
|
||||
onFocus() {
|
||||
if (item.vendor && item.vendor.length >= 1) {
|
||||
if (selected) return;
|
||||
if (item.vendor && item.vendor.length >= 1 && !dropdown) {
|
||||
this.search(item.vendor);
|
||||
}
|
||||
},
|
||||
@@ -690,7 +696,9 @@ function renderDropdown(inputEl) {
|
||||
item.vendor_id = p.id;
|
||||
item.vendor_biz_no = p.biz_no || '';
|
||||
this.$refs.vinput.value = p.name;
|
||||
selected = true;
|
||||
removeDropdown();
|
||||
this.$refs.vinput.blur();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user