Skip to content

Commit 675ce47

Browse files
committed
feat: implement scrollUp utility and integrate across components
1 parent 66eed62 commit 675ce47

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

src/app/components/article-list/article-list.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { HttpErrorResponse } from '@angular/common/http'
2222
import { FeedService } from '../../services/feed-service'
2323
import { Tag } from '../../entities/tag/tag.types'
2424
import { PageService } from '../../services/page-service'
25+
import { scrollUp } from '../../../utils'
2526

2627
@Component({
2728
selector: 'app-article-list',
@@ -49,11 +50,7 @@ import { PageService } from '../../services/page-service'
4950
export class ArticleList {
5051
constructor() {
5152
effect(() => {
52-
if (!this.articles().length) {
53-
return
54-
}
55-
const page = document.querySelector('.page-content')
56-
page?.scroll({ top: 0, behavior: 'smooth' })
53+
scrollUp({ trigger: !!this.articles().length })
5754
})
5855
}
5956
router = inject(Router)

src/app/pages/subscriptions/subscriptions-page.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'
1+
import { Component, DestroyRef, effect, inject, OnInit, signal } from '@angular/core'
22
import { MatCardModule } from '@angular/material/card'
33
import { FeedService } from '../../services/feed-service'
44
import { catchError, combineLatest, of, switchMap } from 'rxjs'
@@ -17,6 +17,7 @@ import { LinkTrimPipe } from '../../pipes/link-trim-pipe'
1717
import { Paginator } from '../../components/paginator/paginator'
1818
import { PageService } from '../../services/page-service'
1919
import { TitleService } from '../../services/title-service'
20+
import { scrollUp } from '../../../utils'
2021

2122
@Component({
2223
selector: 'app-subscriptions',
@@ -36,6 +37,12 @@ import { TitleService } from '../../services/title-service'
3637
styleUrl: './subscriptions-page.component.css',
3738
})
3839
export class SubscriptionsPage implements OnInit {
40+
constructor() {
41+
effect(() => {
42+
scrollUp({ trigger: !!this.feeds().length })
43+
})
44+
}
45+
3946
feedService = inject(FeedService)
4047
pageService = inject(PageService)
4148
readonly dialog = inject(MatDialog)
@@ -74,6 +81,7 @@ export class SubscriptionsPage implements OnInit {
7481

7582
dialogRef.afterClosed().subscribe((result) => {
7683
console.log('The dialog was closed', result)
84+
this.pageService.setCurrentPage(1)
7785
})
7886
}
7987

src/app/pages/tags/tags-page.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export class TagsPage implements OnInit {
6666

6767
dialogRef.afterClosed().subscribe((result) => {
6868
console.log('The dialog was closed', result)
69+
this.pageService.setCurrentPage(1)
6970
})
7071
}
7172

src/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { scrollUp } from './scrollUp'

src/utils/scrollUp.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export function scrollUp({ trigger }: { trigger: boolean }) {
2+
if (!trigger) {
3+
return
4+
}
5+
const page = document.querySelector('.page-content')
6+
page?.scroll({ top: 0, behavior: 'smooth' })
7+
}

0 commit comments

Comments
 (0)