summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-08-11 20:13:57 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-08-11 20:13:57 +0900
commit7dd193636c1c072a1fb2f5c6cafe02c6e5f096ce (patch)
treeb4384cae3072a25fa198b222a6215150a548d264 /src/client
parentユーザー名の突き抜けの修正 (#5261) (diff)
downloadsharkey-7dd193636c1c072a1fb2f5c6cafe02c6e5f096ce.tar.gz
sharkey-7dd193636c1c072a1fb2f5c6cafe02c6e5f096ce.tar.bz2
sharkey-7dd193636c1c072a1fb2f5c6cafe02c6e5f096ce.zip
Fix #5260
Diffstat (limited to 'src/client')
-rw-r--r--src/client/app/common/scripts/paging.ts20
-rw-r--r--src/client/app/desktop/views/components/notifications.vue4
2 files changed, 18 insertions, 6 deletions
diff --git a/src/client/app/common/scripts/paging.ts b/src/client/app/common/scripts/paging.ts
index 289a72a6ab..b4f2ec1ae1 100644
--- a/src/client/app/common/scripts/paging.ts
+++ b/src/client/app/common/scripts/paging.ts
@@ -44,13 +44,21 @@ export default (opts) => ({
return window.scrollY <= 8;
};
- window.addEventListener('scroll', this.onWindowScroll, { passive: true });
+ window.addEventListener('scroll', this.onScroll, { passive: true });
+ } else if (opts.isContainer) {
+ this.isScrollTop = () => {
+ return this.$el.scrollTop <= 8;
+ };
+
+ this.$el.addEventListener('scroll', this.onScroll, { passive: true });
}
},
beforeDestroy() {
if (opts.captureWindowScroll) {
- window.removeEventListener('scroll', this.onWindowScroll);
+ window.removeEventListener('scroll', this.onScroll);
+ } else if (opts.isContainer) {
+ this.$el.removeEventListener('scroll', this.onScroll);
}
},
@@ -152,7 +160,7 @@ export default (opts) => ({
this.queue = [];
},
- onWindowScroll() {
+ onScroll() {
if (this.isScrollTop()) {
this.onTop();
}
@@ -163,8 +171,10 @@ export default (opts) => ({
// http://d.hatena.ne.jp/favril/20091105/1257403319
if (this.$el.offsetHeight == 0) return;
- const current = window.scrollY + window.innerHeight;
- if (current > document.body.offsetHeight - 8) this.onBottom();
+ const bottomPosition = opts.isContainer ? this.$el.scrollHeight : document.body.offsetHeight;
+
+ const currentBottomPosition = opts.isContainer ? this.$el.scrollTop + this.$el.clientHeight : window.scrollY + window.innerHeight;
+ if (currentBottomPosition > (bottomPosition - 8)) this.onBottom();
}
},
diff --git a/src/client/app/desktop/views/components/notifications.vue b/src/client/app/desktop/views/components/notifications.vue
index f6f4a5ae5b..a2504abe66 100644
--- a/src/client/app/desktop/views/components/notifications.vue
+++ b/src/client/app/desktop/views/components/notifications.vue
@@ -165,7 +165,9 @@ export default Vue.extend({
i18n: i18n(),
mixins: [
- paging({}),
+ paging({
+ isContainer: true
+ }),
],
props: {