mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-02 20:57:10 +00:00
* feat: numeric formula formatting support * feat: support url, email and phone feat: add datetime supports feat: add checkbox support * fix: clean up * fix: handle invalid source, fix: handle plain cell chore: translations * fix: update the datatype when formula changes * fix: formula fixes * fix: tab ui * fix: pr review changes
83 lines
2.1 KiB
Vue
83 lines
2.1 KiB
Vue
<script setup lang="ts">
|
|
interface Props {
|
|
modelValue: any
|
|
column?: any
|
|
}
|
|
|
|
const props = defineProps<Props>()
|
|
|
|
const column = toRef(props, 'column')
|
|
|
|
const isGrid = inject(IsGridInj, ref(false))
|
|
|
|
const isExpandedFormOpen = inject(IsExpandedFormOpenInj, ref(false))
|
|
|
|
const isNumericField = computed(() => {
|
|
return isNumericFieldType(column.value, null)
|
|
})
|
|
|
|
provide(ReadonlyInj, ref(true))
|
|
provide(EditModeInj, ref(false))
|
|
|
|
provide(ColumnInj, column)
|
|
</script>
|
|
|
|
<template>
|
|
<div
|
|
class="nc-cell w-full h-full relative"
|
|
:class="{
|
|
'nc-grid-numeric-cell-right': isGrid && isNumericField && !isExpandedFormOpen && !isRating(column),
|
|
}"
|
|
>
|
|
<LazyCellCheckbox v-if="isBoolean(column)" :model-value="modelValue" />
|
|
<LazyCellCurrency v-else-if="isCurrency(column)" :model-value="modelValue" />
|
|
<LazyCellDecimal v-else-if="isDecimal(column)" :model-value="modelValue" />
|
|
<LazyCellPercent v-else-if="isPercent(column)" :model-value="modelValue" />
|
|
<LazyCellRating v-else-if="isRating(column)" :model-value="modelValue" />
|
|
<LazyCellDatePicker v-else-if="isDate(column, '')" :model-value="modelValue" />
|
|
<LazyCellDateTimePicker v-else-if="isDateTime(column, '')" :model-value="modelValue" />
|
|
<LazyCellTimePicker v-else-if="isTime(column, '')" :model-value="modelValue" />
|
|
<LazyCellEmail v-else-if="isEmail(column)" :model-value="modelValue" />
|
|
<LazyCellUrl v-else-if="isURL(column)" :model-value="modelValue" />
|
|
<LazyCellPhoneNumber v-else-if="isPhoneNumber(column)" :model-value="modelValue" />
|
|
<LazyCellText v-else :model-value="modelValue" />
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped lang="scss">
|
|
.nc-grid-numeric-cell-left {
|
|
text-align: left;
|
|
:deep(input) {
|
|
text-align: left;
|
|
}
|
|
}
|
|
.nc-grid-numeric-cell-right {
|
|
text-align: right;
|
|
:deep(input) {
|
|
text-align: right;
|
|
}
|
|
}
|
|
|
|
.nc-cell {
|
|
@apply text-sm text-gray-600;
|
|
font-weight: 500;
|
|
|
|
:deep(.nc-cell-field) {
|
|
@apply !text-sm;
|
|
font-weight: 500;
|
|
}
|
|
|
|
&.nc-display-value-cell {
|
|
@apply !text-brand-500 !font-semibold;
|
|
|
|
:deep(.nc-cell-field) {
|
|
@apply !font-semibold;
|
|
}
|
|
}
|
|
|
|
:deep(.nc-cell-field) {
|
|
@apply px-0;
|
|
}
|
|
}
|
|
</style>
|