Skip to content

Commit fbdc38f

Browse files
committed
add truncate pipe & fix components profile/program/project description issue
1 parent 561f3f8 commit fbdc38f

34 files changed

Lines changed: 193 additions & 79 deletions
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/** @format */
2+
3+
import { Pipe, PipeTransform } from "@angular/core";
4+
5+
@Pipe({
6+
name: "truncate",
7+
standalone: true,
8+
})
9+
export class TruncatePipe implements PipeTransform {
10+
transform(value: string | null | undefined, limit = 30, ellipsis = "..."): string {
11+
if (!value) return "";
12+
return value.length > limit ? value.slice(0, limit) + ellipsis : value;
13+
}
14+
}

projects/social_platform/src/app/office/features/detail/detail.component.html

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,7 @@
221221
<div class="project__item--info">
222222
<app-avatar [url]="project.imageAddress" [size]="40"></app-avatar>
223223
<p class="text-body-12">
224-
{{
225-
project.name.length > 20
226-
? project.name.slice(0, 16) + "..."
227-
: project.name
228-
}}
224+
{{ project.name | truncate: 20 }}
229225
</p>
230226
</div>
231227
<app-input

projects/social_platform/src/app/office/features/detail/detail.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { ProfileService } from "projects/skills/src/app/profile/services/profile
2626
import { SnackbarService } from "@ui/services/snackbar.service";
2727
import { ApproveSkillComponent } from "../approve-skill/approve-skill.component";
2828
import { ProjectsService } from "@office/projects/services/projects.service";
29+
import { TruncatePipe } from "projects/core/src/lib/pipes/truncate.pipe";
2930

3031
@Component({
3132
selector: "app-detail",
@@ -42,6 +43,7 @@ import { ProjectsService } from "@office/projects/services/projects.service";
4243
TooltipComponent,
4344
InputComponent,
4445
ApproveSkillComponent,
46+
TruncatePipe,
4547
],
4648
standalone: true,
4749
})

projects/social_platform/src/app/office/features/info-card/info-card.component.html

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,17 @@
7777
</ng-template>
7878

