Skip to content

Commit 590ab0b

Browse files
committed
feat(chat): expose attachment header click event
1 parent 6c27d41 commit 590ab0b

2 files changed

Lines changed: 36 additions & 4 deletions

File tree

src/components/chat/chat.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@ import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
77
import IgcChatInputComponent from './chat-input.js';
88
import IgcChatMessageListComponent from './chat-message-list.js';
99
import { styles } from './themes/chat.base.css.js';
10-
import type { IgcMessage, IgcMessageReaction, IgcUser } from './types.js';
10+
import type {
11+
IgcMessage,
12+
IgcMessageAttachment,
13+
IgcMessageReaction,
14+
IgcUser,
15+
} from './types.js';
1116

1217
export interface IgcChatComponentEventMap {
1318
igcMessageSend: CustomEvent<IgcMessage>;
1419
igcTypingChange: CustomEvent<IgcTypingChangeEventArgs>;
20+
igcAttachmentClick: CustomEvent<IgcMessageAttachment>;
1521
}
1622

1723
export interface IgcTypingChangeEventArgs {
@@ -86,6 +92,10 @@ export default class IgcChatComponent extends EventEmitterMixin<
8692
'message-send',
8793
this.handleSendMessage as EventListener
8894
);
95+
this.addEventListener(
96+
'attachment-click',
97+
this.handleAttachmentClick as EventListener
98+
);
8999
}
90100

91101
public override disconnectedCallback() {
@@ -98,6 +108,10 @@ export default class IgcChatComponent extends EventEmitterMixin<
98108
'add-reaction',
99109
this.handleAddReaction as EventListener
100110
);
111+
this.removeEventListener(
112+
'attachment-click',
113+
this.handleAttachmentClick as EventListener
114+
);
101115
}
102116

103117
private handleSendMessage(e: CustomEvent) {
@@ -183,6 +197,11 @@ export default class IgcChatComponent extends EventEmitterMixin<
183197
});
184198
}
185199

200+
private handleAttachmentClick(e: CustomEvent) {
201+
const attachmentArgs = e.detail.attachment;
202+
this.emitEvent('igcAttachmentClick', { detail: attachmentArgs });
203+
}
204+
186205
protected override render() {
187206
return html`
188207
<div class="chat-container">

src/components/chat/message-attachments.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,21 @@ export class IgcMessageAttachmentsComponent extends LitElement {
6464
this.previewImage = '';
6565
}
6666

67-
private preventToggle(e: CustomEvent) {
67+
private handleToggle(e: CustomEvent, attachment: IgcMessageAttachment) {
68+
this.handleAttachmentClick(attachment);
6869
e.preventDefault();
6970
}
7071

72+
private handleAttachmentClick(attachment: IgcMessageAttachment) {
73+
this.dispatchEvent(
74+
new CustomEvent('attachment-click', {
75+
detail: { attachment },
76+
bubbles: true,
77+
composed: true,
78+
})
79+
);
80+
}
81+
7182
protected override render() {
7283
return html`
7384
<div class="attachments-container">
@@ -76,8 +87,10 @@ export class IgcMessageAttachmentsComponent extends LitElement {
7687
<igc-expansion-panel
7788
indicator-position="none"
7889
.open=${attachment.type === 'image'}
79-
@igcClosing=${this.preventToggle}
80-
@igcOpening=${this.preventToggle}
90+
@igcClosing=${(ev: CustomEvent) =>
91+
this.handleToggle(ev, attachment)}
92+
@igcOpening=${(ev: CustomEvent) =>
93+
this.handleToggle(ev, attachment)}
8194
>
8295
<div slot="title" class="attachment">
8396
<div class="details">

0 commit comments

Comments
 (0)