File tree Expand file tree Collapse file tree 6 files changed +82
-0
lines changed
projects/customizations-example/src/app Expand file tree Collapse file tree 6 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 262
262
< div > Latest message text: {{ latestMessageText }}</ div >
263
263
< div > Latest message id: {{ latestMessage?.id }}</ div >
264
264
</ 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 {
36
36
MessageActionsService ,
37
37
ChannelPreviewInfoContext ,
38
38
MessageReactionsSelectorComponent ,
39
+ MessageTextContext ,
39
40
} from 'stream-chat-angular' ;
40
41
import { environment } from '../environments/environment' ;
41
42
@@ -95,6 +96,8 @@ export class AppComponent implements AfterViewInit {
95
96
private emptyMainMessageListTemplate ! : TemplateRef < void > ;
96
97
@ViewChild ( 'emptyThreadMessageList' )
97
98
private emptyThreadMessageListTemplate ! : TemplateRef < void > ;
99
+ @ViewChild ( 'messageText' )
100
+ messageTextTemplate ! : TemplateRef < MessageTextContext > ;
98
101
99
102
constructor (
100
103
private chatService : ChatClientService ,
@@ -189,6 +192,9 @@ export class AppComponent implements AfterViewInit {
189
192
this . customTemplatesService . emptyThreadMessageListPlaceholder$ . next (
190
193
this . emptyThreadMessageListTemplate
191
194
) ;
195
+ this . customTemplatesService . messageTextTemplate$ . next (
196
+ this . messageTextTemplate
197
+ ) ;
192
198
}
193
199
194
200
inviteClicked ( channel : Channel ) {
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import { PickerModule } from '@ctrl/ngx-emoji-mart';
12
12
import { MessageActionComponent } from './message-action/message-action.component' ;
13
13
import { ThreadHeaderComponent } from './thread-header/thread-header.component' ;
14
14
import { IconComponent } from './icon/icon.component' ;
15
+ import { MessageTextComponent } from './message-text/message-text.component' ;
15
16
16
17
@NgModule ( {
17
18
declarations : [
@@ -20,6 +21,7 @@ import { IconComponent } from './icon/icon.component';
20
21
MessageActionComponent ,
21
22
ThreadHeaderComponent ,
22
23
IconComponent ,
24
+ MessageTextComponent ,
23
25
] ,
24
26
imports : [
25
27
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