mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-12 16:28:06 +00:00
89 lines
2.3 KiB
Vue
89 lines
2.3 KiB
Vue
<template>
|
|
<Context ref="groupContext" class="select">
|
|
<div class="select-search">
|
|
<i class="select-search-icon fas fa-search"></i>
|
|
<input
|
|
type="text"
|
|
class="select-search-input"
|
|
placeholder="Search views"
|
|
/>
|
|
</div>
|
|
<div v-if="isLoading" class="context-loading">
|
|
<div class="loading"></div>
|
|
</div>
|
|
<ul v-if="!isLoading && groups.length > 0" class="select-items">
|
|
<li v-for="group in groups" :key="group.id" class="select-item">
|
|
<a href="#" class="select-item-link">{{ group.name }}</a>
|
|
<a
|
|
:ref="'groupOptions' + group.id"
|
|
class="select-item-options"
|
|
@click="toggleContext(group.id)"
|
|
>
|
|
<i class="fas fa-ellipsis-v"></i>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<div v-if="!isLoading && groups.length == 0" class="context-description">
|
|
No results found
|
|
</div>
|
|
<Context ref="groupsItemContext">
|
|
<ul class="context-menu">
|
|
<li>
|
|
<a href="#">
|
|
<i class="context-menu-icon fas fa-fw fa-pen"></i>
|
|
Rename group
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#">
|
|
<i class="context-menu-icon fas fa-fw fa-trash"></i>
|
|
Delete group
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</Context>
|
|
<div class="select-footer">
|
|
<a class="select-footer-button" @click="$refs.createGroupModal.show()">
|
|
<i class="fas fa-plus"></i>
|
|
Create group
|
|
</a>
|
|
</div>
|
|
<CreateGroupModal ref="createGroupModal"></CreateGroupModal>
|
|
</Context>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters, mapState } from 'vuex'
|
|
|
|
import CreateGroupModal from '@/components/group/CreateGroupModal'
|
|
|
|
export default {
|
|
name: 'GroupsItemContext',
|
|
components: {
|
|
CreateGroupModal
|
|
},
|
|
data() {
|
|
return {
|
|
open: false
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState({
|
|
groups: state => state.group.items
|
|
}),
|
|
...mapGetters({
|
|
isLoading: 'group/isLoading'
|
|
})
|
|
},
|
|
methods: {
|
|
toggle(...args) {
|
|
this.$store.dispatch('group/loadAll')
|
|
this.$refs.groupContext.toggle(...args)
|
|
},
|
|
toggleContext(groupId) {
|
|
const target = this.$refs['groupOptions' + groupId][0]
|
|
this.$refs.groupsItemContext.toggle(target, 'bottom', 'right', 0)
|
|
}
|
|
}
|
|
}
|
|
</script>
|