Skip to content

Commit 11229b9

Browse files
committed
Replace component logic with srcset.
1 parent 60273f0 commit 11229b9

3 files changed

Lines changed: 9 additions & 72 deletions

File tree

src/app/pages-optimized/pokedex-optimized/pokedex.component.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<!-- Main banner -->
22
<div class="banner">
33
<img
4-
[ngSrc]="banner"
4+
ngSrc="/assets/images/pokemon-banner-mobile.webp"
5+
srcset="
6+
/assets/images/pokemon-banner-mobile.webp 576w,
7+
/assets/images/pokemon-banner-mobile-2x.webp 992w,
8+
/assets/images/pokemon-banner.webp 1920w
9+
"
510
placeholder
611
fill
712
priority

src/app/pages-optimized/pokedex-optimized/pokedex.component.ts

Lines changed: 3 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1-
import { Component, Inject, inject, OnInit, PLATFORM_ID } from '@angular/core';
1+
import { Component, inject } from '@angular/core';
22
import { MatButton } from '@angular/material/button';
33
import { PokemonListComponent } from '../../components/pokemon-list/pokemon-list.component';
44
import { MatDialog } from '@angular/material/dialog';
55
import { PopupComponent } from '../../components/popup/popup.component';
66
import { FormComponent } from '../../components/form/form.component';
7-
import {
8-
isPlatformBrowser,
9-
NgOptimizedImage,
10-
provideImgixLoader,
11-
} from '@angular/common';
7+
import { NgOptimizedImage, provideImgixLoader } from '@angular/common';
128
import { BannerGridComponent } from '../../components/banner-grid/banner-grid.component';
13-
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
14-
import { DeviceDetectorService } from 'ngx-device-detector';
159

1610
@Component({
1711
selector: 'app-pokedex',
@@ -29,67 +23,10 @@ import { DeviceDetectorService } from 'ngx-device-detector';
2923
provideImgixLoader('https://ng-pokedex-optimization.netlify.app/'),
3024
],
3125
})
32-
export class PokedexComponent implements OnInit {
26+
export class PokedexComponent {
3327
public hideForm = true;
3428

35-
public banners = {
36-
mobile: '/assets/images/pokemon-banner-mobile.webp',
37-
desktop: '/assets/images/pokemon-banner.webp',
38-
};
39-
40-
// initialising the banner with a default value
41-
public banner = this.banners.mobile;
42-
43-
private breakpointObserver = inject(BreakpointObserver);
4429
private dialog = inject(MatDialog);
45-
private deviceService = inject(DeviceDetectorService);
46-
47-
private isUserAgentMobile = this.deviceService.isMobile();
48-
49-
constructor(@Inject(PLATFORM_ID) private platformId: any) {}
50-
51-
public ngOnInit() {
52-
if (isPlatformBrowser(this.platformId)) {
53-
if (!this.isUserAgentMobile) {
54-
this.banner = this.banners.desktop;
55-
}
56-
57-
// if mobile, skip the banner overwrite and the breakpoint observer logic
58-
if (this.isUserAgentMobile) {
59-
return;
60-
}
61-
62-
// if desktop we also set up breakpoint observers, so that we load the correct banners
63-
// in case the user resizes the browser window
64-
this.breakpointObserver
65-
.observe([
66-
Breakpoints.XSmall,
67-
Breakpoints.Small,
68-
Breakpoints.Medium,
69-
Breakpoints.Large,
70-
Breakpoints.XLarge,
71-
])
72-
.subscribe(result => {
73-
if (result.matches) {
74-
if (result.breakpoints[Breakpoints.XSmall]) {
75-
this.banner = this.banners.mobile;
76-
}
77-
if (result.breakpoints[Breakpoints.Small]) {
78-
this.banner = this.banners.mobile;
79-
}
80-
if (result.breakpoints[Breakpoints.Medium]) {
81-
this.banner = this.banners.desktop;
82-
}
83-
if (result.breakpoints[Breakpoints.Large]) {
84-
this.banner = this.banners.desktop;
85-
}
86-
if (result.breakpoints[Breakpoints.XLarge]) {
87-
this.banner = this.banners.desktop;
88-
}
89-
}
90-
});
91-
}
92-
}
9330

9431
openDialog(): void {
9532
const dialogRef = this.dialog.open(PopupComponent, {

src/index.html

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@
1616
href="https://fonts.googleapis.com/icon?family=Material+Icons"
1717
rel="stylesheet" />
1818
<link rel="preconnect" href="https://ng-pokedex-optimization.netlify.app" />
19-
<link
20-
as="image"
21-
href="https://ng-pokedex-optimization.netlify.app/assets/images/pokemon-banner-mobile.webp"
22-
rel="preload"
23-
fetchpriority="high" />
2419
<link rel="preconnect" href="https://assets.pokemon.com/" />
2520
</head>
2621
<body class="mat-typography">

0 commit comments

Comments
 (0)