OpenXE/resources/vue/AutoComplete.vue

52 lines
1.1 KiB
Vue
Raw Normal View History

2023-03-30 10:54:18 +02:00
<!--
SPDX-FileCopyrightText: 2023 Andreas Palm
SPDX-License-Identifier: AGPL-3.0-only
-->
<script setup>
import {ref} from "vue";
import AutoComplete from "primevue/autocomplete";
import axios from "axios";
2024-10-04 22:49:08 +02:00
import SearchIcon from "@primevue/icons/search";
2023-03-30 10:54:18 +02:00
const props = defineProps({
ajaxFilter: String,
modelValue: null,
2024-10-04 22:49:08 +02:00
forceSelection: Boolean,
inputId: String,
2023-03-30 10:54:18 +02:00
});
const emit = defineEmits(['update:modelValue']);
const items = ref([]);
async function search(event) {
await axios.get('index.php',
{
params: {
module: 'ajax',
action: 'filter',
filtername: props.ajaxFilter,
term: event.query,
object: true
}
})
.then(response => items.value = response.data)
}
</script>
<template>
<AutoComplete
:modelValue="modelValue"
@update:modelValue="value => emit('update:modelValue', value)"
:suggestions="items"
@complete="search"
dataKey="id"
:forceSelection="forceSelection"
dropdown
2024-10-04 22:49:08 +02:00
:input-id="inputId"
>
<template #dropdownicon>
<SearchIcon />
</template>
</AutoComplete>
2023-03-30 10:54:18 +02:00
</template>