Skip to content

Commit e4d62e8

Browse files
committed
refactor Select component to use ref for internal select management
1 parent a23fc88 commit e4d62e8

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

adminforth/spa/src/afcl/Select.vue

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="relative inline-block afcl-select" :data-select-id="internalID">
2+
<div class="relative inline-block afcl-select" ref="internalSelect">
33
<div class="relative">
44
<input
55
ref="inputEl"
@@ -106,10 +106,6 @@ const props = defineProps({
106106
type: Boolean,
107107
default: false,
108108
},
109-
selectID: {
110-
type: String,
111-
required: false,
112-
},
113109
});
114110
115111
const emit = defineEmits(['update:modelValue']);
@@ -126,7 +122,7 @@ const dropdownStyle = ref<{ top?: string; }>({
126122
});
127123
128124
const selectedItems: Ref<any[]> = ref([]);
129-
const internalID = props.selectID || `afcb-select-${Math.random().toString(36).substring(7)}`
125+
const internalSelect = ref<HTMLElement | null>(null);
130126
131127
function inputInput() {
132128
if (!props.multiple && selectedItems.value.length) {
@@ -202,15 +198,9 @@ const filteredItems = computed(() => {
202198
203199
const handleClickOutside = (event: MouseEvent) => {
204200
const targetEl = event.target as HTMLElement | null;
205-
// Attempt to find a parent with data-select-id
206-
const closestSelect = targetEl?.closest('[data-select-id]');
207-
const closestID = closestSelect?.getAttribute('data-select-id');
208-
console.log('closestID', closestID, 'closestSelect', closestSelect, 'internalID', internalID);
209-
210-
if (!closestSelect || closestID !== internalID) {
211-
// then close this dropdown
201+
const closestSelect = targetEl?.closest('.afcl-select');
202+
if (closestSelect !== internalSelect.value)
212203
showDropdown.value = false;
213-
}
214204
};
215205
216206
const addClickListener = () => {

0 commit comments

Comments
 (0)