wikijs-fork/client/components/common/user-search.vue

83 lines
1.7 KiB
Vue
Raw Normal View History

2018-04-23 04:27:30 +00:00
<template lang="pug">
v-dialog(v-model='dialogOpen', max-width='650')
v-card
.dialog-header Search User
v-card-text
v-select(
:items='items'
:loading='searchLoading'
:search-input.sync='search'
autocomplete
autofocus
cache-items
chips
clearable
hide-details
item-text='name',
item-value='id',
label='Search users...'
light
multiple
v-model='selectedItems'
)
v-card-actions
v-spacer
v-btn(flat, @click='close', :disabled='loading') Cancel
v-btn(color='primary', dark, @click='setUser', :loading='loading', :disabled='loading')
v-icon(left) assignment_ind
span Select User
</template>
<script>
import searchUsersQuery from 'gql/common-users-query-search.gql'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
loading: false,
searchLoading: false,
search: '',
items: [],
selectedItems: []
}
},
computed: {
dialogOpen: {
get() { return this.value },
set(value) { this.$emit('input', value) }
}
},
methods: {
close() {
this.$emit('input', false)
},
setUser() {
}
},
apollo: {
items: {
query: searchUsersQuery,
variables() {
return {
search: this.search
}
},
skip() {
return !this.search || this.search.length < 2
},
update: (data) => data.upsells.segments,
watchLoading (isLoading) {
this.searchLoading = isLoading
}
}
}
}
</script>