|
@@ -0,0 +1,82 @@
|
|
|
+<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>
|