7979
<ng-template #regularCardHeader>
80-
@if (type === 'projects' || type === 'invite') { @if (info.name) { @if(info.name.length > 12) {
81-
<p class="text-body-12 card__name">{{ info.name.slice(0, 12) }}...</p>
82-
} @else {
83-
<p class="text-body-12 card__name">{{ info.name }}</p>
84-
} } @if (industryService.industries | async; as industries) {
80+
@if (type === 'projects' || type === 'invite') { @if (info.name) {
81+
<p class="text-body-12 card__name">{{ info.name | truncate: 12 }}</p>
82+
} @if (industryService.industries | async; as industries) {
8583
<p class="text-body-6 card__industry">
8684
@if (industryService.getIndustry(industries, info?.industry!); as industry) {
8785
<span>{{ industry?.name }}</span>
8886
}
8987
</p>
9088
} } @else {
91-
<p class="text-body-12 card__name">{{ info?.firstName }}</p>
92-
<p class="text-body-12 card__name">{{ info?.lastName }}</p>
89+
<p class="text-body-12 card__name">{{ info?.firstName | truncate: 10 }}</p>
90+
<p class="text-body-12 card__name">{{ info?.lastName | truncate: 10 }}</p>
9391
@if (info?.speciality) {
9492
<p class="text-body-6 card__additional-info">
9593
{{ info?.speciality }}
@@ -116,7 +114,7 @@
116114
@for ( skill of info?.skills?.slice(0, 3); track skill.id ) {
117115
<li class="card__skill">
118116
<app-tag [color]="skill.category.name.includes('Soft skills') ? 'soft' : 'complete'">{{
119-
skill.name.length > 10 ? skill.name.slice(0, 10) + " " + "..." : skill.name
117+
skill.name | truncate: 10
120118
}}</app-tag>
121119
</li>
122120
}

projects/social_platform/src/app/office/features/info-card/info-card.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { ClickOutsideModule } from "ng-click-outside";
1212
import { Router, RouterLink } from "@angular/router";
1313
import { TagComponent } from "@ui/components/tag/tag.component";
1414
import { YearsFromBirthdayPipe } from "@corelib";
15+
import { TruncatePipe } from "projects/core/src/lib/pipes/truncate.pipe";
1516

1617
/**
1718
* Компонент карточки информации с разным наполнением, в зависимости от контекста
@@ -31,6 +32,7 @@ import { YearsFromBirthdayPipe } from "@corelib";
3132
ClickOutsideModule,
3233
TagComponent,
3334
YearsFromBirthdayPipe,
35+
TruncatePipe,
3436
RouterLink,
3537
],
3638
})

projects/social_platform/src/app/office/features/invite-card/invite-card.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="invite">
55
<div class="invite__info">
66
<div class="invite__top">
7-
<p class="text-body-12">{{ invite.role }}</p>
7+
<p class="text-body-12">{{ invite.role | truncate: 30 }}</p>
88
@if(invite.isAccepted === null) {
99
<p class="text-body-12 invite__status">• приглашение отправлено</p>
1010
}
@@ -13,7 +13,7 @@
1313
<div class="invite__user">
1414
<app-avatar [url]="invite.user.avatar" [size]="40"></app-avatar>
1515
<h3 class="text-body-12 invite__role">
16-
{{ invite.user.firstName }} {{ invite.user.lastName }}
16+
{{ invite.user.firstName | truncate: 15 }} {{ invite.user.lastName | truncate: 15 }}
1717
</h3>
1818
</div>
1919
</div>

projects/social_platform/src/app/office/features/invite-card/invite-card.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { IconComponent, ButtonComponent, SelectComponent, InputComponent } from
99
import { ModalComponent } from "@ui/components/modal/modal.component";
1010
import { rolesMembersList } from "projects/core/src/consts/lists/roles-members-list.const";
1111
import { AvatarComponent } from "@ui/components/avatar/avatar.component";
12+
import { TruncatePipe } from "projects/core/src/lib/pipes/truncate.pipe";
1213

1314
/**
1415
* Компонент карточки приглашения в команду или проект
@@ -38,6 +39,7 @@ import { AvatarComponent } from "@ui/components/avatar/avatar.component";
3839
ModalComponent,
3940
SelectComponent,
4041
ControlErrorPipe,
42+
TruncatePipe,
4143
ReactiveFormsModule,
4244
InputComponent,
4345
AvatarComponent,

projects/social_platform/src/app/office/features/news-card/news-card.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[alt]="feedItem.name"
99
/>
1010
<p class="card__name text-body-10">
11-
{{ feedItem.name.length > 30 ? feedItem.name.slice(0, 26) + "..." : feedItem.name }}
11+
{{ feedItem.name | truncate: 30 }}
1212
</p>
1313
</a>
1414
@if (isOwner) {

projects/social_platform/src/app/office/features/news-card/news-card.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { TextareaComponent } from "@ui/components/textarea/textarea.component";
3333
import { ClickOutsideModule } from "ng-click-outside";
3434
import { CarouselComponent } from "@office/shared/carousel/carousel.component";
3535
import { ImgCardComponent } from "@office/shared/img-card/img-card.component";
36+
import { TruncatePipe } from "projects/core/src/lib/pipes/truncate.pipe";
3637

3738
/**
3839
* Компонент карточки новости
@@ -55,6 +56,7 @@ import { ImgCardComponent } from "@office/shared/img-card/img-card.component";
5556
ButtonComponent,
5657
DayjsPipe,
5758
FormControlPipe,
59+
TruncatePipe,
5860
ParseLinksPipe,
5961
ParseBreaksPipe,
6062
CarouselComponent,

projects/social_platform/src/app/office/features/vacancy-card/vacancy-card.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<div class="vacancy">
55
<div class="vacancy__info">
66
<div class="vacancy__info--text">
7-
<h3 class="text-body-12 vacancy__role">{{ vacancy.role }}</h3>
7+
<h3 class="text-body-12 vacancy__role">{{ vacancy.role | truncate: 20 }}</h3>
88
</div>
99
<div class="vacancy__skills">
1010
@if (vacancy.requiredSkills.length) { @for (skill of vacancy.requiredSkills.slice(0, 5); track

0 commit comments

Comments
 (0)