Skip to content

Commit a23fc88

Browse files
committed
simplify select manageents without store
1 parent 66517a3 commit a23fc88

File tree

2 files changed

+14
-35
lines changed

2 files changed

+14
-35
lines changed

adminforth/spa/src/afcl/Select.vue

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ import { ref, computed, onMounted, onUnmounted, watch, type Ref } from 'vue';
8989
import { IconCaretDownSolid } from '@iconify-prerendered/vue-flowbite';
9090
import { useElementSize } from '@vueuse/core'
9191
92-
import { useDropdownStore } from '@/stores/dropdown';
93-
9492
const props = defineProps({
9593
options: Array,
9694
modelValue: {
@@ -123,8 +121,6 @@ const dropdownEl = ref<HTMLElement | null>(null);
123121
const { height: dropdownHeight } = useElementSize(dropdownEl);
124122
const isTop = ref<boolean>(false);
125123
126-
const dropdownStore = useDropdownStore(); // Access the store
127-
128124
const dropdownStyle = ref<{ top?: string; }>({
129125
top: "0px",
130126
});
@@ -156,23 +152,13 @@ function updateFromProps() {
156152
157153
function 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
177163
watch(
178164
() => ({ show: showDropdown.value, dropdownHeight: dropdownHeight.value }),
@@ -213,9 +199,18 @@ const filteredItems = computed(() => {
213199
);
214200
});
215201
202+
216203
const 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
221216
const addClickListener = () => {

adminforth/spa/src/stores/dropdown.ts

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)