Browse Source

fix(gui-v2): email cell

pull/2930/head
Wing-Kam Wong 2 years ago
parent
commit
c3ebdf5b8e
  1. 36
      packages/nc-gui-v2/components/cell/Email.vue

36
packages/nc-gui-v2/components/cell/Email.vue

@ -2,40 +2,36 @@
import { computed } from '#imports' import { computed } from '#imports'
import { isEmail } from '~/utils' import { isEmail } from '~/utils'
const { modelValue: value } = defineProps<Props>()
const emit = defineEmits(['update:modelValue'])
const editEnabled = inject<boolean>('editEnabled')
interface Props { interface Props {
modelValue: string modelValue: string
} }
interface Emits {
(event: 'update:modelValue', model: string): void
}
const props = defineProps<Props>()
const emits = defineEmits<Emits>()
const root = ref<HTMLInputElement>() const root = ref<HTMLInputElement>()
const localState = computed({
get: () => value,
set: (val) => emit('update:modelValue', val),
})
const validEmail = computed(() => isEmail(value)) const editEnabled = inject<boolean>('editEnabled')
</script>
<script lang="ts"> const vModel = useVModel(props, 'modelValue', emits)
export default {
name: 'EmailCell', const validEmail = computed(() => isEmail(vModel.value))
}
</script> </script>
<template> <template>
<input v-if="editEnabled" ref="root" v-model="localState" /> <input v-if="editEnabled" ref="root" v-model="vModel" class="outline-none" />
<a <a
v-else-if="validEmail" v-else-if="validEmail"
class="caption py-2 text-primary underline hover:opacity-75" class="caption py-2 text-primary underline hover:opacity-75"
:href="`mailto:${value}`" :href="`mailto:${vModel}`"
target="_blank" target="_blank"
> >
{{ value }} {{ vModel }}
</a> </a>
<span v-else>{{ value }}</span> <span v-else>{{ vModel }}</span>
</template> </template>

Loading…
Cancel
Save