Skip to content

Commit 89b8abe

Browse files
committed
feat(component): add a new feature. For slicing the length of the string (title) to 70, created a pipe (truncate).
1 parent ff26535 commit 89b8abe

File tree

6 files changed

+30
-6
lines changed

6 files changed

+30
-6
lines changed

angular-primeng-app/src/app/components/posts/posts.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="cards-wrapper grid">
33
@for (post of posts; track post) {
44
<a [routerLink]="['post', post.slug]">
5-
<p-card class="post-card" header="{{ post.title | truncate : 70}}">
5+
<p-card class="post-card" header="{{ post.title }}">
66
<ng-template pTemplate="header">
77
<img class="card-image" [src]="post.coverImage.url" [alt]="post.title + ' image'"/>
88
</ng-template>

angular-primeng-app/src/app/components/posts/posts.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ import { CardModule } from 'primeng/card';
66
import { PageInfo, Post } from '../../models/post';
77
import { InfiniteScrollDirective } from "../../directives/infinite-scroll.directive";
88
import { ButtonModule } from "primeng/button";
9-
import { TruncatePipe } from '../../pipes/truncate.pipe';
109

1110
@Component({
1211
selector: 'app-posts',
1312
standalone: true,
14-
imports: [AsyncPipe, RouterLink, CardModule, InfiniteScrollDirective, ButtonModule,TruncatePipe],
13+
imports: [AsyncPipe, RouterLink, CardModule, InfiniteScrollDirective, ButtonModule],
1514
templateUrl: './posts.component.html',
1615
styleUrl: './posts.component.scss'
1716
})

angular-primeng-app/src/app/components/series/series.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="cards-wrapper grid">
44
@for (post of postsInSeries; track post) {
55
<a [routerLink]="['/post', post.slug]">
6-
<p-card class="post-card" header="{{ post.title | truncate : 70 }}">
6+
<p-card class="post-card" header="{{ post.title }}">
77
<ng-template pTemplate="header">
88
<img class="card-image" [src]="post.coverImage.url" [alt]="post.title + ' image'" />
99
</ng-template>

angular-primeng-app/src/app/components/series/series.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ import { BlogService } from '../../services/blog.service';
66
import { CardModule } from 'primeng/card';
77
import { InfiniteScrollDirective } from "../../directives/infinite-scroll.directive";
88
import { ButtonModule } from "primeng/button";
9-
import { TruncatePipe } from '../../pipes/truncate.pipe';
109

1110
@Component({
1211
selector: 'app-series',
1312
standalone: true,
14-
imports: [RouterLink, AsyncPipe, CardModule, InfiniteScrollDirective, ButtonModule,TruncatePipe],
13+
imports: [RouterLink, AsyncPipe, CardModule, InfiniteScrollDirective, ButtonModule],
1514
templateUrl: './series.component.html',
1615
styleUrl: './series.component.scss'
1716
})
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { TruncatePipe } from './truncate.pipe';
2+
3+
describe('TruncatePipe', () => {
4+
it('create an instance', () => {
5+
const pipe = new TruncatePipe();
6+
expect(pipe).toBeTruthy();
7+
});
8+
});
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Pipe, PipeTransform } from '@angular/core';
2+
3+
@Pipe({
4+
name: 'truncate',
5+
standalone: true
6+
})
7+
export class TruncatePipe implements PipeTransform {
8+
isNUll: any[] = [undefined, null, ''];
9+
10+
transform(value: string, maxLength=70): string {
11+
if (this.isNUll.includes(value))
12+
return '';
13+
if (value.length > maxLength)
14+
return value.substring(0, (maxLength-1)).concat('...');
15+
return value;
16+
}
17+
18+
}

0 commit comments

Comments
 (0)