@@ -89,8 +89,6 @@ import { ref, computed, onMounted, onUnmounted, watch, type Ref } from 'vue';
8989import { IconCaretDownSolid } from ' @iconify-prerendered/vue-flowbite' ;
9090import { useElementSize } from ' @vueuse/core'
9191
92- import { useDropdownStore } from ' @/stores/dropdown' ;
93-
9492const props = defineProps ({
9593 options: Array ,
9694 modelValue: {
@@ -123,8 +121,6 @@ const dropdownEl = ref<HTMLElement | null>(null);
123121const { height : dropdownHeight } = useElementSize (dropdownEl );
124122const isTop = ref <boolean >(false );
125123
126- const dropdownStore = useDropdownStore (); // Access the store
127-
128124const dropdownStyle = ref <{ top? : string ; }>({
129125 top: " 0px" ,
130126});
@@ -156,23 +152,13 @@ function updateFromProps() {
156152
157153function inputClick() {
158154 if (props .isReadonly ) return ;
159-
160- if (dropdownStore .openSelectID !== internalID )
161- dropdownStore .setOpenSelectID (internalID );
162-
155+ // Toggle local dropdown
163156 showDropdown .value = ! showDropdown .value ;
164- if (! showDropdown .value && ! search .value )
157+ // If the dropdown is about to close, reset the search
158+ if (! showDropdown .value && ! search .value ) {
165159 search .value = ' ' ;
166- }
167-
168- // Watch for store changes to close this dropdown if it's not the active one
169- watch (
170- () => dropdownStore .openSelectID ,
171- (newID ) => {
172- if (newID !== internalID && showDropdown .value )
173- showDropdown .value = false ;
174160 }
175- );
161+ }
176162
177163watch (
178164 () => ({ show: showDropdown .value , dropdownHeight: dropdownHeight .value }),
@@ -213,9 +199,18 @@ const filteredItems = computed(() => {
213199 );
214200});
215201
202+
216203const handleClickOutside = (event : MouseEvent ) => {
217- if (! event .target || ! (event .target as HTMLElement ).closest (' .afcl-select' ))
204+ 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
218212 showDropdown .value = false ;
213+ }
219214};
220215
221216const addClickListener = () => {
0 commit comments