mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 03:51:09 -05:00
43 lines
1.7 KiB
HTML
43 lines
1.7 KiB
HTML
<script>
|
|
document.addEventListener('alpine:init', () => {
|
|
Alpine.data('parkSearchResults', () => ({
|
|
selectPark(id, name) {
|
|
// Update park fields using AlpineJS reactive approach
|
|
const parkInput = this.$el.closest('form').querySelector('#id_park');
|
|
const searchInput = this.$el.closest('form').querySelector('#id_park_search');
|
|
const resultsDiv = this.$el.closest('form').querySelector('#park-search-results');
|
|
|
|
if (parkInput) parkInput.value = id;
|
|
if (searchInput) searchInput.value = name;
|
|
if (resultsDiv) resultsDiv.innerHTML = '';
|
|
|
|
// Dispatch custom event for parent component
|
|
this.$dispatch('park-selected', { id, name });
|
|
}
|
|
}));
|
|
});
|
|
</script>
|
|
|
|
<div x-data="parkSearchResults()"
|
|
@click.outside="$el.innerHTML = ''"
|
|
class="absolute z-50 w-full mt-1 bg-white border border-gray-300 rounded-lg shadow-lg dark:bg-gray-700 dark:border-gray-600"
|
|
style="max-height: 240px; overflow-y: auto;">
|
|
{% if parks %}
|
|
{% for park in parks %}
|
|
<button type="button"
|
|
class="w-full px-4 py-2 text-left text-gray-900 hover:bg-gray-100 dark:text-white dark:hover:bg-gray-600"
|
|
@click="selectPark('{{ park.id }}', '{{ park.name|escapejs }}')">
|
|
{{ park.name }}
|
|
</button>
|
|
{% endfor %}
|
|
{% else %}
|
|
<div class="px-4 py-2 text-gray-700 dark:text-gray-300">
|
|
{% if search_term %}
|
|
No parks found
|
|
{% else %}
|
|
Start typing to search...
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|