Files
nocodb/packages/nc-gui/components/cell/Decimal/Editor.vue
mertmit 7dd11de454 feat: revise audit architecture
Signed-off-by: mertmit <mertmit99@gmail.com>
2025-06-24 14:35:01 +03:00

54 lines
1.5 KiB
Vue

<script lang="ts" setup>
interface Props {
// when we set a number, then it is number type
// for sqlite, when we clear a cell or empty the cell, it returns ""
// otherwise, it is null type
modelValue?: number | null
placeholder?: string
}
interface Emits {
(event: 'update:modelValue', model: number): void
}
const props = defineProps<Props>()
const emits = defineEmits<Emits>()
const editEnabled = inject(EditModeInj, ref(false))
const column = inject(ColumnInj, null)!
const isEditColumn = inject(EditColumnInj, ref(false))
const readOnly = inject(ReadonlyInj, ref(false))
const isExpandedFormOpen = inject(IsExpandedFormOpenInj, ref(false))!
const isForm = inject(IsFormInj)!
const isCanvasInjected = inject(IsCanvasInjectionInj, false)
const inputRef = ref<HTMLInputElement>()
const vModel = useVModel(props, 'modelValue', emits)
const precision = computed(() => {
return parseProp(column?.value.meta).precision ?? 1
})
onMounted(() => {
if (isCanvasInjected && !isExpandedFormOpen.value && !isEditColumn.value && !isForm.value) {
inputRef.value?.focus()
}
})
</script>
<template>
<!-- eslint-disable vue/use-v-on-exact -->
<CellDecimalInput
v-model="vModel"
:placeholder="placeholder"
:is-focus-on-mounted="!isExpandedFormOpen && !isEditColumn && !isForm"
:style="{
...(!isForm && !isExpandedFormOpen && { 'margin-top': '1px' }),
...((isForm || isExpandedFormOpen) && { width: '100%' }),
}"
:disabled="readOnly"
:precision="precision"
@blur="editEnabled = false"
/>
</template>