Skip to content

Commit 9ef2dac

Browse files
author
Ruslan Farkhutdinov
committed
Chat: Add FileUploading types
1 parent 8efe051 commit 9ef2dac

17 files changed

Lines changed: 1283 additions & 8 deletions

File tree

packages/devextreme-angular/src/core/tokens/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const PROPERTY_TOKEN_series = new InjectionToken<string>('property-token-
1717
export const PROPERTY_TOKEN_strips = new InjectionToken<string>('property-token-strips');
1818
export const PROPERTY_TOKEN_valueAxis = new InjectionToken<string>('property-token-valueAxis');
1919
export const PROPERTY_TOKEN_alerts = new InjectionToken<string>('property-token-alerts');
20+
export const PROPERTY_TOKEN_attachments = new InjectionToken<string>('property-token-attachments');
2021
export const PROPERTY_TOKEN_typingUsers = new InjectionToken<string>('property-token-typingUsers');
2122
export const PROPERTY_TOKEN_ranges = new InjectionToken<string>('property-token-ranges');
2223
export const PROPERTY_TOKEN_groupItems = new InjectionToken<string>('property-token-groupItems');

packages/devextreme-angular/src/ui/chat/index.ts

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ import {
2424

2525
import DataSource from 'devextreme/data/data_source';
2626
import dxChat from 'devextreme/ui/chat';
27-
import { Alert, Message, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, OptionChangedEvent, TypingEndEvent, TypingStartEvent, User } from 'devextreme/ui/chat';
27+
import { Alert, Message, AttachmentDownloadEvent, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, OptionChangedEvent, TypingEndEvent, TypingStartEvent, User } from 'devextreme/ui/chat';
2828
import { DataSourceOptions } from 'devextreme/data/data_source';
2929
import { Store } from 'devextreme/data/store';
3030
import { Format } from 'devextreme/common/core/localization';
31+
import { dxFileUploaderOptions } from 'devextreme/ui/file_uploader';
3132

3233
import DxChat from 'devextreme/ui/chat';
3334

@@ -46,22 +47,27 @@ import {
4647
import { DxiAlertModule } from 'devextreme-angular/ui/nested';
4748
import { DxoDayHeaderFormatModule } from 'devextreme-angular/ui/nested';
4849
import { DxoEditingModule } from 'devextreme-angular/ui/nested';
50+
import { DxoFileUploaderOptionsModule } from 'devextreme-angular/ui/nested';
4951
import { DxiItemModule } from 'devextreme-angular/ui/nested';
52+
import { DxiAttachmentModule } from 'devextreme-angular/ui/nested';
5053
import { DxoAuthorModule } from 'devextreme-angular/ui/nested';
5154
import { DxoMessageTimestampFormatModule } from 'devextreme-angular/ui/nested';
5255
import { DxiTypingUserModule } from 'devextreme-angular/ui/nested';
5356
import { DxoUserModule } from 'devextreme-angular/ui/nested';
5457

5558
import { DxiChatAlertModule } from 'devextreme-angular/ui/chat/nested';
59+
import { DxiChatAttachmentModule } from 'devextreme-angular/ui/chat/nested';
5660
import { DxoChatAuthorModule } from 'devextreme-angular/ui/chat/nested';
5761
import { DxoChatDayHeaderFormatModule } from 'devextreme-angular/ui/chat/nested';
5862
import { DxoChatEditingModule } from 'devextreme-angular/ui/chat/nested';
63+
import { DxoChatFileUploaderOptionsModule } from 'devextreme-angular/ui/chat/nested';
5964
import { DxiChatItemModule } from 'devextreme-angular/ui/chat/nested';
6065
import { DxoChatMessageTimestampFormatModule } from 'devextreme-angular/ui/chat/nested';
6166
import { DxiChatTypingUserModule } from 'devextreme-angular/ui/chat/nested';
6267
import { DxoChatUserModule } from 'devextreme-angular/ui/chat/nested';
6368
import {
6469
PROPERTY_TOKEN_alerts,
70+
PROPERTY_TOKEN_attachments,
6571
PROPERTY_TOKEN_items,
6672
PROPERTY_TOKEN_typingUsers,
6773
} from 'devextreme-angular/core/tokens';
@@ -91,6 +97,11 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
9197
this.setChildren('alerts', value);
9298
}
9399

100+
@ContentChildren(PROPERTY_TOKEN_attachments)
101+
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
102+
this.setChildren('attachments', value);
103+
}
104+
94105
@ContentChildren(PROPERTY_TOKEN_items)
95106
set _itemsContentChildren(value: QueryList<CollectionNestedOption>) {
96107
this.setChildren('items', value);
@@ -220,6 +231,19 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
220231
}
221232

222233

234+
/**
235+
* [descr:dxChatOptions.fileUploaderOptions]
236+
237+
*/
238+
@Input()
239+
get fileUploaderOptions(): dxFileUploaderOptions {
240+
return this._getOption('fileUploaderOptions');
241+
}
242+
set fileUploaderOptions(value: dxFileUploaderOptions) {
243+
this._setOption('fileUploaderOptions', value);
244+
}
245+
246+
223247
/**
224248
* [descr:dxChatOptions.focusStateEnabled]
225249
@@ -440,6 +464,14 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
440464
this._setOption('width', value);
441465
}
442466

467+
/**
468+
469+
* [descr:dxChatOptions.onAttachmentDownload]
470+
471+
472+
*/
473+
@Output() onAttachmentDownload: EventEmitter<AttachmentDownloadEvent>;
474+
443475
/**
444476
445477
* [descr:dxChatOptions.onDisposing]
@@ -599,6 +631,13 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
599631
*/
600632
@Output() emptyViewTemplateChange: EventEmitter<any>;
601633

634+
/**
635+
636+
* This member supports the internal infrastructure and is not intended to be used directly from your code.
637+
638+
*/
639+
@Output() fileUploaderOptionsChange: EventEmitter<dxFileUploaderOptions>;
640+
602641
/**
603642
604643
* This member supports the internal infrastructure and is not intended to be used directly from your code.
@@ -731,6 +770,7 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
731770
super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
732771

733772
this._createEventEmitters([
773+
{ subscribe: 'attachmentDownload', emit: 'onAttachmentDownload' },
734774
{ subscribe: 'disposing', emit: 'onDisposing' },
735775
{ subscribe: 'initialized', emit: 'onInitialized' },
736776
{ subscribe: 'messageDeleted', emit: 'onMessageDeleted' },
@@ -752,6 +792,7 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
752792
{ emit: 'editingChange' },
753793
{ emit: 'elementAttrChange' },
754794
{ emit: 'emptyViewTemplateChange' },
795+
{ emit: 'fileUploaderOptionsChange' },
755796
{ emit: 'focusStateEnabledChange' },
756797
{ emit: 'heightChange' },
757798
{ emit: 'hintChange' },
@@ -825,15 +866,19 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
825866
DxiAlertModule,
826867
DxoDayHeaderFormatModule,
827868
DxoEditingModule,
869+
DxoFileUploaderOptionsModule,
828870
DxiItemModule,
871+
DxiAttachmentModule,
829872
DxoAuthorModule,
830873
DxoMessageTimestampFormatModule,
831874
DxiTypingUserModule,
832875
DxoUserModule,
833876
DxiChatAlertModule,
877+
DxiChatAttachmentModule,
834878
DxoChatAuthorModule,
835879
DxoChatDayHeaderFormatModule,
836880
DxoChatEditingModule,
881+
DxoChatFileUploaderOptionsModule,
837882
DxiChatItemModule,
838883
DxoChatMessageTimestampFormatModule,
839884
DxiChatTypingUserModule,
@@ -846,15 +891,19 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges
846891
DxiAlertModule,
847892
DxoDayHeaderFormatModule,
848893
DxoEditingModule,
894+
DxoFileUploaderOptionsModule,
849895
DxiItemModule,
896+
DxiAttachmentModule,
850897
DxoAuthorModule,
851898
DxoMessageTimestampFormatModule,
852899
DxiTypingUserModule,
853900
DxoUserModule,
854901
DxiChatAlertModule,
902+
DxiChatAttachmentModule,
855903
DxoChatAuthorModule,
856904
DxoChatDayHeaderFormatModule,
857905
DxoChatEditingModule,
906+
DxoChatFileUploaderOptionsModule,
858907
DxiChatItemModule,
859908
DxoChatMessageTimestampFormatModule,
860909
DxiChatTypingUserModule,
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/* tslint:disable:max-line-length */
2+
3+
4+
import {
5+
Component,
6+
NgModule,
7+
Host,
8+
SkipSelf,
9+
Input
10+
} from '@angular/core';
11+
12+
13+
14+
15+
16+
import {
17+
DxIntegrationModule,
18+
NestedOptionHost,
19+
} from 'devextreme-angular/core';
20+
import { CollectionNestedOption } from 'devextreme-angular/core';
21+
22+
import { PROPERTY_TOKEN_attachments } from 'devextreme-angular/core/tokens';
23+
24+
@Component({
25+
selector: 'dxi-chat-attachment',
26+
standalone: true,
27+
template: '',
28+
styles: [''],
29+
imports: [ DxIntegrationModule ],
30+
providers: [
31+
NestedOptionHost,
32+
{
33+
provide: PROPERTY_TOKEN_attachments,
34+
useExisting: DxiChatAttachmentComponent,
35+
}
36+
]
37+
})
38+
export class DxiChatAttachmentComponent extends CollectionNestedOption {
39+
@Input()
40+
get name(): string {
41+
return this._getOption('name');
42+
}
43+
set name(value: string) {
44+
this._setOption('name', value);
45+
}
46+
47+
@Input()
48+
get size(): number {
49+
return this._getOption('size');
50+
}
51+
set size(value: number) {
52+
this._setOption('size', value);
53+
}
54+
55+
56+
protected get _optionPath() {
57+
return 'attachments';
58+
}
59+
60+
61+
constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost,
62+
@Host() optionHost: NestedOptionHost) {
63+
super();
64+
parentOptionHost.setNestedOption(this);
65+
optionHost.setHost(this, this._fullOptionPath.bind(this));
66+
}
67+
68+
69+
70+
ngOnDestroy() {
71+
this._deleteRemovedOptions(this._fullOptionPath());
72+
}
73+
74+
}
75+
76+
@NgModule({
77+
imports: [
78+
DxiChatAttachmentComponent
79+
],
80+
exports: [
81+
DxiChatAttachmentComponent
82+
],
83+
})
84+
export class DxiChatAttachmentModule { }

0 commit comments

Comments
 (0)