From 54bce7762e5eb20462456d4b9c398792e140137a Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Thu, 30 Apr 2020 02:12:01 -0400 Subject: [PATCH] added gototop on profile, fix #259 --- .../bookmarks/bookmarks.component.ts | 11 ++++++ .../direct-messages.component.ts | 11 ++++++ .../favorites/favorites.component.ts | 11 ++++++ .../manage-account.component.html | 10 ++--- .../manage-account.component.ts | 37 ++++++++++++++++++- .../mentions/mentions.component.ts | 11 ++++++ .../notifications/notifications.component.ts | 11 ++++++ 7 files changed, 95 insertions(+), 7 deletions(-) diff --git a/src/app/components/floating-column/manage-account/bookmarks/bookmarks.component.ts b/src/app/components/floating-column/manage-account/bookmarks/bookmarks.component.ts index 42e3010d..0b148cb7 100644 --- a/src/app/components/floating-column/manage-account/bookmarks/bookmarks.component.ts +++ b/src/app/components/floating-column/manage-account/bookmarks/bookmarks.component.ts @@ -127,4 +127,15 @@ export class BookmarksComponent implements OnInit { browseThread(openThreadEvent: OpenThreadEvent): void { this.browseThreadEvent.next(openThreadEvent); } + + applyGoToTop(): boolean { + const stream = this.statustream.nativeElement as HTMLElement; + setTimeout(() => { + stream.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }, 0); + return false; + } } diff --git a/src/app/components/floating-column/manage-account/direct-messages/direct-messages.component.ts b/src/app/components/floating-column/manage-account/direct-messages/direct-messages.component.ts index da6d00f2..c03de70f 100644 --- a/src/app/components/floating-column/manage-account/direct-messages/direct-messages.component.ts +++ b/src/app/components/floating-column/manage-account/direct-messages/direct-messages.component.ts @@ -121,6 +121,17 @@ export class DirectMessagesComponent implements OnInit { browseThread(openThreadEvent: OpenThreadEvent): void { this.browseThreadEvent.next(openThreadEvent); } + + applyGoToTop(): boolean { + const stream = this.statustream.nativeElement as HTMLElement; + setTimeout(() => { + stream.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }, 0); + return false; + } } class ConversationWrapper { diff --git a/src/app/components/floating-column/manage-account/favorites/favorites.component.ts b/src/app/components/floating-column/manage-account/favorites/favorites.component.ts index 6f5dfd83..89e8e4af 100644 --- a/src/app/components/floating-column/manage-account/favorites/favorites.component.ts +++ b/src/app/components/floating-column/manage-account/favorites/favorites.component.ts @@ -128,4 +128,15 @@ export class FavoritesComponent implements OnInit { browseThread(openThreadEvent: OpenThreadEvent): void { this.browseThreadEvent.next(openThreadEvent); } + + applyGoToTop(): boolean { + const stream = this.statustream.nativeElement as HTMLElement; + setTimeout(() => { + stream.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }, 0); + return false; + } } diff --git a/src/app/components/floating-column/manage-account/manage-account.component.html b/src/app/components/floating-column/manage-account/manage-account.component.html index 4ad23889..f1916c76 100644 --- a/src/app/components/floating-column/manage-account/manage-account.component.html +++ b/src/app/components/floating-column/manage-account/manage-account.component.html @@ -35,20 +35,20 @@ - - - - - \ No newline at end of file diff --git a/src/app/components/floating-column/manage-account/manage-account.component.ts b/src/app/components/floating-column/manage-account/manage-account.component.ts index c6fdfe69..b417fcae 100644 --- a/src/app/components/floating-column/manage-account/manage-account.component.ts +++ b/src/app/components/floating-column/manage-account/manage-account.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core'; +import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { faAt, faUserPlus } from "@fortawesome/free-solid-svg-icons"; import { faBell, faEnvelope, faUser, faStar, faBookmark } from "@fortawesome/free-regular-svg-icons"; import { Subscription } from 'rxjs'; @@ -10,6 +10,11 @@ import { MastodonWrapperService } from '../../../services/mastodon-wrapper.servi import { Account } from "../../../services/models/mastodon.interfaces"; import { NotificationService } from '../../../services/notification.service'; import { AccountInfo } from '../../../states/accounts.state'; +import { BookmarksComponent } from './bookmarks/bookmarks.component'; +import { NotificationsComponent } from './notifications/notifications.component'; +import { MentionsComponent } from './mentions/mentions.component'; +import { DirectMessagesComponent } from './direct-messages/direct-messages.component'; +import { FavoritesComponent } from './favorites/favorites.component'; @Component({ @@ -122,8 +127,36 @@ export class ManageAccountComponent implements OnInit, OnDestroy { } } - loadSubPanel(subpanel: 'account' | 'notifications' | 'mentions' | 'dm' | 'favorites'): boolean { + @ViewChild('bookmarks') bookmarksComp:BookmarksComponent; + @ViewChild('notifications') notificationsComp:NotificationsComponent; + @ViewChild('mentions') mentionsComp:MentionsComponent; + @ViewChild('dm') dmComp:DirectMessagesComponent; + @ViewChild('favorites') favoritesComp:FavoritesComponent; + + loadSubPanel(subpanel: 'account' | 'notifications' | 'mentions' | 'dm' | 'favorites' | 'bookmarks'): boolean { + if(this.subPanel === subpanel){ + switch(subpanel){ + case 'bookmarks': + this.bookmarksComp.applyGoToTop(); + break; + case 'notifications': + this.notificationsComp.applyGoToTop(); + break; + case 'mentions': + this.mentionsComp.applyGoToTop(); + break; + case 'dm': + this.dmComp.applyGoToTop(); + break; + case 'favorites': + this.favoritesComp.applyGoToTop(); + break; + } + console.log('gototop'); + } + this.subPanel = subpanel; + return false; } diff --git a/src/app/components/floating-column/manage-account/mentions/mentions.component.ts b/src/app/components/floating-column/manage-account/mentions/mentions.component.ts index b90a56a2..cee550d4 100644 --- a/src/app/components/floating-column/manage-account/mentions/mentions.component.ts +++ b/src/app/components/floating-column/manage-account/mentions/mentions.component.ts @@ -146,4 +146,15 @@ export class MentionsComponent implements OnInit, OnDestroy { browseThread(openThreadEvent: OpenThreadEvent): void { this.browseThreadEvent.next(openThreadEvent); } + + applyGoToTop(): boolean { + const stream = this.statustream.nativeElement as HTMLElement; + setTimeout(() => { + stream.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }, 0); + return false; + } } diff --git a/src/app/components/floating-column/manage-account/notifications/notifications.component.ts b/src/app/components/floating-column/manage-account/notifications/notifications.component.ts index 35f4fe12..0753858b 100644 --- a/src/app/components/floating-column/manage-account/notifications/notifications.component.ts +++ b/src/app/components/floating-column/manage-account/notifications/notifications.component.ts @@ -135,6 +135,17 @@ export class NotificationsComponent implements OnInit, OnDestroy { browseThread(openThreadEvent: OpenThreadEvent): void { this.browseThreadEvent.next(openThreadEvent); } + + applyGoToTop(): boolean { + const stream = this.statustream.nativeElement as HTMLElement; + setTimeout(() => { + stream.scrollTo({ + top: 0, + behavior: 'smooth' + }); + }, 0); + return false; + } } export class NotificationWrapper {