From d42f0818f2c2c386f1efa81def4765f689b3ac3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Tue, 13 Jan 2026 19:20:39 +0000 Subject: [PATCH 1/6] Chat: Integrate Accordion to MessageBubble --- .../js/__internal/ui/chat/messagebubble.ts | 78 +++++++++- .../js/__internal/ui/chat/messagegroup.ts | 1 + .../js/localization/messages/ar.json | 4 + .../js/localization/messages/bg.json | 4 + .../js/localization/messages/ca.json | 4 + .../js/localization/messages/cs.json | 4 + .../js/localization/messages/da.json | 4 + .../js/localization/messages/de.json | 4 + .../js/localization/messages/el.json | 4 + .../js/localization/messages/en.json | 4 + .../js/localization/messages/es.json | 4 + .../js/localization/messages/fa.json | 4 + .../js/localization/messages/fi.json | 4 + .../js/localization/messages/fr.json | 4 + .../js/localization/messages/hu.json | 4 + .../js/localization/messages/it.json | 4 + .../js/localization/messages/ja.json | 4 + .../js/localization/messages/lt.json | 4 + .../js/localization/messages/lv.json | 4 + .../js/localization/messages/nb.json | 4 + .../js/localization/messages/nl.json | 4 + .../js/localization/messages/pl.json | 4 + .../js/localization/messages/pt.json | 4 + .../js/localization/messages/ro.json | 4 + .../js/localization/messages/ru.json | 4 + .../js/localization/messages/sl.json | 4 + .../js/localization/messages/sv.json | 4 + .../js/localization/messages/tr.json | 4 + .../js/localization/messages/uk.json | 4 + .../js/localization/messages/vi.json | 4 + .../js/localization/messages/zh-tw.json | 4 + .../js/localization/messages/zh.json | 4 + packages/devextreme/js/ui/chat.d.ts | 50 +++++++ packages/devextreme/playground/jquery.html | 137 +++++++++++++++++- 34 files changed, 381 insertions(+), 5 deletions(-) diff --git a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts index 56e9970183ea..942a5dcff7cd 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts @@ -2,11 +2,14 @@ import messageLocalization from '@js/common/core/localization/message'; import { getPublicElement } from '@js/core/element'; import type { dxElementWrapper } from '@js/core/renderer'; import $ from '@js/core/renderer'; -import type { Attachment, AttachmentDownloadClickEvent, Message } from '@js/ui/chat'; +import type { + Attachment, AttachmentDownloadClickEvent, Message, MetaData, +} from '@js/ui/chat'; import type { WidgetOptions } from '@js/ui/widget/ui.widget'; import { ICON_CLASS } from '@ts/core/utils/m_icon'; import type { OptionChanged } from '@ts/core/widget/types'; import Widget from '@ts/core/widget/widget'; +import Accordion from '@ts/ui/accordion'; import FileView from '@ts/ui/chat/file_view/file_view'; export const CHAT_MESSAGEBUBBLE_CLASS = 'dx-chat-messagebubble'; @@ -15,6 +18,7 @@ export const CHAT_MESSAGEBUBBLE_CONTENT_CLASS = 'dx-chat-messagebubble-content'; export const CHAT_MESSAGEBUBBLE_ICON_PROHIBITION_CLASS = `${ICON_CLASS}-cursorprohibition`; export const CHAT_MESSAGEBUBBLE_HAS_IMAGE_CLASS = 'dx-has-image'; export const CHAT_MESSAGEBUBBLE_IMAGE_CLASS = 'dx-chat-messagebubble-image'; +export const CHAT_MESSAGEBUBBLE_FUNCTIONCALL_CLASS = 'dx-chat-messagebubble-functioncall'; export const MESSAGE_DATA_KEY = 'dxMessageData'; @@ -26,6 +30,7 @@ export interface Properties extends WidgetOptions { src?: string; alt?: string; attachments?: Attachment[]; + metadata?: MetaData; onAttachmentDownloadClick?: (e: AttachmentDownloadClickEvent) => void; template?: ((message: Message, container: Element) => void) | null; } @@ -35,6 +40,8 @@ class MessageBubble extends Widget { _$attachments?: dxElementWrapper; + _$functionCall?: dxElementWrapper; + _getDefaultOptions(): Properties { return { ...super._getDefaultOptions(), @@ -53,9 +60,11 @@ class MessageBubble extends Widget { super._initMarkup(); this._renderContentContainer(); + this._renderFunctionCallElement(); this._renderAttachmentsElement(); this._updateContent(); + this._renderFunctionCall(); this._renderAttachments(); } @@ -65,6 +74,19 @@ class MessageBubble extends Widget { .appendTo(this.$element()); } + _renderFunctionCallElement(): void { + const { metadata, isDeleted } = this.option(); + + this._$functionCall?.remove(); + this._$functionCall = undefined; + + if (metadata?.functionCall && !isDeleted) { + this._$functionCall = $('
') + .addClass(CHAT_MESSAGEBUBBLE_FUNCTIONCALL_CLASS) + .appendTo(this.$element()); + } + } + _renderAttachmentsElement(): void { const { attachments, isDeleted } = this.option(); @@ -132,6 +154,56 @@ class MessageBubble extends Widget { } } + _renderFunctionCall(): void { + const { metadata } = this.option(); + + if (!this._$functionCall || !metadata?.functionCall) { + return; + } + + this._$functionCall.empty(); + + const { functionCall } = metadata; + + const accordionItems = [{ + title: `${messageLocalization.format('dxChat-functionCallTitle')}`, + template: (): dxElementWrapper => { + const $content = $('
'); + + const $functionName = $('
') + .append($('').text(`${messageLocalization.format('dxChat-functionCallLabel')}: `)) + .append($('').text(functionCall.name)); + + const args = functionCall.arguments || []; + const argumentsText = args.length > 0 + ? args.map((arg) => Object.entries(arg) + .map(([key, value]) => `${key}: ${JSON.stringify(value)}`) + .join(', ')) + .join(', ') + : ''; + + const $arguments = $('
') + .append($('').text(`${messageLocalization.format('dxChat-argumentsLabel')}: `)) + .append($('').text(argumentsText)); + + const $result = $('
') + .append($('').text(`${messageLocalization.format('dxChat-resultLabel')}: `)) + .append($('').text(JSON.stringify(functionCall.result))); + + $content.append($functionName).append($arguments).append($result); + + return $content; + }, + }]; + + this._createComponent(this._$functionCall, Accordion, { + dataSource: accordionItems, + collapsible: true, + multiple: false, + selectedIndex: -1, + }); + } + _renderAttachments(): void { const { attachments, @@ -183,6 +255,10 @@ class MessageBubble extends Widget { case 'isEdited': this._updateMessageData(name, value); break; + case 'metadata': + this._renderFunctionCallElement(); + this._renderFunctionCall(); + break; case 'onAttachmentDownloadClick': case 'attachments': this._renderAttachmentsElement(); diff --git a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts index d4bef516f829..58b727b61cef 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts @@ -139,6 +139,7 @@ class MessageGroup extends Widget { options.src = (message as ImageMessage).src; } else { options.text = (message as TextMessage).text; + options.metadata = (message as TextMessage).metadata; } if (messageTemplate) { diff --git a/packages/devextreme/js/localization/messages/ar.json b/packages/devextreme/js/localization/messages/ar.json index 1eaf0c9462ba..030d4d90c13e 100644 --- a/packages/devextreme/js/localization/messages/ar.json +++ b/packages/devextreme/js/localization/messages/ar.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "أحمر", "dxColorView-ariaGreen": "أخضر", diff --git a/packages/devextreme/js/localization/messages/bg.json b/packages/devextreme/js/localization/messages/bg.json index 58e16b1dad7c..2b337be23c42 100644 --- a/packages/devextreme/js/localization/messages/bg.json +++ b/packages/devextreme/js/localization/messages/bg.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Red", "dxColorView-ariaGreen": "Green", diff --git a/packages/devextreme/js/localization/messages/ca.json b/packages/devextreme/js/localization/messages/ca.json index f04799fdacef..b940ac31b012 100644 --- a/packages/devextreme/js/localization/messages/ca.json +++ b/packages/devextreme/js/localization/messages/ca.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Vermell", "dxColorView-ariaGreen": "Verd", diff --git a/packages/devextreme/js/localization/messages/cs.json b/packages/devextreme/js/localization/messages/cs.json index 5143ccb388a0..571f8fc8ad43 100644 --- a/packages/devextreme/js/localization/messages/cs.json +++ b/packages/devextreme/js/localization/messages/cs.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Červená", "dxColorView-ariaGreen": "Zelená", diff --git a/packages/devextreme/js/localization/messages/da.json b/packages/devextreme/js/localization/messages/da.json index a88e0261c345..db5611b84a0b 100644 --- a/packages/devextreme/js/localization/messages/da.json +++ b/packages/devextreme/js/localization/messages/da.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rød", "dxColorView-ariaGreen": "Grøn", diff --git a/packages/devextreme/js/localization/messages/de.json b/packages/devextreme/js/localization/messages/de.json index 5e454df88d89..2dacb5f112b7 100644 --- a/packages/devextreme/js/localization/messages/de.json +++ b/packages/devextreme/js/localization/messages/de.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rot", "dxColorView-ariaGreen": "Grün", diff --git a/packages/devextreme/js/localization/messages/el.json b/packages/devextreme/js/localization/messages/el.json index f752e4b4cbbe..bf060f7a818f 100644 --- a/packages/devextreme/js/localization/messages/el.json +++ b/packages/devextreme/js/localization/messages/el.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Κόκκινο", "dxColorView-ariaGreen": "Πράσινο", diff --git a/packages/devextreme/js/localization/messages/en.json b/packages/devextreme/js/localization/messages/en.json index 7ba245909f55..16f2c7621217 100644 --- a/packages/devextreme/js/localization/messages/en.json +++ b/packages/devextreme/js/localization/messages/en.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Red", "dxColorView-ariaGreen": "Green", diff --git a/packages/devextreme/js/localization/messages/es.json b/packages/devextreme/js/localization/messages/es.json index 03eafbc747b7..5240d68da5eb 100644 --- a/packages/devextreme/js/localization/messages/es.json +++ b/packages/devextreme/js/localization/messages/es.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rojo", "dxColorView-ariaGreen": "Verde", diff --git a/packages/devextreme/js/localization/messages/fa.json b/packages/devextreme/js/localization/messages/fa.json index 09fc10c6e4df..0d9003dc64e4 100644 --- a/packages/devextreme/js/localization/messages/fa.json +++ b/packages/devextreme/js/localization/messages/fa.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "قرمز", "dxColorView-ariaGreen": "سبز", diff --git a/packages/devextreme/js/localization/messages/fi.json b/packages/devextreme/js/localization/messages/fi.json index dd1ed837561d..7a7cd958e7ec 100644 --- a/packages/devextreme/js/localization/messages/fi.json +++ b/packages/devextreme/js/localization/messages/fi.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Punainen", "dxColorView-ariaGreen": "Vihreä", diff --git a/packages/devextreme/js/localization/messages/fr.json b/packages/devextreme/js/localization/messages/fr.json index 3e0a41e57425..2f31c5c8dbe7 100644 --- a/packages/devextreme/js/localization/messages/fr.json +++ b/packages/devextreme/js/localization/messages/fr.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rouge", "dxColorView-ariaGreen": "Vert", diff --git a/packages/devextreme/js/localization/messages/hu.json b/packages/devextreme/js/localization/messages/hu.json index c3d3c0d431fc..add107ee989e 100644 --- a/packages/devextreme/js/localization/messages/hu.json +++ b/packages/devextreme/js/localization/messages/hu.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Piros", "dxColorView-ariaGreen": "Zöld", diff --git a/packages/devextreme/js/localization/messages/it.json b/packages/devextreme/js/localization/messages/it.json index 877952773a0d..206c6af43ecd 100644 --- a/packages/devextreme/js/localization/messages/it.json +++ b/packages/devextreme/js/localization/messages/it.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rosso", "dxColorView-ariaGreen": "Verde", diff --git a/packages/devextreme/js/localization/messages/ja.json b/packages/devextreme/js/localization/messages/ja.json index 3f5eeec53b41..eb10027a8ad1 100644 --- a/packages/devextreme/js/localization/messages/ja.json +++ b/packages/devextreme/js/localization/messages/ja.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "赤", "dxColorView-ariaGreen": "緑", diff --git a/packages/devextreme/js/localization/messages/lt.json b/packages/devextreme/js/localization/messages/lt.json index 3a49f0aa3a18..3a778cbea005 100644 --- a/packages/devextreme/js/localization/messages/lt.json +++ b/packages/devextreme/js/localization/messages/lt.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Raudona", "dxColorView-ariaGreen": "Žalia", diff --git a/packages/devextreme/js/localization/messages/lv.json b/packages/devextreme/js/localization/messages/lv.json index 76bcc3d8bd4a..5243c5fa6422 100644 --- a/packages/devextreme/js/localization/messages/lv.json +++ b/packages/devextreme/js/localization/messages/lv.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Sarkans", "dxColorView-ariaGreen": "Zaļš", diff --git a/packages/devextreme/js/localization/messages/nb.json b/packages/devextreme/js/localization/messages/nb.json index d7675b8b2788..201c7bf4f6f0 100644 --- a/packages/devextreme/js/localization/messages/nb.json +++ b/packages/devextreme/js/localization/messages/nb.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rød", "dxColorView-ariaGreen": "Grønn", diff --git a/packages/devextreme/js/localization/messages/nl.json b/packages/devextreme/js/localization/messages/nl.json index a223fcb234df..33d0f99a5471 100644 --- a/packages/devextreme/js/localization/messages/nl.json +++ b/packages/devextreme/js/localization/messages/nl.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rood", "dxColorView-ariaGreen": "Groen", diff --git a/packages/devextreme/js/localization/messages/pl.json b/packages/devextreme/js/localization/messages/pl.json index 465d2f338e0e..9d9ff149fafa 100644 --- a/packages/devextreme/js/localization/messages/pl.json +++ b/packages/devextreme/js/localization/messages/pl.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "czerwony", "dxColorView-ariaGreen": "zielony", diff --git a/packages/devextreme/js/localization/messages/pt.json b/packages/devextreme/js/localization/messages/pt.json index 8fb205980707..87b2701c8a97 100644 --- a/packages/devextreme/js/localization/messages/pt.json +++ b/packages/devextreme/js/localization/messages/pt.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Vermelho", "dxColorView-ariaGreen": "Verde", diff --git a/packages/devextreme/js/localization/messages/ro.json b/packages/devextreme/js/localization/messages/ro.json index 1b87dc9038e5..4f0e914b62c3 100644 --- a/packages/devextreme/js/localization/messages/ro.json +++ b/packages/devextreme/js/localization/messages/ro.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Roșu", "dxColorView-ariaGreen": "Verde", diff --git a/packages/devextreme/js/localization/messages/ru.json b/packages/devextreme/js/localization/messages/ru.json index aede9afde078..f15a6468324b 100644 --- a/packages/devextreme/js/localization/messages/ru.json +++ b/packages/devextreme/js/localization/messages/ru.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "вызвана функция", + "dxChat-functionCallLabel": "Вызвана функция", + "dxChat-argumentsLabel": "Аргументы", + "dxChat-resultLabel": "Результат", "dxColorView-ariaRed": "Красный", "dxColorView-ariaGreen": "Зеленый", diff --git a/packages/devextreme/js/localization/messages/sl.json b/packages/devextreme/js/localization/messages/sl.json index 30e9374bf292..b2942a0198d6 100644 --- a/packages/devextreme/js/localization/messages/sl.json +++ b/packages/devextreme/js/localization/messages/sl.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Rdeča", "dxColorView-ariaGreen": "Zelena", diff --git a/packages/devextreme/js/localization/messages/sv.json b/packages/devextreme/js/localization/messages/sv.json index f607c4fe6ea5..2bdd60b43ab3 100644 --- a/packages/devextreme/js/localization/messages/sv.json +++ b/packages/devextreme/js/localization/messages/sv.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "Fillista", "dxChat-downloadButtonLabel": "Ladda ner fil {0}", "dxChat-fileLimitReachedWarning": "Du valde för många filer. Välj högst {0} filer och försök igen.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Röd", "dxColorView-ariaGreen": "Grön", diff --git a/packages/devextreme/js/localization/messages/tr.json b/packages/devextreme/js/localization/messages/tr.json index bec81b1e7e85..1ee914af66fe 100644 --- a/packages/devextreme/js/localization/messages/tr.json +++ b/packages/devextreme/js/localization/messages/tr.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Kırmızı", "dxColorView-ariaGreen": "Yeşil", diff --git a/packages/devextreme/js/localization/messages/uk.json b/packages/devextreme/js/localization/messages/uk.json index 5c65ce5f1c95..4f1920752997 100644 --- a/packages/devextreme/js/localization/messages/uk.json +++ b/packages/devextreme/js/localization/messages/uk.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Червоний", "dxColorView-ariaGreen": "Зелений", diff --git a/packages/devextreme/js/localization/messages/vi.json b/packages/devextreme/js/localization/messages/vi.json index 8846ef3f44b8..ff494b378876 100644 --- a/packages/devextreme/js/localization/messages/vi.json +++ b/packages/devextreme/js/localization/messages/vi.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Đỏ", "dxColorView-ariaGreen": "Xanh lá", diff --git a/packages/devextreme/js/localization/messages/zh-tw.json b/packages/devextreme/js/localization/messages/zh-tw.json index 228ac5789bfc..c0fdf5f67db1 100644 --- a/packages/devextreme/js/localization/messages/zh-tw.json +++ b/packages/devextreme/js/localization/messages/zh-tw.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "紅色", "dxColorView-ariaGreen": "綠色", diff --git a/packages/devextreme/js/localization/messages/zh.json b/packages/devextreme/js/localization/messages/zh.json index 55367f9f9163..3806af941c4c 100644 --- a/packages/devextreme/js/localization/messages/zh.json +++ b/packages/devextreme/js/localization/messages/zh.json @@ -420,6 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", + "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallLabel": "Function Called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "红色", "dxColorView-ariaGreen": "绿色", diff --git a/packages/devextreme/js/ui/chat.d.ts b/packages/devextreme/js/ui/chat.d.ts index b2e64cf94ca5..0500ae6ef98e 100644 --- a/packages/devextreme/js/ui/chat.d.ts +++ b/packages/devextreme/js/ui/chat.d.ts @@ -231,6 +231,51 @@ export type Attachment = { [key: string]: any; }; +/** + * @docid + * @namespace DevExpress.ui.dxChat + * @public + */ +export type FunctionCallArgument = { + [key: string]: any; +}; + +/** + * @docid + * @namespace DevExpress.ui.dxChat + * @public + */ +export type FunctionCall = { + /** + * @docid + * @public + */ + name: string; + /** + * @docid + * @public + */ + arguments: FunctionCallArgument[]; + /** + * @docid + * @public + */ + result: any; +}; + +/** + * @docid + * @namespace DevExpress.ui.dxChat + * @public + */ +export type MetaData = { + /** + * @docid + * @public + */ + functionCall: FunctionCall; +}; + /** * @docid * @namespace DevExpress.ui.dxChat @@ -292,6 +337,11 @@ export type TextMessage = MessageBase & { * @public */ isEdited?: boolean; + /** + * @docid + * @public + */ + metadata?: MetaData; [key: string]: any; }; diff --git a/packages/devextreme/playground/jquery.html b/packages/devextreme/playground/jquery.html index abaed02d03f2..fcdb6ae0f8fd 100644 --- a/packages/devextreme/playground/jquery.html +++ b/packages/devextreme/playground/jquery.html @@ -49,13 +49,142 @@

Te
-
+

From 9c88e5bb5eec02956b8a4ece51e26299fe13d6bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Tue, 13 Jan 2026 19:23:26 +0000 Subject: [PATCH 2/6] fix --- packages/devextreme/js/localization/messages/ru.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/devextreme/js/localization/messages/ru.json b/packages/devextreme/js/localization/messages/ru.json index f15a6468324b..763aa518b8de 100644 --- a/packages/devextreme/js/localization/messages/ru.json +++ b/packages/devextreme/js/localization/messages/ru.json @@ -420,10 +420,10 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "вызвана функция", - "dxChat-functionCallLabel": "Вызвана функция", - "dxChat-argumentsLabel": "Аргументы", - "dxChat-resultLabel": "Результат", + "dxChat-functionCallTitle": "function called", + "dxChat-functionCallLabel": "Function called", + "dxChat-argumentsLabel": "Arguments", + "dxChat-resultLabel": "Result", "dxColorView-ariaRed": "Красный", "dxColorView-ariaGreen": "Зеленый", From dfc8a57e54f8722b92854e6b13133b27377d5ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 14 Jan 2026 13:52:05 +0000 Subject: [PATCH 3/6] fix(locale): Remove placeholder --- packages/devextreme/js/localization/messages/ar.json | 2 +- packages/devextreme/js/localization/messages/bg.json | 2 +- packages/devextreme/js/localization/messages/ca.json | 2 +- packages/devextreme/js/localization/messages/cs.json | 2 +- packages/devextreme/js/localization/messages/da.json | 2 +- packages/devextreme/js/localization/messages/de.json | 2 +- packages/devextreme/js/localization/messages/el.json | 2 +- packages/devextreme/js/localization/messages/es.json | 2 +- packages/devextreme/js/localization/messages/fa.json | 2 +- packages/devextreme/js/localization/messages/fi.json | 2 +- packages/devextreme/js/localization/messages/fr.json | 2 +- packages/devextreme/js/localization/messages/hu.json | 2 +- packages/devextreme/js/localization/messages/it.json | 2 +- packages/devextreme/js/localization/messages/ja.json | 2 +- packages/devextreme/js/localization/messages/lt.json | 2 +- packages/devextreme/js/localization/messages/lv.json | 2 +- packages/devextreme/js/localization/messages/nb.json | 2 +- packages/devextreme/js/localization/messages/nl.json | 2 +- packages/devextreme/js/localization/messages/pl.json | 2 +- packages/devextreme/js/localization/messages/pt.json | 2 +- packages/devextreme/js/localization/messages/ro.json | 2 +- packages/devextreme/js/localization/messages/sl.json | 2 +- packages/devextreme/js/localization/messages/sv.json | 2 +- packages/devextreme/js/localization/messages/tr.json | 2 +- packages/devextreme/js/localization/messages/uk.json | 2 +- packages/devextreme/js/localization/messages/vi.json | 2 +- packages/devextreme/js/localization/messages/zh-tw.json | 2 +- packages/devextreme/js/localization/messages/zh.json | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/packages/devextreme/js/localization/messages/ar.json b/packages/devextreme/js/localization/messages/ar.json index 030d4d90c13e..127c141562fd 100644 --- a/packages/devextreme/js/localization/messages/ar.json +++ b/packages/devextreme/js/localization/messages/ar.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/bg.json b/packages/devextreme/js/localization/messages/bg.json index 2b337be23c42..1794dce87014 100644 --- a/packages/devextreme/js/localization/messages/bg.json +++ b/packages/devextreme/js/localization/messages/bg.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/ca.json b/packages/devextreme/js/localization/messages/ca.json index b940ac31b012..7764f58833f0 100644 --- a/packages/devextreme/js/localization/messages/ca.json +++ b/packages/devextreme/js/localization/messages/ca.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/cs.json b/packages/devextreme/js/localization/messages/cs.json index 571f8fc8ad43..e0a485c2f83d 100644 --- a/packages/devextreme/js/localization/messages/cs.json +++ b/packages/devextreme/js/localization/messages/cs.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/da.json b/packages/devextreme/js/localization/messages/da.json index db5611b84a0b..9f170ca3af07 100644 --- a/packages/devextreme/js/localization/messages/da.json +++ b/packages/devextreme/js/localization/messages/da.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/de.json b/packages/devextreme/js/localization/messages/de.json index 2dacb5f112b7..1c9f8bb0e20d 100644 --- a/packages/devextreme/js/localization/messages/de.json +++ b/packages/devextreme/js/localization/messages/de.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/el.json b/packages/devextreme/js/localization/messages/el.json index bf060f7a818f..99b70d12b944 100644 --- a/packages/devextreme/js/localization/messages/el.json +++ b/packages/devextreme/js/localization/messages/el.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/es.json b/packages/devextreme/js/localization/messages/es.json index 5240d68da5eb..368a4781b490 100644 --- a/packages/devextreme/js/localization/messages/es.json +++ b/packages/devextreme/js/localization/messages/es.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/fa.json b/packages/devextreme/js/localization/messages/fa.json index 0d9003dc64e4..ddc7e99f08af 100644 --- a/packages/devextreme/js/localization/messages/fa.json +++ b/packages/devextreme/js/localization/messages/fa.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/fi.json b/packages/devextreme/js/localization/messages/fi.json index 7a7cd958e7ec..e75156a770c3 100644 --- a/packages/devextreme/js/localization/messages/fi.json +++ b/packages/devextreme/js/localization/messages/fi.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/fr.json b/packages/devextreme/js/localization/messages/fr.json index 2f31c5c8dbe7..d83170bcd179 100644 --- a/packages/devextreme/js/localization/messages/fr.json +++ b/packages/devextreme/js/localization/messages/fr.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/hu.json b/packages/devextreme/js/localization/messages/hu.json index add107ee989e..ebf3d356fff2 100644 --- a/packages/devextreme/js/localization/messages/hu.json +++ b/packages/devextreme/js/localization/messages/hu.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/it.json b/packages/devextreme/js/localization/messages/it.json index 206c6af43ecd..dcccb5d0243c 100644 --- a/packages/devextreme/js/localization/messages/it.json +++ b/packages/devextreme/js/localization/messages/it.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/ja.json b/packages/devextreme/js/localization/messages/ja.json index eb10027a8ad1..072d1d3d7569 100644 --- a/packages/devextreme/js/localization/messages/ja.json +++ b/packages/devextreme/js/localization/messages/ja.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/lt.json b/packages/devextreme/js/localization/messages/lt.json index 3a778cbea005..8e16ad7ef4e8 100644 --- a/packages/devextreme/js/localization/messages/lt.json +++ b/packages/devextreme/js/localization/messages/lt.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/lv.json b/packages/devextreme/js/localization/messages/lv.json index 5243c5fa6422..8e16d6682d7f 100644 --- a/packages/devextreme/js/localization/messages/lv.json +++ b/packages/devextreme/js/localization/messages/lv.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/nb.json b/packages/devextreme/js/localization/messages/nb.json index 201c7bf4f6f0..ed0522559aea 100644 --- a/packages/devextreme/js/localization/messages/nb.json +++ b/packages/devextreme/js/localization/messages/nb.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/nl.json b/packages/devextreme/js/localization/messages/nl.json index 33d0f99a5471..ff8aaa285fe3 100644 --- a/packages/devextreme/js/localization/messages/nl.json +++ b/packages/devextreme/js/localization/messages/nl.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/pl.json b/packages/devextreme/js/localization/messages/pl.json index 9d9ff149fafa..6d3d587c4fd4 100644 --- a/packages/devextreme/js/localization/messages/pl.json +++ b/packages/devextreme/js/localization/messages/pl.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/pt.json b/packages/devextreme/js/localization/messages/pt.json index 87b2701c8a97..db11877b2ffb 100644 --- a/packages/devextreme/js/localization/messages/pt.json +++ b/packages/devextreme/js/localization/messages/pt.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/ro.json b/packages/devextreme/js/localization/messages/ro.json index 4f0e914b62c3..36a119b137e9 100644 --- a/packages/devextreme/js/localization/messages/ro.json +++ b/packages/devextreme/js/localization/messages/ro.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/sl.json b/packages/devextreme/js/localization/messages/sl.json index b2942a0198d6..77562952d376 100644 --- a/packages/devextreme/js/localization/messages/sl.json +++ b/packages/devextreme/js/localization/messages/sl.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/sv.json b/packages/devextreme/js/localization/messages/sv.json index 2bdd60b43ab3..d440b1fff20f 100644 --- a/packages/devextreme/js/localization/messages/sv.json +++ b/packages/devextreme/js/localization/messages/sv.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "Fillista", "dxChat-downloadButtonLabel": "Ladda ner fil {0}", "dxChat-fileLimitReachedWarning": "Du valde för många filer. Välj högst {0} filer och försök igen.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/tr.json b/packages/devextreme/js/localization/messages/tr.json index 1ee914af66fe..5677e0e99b8f 100644 --- a/packages/devextreme/js/localization/messages/tr.json +++ b/packages/devextreme/js/localization/messages/tr.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/uk.json b/packages/devextreme/js/localization/messages/uk.json index 4f1920752997..b6340e708de8 100644 --- a/packages/devextreme/js/localization/messages/uk.json +++ b/packages/devextreme/js/localization/messages/uk.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/vi.json b/packages/devextreme/js/localization/messages/vi.json index ff494b378876..f8dd48d181f4 100644 --- a/packages/devextreme/js/localization/messages/vi.json +++ b/packages/devextreme/js/localization/messages/vi.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/zh-tw.json b/packages/devextreme/js/localization/messages/zh-tw.json index c0fdf5f67db1..6789b1a336c5 100644 --- a/packages/devextreme/js/localization/messages/zh-tw.json +++ b/packages/devextreme/js/localization/messages/zh-tw.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", diff --git a/packages/devextreme/js/localization/messages/zh.json b/packages/devextreme/js/localization/messages/zh.json index 3806af941c4c..88dde06e5dc6 100644 --- a/packages/devextreme/js/localization/messages/zh.json +++ b/packages/devextreme/js/localization/messages/zh.json @@ -420,7 +420,7 @@ "dxChat-fileViewLabel": "File list", "dxChat-downloadButtonLabel": "Download file {0}", "dxChat-fileLimitReachedWarning": "You selected too many files. Select no more than {0} files and retry.", - "dxChat-functionCallTitle": "{0} function called", + "dxChat-functionCallTitle": "function called", "dxChat-functionCallLabel": "Function Called", "dxChat-argumentsLabel": "Arguments", "dxChat-resultLabel": "Result", From e1cb3fb06ddf41a542b9604b00315c31d8c28df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 14 Jan 2026 13:56:35 +0000 Subject: [PATCH 4/6] refactor(minor) --- .../js/__internal/ui/chat/messagebubble.ts | 2 +- packages/devextreme/js/ui/chat_types.d.ts | 3 ++ packages/devextreme/ts/dx.all.d.ts | 36 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts index 942a5dcff7cd..041cddce6317 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts @@ -166,7 +166,7 @@ class MessageBubble extends Widget { const { functionCall } = metadata; const accordionItems = [{ - title: `${messageLocalization.format('dxChat-functionCallTitle')}`, + title: messageLocalization.format('dxChat-functionCallTitle'), template: (): dxElementWrapper => { const $content = $('
'); diff --git a/packages/devextreme/js/ui/chat_types.d.ts b/packages/devextreme/js/ui/chat_types.d.ts index 993170fe0bc4..bcb41fe47cd8 100644 --- a/packages/devextreme/js/ui/chat_types.d.ts +++ b/packages/devextreme/js/ui/chat_types.d.ts @@ -15,6 +15,9 @@ export { User, Alert, Attachment, + FunctionCallArgument, + FunctionCall, + MetaData, TextMessage, ImageMessage, Message, diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 4a7bc64f3a1c..8468f2fac07f 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -33992,6 +33992,29 @@ declare module DevExpress.ui.dxChat { [key: string]: any; }; + /** + * [descr:FunctionCall] + */ + export type FunctionCall = { + /** + * [descr:FunctionCall.name] + */ + name: string; + /** + * [descr:FunctionCall.arguments] + */ + arguments: FunctionCallArgument[]; + /** + * [descr:FunctionCall.result] + */ + result: any; + }; + /** + * [descr:FunctionCallArgument] + */ + export type FunctionCallArgument = { + [key: string]: any; + }; /** * [descr:ImageMessage] */ @@ -34037,6 +34060,15 @@ declare module DevExpress.ui.dxChat { [key: string]: any; }; + /** + * [descr:MetaData] + */ + export type MetaData = { + /** + * [descr:MetaData.functionCall] + */ + functionCall: FunctionCall; + }; /** * [descr:TextMessage] */ @@ -34053,6 +34085,10 @@ declare module DevExpress.ui.dxChat { * [descr:TextMessage.isEdited] */ isEdited?: boolean; + /** + * [descr:TextMessage.metadata] + */ + metadata?: MetaData; [key: string]: any; }; From 6b0201440a9916f49a2debd99423a43add1631de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 14 Jan 2026 20:12:08 +0000 Subject: [PATCH 5/6] feat(MB): Add focus and hover --- .../build/bundle-templates/dx.custom.js | 194 ++++++++++++++++++ .../js/__internal/ui/chat/messagebubble.ts | 15 ++ 2 files changed, 209 insertions(+) create mode 100644 packages/devextreme/build/bundle-templates/dx.custom.js diff --git a/packages/devextreme/build/bundle-templates/dx.custom.js b/packages/devextreme/build/bundle-templates/dx.custom.js new file mode 100644 index 000000000000..3826a18f7d62 --- /dev/null +++ b/packages/devextreme/build/bundle-templates/dx.custom.js @@ -0,0 +1,194 @@ +"use strict"; + +/* Comment lines below for the widgets you don't require and run "devextreme-bundler" in this directory, then include dx.custom.js in your project */ + +/* Core (dx.module-core.js) */ +/* eslint-disable import/no-commonjs */ +const DevExpress = require('../bundles/modules/core'); +require('../bundles/modules/core.legacy'); + +/* Integrations (dx.module-core.js) */ + +require('../integration/jquery'); +require('../integration/knockout'); + +require('../common/core/localization/globalize/core'); +require('../common/core/localization/globalize/message'); +require('../common/core/localization/globalize/number'); +require('../common/core/localization/globalize/date'); +require('../common/core/localization/globalize/currency'); + +/* Events (dx.module-core.js) */ + +require('../common/core/events/click'); +require('../common/core/events/contextmenu'); +require('../common/core/events/double_click'); +require('../common/core/events/drag'); +require('../common/core/events/hold'); +require('../common/core/events/hover'); +require('../common/core/events/pointer'); +require('../common/core/events/swipe'); +require('../common/core/events/transform'); + + +/* Data (dx.module-core.js) */ + +const data = DevExpress.data = require('../bundles/modules/data'); +require('../bundles/modules/data.legacy'); + +data.odata = require('../bundles/modules/data.odata'); +require('../bundles/modules/data.odata.legacy'); + + +/* UI core (dx.module-core.js) */ + +const ui = DevExpress.ui = require('../bundles/modules/ui'); + +ui.themes = require('../ui/themes'); + +// deprecated +ui.setTemplateEngine = require('../core/templates/template_engine_registry').setTemplateEngine; + +ui.dialog = require('../ui/dialog'); +ui.notify = require('../ui/notify'); +ui.repaintFloatingActionButton = require('../ui/speed_dial_action/repaint_floating_action_button'); +ui.hideToasts = require('../ui/toast/hide_toasts'); + +/* Base widgets (dx.module-widgets-base.js) */ + +ui.dxActionSheet = require('../ui/action_sheet'); +ui.dxAutocomplete = require('../ui/autocomplete'); +ui.dxBox = require('../ui/box'); +ui.dxButton = require('../ui/button'); +ui.dxDropDownButton = require('../ui/drop_down_button'); +ui.dxButtonGroup = require('../ui/button_group'); +ui.dxCalendar = require('../ui/calendar'); +ui.dxCheckBox = require('../ui/check_box'); +ui.dxColorBox = require('../ui/color_box'); +ui.dxChat = require('../ui/chat'); +ui.dxDateBox = require('../ui/date_box'); +ui.dxDateRangeBox = require('../ui/date_range_box'); +ui.dxDrawer = require('../ui/drawer'); +ui.dxDropDownBox = require('../ui/drop_down_box'); +ui.dxFileUploader = require('../ui/file_uploader'); +ui.dxForm = require('../ui/form'); +ui.dxGallery = require('../ui/gallery'); +ui.dxHtmlEditor = require('../ui/html_editor'); +ui.dxInformer = require('../ui/informer'); +ui.dxList = require('../ui/list'); +ui.dxLoadIndicator = require('../ui/load_indicator'); +ui.dxLoadPanel = require('../ui/load_panel'); +ui.dxLookup = require('../ui/lookup'); +ui.dxMap = require('../ui/map'); +ui.dxMultiView = require('../ui/multi_view'); +ui.dxNumberBox = require('../ui/number_box'); +ui.dxOverlay = require('../ui/overlay/ui.overlay'); +ui.dxPagination = require('../ui/pagination'); +ui.dxPopover = require('../ui/popover'); +ui.dxPopup = require('../ui/popup'); +ui.dxProgressBar = require('../ui/progress_bar'); +ui.dxRadioGroup = require('../ui/radio_group'); +ui.dxRangeSlider = require('../ui/range_slider'); +ui.dxResizable = require('../ui/resizable'); +ui.dxResponsiveBox = require('../ui/responsive_box'); +ui.dxScrollView = require('../ui/scroll_view'); +ui.dxSelectBox = require('../ui/select_box'); +ui.dxSlider = require('../ui/slider'); +ui.dxSpeechToText = require('../ui/speech_to_text'); +ui.dxSpeedDialAction = require('../ui/speed_dial_action'); +ui.dxStepper = require('../ui/stepper'); +ui.dxSplitter = require('../ui/splitter'); +ui.dxSwitch = require('../ui/switch'); +ui.dxTabPanel = require('../ui/tab_panel'); +ui.dxTabs = require('../ui/tabs'); +ui.dxTagBox = require('../ui/tag_box'); +ui.dxTextArea = require('../ui/text_area'); +ui.dxTextBox = require('../ui/text_box'); +ui.dxTileView = require('../ui/tile_view'); +ui.dxToast = require('../ui/toast'); +ui.dxToolbar = require('../ui/toolbar'); +ui.dxTooltip = require('../ui/tooltip'); +ui.dxTrackBar = require('../ui/track_bar'); +ui.dxDraggable = require('../ui/draggable'); +ui.dxSortable = require('../ui/sortable'); + +/* Validation (dx.module-widgets-base.js) */ + +DevExpress.validationEngine = require('../ui/validation_engine'); +ui.dxValidationSummary = require('../ui/validation_summary'); +ui.dxValidationGroup = require('../ui/validation_group'); +ui.dxValidator = require('../ui/validator'); + + +/* Web widgets (dx.module-widgets-web.js) */ + +ui.dxAccordion = require('../ui/accordion'); +ui.dxContextMenu = require('../ui/context_menu'); +ui.dxDataGrid = require('../ui/data_grid'); +ui.dxTreeList = require('../ui/tree_list'); +ui.dxCardView = require('../ui/card_view'); +ui.dxMenu = require('../ui/menu'); +ui.dxPivotGrid = require('../ui/pivot_grid'); +ui.dxPivotGridFieldChooser = require('../ui/pivot_grid_field_chooser'); +data.PivotGridDataSource = require('../ui/pivot_grid/data_source'); +data.XmlaStore = require('../ui/pivot_grid/xmla_store'); +ui.dxScheduler = require('../ui/scheduler'); +ui.dxTreeView = require('../ui/tree_view'); +ui.dxFilterBuilder = require('../ui/filter_builder'); +ui.dxFileManager = require('../ui/file_manager'); +ui.dxDiagram = require('../ui/diagram'); +ui.dxGantt = require('../ui/gantt'); + + +/* Chart common */ +require('../bundles/modules/common.charts'); + +/* Viz core (dx.module-viz-core.js) */ + +const viz = DevExpress.viz = require('../bundles/modules/viz'); +viz.currentTheme = require('../viz/themes').currentTheme; +viz.registerTheme = require('../viz/themes').registerTheme; +viz.exportFromMarkup = require('../viz/export').exportFromMarkup; +viz.getMarkup = require('../viz/export').getMarkup; +viz.exportWidgets = require('../viz/export').exportWidgets; +viz.currentPalette = require('../viz/palette').currentPalette; +viz.getPalette = require('../viz/palette').getPalette; +viz.generateColors = require('../viz/palette').generateColors; +viz.registerPalette = require('../viz/palette').registerPalette; +viz.refreshTheme = require('../viz/themes').refreshTheme; + +/* Charts (dx.module-viz-charts.js) */ +viz.dxChart = require('../viz/chart'); +viz.dxPieChart = require('../viz/pie_chart'); +viz.dxPolarChart = require('../viz/polar_chart'); + +/* Gauges (dx.module-viz-gauges.js) */ +viz.dxLinearGauge = require('../viz/linear_gauge'); +viz.dxCircularGauge = require('../viz/circular_gauge'); +viz.dxBarGauge = require('../viz/bar_gauge'); + +/* Range selector (dx.module-viz-rangeselector.js) */ +viz.dxRangeSelector = require('../viz/range_selector'); + +/* Vector map (dx.module-viz-vectormap.js) */ +viz.dxVectorMap = require('../viz/vector_map'); +viz.map = {}; +viz.map.sources = {}; +viz.map.projection = require('../viz/vector_map/projection').projection; + +/* Sparklines (dx.module-viz-sparklines.js) */ +viz.dxSparkline = require('../viz/sparkline'); +viz.dxBullet = require('../viz/bullet'); + +/* Treemap */ +viz.dxTreeMap = require('../viz/tree_map'); + +/* Funnel */ +viz.dxFunnel = require('../viz/funnel'); + +/* Sankey */ +viz.dxSankey = require('../viz/sankey'); + + +/* Utilities for integration with ASP.NET */ +/* DevExpress.aspnet = require('../aspnet'); */ diff --git a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts index 041cddce6317..e55930bf218c 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagebubble.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagebubble.ts @@ -31,6 +31,8 @@ export interface Properties extends WidgetOptions { alt?: string; attachments?: Attachment[]; metadata?: MetaData; + focusStateEnabled?: boolean; + hoverStateEnabled?: boolean; onAttachmentDownloadClick?: (e: AttachmentDownloadClickEvent) => void; template?: ((message: Message, container: Element) => void) | null; } @@ -48,6 +50,8 @@ class MessageBubble extends Widget { isDeleted: false, isEdited: false, text: '', + focusStateEnabled: true, + hoverStateEnabled: true, template: null, }; } @@ -196,11 +200,18 @@ class MessageBubble extends Widget { }, }]; + const { + focusStateEnabled, + hoverStateEnabled, + } = this.option(); + this._createComponent(this._$functionCall, Accordion, { dataSource: accordionItems, collapsible: true, multiple: false, selectedIndex: -1, + focusStateEnabled, + hoverStateEnabled, }); } @@ -259,6 +270,10 @@ class MessageBubble extends Widget { this._renderFunctionCallElement(); this._renderFunctionCall(); break; + case 'focusStateEnabled': + case 'hoverStateEnabled': + this._renderFunctionCall(); + break; case 'onAttachmentDownloadClick': case 'attachments': this._renderAttachmentsElement(); From 0d18bf1c03b473f6575f493d58682be280a5734c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 14 Jan 2026 21:23:29 +0000 Subject: [PATCH 6/6] feat(demo) --- .../build/bundle-templates/dx.custom.js | 194 ---------------- packages/devextreme/playground/jquery.html | 217 ++++++++++++------ 2 files changed, 146 insertions(+), 265 deletions(-) delete mode 100644 packages/devextreme/build/bundle-templates/dx.custom.js diff --git a/packages/devextreme/build/bundle-templates/dx.custom.js b/packages/devextreme/build/bundle-templates/dx.custom.js deleted file mode 100644 index 3826a18f7d62..000000000000 --- a/packages/devextreme/build/bundle-templates/dx.custom.js +++ /dev/null @@ -1,194 +0,0 @@ -"use strict"; - -/* Comment lines below for the widgets you don't require and run "devextreme-bundler" in this directory, then include dx.custom.js in your project */ - -/* Core (dx.module-core.js) */ -/* eslint-disable import/no-commonjs */ -const DevExpress = require('../bundles/modules/core'); -require('../bundles/modules/core.legacy'); - -/* Integrations (dx.module-core.js) */ - -require('../integration/jquery'); -require('../integration/knockout'); - -require('../common/core/localization/globalize/core'); -require('../common/core/localization/globalize/message'); -require('../common/core/localization/globalize/number'); -require('../common/core/localization/globalize/date'); -require('../common/core/localization/globalize/currency'); - -/* Events (dx.module-core.js) */ - -require('../common/core/events/click'); -require('../common/core/events/contextmenu'); -require('../common/core/events/double_click'); -require('../common/core/events/drag'); -require('../common/core/events/hold'); -require('../common/core/events/hover'); -require('../common/core/events/pointer'); -require('../common/core/events/swipe'); -require('../common/core/events/transform'); - - -/* Data (dx.module-core.js) */ - -const data = DevExpress.data = require('../bundles/modules/data'); -require('../bundles/modules/data.legacy'); - -data.odata = require('../bundles/modules/data.odata'); -require('../bundles/modules/data.odata.legacy'); - - -/* UI core (dx.module-core.js) */ - -const ui = DevExpress.ui = require('../bundles/modules/ui'); - -ui.themes = require('../ui/themes'); - -// deprecated -ui.setTemplateEngine = require('../core/templates/template_engine_registry').setTemplateEngine; - -ui.dialog = require('../ui/dialog'); -ui.notify = require('../ui/notify'); -ui.repaintFloatingActionButton = require('../ui/speed_dial_action/repaint_floating_action_button'); -ui.hideToasts = require('../ui/toast/hide_toasts'); - -/* Base widgets (dx.module-widgets-base.js) */ - -ui.dxActionSheet = require('../ui/action_sheet'); -ui.dxAutocomplete = require('../ui/autocomplete'); -ui.dxBox = require('../ui/box'); -ui.dxButton = require('../ui/button'); -ui.dxDropDownButton = require('../ui/drop_down_button'); -ui.dxButtonGroup = require('../ui/button_group'); -ui.dxCalendar = require('../ui/calendar'); -ui.dxCheckBox = require('../ui/check_box'); -ui.dxColorBox = require('../ui/color_box'); -ui.dxChat = require('../ui/chat'); -ui.dxDateBox = require('../ui/date_box'); -ui.dxDateRangeBox = require('../ui/date_range_box'); -ui.dxDrawer = require('../ui/drawer'); -ui.dxDropDownBox = require('../ui/drop_down_box'); -ui.dxFileUploader = require('../ui/file_uploader'); -ui.dxForm = require('../ui/form'); -ui.dxGallery = require('../ui/gallery'); -ui.dxHtmlEditor = require('../ui/html_editor'); -ui.dxInformer = require('../ui/informer'); -ui.dxList = require('../ui/list'); -ui.dxLoadIndicator = require('../ui/load_indicator'); -ui.dxLoadPanel = require('../ui/load_panel'); -ui.dxLookup = require('../ui/lookup'); -ui.dxMap = require('../ui/map'); -ui.dxMultiView = require('../ui/multi_view'); -ui.dxNumberBox = require('../ui/number_box'); -ui.dxOverlay = require('../ui/overlay/ui.overlay'); -ui.dxPagination = require('../ui/pagination'); -ui.dxPopover = require('../ui/popover'); -ui.dxPopup = require('../ui/popup'); -ui.dxProgressBar = require('../ui/progress_bar'); -ui.dxRadioGroup = require('../ui/radio_group'); -ui.dxRangeSlider = require('../ui/range_slider'); -ui.dxResizable = require('../ui/resizable'); -ui.dxResponsiveBox = require('../ui/responsive_box'); -ui.dxScrollView = require('../ui/scroll_view'); -ui.dxSelectBox = require('../ui/select_box'); -ui.dxSlider = require('../ui/slider'); -ui.dxSpeechToText = require('../ui/speech_to_text'); -ui.dxSpeedDialAction = require('../ui/speed_dial_action'); -ui.dxStepper = require('../ui/stepper'); -ui.dxSplitter = require('../ui/splitter'); -ui.dxSwitch = require('../ui/switch'); -ui.dxTabPanel = require('../ui/tab_panel'); -ui.dxTabs = require('../ui/tabs'); -ui.dxTagBox = require('../ui/tag_box'); -ui.dxTextArea = require('../ui/text_area'); -ui.dxTextBox = require('../ui/text_box'); -ui.dxTileView = require('../ui/tile_view'); -ui.dxToast = require('../ui/toast'); -ui.dxToolbar = require('../ui/toolbar'); -ui.dxTooltip = require('../ui/tooltip'); -ui.dxTrackBar = require('../ui/track_bar'); -ui.dxDraggable = require('../ui/draggable'); -ui.dxSortable = require('../ui/sortable'); - -/* Validation (dx.module-widgets-base.js) */ - -DevExpress.validationEngine = require('../ui/validation_engine'); -ui.dxValidationSummary = require('../ui/validation_summary'); -ui.dxValidationGroup = require('../ui/validation_group'); -ui.dxValidator = require('../ui/validator'); - - -/* Web widgets (dx.module-widgets-web.js) */ - -ui.dxAccordion = require('../ui/accordion'); -ui.dxContextMenu = require('../ui/context_menu'); -ui.dxDataGrid = require('../ui/data_grid'); -ui.dxTreeList = require('../ui/tree_list'); -ui.dxCardView = require('../ui/card_view'); -ui.dxMenu = require('../ui/menu'); -ui.dxPivotGrid = require('../ui/pivot_grid'); -ui.dxPivotGridFieldChooser = require('../ui/pivot_grid_field_chooser'); -data.PivotGridDataSource = require('../ui/pivot_grid/data_source'); -data.XmlaStore = require('../ui/pivot_grid/xmla_store'); -ui.dxScheduler = require('../ui/scheduler'); -ui.dxTreeView = require('../ui/tree_view'); -ui.dxFilterBuilder = require('../ui/filter_builder'); -ui.dxFileManager = require('../ui/file_manager'); -ui.dxDiagram = require('../ui/diagram'); -ui.dxGantt = require('../ui/gantt'); - - -/* Chart common */ -require('../bundles/modules/common.charts'); - -/* Viz core (dx.module-viz-core.js) */ - -const viz = DevExpress.viz = require('../bundles/modules/viz'); -viz.currentTheme = require('../viz/themes').currentTheme; -viz.registerTheme = require('../viz/themes').registerTheme; -viz.exportFromMarkup = require('../viz/export').exportFromMarkup; -viz.getMarkup = require('../viz/export').getMarkup; -viz.exportWidgets = require('../viz/export').exportWidgets; -viz.currentPalette = require('../viz/palette').currentPalette; -viz.getPalette = require('../viz/palette').getPalette; -viz.generateColors = require('../viz/palette').generateColors; -viz.registerPalette = require('../viz/palette').registerPalette; -viz.refreshTheme = require('../viz/themes').refreshTheme; - -/* Charts (dx.module-viz-charts.js) */ -viz.dxChart = require('../viz/chart'); -viz.dxPieChart = require('../viz/pie_chart'); -viz.dxPolarChart = require('../viz/polar_chart'); - -/* Gauges (dx.module-viz-gauges.js) */ -viz.dxLinearGauge = require('../viz/linear_gauge'); -viz.dxCircularGauge = require('../viz/circular_gauge'); -viz.dxBarGauge = require('../viz/bar_gauge'); - -/* Range selector (dx.module-viz-rangeselector.js) */ -viz.dxRangeSelector = require('../viz/range_selector'); - -/* Vector map (dx.module-viz-vectormap.js) */ -viz.dxVectorMap = require('../viz/vector_map'); -viz.map = {}; -viz.map.sources = {}; -viz.map.projection = require('../viz/vector_map/projection').projection; - -/* Sparklines (dx.module-viz-sparklines.js) */ -viz.dxSparkline = require('../viz/sparkline'); -viz.dxBullet = require('../viz/bullet'); - -/* Treemap */ -viz.dxTreeMap = require('../viz/tree_map'); - -/* Funnel */ -viz.dxFunnel = require('../viz/funnel'); - -/* Sankey */ -viz.dxSankey = require('../viz/sankey'); - - -/* Utilities for integration with ASP.NET */ -/* DevExpress.aspnet = require('../aspnet'); */ diff --git a/packages/devextreme/playground/jquery.html b/packages/devextreme/playground/jquery.html index fcdb6ae0f8fd..3ba7d2817445 100644 --- a/packages/devextreme/playground/jquery.html +++ b/packages/devextreme/playground/jquery.html @@ -38,6 +38,11 @@ --> + @@ -52,66 +57,160 @@

Te