diff options
Diffstat (limited to 'src/tools/benchmark-builder/dynamic-values.vue')
-rw-r--r-- | src/tools/benchmark-builder/dynamic-values.vue | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/src/tools/benchmark-builder/dynamic-values.vue b/src/tools/benchmark-builder/dynamic-values.vue index 5e349fc..975a545 100644 --- a/src/tools/benchmark-builder/dynamic-values.vue +++ b/src/tools/benchmark-builder/dynamic-values.vue @@ -1,7 +1,37 @@ +<script setup lang="ts"> +import { Plus, Trash } from '@vicons/tabler'; +import { useTemplateRefsList, useVModel } from '@vueuse/core'; +import { NInputNumber } from 'naive-ui'; +import { nextTick } from 'vue'; + +const props = defineProps<{ values: (number | null)[] }>(); + +const emit = defineEmits(['update:values']); + +const refs = useTemplateRefsList<typeof NInputNumber>(); + +const values = useVModel(props, 'values', emit); + +async function addValue() { + values.value.push(null); + await nextTick(); + refs.value.at(-1)?.focus(); +} + +function onInputEnter(index: number) { + if (index === values.value.length - 1) { + addValue(); + return; + } + + refs.value.at(index + 1)?.focus(); +} +</script> + <template> <div> <div v-for="(value, index) of values" :key="index" mb-2 flex flex-nowrap gap-2> - <n-input-number + <NInputNumber :ref="refs.set" v-model:value="values[index]" :show-button="false" @@ -25,33 +55,3 @@ </c-button> </div> </template> - -<script setup lang="ts"> -import { Trash, Plus } from '@vicons/tabler'; -import { useTemplateRefsList, useVModel } from '@vueuse/core'; -import { NInputNumber } from 'naive-ui'; -import { nextTick } from 'vue'; - -const refs = useTemplateRefsList<typeof NInputNumber>(); - -const props = defineProps<{ values: (number | null)[] }>(); -const emit = defineEmits(['update:values']); -const values = useVModel(props, 'values', emit); - -async function addValue() { - values.value.push(null); - await nextTick(); - refs.value.at(-1)?.focus(); -} - -function onInputEnter(index: number) { - if (index === values.value.length - 1) { - addValue(); - return; - } - - refs.value.at(index + 1)?.focus(); -} -</script> - -<style scoped></style> |