diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-02-15 14:52:21 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-02-15 14:52:21 +0900 |
| commit | 957a1149e000943427eafd203fc8d091136a7426 (patch) | |
| tree | 700fbb0edce48d43f426d926ea79c64dcc64bd4f /src/client/app/desktop/views/pages | |
| parent | Merge branch 'develop' of https://github.com/syuilo/misskey into develop (diff) | |
| download | misskey-957a1149e000943427eafd203fc8d091136a7426.tar.gz misskey-957a1149e000943427eafd203fc8d091136a7426.tar.bz2 misskey-957a1149e000943427eafd203fc8d091136a7426.zip | |
検索結果を内部コンポーネントに
Diffstat (limited to 'src/client/app/desktop/views/pages')
| -rw-r--r-- | src/client/app/desktop/views/pages/search.vue | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/src/client/app/desktop/views/pages/search.vue b/src/client/app/desktop/views/pages/search.vue deleted file mode 100644 index fc31673ba8..0000000000 --- a/src/client/app/desktop/views/pages/search.vue +++ /dev/null @@ -1,150 +0,0 @@ -<template> -<mk-ui> - <header :class="$style.header"> - <h1>{{ q }}</h1> - </header> - <p :class="$style.notAvailable" v-if="!fetching && notAvailable">{{ $t('not-available') }}</p> - <p :class="$style.empty" v-if="!fetching && empty"><fa icon="search"/> {{ $t('not-found', { q }) }}</p> - <mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/> -</mk-ui> -</template> - -<script lang="ts"> -import Vue from 'vue'; -import i18n from '../../../i18n'; -import Progress from '../../../common/scripts/loading'; - -const limit = 20; - -export default Vue.extend({ - i18n: i18n('desktop/views/pages/search.vue'), - data() { - return { - fetching: true, - moreFetching: false, - existMore: false, - offset: 0, - empty: false, - notAvailable: false - }; - }, - watch: { - $route: 'fetch' - }, - computed: { - q(): string { - return this.$route.query.q; - } - }, - mounted() { - document.addEventListener('keydown', this.onDocumentKeydown); - window.addEventListener('scroll', this.onScroll, { passive: true }); - - this.fetch(); - }, - beforeDestroy() { - document.removeEventListener('keydown', this.onDocumentKeydown); - window.removeEventListener('scroll', this.onScroll); - }, - methods: { - onDocumentKeydown(e) { - if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') { - if (e.which == 84) { // t - (this.$refs.timeline as any).focus(); - } - } - }, - fetch() { - this.fetching = true; - Progress.start(); - - (this.$refs.timeline as any).init(() => new Promise((res, rej) => { - this.$root.api('notes/search', { - limit: limit + 1, - offset: this.offset, - query: this.q - }).then(notes => { - if (notes.length == 0) this.empty = true; - if (notes.length == limit + 1) { - notes.pop(); - this.existMore = true; - } - res(notes); - this.fetching = false; - Progress.done(); - }, (e: string) => { - this.fetching = false; - Progress.done(); - if (e === 'searching not available') this.notAvailable = true; - }); - })); - }, - more() { - this.offset += limit; - - const promise = this.$root.api('notes/search', { - limit: limit + 1, - offset: this.offset, - query: this.q - }); - - promise.then(notes => { - if (notes.length == limit + 1) { - notes.pop(); - } else { - this.existMore = false; - } - for (const n of notes) { - (this.$refs.timeline as any).append(n); - } - this.moreFetching = false; - }); - - return promise; - } - } -}); -</script> - -<style lang="stylus" module> -.header - width 100% - max-width 600px - margin 0 auto - color #555 - -.notes - max-width 600px - margin 0 auto - border solid 1px rgba(#000, 0.075) - border-radius 6px - overflow hidden - -.empty - display block - margin 0 auto - padding 32px - max-width 400px - text-align center - color #999 - - > [data-icon] - display block - margin-bottom 16px - font-size 3em - color #ccc - -.notAvailable - display block - margin 0 auto - padding 32px - max-width 400px - text-align center - color #999 - - > [data-icon] - display block - margin-bottom 16px - font-size 3em - color #ccc -</style> |