mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-01 09:06:38 +00:00
* chore: some missing changes Signed-off-by: mertmit <mertmit99@gmail.com> * chore: sync refactored expanded form Signed-off-by: mertmit <mertmit99@gmail.com> --------- Signed-off-by: mertmit <mertmit99@gmail.com>
67 lines
1.2 KiB
Vue
67 lines
1.2 KiB
Vue
<script lang="ts" setup>
|
|
/* interface */
|
|
|
|
const props = defineProps<{
|
|
disabled?: boolean
|
|
}>()
|
|
|
|
const modelValue = defineModel<string>()
|
|
|
|
/* internal text */
|
|
|
|
const internalText = ref('')
|
|
|
|
watch(
|
|
modelValue,
|
|
(value) => {
|
|
internalText.value = value || ''
|
|
},
|
|
{ immediate: true },
|
|
)
|
|
|
|
/* edit mode */
|
|
|
|
const inputRef = ref()
|
|
const isInEditMode = ref(false)
|
|
|
|
function goToEditMode() {
|
|
if (props.disabled) {
|
|
return
|
|
}
|
|
isInEditMode.value = true
|
|
nextTick(() => {
|
|
inputRef.value?.select?.()
|
|
})
|
|
}
|
|
|
|
function finishEdit() {
|
|
isInEditMode.value = false
|
|
modelValue.value = internalText.value
|
|
}
|
|
|
|
function cancelEdit() {
|
|
isInEditMode.value = false
|
|
internalText.value = modelValue.value || ''
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="inline-block">
|
|
<template v-if="!isInEditMode">
|
|
<span :class="{ 'cursor-pointer': !disabled }" @dblclick="goToEditMode()">
|
|
{{ internalText }}
|
|
</span>
|
|
</template>
|
|
<template v-else>
|
|
<a-input
|
|
ref="inputRef"
|
|
v-model:value="internalText"
|
|
class="!rounded-lg !w-72"
|
|
@blur="finishEdit()"
|
|
@keyup.enter="finishEdit()"
|
|
@keyup.esc="cancelEdit()"
|
|
/>
|
|
</template>
|
|
</div>
|
|
</template>
|