From 2b238ef9a061b8228dc88a3b89ce640d93b5924e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 1 Apr 2026 18:30:11 +0200 Subject: [PATCH 01/12] feat(chat.d.ts): Add MainActionButtonProperties --- packages/devextreme/js/ui/chat.d.ts | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 0ae1d65d657e..1888d441b1c2 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -51,6 +51,14 @@ export type InitializedEvent = InitializedEventInfo; */ export type OptionChangedEvent = EventInfo & ChangedOptionInfo; +/** + * @docid _ui_chat_MainActionButtonClickEvent + * @public + * @type object + * @inherits NativeEventInfo + */ +export type MainActionButtonClickEvent = NativeEventInfo; + /** * @docid _ui_chat_MessageEnteredEvent * @public @@ -346,6 +354,31 @@ export type EmptyViewTemplateData = { }; }; +/** + * @docid + * @namespace DevExpress.ui.dxChat + * @public + */ +export type MainActionButtonProperties = { + /** + * @docid + * @public + */ + icon?: string; + /** + * @docid + * @public + * @default 'default' + */ + behavior?: 'default' | 'custom'; + /** + * @docid + * @type_function_param1 e:{ui/chat:MainActionButtonClickEvent} + * @public + */ + onClick: ((e: MainActionButtonClickEvent) => void); +}; + /** * @deprecated use Properties instead * @namespace DevExpress.ui @@ -446,6 +479,12 @@ export interface dxChatOptions extends WidgetOptions { * @public */ inputFieldText?: TextAreaProperties['value']; + /** + * @docid + * @type MainActionButtonProperties + * @public + */ + mainActionButtonOptions?: MainActionButtonProperties; /** * @docid * @default null From fc30933727bded1b056ded4d9268ceb761fee528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 1 Apr 2026 18:37:04 +0200 Subject: [PATCH 02/12] feat(chat.d.ts): Add the MainActionButtonBehavior enum --- packages/devextreme/js/ui/chat.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 1888d441b1c2..3181a353f394 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -354,6 +354,9 @@ export type EmptyViewTemplateData = { }; }; +/** @public */ +export type MainActionButtonBehavior = 'default' | 'custom'; + /** * @docid * @namespace DevExpress.ui.dxChat @@ -370,7 +373,7 @@ export type MainActionButtonProperties = { * @public * @default 'default' */ - behavior?: 'default' | 'custom'; + behavior?: MainActionButtonBehavior; /** * @docid * @type_function_param1 e:{ui/chat:MainActionButtonClickEvent} From a0b6c1b3f28288140d84e4dfd0b75ce13a2dcf76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 1 Apr 2026 19:34:41 +0200 Subject: [PATCH 03/12] test(make-angular-metadata.ts): Add removeMembers for new types --- packages/devextreme-metadata/make-angular-metadata.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index 659868b65b53..3609d16ea29c 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -49,9 +49,10 @@ Ng.makeMetadata({ removeMembers(/\/grids:ColumnBase.ai/), removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/), removeMembers(/\/card_view:/), + removeMembers(/\/chat:MainActionButton/), removeMembers(/\/chat:TextMessage.attachments/), removeMembers( - /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|onAttachmentDownloadClick|speechToTextOptions)/, + /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|mainActionButtonOptions|onAttachmentDownloadClick|speechToTextOptions)/, ), removeMembers(/\/form:dxFormOptions\.(aiIntegration|onSmartPasting|onSmartPasted|smartPaste)/), removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), From 9629bbb5ae0fb18d1cdbe02b7f556308a2522443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 11:05:00 +0200 Subject: [PATCH 04/12] feat(chat.d.ts): Renaming according to TW && PM review --- packages/devextreme/js/ui/chat.d.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 3181a353f394..11b18a99ed3f 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -52,12 +52,12 @@ export type InitializedEvent = InitializedEventInfo; export type OptionChangedEvent = EventInfo & ChangedOptionInfo; /** - * @docid _ui_chat_MainActionButtonClickEvent + * @docid _ui_chat_SendButtonClickEvent * @public * @type object * @inherits NativeEventInfo */ -export type MainActionButtonClickEvent = NativeEventInfo; +export type SendButtonClickEvent = NativeEventInfo; /** * @docid _ui_chat_MessageEnteredEvent @@ -355,31 +355,32 @@ export type EmptyViewTemplateData = { }; /** @public */ -export type MainActionButtonBehavior = 'default' | 'custom'; +export type SendButtonBehavior = 'send' | 'custom'; /** * @docid * @namespace DevExpress.ui.dxChat * @public */ -export type MainActionButtonProperties = { +export type SendButtonProperties = { /** * @docid * @public + * @default 'arrowright' */ icon?: string; /** * @docid * @public - * @default 'default' + * @default 'send' */ - behavior?: MainActionButtonBehavior; + type?: SendButtonBehavior; /** * @docid - * @type_function_param1 e:{ui/chat:MainActionButtonClickEvent} + * @type_function_param1 e:{ui/chat:SendButtonClickEvent} * @public */ - onClick: ((e: MainActionButtonClickEvent) => void); + onClick: ((e: SendButtonClickEvent) => void); }; /** @@ -484,10 +485,10 @@ export interface dxChatOptions extends WidgetOptions { inputFieldText?: TextAreaProperties['value']; /** * @docid - * @type MainActionButtonProperties + * @type SendButtonProperties * @public */ - mainActionButtonOptions?: MainActionButtonProperties; + sendButtonOptions?: SendButtonProperties; /** * @docid * @default null From 049ba61310535c2220b3ab976f9c470e1f3e15a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 11:07:15 +0200 Subject: [PATCH 05/12] feat(make-angular-metadata.ts): Rename --- packages/devextreme-metadata/make-angular-metadata.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index 3609d16ea29c..b4b877b12235 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -49,10 +49,10 @@ Ng.makeMetadata({ removeMembers(/\/grids:ColumnBase.ai/), removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/), removeMembers(/\/card_view:/), - removeMembers(/\/chat:MainActionButton/), + removeMembers(/\/chat:SendButton/), removeMembers(/\/chat:TextMessage.attachments/), removeMembers( - /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|mainActionButtonOptions|onAttachmentDownloadClick|speechToTextOptions)/, + /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|sendButtonOptions|onAttachmentDownloadClick|speechToTextOptions)/, ), removeMembers(/\/form:dxFormOptions\.(aiIntegration|onSmartPasting|onSmartPasted|smartPaste)/), removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), From 691b12e6a79da58594b5a76e41d05efff2387311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 11:34:03 +0200 Subject: [PATCH 06/12] revert(chat.d.ts): Revert behavior --- packages/devextreme/js/ui/chat.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 11b18a99ed3f..4636b9a09fec 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -374,7 +374,7 @@ export type SendButtonProperties = { * @public * @default 'send' */ - type?: SendButtonBehavior; + behavior?: SendButtonBehavior; /** * @docid * @type_function_param1 e:{ui/chat:SendButtonClickEvent} From 63e6bf959529dfa9cd64e746bcfb8dbaf54b6ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 11:38:55 +0200 Subject: [PATCH 07/12] feat(regenerate) --- .../devextreme-angular/src/ui/chat/index.ts | 23 ++++- .../src/ui/chat/nested/index.ts | 1 + .../src/ui/chat/nested/send-button-options.ts | 92 +++++++++++++++++++ packages/devextreme-react/src/chat.ts | 25 ++++- packages/devextreme-vue/src/chat.ts | 29 ++++++ packages/devextreme/js/ui/chat_types.d.ts | 3 + packages/devextreme/ts/dx.all.d.ts | 30 ++++++ 7 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts diff --git a/packages/devextreme-angular/src/ui/chat/index.ts b/packages/devextreme-angular/src/ui/chat/index.ts index 7bcf6a339055..01c951c04130 100644 --- a/packages/devextreme-angular/src/ui/chat/index.ts +++ b/packages/devextreme-angular/src/ui/chat/index.ts @@ -22,7 +22,7 @@ import { } from '@angular/core'; -import type { default as dxChat, Alert, Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, InputFieldTextChangedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, OptionChangedEvent, TypingEndEvent, TypingStartEvent, User } from 'devextreme/ui/chat'; +import type { default as dxChat, Alert, Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, InputFieldTextChangedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, OptionChangedEvent, TypingEndEvent, TypingStartEvent, SendButtonProperties, User } from 'devextreme/ui/chat'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; import type { Format } from 'devextreme/common/core/localization'; @@ -61,6 +61,7 @@ import { DxoChatEditingModule } from 'devextreme-angular/ui/chat/nested'; import { DxoChatFileUploaderOptionsModule } from 'devextreme-angular/ui/chat/nested'; import { DxiChatItemModule } from 'devextreme-angular/ui/chat/nested'; import { DxoChatMessageTimestampFormatModule } from 'devextreme-angular/ui/chat/nested'; +import { DxoChatSendButtonOptionsModule } from 'devextreme-angular/ui/chat/nested'; import { DxoChatSpeechRecognitionConfigModule } from 'devextreme-angular/ui/chat/nested'; import { DxoChatSpeechToTextOptionsModule } from 'devextreme-angular/ui/chat/nested'; import { DxiChatTypingUserModule } from 'devextreme-angular/ui/chat/nested'; @@ -368,6 +369,16 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges } + + @Input() + get sendButtonOptions(): SendButtonProperties { + return this._getOption('sendButtonOptions'); + } + set sendButtonOptions(value: SendButtonProperties) { + this._setOption('sendButtonOptions', value); + } + + /** * [descr:dxChatOptions.showAvatar] @@ -746,6 +757,13 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges */ @Output() rtlEnabledChange: EventEmitter; + /** + + * This member supports the internal infrastructure and is not intended to be used directly from your code. + + */ + @Output() sendButtonOptionsChange: EventEmitter; + /** * This member supports the internal infrastructure and is not intended to be used directly from your code. @@ -863,6 +881,7 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges { emit: 'messageTimestampFormatChange' }, { emit: 'reloadOnChangeChange' }, { emit: 'rtlEnabledChange' }, + { emit: 'sendButtonOptionsChange' }, { emit: 'showAvatarChange' }, { emit: 'showDayHeadersChange' }, { emit: 'showMessageTimestampChange' }, @@ -943,6 +962,7 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges DxoChatFileUploaderOptionsModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, + DxoChatSendButtonOptionsModule, DxoChatSpeechRecognitionConfigModule, DxoChatSpeechToTextOptionsModule, DxiChatTypingUserModule, @@ -969,6 +989,7 @@ export class DxChatComponent extends DxComponent implements OnDestroy, OnChanges DxoChatFileUploaderOptionsModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, + DxoChatSendButtonOptionsModule, DxoChatSpeechRecognitionConfigModule, DxoChatSpeechToTextOptionsModule, DxiChatTypingUserModule, diff --git a/packages/devextreme-angular/src/ui/chat/nested/index.ts b/packages/devextreme-angular/src/ui/chat/nested/index.ts index 90da87825498..3dc191bfbd5c 100644 --- a/packages/devextreme-angular/src/ui/chat/nested/index.ts +++ b/packages/devextreme-angular/src/ui/chat/nested/index.ts @@ -7,6 +7,7 @@ export * from './editing'; export * from './file-uploader-options'; export * from './item-dxi'; export * from './message-timestamp-format'; +export * from './send-button-options'; export * from './speech-recognition-config'; export * from './speech-to-text-options'; export * from './typing-user-dxi'; diff --git a/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts b/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts new file mode 100644 index 000000000000..bd5e04daed4d --- /dev/null +++ b/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts @@ -0,0 +1,92 @@ +/* tslint:disable:max-line-length */ + + +import { + Component, + OnInit, + OnDestroy, + NgModule, + Host, + SkipSelf, + Input +} from '@angular/core'; + + + + +import type { SendButtonBehavior, SendButtonClickEvent } from 'devextreme/ui/chat'; + +import { + DxIntegrationModule, + NestedOptionHost, +} from 'devextreme-angular/core'; +import { NestedOption } from 'devextreme-angular/core'; + + +@Component({ + selector: 'dxo-chat-send-button-options', + standalone: true, + template: '', + styles: [''], + imports: [ DxIntegrationModule ], + providers: [NestedOptionHost] +}) +export class DxoChatSendButtonOptionsComponent extends NestedOption implements OnDestroy, OnInit { + @Input() + get behavior(): SendButtonBehavior { + return this._getOption('behavior'); + } + set behavior(value: SendButtonBehavior) { + this._setOption('behavior', value); + } + + @Input() + get icon(): string { + return this._getOption('icon'); + } + set icon(value: string) { + this._setOption('icon', value); + } + + @Input() + get onClick(): ((e: SendButtonClickEvent) => void) { + return this._getOption('onClick'); + } + set onClick(value: ((e: SendButtonClickEvent) => void)) { + this._setOption('onClick', value); + } + + + protected get _optionPath() { + return 'sendButtonOptions'; + } + + + constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost, + @Host() optionHost: NestedOptionHost) { + super(); + parentOptionHost.setNestedOption(this); + optionHost.setHost(this, this._fullOptionPath.bind(this)); + } + + + ngOnInit() { + this._addRecreatedComponent(); + } + + ngOnDestroy() { + this._addRemovedOption(this._getOptionPath()); + } + + +} + +@NgModule({ + imports: [ + DxoChatSendButtonOptionsComponent + ], + exports: [ + DxoChatSendButtonOptionsComponent + ], +}) +export class DxoChatSendButtonOptionsModule { } diff --git a/packages/devextreme-react/src/chat.ts b/packages/devextreme-react/src/chat.ts index 6df640011bc2..fbb36bd25532 100644 --- a/packages/devextreme-react/src/chat.ts +++ b/packages/devextreme-react/src/chat.ts @@ -8,7 +8,7 @@ import dxChat, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, TypingEndEvent, TypingStartEvent, Attachment as ChatAttachment, User as ChatUser } from "devextreme/ui/chat"; +import type { Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, TypingEndEvent, TypingStartEvent, Attachment as ChatAttachment, User as ChatUser, SendButtonBehavior, SendButtonClickEvent } from "devextreme/ui/chat"; import type { DisposingEvent as FileUploaderDisposingEvent, InitializedEvent as FileUploaderInitializedEvent, BeforeSendEvent, ContentReadyEvent, DropZoneEnterEvent, DropZoneLeaveEvent, FilesUploadedEvent, OptionChangedEvent, ProgressEvent, UploadAbortedEvent, UploadedEvent, UploadErrorEvent, UploadStartedEvent, ValueChangedEvent, UploadHttpMethod, FileUploadMode } from "devextreme/ui/file_uploader"; import type { DisposingEvent as SpeechToTextDisposingEvent, InitializedEvent as SpeechToTextInitializedEvent, ContentReadyEvent as SpeechToTextContentReadyEvent, OptionChangedEvent as SpeechToTextOptionChangedEvent, CustomSpeechRecognizer as SpeechToTextCustomSpeechRecognizer, EndEvent, ErrorEvent, ResultEvent, StartClickEvent, StopClickEvent, SpeechRecognitionConfig as SpeechToTextSpeechRecognitionConfig } from "devextreme/ui/speech_to_text"; import type { Format, ValidationStatus, ButtonStyle, ButtonType } from "devextreme/common"; @@ -74,6 +74,7 @@ const Chat = memo( fileUploaderOptions: { optionName: "fileUploaderOptions", isCollectionItem: false }, item: { optionName: "items", isCollectionItem: true }, messageTimestampFormat: { optionName: "messageTimestampFormat", isCollectionItem: false }, + sendButtonOptions: { optionName: "sendButtonOptions", isCollectionItem: false }, speechToTextOptions: { optionName: "speechToTextOptions", isCollectionItem: false }, typingUser: { optionName: "typingUsers", isCollectionItem: true }, user: { optionName: "user", isCollectionItem: false } @@ -372,6 +373,26 @@ const MessageTimestampFormat = Object.assign void); +}> +const _componentSendButtonOptions = (props: ISendButtonOptionsProps) => { + return React.createElement(NestedOption, { + ...props, + elementDescriptor: { + OptionName: "sendButtonOptions", + }, + }); +}; + +const SendButtonOptions = Object.assign(_componentSendButtonOptions, { + componentType: "option", +}); + // owners: // SpeechToTextOptions type ISpeechRecognitionConfigProps = React.PropsWithChildren<{ @@ -510,6 +531,8 @@ export { IItemProps, MessageTimestampFormat, IMessageTimestampFormatProps, + SendButtonOptions, + ISendButtonOptionsProps, SpeechRecognitionConfig, ISpeechRecognitionConfigProps, SpeechToTextOptions, diff --git a/packages/devextreme-vue/src/chat.ts b/packages/devextreme-vue/src/chat.ts index bf2b6fe7dc2b..85c398330d95 100644 --- a/packages/devextreme-vue/src/chat.ts +++ b/packages/devextreme-vue/src/chat.ts @@ -22,8 +22,11 @@ import { OptionChangedEvent, TypingEndEvent, TypingStartEvent, + SendButtonProperties, User, Attachment, + SendButtonBehavior, + SendButtonClickEvent, } from "devextreme/ui/chat"; import { DataSourceOptions, @@ -110,6 +113,7 @@ type AccessibleOptions = Pick void)>, reloadOnChange: Boolean, rtlEnabled: Boolean, + sendButtonOptions: Object as PropType>, showAvatar: Boolean, showDayHeaders: Boolean, showMessageTimestamp: Boolean, @@ -210,6 +215,7 @@ const componentConfig = { "update:onTypingStart": null, "update:reloadOnChange": null, "update:rtlEnabled": null, + "update:sendButtonOptions": null, "update:showAvatar": null, "update:showDayHeaders": null, "update:showMessageTimestamp": null, @@ -236,6 +242,7 @@ const componentConfig = { fileUploaderOptions: { isCollectionItem: false, optionName: "fileUploaderOptions" }, item: { isCollectionItem: true, optionName: "items" }, messageTimestampFormat: { isCollectionItem: false, optionName: "messageTimestampFormat" }, + sendButtonOptions: { isCollectionItem: false, optionName: "sendButtonOptions" }, speechToTextOptions: { isCollectionItem: false, optionName: "speechToTextOptions" }, typingUser: { isCollectionItem: true, optionName: "typingUsers" }, user: { isCollectionItem: false, optionName: "user" } @@ -586,6 +593,27 @@ const DxMessageTimestampFormat = defineComponent(DxMessageTimestampFormatConfig) (DxMessageTimestampFormat as any).$_optionName = "messageTimestampFormat"; +const DxSendButtonOptionsConfig = { + emits: { + "update:isActive": null, + "update:hoveredElement": null, + "update:behavior": null, + "update:icon": null, + "update:onClick": null, + }, + props: { + behavior: String as PropType, + icon: String, + onClick: Function as PropType<((e: SendButtonClickEvent) => void)> + } +}; + +prepareConfigurationComponentConfig(DxSendButtonOptionsConfig); + +const DxSendButtonOptions = defineComponent(DxSendButtonOptionsConfig); + +(DxSendButtonOptions as any).$_optionName = "sendButtonOptions"; + const DxSpeechRecognitionConfigConfig = { emits: { "update:isActive": null, @@ -747,6 +775,7 @@ export { DxFileUploaderOptions, DxItem, DxMessageTimestampFormat, + DxSendButtonOptions, DxSpeechRecognitionConfig, DxSpeechToTextOptions, DxTypingUser, diff --git a/packages/devextreme/js/ui/chat_types.d.ts b/packages/devextreme/js/ui/chat_types.d.ts index 23ad3fd6a0f4..e6ee1461c4c9 100644 --- a/packages/devextreme/js/ui/chat_types.d.ts +++ b/packages/devextreme/js/ui/chat_types.d.ts @@ -2,6 +2,7 @@ export { DisposingEvent, InitializedEvent, OptionChangedEvent, + SendButtonClickEvent, MessageEnteredEvent, TypingStartEvent, TypingEndEvent, @@ -21,6 +22,8 @@ export { Message, MessageTemplateData, EmptyViewTemplateData, + SendButtonBehavior, + SendButtonProperties, dxChatOptions, Properties, } from './chat'; diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index e69e30db6bc2..73fc5e7e70b0 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -11333,6 +11333,15 @@ declare module DevExpress.ui { DevExpress.common.core.events.EventInfo & DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxChatOptions; + export type SendButtonBehavior = 'send' | 'custom'; + /** + * [descr:_ui_chat_SendButtonClickEvent] + */ + export type SendButtonClickEvent = + DevExpress.common.core.events.NativeEventInfo< + dxChat, + DevExpress.events.InteractionEvent + >; /** * [descr:_ui_chat_TypingEndEvent] */ @@ -11442,6 +11451,10 @@ declare module DevExpress.ui { * [descr:dxChatOptions.inputFieldText] */ inputFieldText?: DevExpress.ui.dxTextArea.Properties['value']; + /** + * [descr:dxChatOptions.sendButtonOptions] + */ + sendButtonOptions?: DevExpress.ui.dxChat.SendButtonProperties; /** * [descr:dxChatOptions.messageTemplate] */ @@ -34166,6 +34179,23 @@ declare module DevExpress.ui.dxChat { [key: string]: any; }; + /** + * [descr:SendButtonProperties] + */ + export type SendButtonProperties = { + /** + * [descr:SendButtonProperties.icon] + */ + icon?: string; + /** + * [descr:SendButtonProperties.behavior] + */ + behavior?: SendButtonBehavior; + /** + * [descr:SendButtonProperties.onClick] + */ + onClick: (e: SendButtonClickEvent) => void; + }; /** * [descr:TextMessage] */ From 364605f55a47151b282497ae9ee6c94a004ae46b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 12:07:10 +0200 Subject: [PATCH 08/12] fix(chat.d.ts): Replace dxChat with dxButton in SendButtonClickEvent --- packages/devextreme/js/ui/chat.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 4636b9a09fec..36a8d171a0f6 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -16,6 +16,7 @@ import { Properties as SpeechToTextProperties } from './speech_to_text'; import { Properties as TextAreaProperties } from './text_area'; import { ValueChangedInfo } from './editor/editor'; import Widget, { WidgetOptions } from './widget/ui.widget'; +import dxButton from './button'; import { EventInfo, NativeEventInfo, @@ -57,7 +58,7 @@ export type OptionChangedEvent = EventInfo & ChangedOptionInfo; * @type object * @inherits NativeEventInfo */ -export type SendButtonClickEvent = NativeEventInfo; +export type SendButtonClickEvent = NativeEventInfo; /** * @docid _ui_chat_MessageEnteredEvent From 517b220b3aa600e9db1bd85ea36f5193703b1de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 12:11:23 +0200 Subject: [PATCH 09/12] refactor(chat.d.ts): Rename to action --- packages/devextreme/js/ui/chat.d.ts | 10 +++++----- packages/devextreme/ts/dx.all.d.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 36a8d171a0f6..9686ce515578 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -356,7 +356,7 @@ export type EmptyViewTemplateData = { }; /** @public */ -export type SendButtonBehavior = 'send' | 'custom'; +export type SendButtonAction = 'send' | 'custom'; /** * @docid @@ -367,15 +367,15 @@ export type SendButtonProperties = { /** * @docid * @public - * @default 'arrowright' + * @default 'send' */ - icon?: string; + action?: SendButtonAction; /** * @docid * @public - * @default 'send' + * @default 'arrowright' */ - behavior?: SendButtonBehavior; + icon?: string; /** * @docid * @type_function_param1 e:{ui/chat:SendButtonClickEvent} diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 73fc5e7e70b0..7230752f5f02 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -11339,7 +11339,7 @@ declare module DevExpress.ui { */ export type SendButtonClickEvent = DevExpress.common.core.events.NativeEventInfo< - dxChat, + dxButton, DevExpress.events.InteractionEvent >; /** From b6f40b46690a5cc66214cdcdcbb893d4672b735d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 12:14:47 +0200 Subject: [PATCH 10/12] feat(regenerate) --- .../src/ui/chat/nested/send-button-options.ts | 10 +++++----- packages/devextreme-react/src/chat.ts | 4 ++-- packages/devextreme-vue/src/chat.ts | 6 +++--- packages/devextreme/js/ui/chat_types.d.ts | 2 +- packages/devextreme/ts/dx.all.d.ts | 10 +++++----- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts b/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts index bd5e04daed4d..af78da8f0f26 100644 --- a/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts +++ b/packages/devextreme-angular/src/ui/chat/nested/send-button-options.ts @@ -14,7 +14,7 @@ import { -import type { SendButtonBehavior, SendButtonClickEvent } from 'devextreme/ui/chat'; +import type { SendButtonAction, SendButtonClickEvent } from 'devextreme/ui/chat'; import { DxIntegrationModule, @@ -33,11 +33,11 @@ import { NestedOption } from 'devextreme-angular/core'; }) export class DxoChatSendButtonOptionsComponent extends NestedOption implements OnDestroy, OnInit { @Input() - get behavior(): SendButtonBehavior { - return this._getOption('behavior'); + get action(): SendButtonAction { + return this._getOption('action'); } - set behavior(value: SendButtonBehavior) { - this._setOption('behavior', value); + set action(value: SendButtonAction) { + this._setOption('action', value); } @Input() diff --git a/packages/devextreme-react/src/chat.ts b/packages/devextreme-react/src/chat.ts index fbb36bd25532..e3c1d230ed2f 100644 --- a/packages/devextreme-react/src/chat.ts +++ b/packages/devextreme-react/src/chat.ts @@ -8,7 +8,7 @@ import dxChat, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, TypingEndEvent, TypingStartEvent, Attachment as ChatAttachment, User as ChatUser, SendButtonBehavior, SendButtonClickEvent } from "devextreme/ui/chat"; +import type { Message, AttachmentDownloadClickEvent, DisposingEvent, InitializedEvent, MessageDeletedEvent, MessageDeletingEvent, MessageEditCanceledEvent, MessageEditingStartEvent, MessageEnteredEvent, MessageUpdatedEvent, MessageUpdatingEvent, TypingEndEvent, TypingStartEvent, Attachment as ChatAttachment, User as ChatUser, SendButtonAction, SendButtonClickEvent } from "devextreme/ui/chat"; import type { DisposingEvent as FileUploaderDisposingEvent, InitializedEvent as FileUploaderInitializedEvent, BeforeSendEvent, ContentReadyEvent, DropZoneEnterEvent, DropZoneLeaveEvent, FilesUploadedEvent, OptionChangedEvent, ProgressEvent, UploadAbortedEvent, UploadedEvent, UploadErrorEvent, UploadStartedEvent, ValueChangedEvent, UploadHttpMethod, FileUploadMode } from "devextreme/ui/file_uploader"; import type { DisposingEvent as SpeechToTextDisposingEvent, InitializedEvent as SpeechToTextInitializedEvent, ContentReadyEvent as SpeechToTextContentReadyEvent, OptionChangedEvent as SpeechToTextOptionChangedEvent, CustomSpeechRecognizer as SpeechToTextCustomSpeechRecognizer, EndEvent, ErrorEvent, ResultEvent, StartClickEvent, StopClickEvent, SpeechRecognitionConfig as SpeechToTextSpeechRecognitionConfig } from "devextreme/ui/speech_to_text"; import type { Format, ValidationStatus, ButtonStyle, ButtonType } from "devextreme/common"; @@ -376,7 +376,7 @@ const MessageTimestampFormat = Object.assign void); }> diff --git a/packages/devextreme-vue/src/chat.ts b/packages/devextreme-vue/src/chat.ts index 85c398330d95..3475c1be04bf 100644 --- a/packages/devextreme-vue/src/chat.ts +++ b/packages/devextreme-vue/src/chat.ts @@ -25,7 +25,7 @@ import { SendButtonProperties, User, Attachment, - SendButtonBehavior, + SendButtonAction, SendButtonClickEvent, } from "devextreme/ui/chat"; import { @@ -597,12 +597,12 @@ const DxSendButtonOptionsConfig = { emits: { "update:isActive": null, "update:hoveredElement": null, - "update:behavior": null, + "update:action": null, "update:icon": null, "update:onClick": null, }, props: { - behavior: String as PropType, + action: String as PropType, icon: String, onClick: Function as PropType<((e: SendButtonClickEvent) => void)> } diff --git a/packages/devextreme/js/ui/chat_types.d.ts b/packages/devextreme/js/ui/chat_types.d.ts index e6ee1461c4c9..88c3313be507 100644 --- a/packages/devextreme/js/ui/chat_types.d.ts +++ b/packages/devextreme/js/ui/chat_types.d.ts @@ -22,7 +22,7 @@ export { Message, MessageTemplateData, EmptyViewTemplateData, - SendButtonBehavior, + SendButtonAction, SendButtonProperties, dxChatOptions, Properties, diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 7230752f5f02..3ccc3cd7acb0 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -11333,7 +11333,7 @@ declare module DevExpress.ui { DevExpress.common.core.events.EventInfo & DevExpress.common.core.events.ChangedOptionInfo; export type Properties = dxChatOptions; - export type SendButtonBehavior = 'send' | 'custom'; + export type SendButtonAction = 'send' | 'custom'; /** * [descr:_ui_chat_SendButtonClickEvent] */ @@ -34184,13 +34184,13 @@ declare module DevExpress.ui.dxChat { */ export type SendButtonProperties = { /** - * [descr:SendButtonProperties.icon] + * [descr:SendButtonProperties.action] */ - icon?: string; + action?: SendButtonAction; /** - * [descr:SendButtonProperties.behavior] + * [descr:SendButtonProperties.icon] */ - behavior?: SendButtonBehavior; + icon?: string; /** * [descr:SendButtonProperties.onClick] */ From 1c7d91d857a7412ab68a47353495c9882b7141b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 12:31:52 +0200 Subject: [PATCH 11/12] fix(chat.d.ts): Fix typo --- packages/devextreme/js/ui/chat.d.ts | 2 +- packages/devextreme/ts/dx.all.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index 9686ce515578..ed97003bd4bd 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -381,7 +381,7 @@ export type SendButtonProperties = { * @type_function_param1 e:{ui/chat:SendButtonClickEvent} * @public */ - onClick: ((e: SendButtonClickEvent) => void); + onClick?: ((e: SendButtonClickEvent) => void); }; /** diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 3ccc3cd7acb0..af1a192aa6f3 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -34194,7 +34194,7 @@ declare module DevExpress.ui.dxChat { /** * [descr:SendButtonProperties.onClick] */ - onClick: (e: SendButtonClickEvent) => void; + onClick?: (e: SendButtonClickEvent) => void; }; /** * [descr:TextMessage] From cd32d948e3ab5fd8417747edb5e4f0378ebbeb26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 2 Apr 2026 14:16:28 +0200 Subject: [PATCH 12/12] refactor(chat.d.ts && make-angular-metadata.ts): Reorder by alphabet && Remove useless type tag && Remove useless removeMembers call --- .../make-angular-metadata.ts | 3 +- packages/devextreme/js/ui/chat.d.ts | 115 ++++++++-------- packages/devextreme/ts/dx.all.d.ts | 130 +++++++++--------- 3 files changed, 123 insertions(+), 125 deletions(-) diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index b4b877b12235..8754150e81dc 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -49,10 +49,9 @@ Ng.makeMetadata({ removeMembers(/\/grids:ColumnBase.ai/), removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/), removeMembers(/\/card_view:/), - removeMembers(/\/chat:SendButton/), removeMembers(/\/chat:TextMessage.attachments/), removeMembers( - /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|sendButtonOptions|onAttachmentDownloadClick|speechToTextOptions)/, + /\/chat:dxChatOptions\.(fileUploaderOptions|inputFieldText|sendButtonOptions|speechToTextOptions|onAttachmentDownloadClick)/, ), removeMembers(/\/form:dxFormOptions\.(aiIntegration|onSmartPasting|onSmartPasted|smartPaste)/), removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index ed97003bd4bd..101af800253b 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -399,34 +399,23 @@ export interface dxChatOptions extends WidgetOptions { activeStateEnabled?: boolean; /** * @docid - * @type dxFileUploaderOptions - * @public - */ - fileUploaderOptions?: Omit; - /** - * @docid - * @default true - * @public - */ - focusStateEnabled?: boolean; - /** - * @docid - * @default true + * @default [] * @public */ - hoverStateEnabled?: boolean; + alerts?: Array; /** * @docid - * @default { id: new Guid().toString() } + * @type string | Array | Store | DataSource | DataSourceOptions | null + * @default null * @public */ - user?: User; + dataSource?: DataSourceLike | null; /** * @docid - * @fires dxChatOptions.onOptionChanged + * @default 'shortdate' * @public */ - items?: Array; + dayHeaderFormat?: Format; /** * @docid * @public @@ -437,13 +426,13 @@ export interface dxChatOptions extends WidgetOptions { * @default false * @public */ - allowUpdating?: boolean | ((options: { component?: dxChat; message?: Message }) => boolean); + allowDeleting?: boolean | ((options: { component?: dxChat; message?: Message }) => boolean); /** * @docid * @default false * @public */ - allowDeleting?: boolean | ((options: { component?: dxChat; message?: Message }) => boolean); + allowUpdating?: boolean | ((options: { component?: dxChat; message?: Message }) => boolean); }; /** * @docid @@ -454,29 +443,22 @@ export interface dxChatOptions extends WidgetOptions { emptyViewTemplate?: template | null | ((data: EmptyViewTemplateData, itemElement: DxElement) => string | UserDefinedElement); /** * @docid - * @type string | Array | Store | DataSource | DataSourceOptions | null - * @default null - * @public - */ - dataSource?: DataSourceLike | null; - /** - * @docid - * @default 'shortdate' + * @type dxFileUploaderOptions * @public */ - dayHeaderFormat?: Format; + fileUploaderOptions?: Omit; /** * @docid * @default true * @public */ - reloadOnChange?: boolean; + focusStateEnabled?: boolean; /** * @docid - * @default [] + * @default true * @public */ - alerts?: Array; + hoverStateEnabled?: boolean; /** * @docid * @default "" @@ -486,10 +468,10 @@ export interface dxChatOptions extends WidgetOptions { inputFieldText?: TextAreaProperties['value']; /** * @docid - * @type SendButtonProperties + * @fires dxChatOptions.onOptionChanged * @public */ - sendButtonOptions?: SendButtonProperties; + items?: Array; /** * @docid * @default null @@ -505,34 +487,39 @@ export interface dxChatOptions extends WidgetOptions { messageTimestampFormat?: Format; /** * @docid - * @default [] + * @default true * @public */ - typingUsers?: Array; + reloadOnChange?: boolean; /** * @docid - * @default true * @public */ - showDayHeaders?: boolean; + sendButtonOptions?: SendButtonProperties; /** * @docid * @default true * @public */ - showUserName?: boolean; + showAvatar?: boolean; /** * @docid * @default true * @public */ - showAvatar?: boolean; + showDayHeaders?: boolean; /** * @docid * @default true * @public */ showMessageTimestamp?: boolean; + /** + * @docid + * @default true + * @public + */ + showUserName?: boolean; /** * @docid * @default false @@ -545,6 +532,18 @@ export interface dxChatOptions extends WidgetOptions { * @public */ speechToTextOptions?: Omit; + /** + * @docid + * @default [] + * @public + */ + typingUsers?: Array; + /** + * @docid + * @default { id: new Guid().toString() } + * @public + */ + user?: User; /** * @docid * @default undefined @@ -564,75 +563,75 @@ export interface dxChatOptions extends WidgetOptions { /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageEnteredEvent} + * @type_function_param1 e:{ui/chat:MessageDeletedEvent} * @action * @public */ - onMessageEntered?: ((e: MessageEnteredEvent) => void) | undefined; + onMessageDeleted?: ((e: MessageDeletedEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:TypingStartEvent} + * @type_function_param1 e:{ui/chat:MessageDeletingEvent} * @action * @public */ - onTypingStart?: ((e: TypingStartEvent) => void) | undefined; + onMessageDeleting?: ((e: MessageDeletingEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:TypingEndEvent} + * @type_function_param1 e:{ui/chat:MessageEditCanceledEvent} * @action * @public */ - onTypingEnd?: ((e: TypingEndEvent) => void) | undefined; + onMessageEditCanceled?: ((e: MessageEditCanceledEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageDeletingEvent} + * @type_function_param1 e:{ui/chat:MessageEditingStartEvent} * @action * @public */ - onMessageDeleting?: ((e: MessageDeletingEvent) => void) | undefined; + onMessageEditingStart?: ((e: MessageEditingStartEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageDeletedEvent} + * @type_function_param1 e:{ui/chat:MessageEnteredEvent} * @action * @public */ - onMessageDeleted?: ((e: MessageDeletedEvent) => void) | undefined; + onMessageEntered?: ((e: MessageEnteredEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageEditingStartEvent} + * @type_function_param1 e:{ui/chat:MessageUpdatedEvent} * @action * @public */ - onMessageEditingStart?: ((e: MessageEditingStartEvent) => void) | undefined; + onMessageUpdated?: ((e: MessageUpdatedEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageEditCanceledEvent} + * @type_function_param1 e:{ui/chat:MessageUpdatingEvent} * @action * @public */ - onMessageEditCanceled?: ((e: MessageEditCanceledEvent) => void) | undefined; + onMessageUpdating?: ((e: MessageUpdatingEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageUpdatingEvent} + * @type_function_param1 e:{ui/chat:TypingEndEvent} * @action * @public */ - onMessageUpdating?: ((e: MessageUpdatingEvent) => void) | undefined; + onTypingEnd?: ((e: TypingEndEvent) => void) | undefined; /** * @docid * @default undefined - * @type_function_param1 e:{ui/chat:MessageUpdatedEvent} + * @type_function_param1 e:{ui/chat:TypingStartEvent} * @action * @public */ - onMessageUpdated?: ((e: MessageUpdatedEvent) => void) | undefined; + onTypingStart?: ((e: TypingStartEvent) => void) | undefined; } /** diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index af1a192aa6f3..a425272839cb 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -11376,45 +11376,34 @@ declare module DevExpress.ui { */ activeStateEnabled?: boolean; /** - * [descr:dxChatOptions.fileUploaderOptions] - */ - fileUploaderOptions?: Omit< - DevExpress.ui.dxFileUploader.Properties, - 'dialogTrigger' | 'showFileList' | 'uploadMode' | 'value' - >; - /** - * [descr:dxChatOptions.focusStateEnabled] - */ - focusStateEnabled?: boolean; - /** - * [descr:dxChatOptions.hoverStateEnabled] + * [descr:dxChatOptions.alerts] */ - hoverStateEnabled?: boolean; + alerts?: Array; /** - * [descr:dxChatOptions.user] + * [descr:dxChatOptions.dataSource] */ - user?: DevExpress.ui.dxChat.User; + dataSource?: DevExpress.data.DataSourceLike | null; /** - * [descr:dxChatOptions.items] + * [descr:dxChatOptions.dayHeaderFormat] */ - items?: Array; + dayHeaderFormat?: DevExpress.common.core.localization.Format; /** * [descr:dxChatOptions.editing] */ editing?: { /** - * [descr:dxChatOptions.editing.allowUpdating] + * [descr:dxChatOptions.editing.allowDeleting] */ - allowUpdating?: + allowDeleting?: | boolean | ((options: { component?: dxChat; message?: DevExpress.ui.dxChat.Message; }) => boolean); /** - * [descr:dxChatOptions.editing.allowDeleting] + * [descr:dxChatOptions.editing.allowUpdating] */ - allowDeleting?: + allowUpdating?: | boolean | ((options: { component?: dxChat; @@ -11432,29 +11421,28 @@ declare module DevExpress.ui { itemElement: DevExpress.core.DxElement ) => string | DevExpress.core.UserDefinedElement); /** - * [descr:dxChatOptions.dataSource] - */ - dataSource?: DevExpress.data.DataSourceLike | null; - /** - * [descr:dxChatOptions.dayHeaderFormat] + * [descr:dxChatOptions.fileUploaderOptions] */ - dayHeaderFormat?: DevExpress.common.core.localization.Format; + fileUploaderOptions?: Omit< + DevExpress.ui.dxFileUploader.Properties, + 'dialogTrigger' | 'showFileList' | 'uploadMode' | 'value' + >; /** - * [descr:dxChatOptions.reloadOnChange] + * [descr:dxChatOptions.focusStateEnabled] */ - reloadOnChange?: boolean; + focusStateEnabled?: boolean; /** - * [descr:dxChatOptions.alerts] + * [descr:dxChatOptions.hoverStateEnabled] */ - alerts?: Array; + hoverStateEnabled?: boolean; /** * [descr:dxChatOptions.inputFieldText] */ inputFieldText?: DevExpress.ui.dxTextArea.Properties['value']; /** - * [descr:dxChatOptions.sendButtonOptions] + * [descr:dxChatOptions.items] */ - sendButtonOptions?: DevExpress.ui.dxChat.SendButtonProperties; + items?: Array; /** * [descr:dxChatOptions.messageTemplate] */ @@ -11470,25 +11458,29 @@ declare module DevExpress.ui { */ messageTimestampFormat?: DevExpress.common.core.localization.Format; /** - * [descr:dxChatOptions.typingUsers] - */ - typingUsers?: Array; - /** - * [descr:dxChatOptions.showDayHeaders] + * [descr:dxChatOptions.reloadOnChange] */ - showDayHeaders?: boolean; + reloadOnChange?: boolean; /** - * [descr:dxChatOptions.showUserName] + * [descr:dxChatOptions.sendButtonOptions] */ - showUserName?: boolean; + sendButtonOptions?: DevExpress.ui.dxChat.SendButtonProperties; /** * [descr:dxChatOptions.showAvatar] */ showAvatar?: boolean; + /** + * [descr:dxChatOptions.showDayHeaders] + */ + showDayHeaders?: boolean; /** * [descr:dxChatOptions.showMessageTimestamp] */ showMessageTimestamp?: boolean; + /** + * [descr:dxChatOptions.showUserName] + */ + showUserName?: boolean; /** * [descr:dxChatOptions.speechToTextEnabled] */ @@ -11500,6 +11492,14 @@ declare module DevExpress.ui { DevExpress.ui.dxSpeechToText.Properties, 'stylingMode' | 'type' >; + /** + * [descr:dxChatOptions.typingUsers] + */ + typingUsers?: Array; + /** + * [descr:dxChatOptions.user] + */ + user?: DevExpress.ui.dxChat.User; /** * [descr:dxChatOptions.onAttachmentDownloadClick] */ @@ -11513,22 +11513,10 @@ declare module DevExpress.ui { | ((e: DevExpress.ui.dxChat.InputFieldTextChangedEvent) => void) | undefined; /** - * [descr:dxChatOptions.onMessageEntered] - */ - onMessageEntered?: - | ((e: DevExpress.ui.dxChat.MessageEnteredEvent) => void) - | undefined; - /** - * [descr:dxChatOptions.onTypingStart] - */ - onTypingStart?: - | ((e: DevExpress.ui.dxChat.TypingStartEvent) => void) - | undefined; - /** - * [descr:dxChatOptions.onTypingEnd] + * [descr:dxChatOptions.onMessageDeleted] */ - onTypingEnd?: - | ((e: DevExpress.ui.dxChat.TypingEndEvent) => void) + onMessageDeleted?: + | ((e: DevExpress.ui.dxChat.MessageDeletedEvent) => void) | undefined; /** * [descr:dxChatOptions.onMessageDeleting] @@ -11537,10 +11525,10 @@ declare module DevExpress.ui { | ((e: DevExpress.ui.dxChat.MessageDeletingEvent) => void) | undefined; /** - * [descr:dxChatOptions.onMessageDeleted] + * [descr:dxChatOptions.onMessageEditCanceled] */ - onMessageDeleted?: - | ((e: DevExpress.ui.dxChat.MessageDeletedEvent) => void) + onMessageEditCanceled?: + | ((e: DevExpress.ui.dxChat.MessageEditCanceledEvent) => void) | undefined; /** * [descr:dxChatOptions.onMessageEditingStart] @@ -11549,10 +11537,16 @@ declare module DevExpress.ui { | ((e: DevExpress.ui.dxChat.MessageEditingStartEvent) => void) | undefined; /** - * [descr:dxChatOptions.onMessageEditCanceled] + * [descr:dxChatOptions.onMessageEntered] */ - onMessageEditCanceled?: - | ((e: DevExpress.ui.dxChat.MessageEditCanceledEvent) => void) + onMessageEntered?: + | ((e: DevExpress.ui.dxChat.MessageEnteredEvent) => void) + | undefined; + /** + * [descr:dxChatOptions.onMessageUpdated] + */ + onMessageUpdated?: + | ((e: DevExpress.ui.dxChat.MessageUpdatedEvent) => void) | undefined; /** * [descr:dxChatOptions.onMessageUpdating] @@ -11561,10 +11555,16 @@ declare module DevExpress.ui { | ((e: DevExpress.ui.dxChat.MessageUpdatingEvent) => void) | undefined; /** - * [descr:dxChatOptions.onMessageUpdated] + * [descr:dxChatOptions.onTypingEnd] */ - onMessageUpdated?: - | ((e: DevExpress.ui.dxChat.MessageUpdatedEvent) => void) + onTypingEnd?: + | ((e: DevExpress.ui.dxChat.TypingEndEvent) => void) + | undefined; + /** + * [descr:dxChatOptions.onTypingStart] + */ + onTypingStart?: + | ((e: DevExpress.ui.dxChat.TypingStartEvent) => void) | undefined; } /**