<template> <div class="control"> <label class="control__label"> <a :class="{ 'row-modal__field-item-handle': sortable }" data-field-handle ></a> <i class="control__label-icon" :class="field._.type.iconClass"></i> {{ field.name }} <span v-if="field.description" class="margin-left-1"> <HelpIcon :tooltip="descriptionText" :tooltip-duration="3" :tooltip-content-type="'html'" :tooltip-content-classes="'tooltip__content--expandable'" :icon="'info-empty'" /> </span> <i v-if="!readOnly && canModifyFields" ref="contextLink" class="control__context baserow-icon-more-vertical" @click="$refs.context.toggle($refs.contextLink, 'bottom', 'left', 0)" ></i> </label> <FieldContext ref="context" :database="database" :table="table" :view="view" :field="field" :all-fields-in-table="allFieldsInTable" @update="$emit('field-updated', $event)" @delete="$emit('field-deleted')" > <li v-if="canBeHidden" class="context__menu-item"> <a class="context__menu-item-link" @click="$emit('toggle-field-visibility', { field })" > <i class="context__menu-item-icon" :class="[hidden ? 'iconoir-eye-empty' : 'iconoir-eye-off']" ></i> {{ $t(hidden ? 'fieldContext.showField' : 'fieldContext.hideField') }} </a> </li> </FieldContext> <component :is="getFieldComponent(field.type)" ref="field" :workspace-id="database.workspace.id" :field="field" :value="row['field_' + field.id]" :read-only="readOnly" :row-is-created="!!row.id" @update="update" @refresh-row="$emit('refresh-row', row)" /> </div> </template> <script> import FieldContext from '@baserow/modules/database/components/field/FieldContext' export default { name: 'RowEditModalField', components: { FieldContext }, props: { database: { type: Object, required: true, }, table: { type: Object, required: true, }, view: { type: [Object, null], required: false, default: null, }, field: { type: Object, required: true, }, sortable: { type: Boolean, default: false, }, canModifyFields: { type: Boolean, required: false, default: true, }, canBeHidden: { type: Boolean, required: false, default: true, }, hidden: { type: Boolean, required: false, default: false, }, row: { type: Object, required: true, }, readOnly: { type: Boolean, required: true, }, allFieldsInTable: { type: Array, required: true, }, rowIsCreated: { type: Boolean, required: false, default: () => true, }, }, computed: { descriptionText() { return (this.field.description || '').replaceAll('\n', '<br/>') }, }, methods: { getFieldComponent(type) { return this.$registry .get('field', type) .getRowEditFieldComponent(this.field) }, update(value, oldValue) { this.$emit('update', { row: this.row, field: this.field, value, oldValue, }) }, }, } </script>