Skip to content

Commit e175080

Browse files
committed
chore(app): update PokemonDetailComponent layout and PokemonCardComponent behavior
- Add `PokemonSearchInputComponent` to `PokemonDetailComponent` layout. - Wrap `PokemonCardComponent` content with a link to the Pokémon details page. - Adjust maximum error limit for bundle size in `angular.json`.
1 parent a8dac3d commit e175080

6 files changed

Lines changed: 38 additions & 18 deletions

File tree

angular.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
{
4747
"type": "initial",
4848
"maximumWarning": "500kB",
49-
"maximumError": "1MB"
49+
"maximumError": "600kB"
5050
},
5151
{
5252
"type": "anyComponentStyle",

src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@let pokemon = pokemonResource.value();
22
@if (pokemon) {
3+
<div class="pokemon-search-input__container">
4+
<app-pokemon-search-input />
5+
</div>
36
<app-pokemon-battlefield [pokemon]="pokemon" [pokemonBattleEvent]="pokemonBattleEvent" />
47
<div class="pokedex__container">
58
<app-pokedex [pokemon]="pokemon" [pokemonBattleEvent]="pokemonBattleEvent" />

src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ $pokedex-container-offset: 60px;
88

99
align-items: center;
1010

11+
.pokemon-search-input__container {
12+
margin: 0 0 var(--spacing-r-4xl) 0;
13+
}
14+
1115
.pokedex__container {
1216
margin: var(--spacing-r-4xl) 0;
1317

src/app/features/pokemon/pages/pokemon-detail/pokemon-detail.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ import { translations } from '~locale/translations';
1616
import { AlertService } from '~core/services/ui/alert.service';
1717
import { toSignal } from '@angular/core/rxjs-interop';
1818
import { map } from 'rxjs';
19+
import { PokemonSearchInputComponent } from '~shared/components/pokemon-search-input/pokemon-search-input.component';
1920

2021
@Component({
2122
selector: 'app-pokemon-detail',
22-
imports: [PokemonBattlefieldComponent, PokedexComponent],
23+
imports: [PokemonBattlefieldComponent, PokedexComponent, PokemonSearchInputComponent],
2324
templateUrl: './pokemon-detail.component.html',
2425
styleUrl: './pokemon-detail.component.scss',
2526
changeDetection: ChangeDetectionStrategy.OnPush,

src/app/features/user/my-pokemon/components/pokemon-card/pokemon-card.component.html

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
@if (!loading()) {
2-
<app-card>
3-
<ng-container ngProjectAs="heading">
4-
<h2 class="card__heading">{{ pokemon()?.name | firstTitleCase }}</h2>
5-
</ng-container>
6-
<ng-container ngProjectAs="body">
7-
<div class="pokemon__image-container">
8-
<!-- eslint-disable-next-line @angular-eslint/template/prefer-ngsrc -->
9-
<img alt="pokemon" i18n-alt width="100" height="100" [src]="pokemonImage || ''" />
10-
</div>
11-
<p i18n>N.º: {{ pokemon()?.order }}</p>
12-
<p i18n>Height: {{ pokemon()?.height }} dm</p>
13-
<p i18n>Weight: {{ pokemon()?.weight }} hg</p>
14-
</ng-container>
15-
</app-card>
2+
<a class="pokemon__link" [routerLink]="POKEMON_URLS.detail(pokemonId())">
3+
<app-card>
4+
<ng-container ngProjectAs="heading">
5+
<h2 class="card__heading">{{ pokemon()?.name | firstTitleCase }}</h2>
6+
</ng-container>
7+
<ng-container ngProjectAs="body">
8+
<div class="pokemon__image-container">
9+
<!-- eslint-disable-next-line @angular-eslint/template/prefer-ngsrc -->
10+
<img alt="pokemon" i18n-alt width="100" height="100" [src]="pokemonImage || ''" />
11+
</div>
12+
<p i18n>N.º: {{ pokemon()?.order }}</p>
13+
<p i18n>Height: {{ pokemon()?.height }} dm</p>
14+
<p i18n>Weight: {{ pokemon()?.weight }} hg</p>
15+
</ng-container>
16+
</app-card>
17+
</a>
1618
} @else {
1719
<app-card>
1820
<ng-container ngProjectAs="heading">

src/app/features/user/my-pokemon/components/pokemon-card/pokemon-card.component.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
import type { OnInit } from '@angular/core';
2-
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
computed,
6+
CUSTOM_ELEMENTS_SCHEMA,
7+
input,
8+
} from '@angular/core';
39
import type { Pokemon } from '~features/pokemon/types/pokemon.type';
410
import { CardComponent } from '~shared/components/card/card.component';
11+
import { POKEMON_URLS } from '~core/constants/urls.constants';
512
import { FirstTitleCasePipe } from '~shared/pipes/first-title-case.pipe';
13+
import { RouterLink } from '@angular/router';
614

715
import '@shoelace-style/shoelace/dist/components/skeleton/skeleton.js';
816

917
@Component({
1018
selector: 'app-pokemon-card',
11-
imports: [CardComponent, FirstTitleCasePipe],
19+
imports: [CardComponent, FirstTitleCasePipe, RouterLink],
1220
templateUrl: './pokemon-card.component.html',
1321
styleUrl: './pokemon-card.component.scss',
1422
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -17,6 +25,8 @@ import '@shoelace-style/shoelace/dist/components/skeleton/skeleton.js';
1725
export class PokemonCardComponent implements OnInit {
1826
readonly pokemon = input<Pokemon>();
1927
readonly loading = input<boolean>();
28+
readonly POKEMON_URLS = POKEMON_URLS;
29+
readonly pokemonId = computed<string>(() => String(this.pokemon()?.id));
2030

2131
pokemonImage: string | undefined;
2232

0 commit comments

Comments
 (0)