aboutsummaryrefslogtreecommitdiff
path: root/src/components/lists_user_search
diff options
context:
space:
mode:
authorAlexander Tumin <iamtakingiteasy@eientei.org>2022-08-06 17:26:43 +0300
committerAlexander Tumin <iamtakingiteasy@eientei.org>2022-08-06 17:56:54 +0300
commit171f6f08943dd1d87120df3e4894ddcfd5e1d246 (patch)
tree0ee81442d29f9fa166add813dcf81046995593cf /src/components/lists_user_search
parent610720f164dc9fcf36f9df33bddec5ac9c654e1e (diff)
Lists implementation
Diffstat (limited to 'src/components/lists_user_search')
-rw-r--r--src/components/lists_user_search/lists_user_search.js46
-rw-r--r--src/components/lists_user_search/lists_user_search.vue45
2 files changed, 91 insertions, 0 deletions
diff --git a/src/components/lists_user_search/lists_user_search.js b/src/components/lists_user_search/lists_user_search.js
new file mode 100644
index 00000000..5798841a
--- /dev/null
+++ b/src/components/lists_user_search/lists_user_search.js
@@ -0,0 +1,46 @@
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSearch,
+ faChevronLeft
+} from '@fortawesome/free-solid-svg-icons'
+import { debounce } from 'lodash'
+import Checkbox from '../checkbox/checkbox.vue'
+
+library.add(
+ faSearch,
+ faChevronLeft
+)
+
+const ListsUserSearch = {
+ components: {
+ Checkbox
+ },
+ data () {
+ return {
+ loading: false,
+ query: '',
+ followingOnly: true
+ }
+ },
+ methods: {
+ onInput: debounce(function () {
+ this.search(this.query)
+ }, 2000),
+ search (query) {
+ if (!query) {
+ this.loading = false
+ return
+ }
+
+ this.loading = true
+ this.userIds = []
+ this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts', following: this.followingOnly })
+ .then(data => {
+ this.loading = false
+ this.$emit('results', data.accounts.map(a => a.id))
+ })
+ }
+ }
+}
+
+export default ListsUserSearch
diff --git a/src/components/lists_user_search/lists_user_search.vue b/src/components/lists_user_search/lists_user_search.vue
new file mode 100644
index 00000000..03fb3ba6
--- /dev/null
+++ b/src/components/lists_user_search/lists_user_search.vue
@@ -0,0 +1,45 @@
+<template>
+ <div>
+ <div class="input-wrap">
+ <div class="input-search">
+ <FAIcon
+ class="search-icon fa-scale-110 fa-old-padding"
+ icon="search"
+ />
+ </div>
+ <input
+ ref="search"
+ v-model="query"
+ :placeholder="$t('lists.search')"
+ @input="onInput"
+ >
+ </div>
+ <div class="input-wrap">
+ <Checkbox
+ v-model="followingOnly"
+ @change="onInput"
+ >
+ {{ $t('lists.following_only') }}
+ </Checkbox>
+ </div>
+ </div>
+</template>
+
+<script src="./lists_user_search.js"></script>
+<style lang="scss">
+@import '../../_variables.scss';
+
+.input-wrap {
+ display: flex;
+ margin: 0.7em 0.5em 0.7em 0.5em;
+
+ input {
+ width: 100%;
+ }
+}
+
+.search-icon {
+ margin-right: 0.3em;
+}
+
+</style>