UNPKG

vuestic-ui

Version:
49 lines (48 loc) 1.5 kB
import { watch } from "vue"; const useAutocompleteProps = { autocomplete: { type: Boolean, default: false } }; const useAutocomplete = (autocompleteValue, props, value, dropdownShown, getText) => { const getLastOptionText = (v) => (v == null ? void 0 : v.length) ? getText(v.at(-1)) : ""; if (props.autocomplete && !props.multiple) { autocompleteValue.value = getLastOptionText(value.value); } watch(value, (newValue, oldValue) => { if (!props.autocomplete) { return; } const newValueStringConverted = getLastOptionText(newValue); const oldValueStringConverted = getLastOptionText(oldValue); if (newValueStringConverted !== oldValueStringConverted) { autocompleteValue.value = props.multiple ? "" : newValueStringConverted; if (!props.multiple) { dropdownShown.value = false; } } }); watch(autocompleteValue, (newValue) => { if (!props.autocomplete) { return; } if (newValue && newValue !== getLastOptionText(value.value)) { dropdownShown.value = true; } }); const onDropdownClosed = () => { autocompleteValue.value = props.multiple ? "" : getLastOptionText(value.value); }; watch(dropdownShown, (newValue, oldValue) => { if (!props.autocomplete) { return; } if (!newValue || oldValue) { onDropdownClosed(); } }); return autocompleteValue; }; export { useAutocomplete as a, useAutocompleteProps as u }; //# sourceMappingURL=useAutocomplete.js.map