File tree Expand file tree Collapse file tree
projects/customizations-example/src/app Expand file tree Collapse file tree Original file line number Diff line number Diff line change 262262 < div > Latest message text: {{ latestMessageText }}</ div >
263263 < div > Latest message id: {{ latestMessage?.id }}</ div >
264264</ ng-template >
265+
266+ < ng-template
267+ #messageText
268+ let-message ="message "
269+ let-shouldTranslate ="shouldTranslate "
270+ let-isQuoted ="isQuoted "
271+ >
272+ < app-message-text
273+ [message] ="message "
274+ [shouldTranslate] ="shouldTranslate "
275+ [isQuoted] ="isQuoted "
276+ > </ app-message-text >
277+ </ ng-template >
Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ import {
3636 MessageActionsService ,
3737 ChannelPreviewInfoContext ,
3838 MessageReactionsSelectorComponent ,
39+ MessageTextContext ,
3940} from 'stream-chat-angular' ;
4041import { environment } from '../environments/environment' ;
4142
@@ -95,6 +96,8 @@ export class AppComponent implements AfterViewInit {
9596 private emptyMainMessageListTemplate ! : TemplateRef < void > ;
9697 @ViewChild ( 'emptyThreadMessageList' )
9798 private emptyThreadMessageListTemplate ! : TemplateRef < void > ;
99+ @ViewChild ( 'messageText' )
100+ messageTextTemplate ! : TemplateRef < MessageTextContext > ;
98101
99102 constructor (
100103 private chatService : ChatClientService ,
@@ -189,6 +192,9 @@ export class AppComponent implements AfterViewInit {
189192 this . customTemplatesService . emptyThreadMessageListPlaceholder$ . next (
190193 this . emptyThreadMessageListTemplate
191194 ) ;
195+ this . customTemplatesService . messageTextTemplate$ . next (
196+ this . messageTextTemplate
197+ ) ;
192198 }
193199
194200 inviteClicked ( channel : Channel ) {
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import { PickerModule } from '@ctrl/ngx-emoji-mart';
1212import { MessageActionComponent } from './message-action/message-action.component' ;
1313import { ThreadHeaderComponent } from './thread-header/thread-header.component' ;
1414import { IconComponent } from './icon/icon.component' ;
15+ import { MessageTextComponent } from './message-text/message-text.component' ;
1516
1617@NgModule ( {
1718 declarations : [
@@ -20,6 +21,7 @@ import { IconComponent } from './icon/icon.component';
2021 MessageActionComponent ,
2122 ThreadHeaderComponent ,
2223 IconComponent ,
24+ MessageTextComponent ,
2325 ] ,
2426 imports : [
2527 BrowserModule ,
Original file line number Diff line number Diff line change 1+ < ng-container *ngIf ="isQuoted; else regularMessageText ">
2+ <!-- Quoted message are clamped by default, so need there -->
3+ < stream-message-text
4+ [message] ="message "
5+ [shouldTranslate] ="shouldTranslate "
6+ [isQuoted] ="isQuoted "
7+ > </ stream-message-text >
8+ </ ng-container >
9+ < ng-template #regularMessageText >
10+ < div class ="message-text " [class.message-text-expanded] ="isExpanded " #text >
11+ < stream-message-text
12+ [message] ="message "
13+ [shouldTranslate] ="shouldTranslate "
14+ [isQuoted] ="isQuoted "
15+ > </ stream-message-text >
16+ </ div >
17+ <!-- 5px diff is due to Firefox issue -->
18+ < button
19+ [class.visible] ="text.scrollHeight - text.clientHeight > 5 || isExpanded "
20+ (click) ="isExpanded = !isExpanded "
21+ >
22+ {{ "Show" + (isExpanded ? " less" : " more") }}
23+ </ button >
24+ </ ng-template >
Original file line number Diff line number Diff line change 1+ .message-text {
2+ overflow : hidden ;
3+ display : -webkit-box ;
4+ -webkit-line-clamp : 5 ;
5+ line-clamp : 5 ;
6+ -webkit-box-orient : vertical ;
7+ }
8+
9+ .message-text.message-text-expanded {
10+ display : block ;
11+ }
12+
13+ button {
14+ display : none ;
15+
16+ & .visible {
17+ display : block ;
18+ }
19+ }
Original file line number Diff line number Diff line change 1+ import { Component , Input } from '@angular/core' ;
2+ import { MessageResponseBase } from 'stream-chat' ;
3+ import { DefaultStreamChatGenerics , StreamMessage } from 'stream-chat-angular' ;
4+
5+ @Component ( {
6+ selector : 'app-message-text' ,
7+ templateUrl : './message-text.component.html' ,
8+ styleUrls : [ './message-text.component.scss' ] ,
9+ } )
10+ export class MessageTextComponent {
11+ @Input ( ) message :
12+ | StreamMessage < DefaultStreamChatGenerics >
13+ | undefined
14+ | MessageResponseBase < DefaultStreamChatGenerics > ;
15+ @Input ( ) isQuoted : boolean = false ;
16+ @Input ( ) shouldTranslate : boolean = false ;
17+ isExpanded = false ;
18+ }
You can’t perform that action at this time.
0 commit comments