|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
<script setup lang="ts"> |
|
|
|
|
import type { VNodeRef } from '@vue/runtime-core' |
|
|
|
|
import { EditModeInj, inject, useVModel } from '#imports' |
|
|
|
|
import { EditModeInj, ReadonlyInj, inject, ref, useVModel } from '#imports' |
|
|
|
|
|
|
|
|
|
interface Props { |
|
|
|
|
modelValue?: string | null |
|
|
|
@ -12,6 +12,8 @@ const emits = defineEmits(['update:modelValue'])
|
|
|
|
|
|
|
|
|
|
const editEnabled = inject(EditModeInj) |
|
|
|
|
|
|
|
|
|
const readonly = inject(ReadonlyInj, ref(false)) |
|
|
|
|
|
|
|
|
|
const vModel = useVModel(props, 'modelValue', emits) |
|
|
|
|
|
|
|
|
|
const focus: VNodeRef = (el) => (el as HTMLInputElement)?.focus() |
|
|
|
@ -19,7 +21,7 @@ const focus: VNodeRef = (el) => (el as HTMLInputElement)?.focus()
|
|
|
|
|
|
|
|
|
|
<template> |
|
|
|
|
<input |
|
|
|
|
v-if="editEnabled" |
|
|
|
|
v-if="!readonly && editEnabled" |
|
|
|
|
:ref="focus" |
|
|
|
|
v-model="vModel" |
|
|
|
|
class="h-full w-full outline-none bg-transparent" |
|
|
|
|