1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-05-17 22:32:02 +00:00
bramw_baserow/web-frontend/modules/database/components/field/FieldCollaboratorDropdown.vue

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

123 lines
3.1 KiB
Vue
Raw Permalink Normal View History

2022-09-06 15:32:12 +00:00
<template>
<div
class="dropdown"
:class="{
'dropdown--floating': !showInput,
'dropdown--disabled': disabled,
2024-10-14 08:47:26 +00:00
'dropdown--large': size === 'large',
'dropdown--error': error,
2022-09-06 15:32:12 +00:00
}"
:tabindex="realTabindex"
@contextmenu.stop
@focusin="show()"
@focusout="focusout($event)"
>
<a
v-if="showInput"
class="select-options__dropdown-selected dropdown__selected"
@click="show()"
>
<div v-if="initialDisplayName">
{{ initialDisplayName }}
</div>
<div v-else-if="hasValue()">
2022-09-06 15:32:12 +00:00
{{ selectedName }}
</div>
2023-09-28 13:39:41 +00:00
<i
v-if="!disabled"
class="dropdown__toggle-icon iconoir-nav-arrow-down"
></i>
2022-09-06 15:32:12 +00:00
</a>
<div
ref="itemsContainer"
class="dropdown__items"
:class="{
hidden: !open,
'dropdown__items--fixed': fixedItemsImmutable,
}"
>
2022-09-06 15:32:12 +00:00
<div v-if="showSearch" class="select__search">
2023-09-28 13:39:41 +00:00
<i class="select__search-icon iconoir-search"></i>
2022-09-06 15:32:12 +00:00
<input
ref="search"
v-model="query"
type="text"
class="select__search-input"
:placeholder="searchText"
tabindex="0"
@keyup="search"
2022-09-06 15:32:12 +00:00
/>
</div>
<ul
ref="items"
v-prevent-parent-scroll
v-auto-overflow-scroll
class="select__items"
:class="{ 'select__items--no-max-height': fixedItemsImmutable }"
tabindex="-1"
@scroll="scroll"
2022-09-06 15:32:12 +00:00
>
<FieldCollaboratorDropdownItem
v-if="showEmptyValue"
:name="''"
:value="null"
:color="''"
></FieldCollaboratorDropdownItem>
<FieldCollaboratorDropdownItem
v-for="collaborator in results"
:key="collaborator.id"
2022-09-06 15:32:12 +00:00
:name="collaborator.name"
:value="collaborator.id"
2022-09-06 15:32:12 +00:00
></FieldCollaboratorDropdownItem>
</ul>
<div v-if="isNotFound" class="select__description">
{{ $t('fieldmultipleCollaboratorsDropdown.notFound') }}
</div>
</div>
</div>
</template>
<script>
import inMemoryPaginatedDropdown from '@baserow/modules/core/mixins/inMemoryPaginatedDropdown'
2022-09-06 15:32:12 +00:00
import FieldCollaboratorDropdownItem from '@baserow/modules/database/components/field/FieldCollaboratorDropdownItem'
export default {
name: 'FieldCollaboratorDropdown',
components: { FieldCollaboratorDropdownItem },
mixins: [inMemoryPaginatedDropdown],
2022-09-06 15:32:12 +00:00
props: {
collaborators: {
type: Array,
required: true,
},
showEmptyValue: {
type: Boolean,
required: false,
default: true,
},
pageSize: {
type: Number,
required: false,
default: 100, // override default pageSize of 20
},
2022-09-06 15:32:12 +00:00
},
computed: {
isNotFound() {
return this.results.length === 0 && this.query !== ''
2022-09-06 15:32:12 +00:00
},
},
2023-07-17 19:13:04 +00:00
watch: {
collaborators() {
this.fetch(1, this.query)
},
},
2022-09-06 15:32:12 +00:00
methods: {
filterItems(search) {
return this.collaborators.filter((collaborator) => {
return collaborator.name.toLowerCase().includes(search.toLowerCase())
})
2022-09-06 15:32:12 +00:00
},
},
}
</script>