1
0
mirror of https://gitlab.com/bramw/baserow.git synced 2024-11-21 23:37:55 +00:00
bramw_baserow/web-frontend/modules/database/mixins/rowEditField.js
Bram Wiepjes 1298aa7eec AI field
2024-04-02 19:50:44 +00:00

66 lines
1.7 KiB
JavaScript

import baseField from '@baserow/modules/database/mixins/baseField'
/**
* A mixin that can be used by a row edit modal component. It introduces the props that
* will be passed by the RowEditModalField component.
*/
export default {
mixins: [baseField],
props: {
readOnly: {
type: Boolean,
required: true,
},
/**
* Indicates if the value is required. If so, then an error is added when the
* value is not provided.
*/
required: {
type: Boolean,
required: false,
default: false,
},
/**
* Indicates if the input has been touched by the user. If not touched then the
* error messages are not displayed because that might be confusing for the
* user. By default this is set to true because that's expected in the row
* modal. When using it as a form that is first rendered in an empty state, then
* this value should be false.
*/
touched: {
type: Boolean,
required: false,
default: true,
},
rowIsCreated: {
type: Boolean,
required: false,
default: () => true,
},
},
methods: {
/**
* Extends the getValidationError and add the required error message if this
* field value is required.
*/
getValidationError(value) {
const error = baseField.methods.getValidationError.call(this, value)
if (this.required && error === null) {
const fieldType = this.$registry.get('field', this.field.type)
const empty = fieldType.isEmpty(this.field, value)
if (empty) {
return this.$t('error.requiredField')
}
}
return error
},
touch() {
if (!this.touched) {
this.$emit('touched')
}
},
},
}