UNPKG

vuestic-ui

Version:
1 lines 2.85 kB
{"version":3,"file":"useAutocomplete.mjs","sources":["../../../../../../src/components/va-select/hooks/useAutocomplete.ts"],"sourcesContent":["import { ref, watch, type Ref, type ExtractPropTypes, onMounted } from 'vue'\n\nimport type { SelectOption } from '../types'\n\nexport const useAutocompleteProps = {\n autocomplete: { type: Boolean, default: false },\n}\n\ntype UseAutocompleteProps = ExtractPropTypes<typeof useAutocompleteProps> & { multiple: boolean }\n\nexport const useAutocomplete = (\n autocompleteValue: Ref<string>,\n props: UseAutocompleteProps,\n value: Ref<SelectOption[]>,\n dropdownShown: Ref<boolean>,\n getText: (option: SelectOption) => string,\n) => {\n const getLastOptionText = (v: SelectOption[]) => v?.length ? getText(v.at(-1)!) : ''\n\n if (props.autocomplete && !props.multiple) {\n // Set current value as autocomplete value text\n autocompleteValue.value = getLastOptionText(value.value)\n }\n\n watch(value, (newValue, oldValue) => {\n if (!props.autocomplete) { return }\n\n const newValueStringConverted = getLastOptionText(newValue)\n const oldValueStringConverted = getLastOptionText(oldValue)\n\n if (newValueStringConverted !== oldValueStringConverted) {\n autocompleteValue.value = props.multiple ? '' : newValueStringConverted\n if (!props.multiple) {\n dropdownShown.value = false\n }\n }\n })\n\n watch(autocompleteValue, (newValue) => {\n if (!props.autocomplete) { return }\n\n if (newValue && newValue !== getLastOptionText(value.value)) {\n dropdownShown.value = true\n }\n })\n\n const onDropdownClosed = () => {\n autocompleteValue.value = props.multiple ? '' : getLastOptionText(value.value)\n }\n\n watch(dropdownShown, (newValue, oldValue) => {\n if (!props.autocomplete) { return }\n\n if (!newValue || oldValue) { onDropdownClosed() }\n })\n\n return autocompleteValue\n}\n"],"names":[],"mappings":";AAIO,MAAM,uBAAuB;AAAA,EAClC,cAAc,EAAE,MAAM,SAAS,SAAS,MAAM;AAChD;AAIO,MAAM,kBAAkB,CAC7B,mBACA,OACA,OACA,eACA,YACG;AACG,QAAA,oBAAoB,CAAC,OAAsB,uBAAG,UAAS,QAAQ,EAAE,GAAG,EAAE,CAAE,IAAI;AAElF,MAAI,MAAM,gBAAgB,CAAC,MAAM,UAAU;AAEvB,sBAAA,QAAQ,kBAAkB,MAAM,KAAK;AAAA,EACzD;AAEM,QAAA,OAAO,CAAC,UAAU,aAAa;AAC/B,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAE5B,UAAA,0BAA0B,kBAAkB,QAAQ;AACpD,UAAA,0BAA0B,kBAAkB,QAAQ;AAE1D,QAAI,4BAA4B,yBAAyB;AACrC,wBAAA,QAAQ,MAAM,WAAW,KAAK;AAC5C,UAAA,CAAC,MAAM,UAAU;AACnB,sBAAc,QAAQ;AAAA,MACxB;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,mBAAmB,CAAC,aAAa;AACjC,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAElC,QAAI,YAAY,aAAa,kBAAkB,MAAM,KAAK,GAAG;AAC3D,oBAAc,QAAQ;AAAA,IACxB;AAAA,EAAA,CACD;AAED,QAAM,mBAAmB,MAAM;AAC7B,sBAAkB,QAAQ,MAAM,WAAW,KAAK,kBAAkB,MAAM,KAAK;AAAA,EAAA;AAGzE,QAAA,eAAe,CAAC,UAAU,aAAa;AACvC,QAAA,CAAC,MAAM,cAAc;AAAE;AAAA,IAAO;AAE9B,QAAA,CAAC,YAAY,UAAU;AAAmB;IAAE;AAAA,EAAA,CACjD;AAEM,SAAA;AACT;"}