mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-25 21:33:41 +00:00
67 lines
2 KiB
JavaScript
67 lines
2 KiB
JavaScript
import selectDropdown from '@baserow/modules/database/mixins/selectDropdown'
|
|
|
|
export default {
|
|
mixins: [selectDropdown],
|
|
computed: {
|
|
groupCollaborators() {
|
|
const group = this.$store.getters['group/get'](this.groupId)
|
|
return group.users
|
|
},
|
|
availableCollaborators() {
|
|
// When converting from a CollaboratorField to another field it can happen
|
|
// that this property is being computed with the value (this.value) of the
|
|
// converted to field type. It can either be null, or not an array. In both cases
|
|
// we can safely return an empty array.
|
|
if (!Array.isArray(this.value)) {
|
|
return []
|
|
}
|
|
const ids = this.value.map((item) => item.id)
|
|
return this.groupCollaborators.filter(
|
|
(item) => !ids.includes(item.user_id)
|
|
)
|
|
},
|
|
},
|
|
methods: {
|
|
/**
|
|
* Removes the provided ID from the current values list and emits an update
|
|
* event with the new values list.
|
|
*/
|
|
removeValue(event, currentValues, itemIdToRemove) {
|
|
const vals = currentValues.filter((item) => item.id !== itemIdToRemove)
|
|
this.$emit('update', vals, currentValues)
|
|
},
|
|
/**
|
|
* Checks if the new value is valid for the field and if
|
|
* so will add it to a new values list. If this new list of values is unequal
|
|
* to the old list of values an update event will be emitted which will result
|
|
* in an API call in order to persist the new value to the field.
|
|
*/
|
|
updateValue(newId, oldValue) {
|
|
if (!oldValue) {
|
|
oldValue = []
|
|
}
|
|
|
|
const groupUser =
|
|
this.groupCollaborators.find(
|
|
(groupUser) => groupUser.user_id === newId
|
|
) || null
|
|
|
|
let newOption = null
|
|
if (groupUser) {
|
|
newOption = {
|
|
id: groupUser.user_id,
|
|
name: groupUser.name,
|
|
}
|
|
}
|
|
|
|
const newValue = [...oldValue]
|
|
if (newOption) {
|
|
newValue.push(newOption)
|
|
}
|
|
|
|
if (JSON.stringify(newValue) !== JSON.stringify(oldValue)) {
|
|
this.$emit('update', newValue, oldValue)
|
|
}
|
|
},
|
|
},
|
|
}
|