Skip to content

GridCore: add public types for AIAssistant#33263

Open
anna-shakhova wants to merge 3 commits intoDevExpress:26_1from
anna-shakhova:26_1__ai_assistant_dts
Open

GridCore: add public types for AIAssistant#33263
anna-shakhova wants to merge 3 commits intoDevExpress:26_1from
anna-shakhova:26_1__ai_assistant_dts

Conversation

@anna-shakhova
Copy link
Copy Markdown
Contributor

No description provided.

@anna-shakhova anna-shakhova self-assigned this Apr 14, 2026
@anna-shakhova anna-shakhova requested a review from a team as a code owner April 14, 2026 13:40
Copilot AI review requested due to automatic review settings April 14, 2026 13:40
@github-actions github-actions bot added the .d.ts label Apr 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds new public TypeScript types and options/events for the GridCore AI assistant feature (DataGrid/TreeList), and wires those types through the main dx.all.d.ts bundle and wrapper type re-exports.

Changes:

  • Introduces DevExpress.common.grids.AIAssistant type and GridBaseOptions.aiAssistant, plus the onAIAssistantRequestCreating callback typing.
  • Adds AIAssistantRequestCreatingEvent typing and exposes it via ExplicitTypes for DataGrid/TreeList.
  • Propagates the new types through wrapper packages (Angular/React/Vue), with a large set of regenerated Angular nested-option files.

Reviewed changes

Copilot reviewed 57 out of 63 changed files in this pull request and generated 19 comments.

Show a summary per file
File Description
packages/devextreme/ts/dx.all.d.ts Adds public AIAssistant type, aiAssistant option, and request-creating event typings.
packages/devextreme/js/common/grids.d.ts Defines AIAssistant, AIAssistantRequestCreatingInfo, and adds aiAssistant + onAIAssistantRequestCreating to GridBaseOptions.
packages/devextreme/js/ui/data_grid.d.ts Adds AIAssistantRequestCreatingEvent type + onAIAssistantRequestCreating event typing.
packages/devextreme/js/ui/data_grid_types.d.ts Re-exports AIAssistant and AIAssistantRequestCreatingEvent.
packages/devextreme/js/ui/tree_list.d.ts Adds AIAssistantRequestCreatingEvent type + onAIAssistantRequestCreating event typing.
packages/devextreme/js/ui/tree_list_types.d.ts Re-exports AIAssistant and AIAssistantRequestCreatingEvent.
packages/devextreme/js/__internal/grids/grid_core/m_types.ts Removes internal aiAssistant inline typing in favor of public types.
packages/devextreme/js/__internal/grids/grid_core/ai_assistant/tests/ai_assistant_view_controller.integration.test.ts Drops temporary local typing workaround now that public types exist.
packages/devextreme-react/src/common/index.ts Re-exports AIAssistant / AIAssistantRequestCreatingInfo in React common exports.
packages/devextreme-react/src/common/grids.ts Re-exports new grids types in React wrapper.
packages/devextreme-vue/src/common/index.ts Re-exports AIAssistant / AIAssistantRequestCreatingInfo in Vue common exports.
packages/devextreme-vue/src/common/grids.ts Re-exports new grids types in Vue wrapper.
packages/devextreme-angular/src/common/index.ts Re-exports AIAssistant / AIAssistantRequestCreatingInfo in Angular common exports.
packages/devextreme-angular/src/common/grids/index.ts Re-exports new grids types in Angular wrapper.
packages/devextreme-metadata/make-angular-metadata.ts Adds mutation removing GridBaseOptions.aiAssistant from Angular metadata.
packages/devextreme-angular/src/ui/data-grid/index.ts Adds aiAssistant input/event typings and imports many new nested modules (plus new ContentChildren bindings).
packages/devextreme-angular/src/ui/tree-list/index.ts Adds aiAssistant input/event typings and imports many new nested modules (plus new ContentChildren bindings).
packages/devextreme-angular/src/ui/data-grid/nested/ai-assistant.ts Adds Angular nested option component for aiAssistant.
packages/devextreme-angular/src/ui/tree-list/nested/ai-assistant.ts Adds Angular nested option component for aiAssistant.
packages/devextreme-angular/src/ui/data-grid/nested/alert-dxi.ts New Angular collection nested option (alerts).
packages/devextreme-angular/src/ui/tree-list/nested/alert-dxi.ts New Angular collection nested option (alerts).
packages/devextreme-angular/src/ui/data-grid/nested/attachment-dxi.ts New Angular collection nested option (attachments).
packages/devextreme-angular/src/ui/tree-list/nested/attachment-dxi.ts New Angular collection nested option (attachments).
packages/devextreme-angular/src/ui/data-grid/nested/author.ts New Angular nested option (author).
packages/devextreme-angular/src/ui/tree-list/nested/author.ts New Angular nested option (author).
packages/devextreme-angular/src/ui/data-grid/nested/chat.ts New Angular nested option wrapping dxChat options under DataGrid.
packages/devextreme-angular/src/ui/tree-list/nested/chat.ts New Angular nested option wrapping dxChat options under TreeList.
packages/devextreme-angular/src/ui/data-grid/nested/chat-editing.ts New Angular nested option for chat editing settings.
packages/devextreme-angular/src/ui/tree-list/nested/chat-editing.ts New Angular nested option for chat editing settings.
packages/devextreme-angular/src/ui/data-grid/nested/chat-item-dxi.ts New Angular collection nested option for chat items/messages.
packages/devextreme-angular/src/ui/tree-list/nested/chat-item-dxi.ts New Angular collection nested option for chat items/messages.
packages/devextreme-angular/src/ui/data-grid/nested/custom-speech-recognizer.ts New Angular nested option for speech recognizer config.
packages/devextreme-angular/src/ui/tree-list/nested/custom-speech-recognizer.ts New Angular nested option for speech recognizer config.
packages/devextreme-angular/src/ui/data-grid/nested/day-header-format.ts New Angular nested option for day header format.
packages/devextreme-angular/src/ui/tree-list/nested/day-header-format.ts New Angular nested option for day header format.
packages/devextreme-angular/src/ui/data-grid/nested/file-uploader-options.ts New Angular nested option for file uploader options.
packages/devextreme-angular/src/ui/tree-list/nested/file-uploader-options.ts New Angular nested option for file uploader options.
packages/devextreme-angular/src/ui/data-grid/nested/message-timestamp-format.ts New Angular nested option for message timestamp formatting.
packages/devextreme-angular/src/ui/tree-list/nested/message-timestamp-format.ts New Angular nested option for message timestamp formatting.
packages/devextreme-angular/src/ui/data-grid/nested/send-button-options.ts New Angular nested option for chat send button options.
packages/devextreme-angular/src/ui/tree-list/nested/send-button-options.ts New Angular nested option for chat send button options.
packages/devextreme-angular/src/ui/data-grid/nested/speech-recognition-config.ts New Angular nested option for speech recognition config.
packages/devextreme-angular/src/ui/tree-list/nested/speech-recognition-config.ts New Angular nested option for speech recognition config.
packages/devextreme-angular/src/ui/data-grid/nested/speech-to-text-options.ts New Angular nested option for speech-to-text options.
packages/devextreme-angular/src/ui/tree-list/nested/speech-to-text-options.ts New Angular nested option for speech-to-text options.
packages/devextreme-angular/src/ui/data-grid/nested/typing-user-dxi.ts New Angular collection nested option for typing users.
packages/devextreme-angular/src/ui/tree-list/nested/typing-user-dxi.ts New Angular collection nested option for typing users.
packages/devextreme-angular/src/ui/data-grid/nested/user.ts New Angular nested option for user.
packages/devextreme-angular/src/ui/tree-list/nested/user.ts New Angular nested option for user.
packages/devextreme-angular/src/ui/data-grid/nested/data-grid-editing.ts Adds a duplicated editing nested option component (new selector).
packages/devextreme-angular/src/ui/data-grid/nested/data-grid-editing-texts.ts Adds a duplicated editing-texts nested option component (new selector).
packages/devextreme-angular/src/ui/tree-list/nested/tree-list-editing.ts Adds a duplicated editing nested option component (new selector).
packages/devextreme-angular/src/ui/tree-list/nested/tree-list-editing-texts.ts Adds a duplicated editing-texts nested option component (new selector).
packages/devextreme-angular/src/ui/data-grid/nested/item-dxi.ts Modifies DataGrid item nested component to include chat/message fields.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts Modifies TreeList item nested component to include chat/message fields.
packages/devextreme-angular/src/ui/data-grid/nested/index.ts Exports newly added Angular nested components for DataGrid.
packages/devextreme-angular/src/ui/tree-list/nested/index.ts Exports newly added Angular nested components for TreeList.
packages/devextreme-angular/src/ui/all.ts Adds DxRecurrenceEditorModule to the aggregated DevExtremeModule.
packages/devextreme-angular/src/index.ts Exports DxRecurrenceEditorComponent/Module from package root.

Comment on lines +396 to +466
@Input()
get alt(): string {
return this._getOption('alt');
}
set alt(value: string) {
this._setOption('alt', value);
}

@Input()
get attachments(): Array<Attachment> {
return this._getOption('attachments');
}
set attachments(value: Array<Attachment>) {
this._setOption('attachments', value);
}

@Input()
get author(): User {
return this._getOption('author');
}
set author(value: User) {
this._setOption('author', value);
}

@Input()
get id(): number | string {
return this._getOption('id');
}
set id(value: number | string) {
this._setOption('id', value);
}

@Input()
get isDeleted(): boolean {
return this._getOption('isDeleted');
}
set isDeleted(value: boolean) {
this._setOption('isDeleted', value);
}

@Input()
get isEdited(): boolean {
return this._getOption('isEdited');
}
set isEdited(value: boolean) {
this._setOption('isEdited', value);
}

@Input()
get src(): string {
return this._getOption('src');
}
set src(value: string) {
this._setOption('src', value);
}

@Input()
get timestamp(): Date | number | string {
return this._getOption('timestamp');
}
set timestamp(value: Date | number | string) {
this._setOption('timestamp', value);
}

@Input()
get type(): string | undefined {
return this._getOption('type');
}
set type(value: string | undefined) {
this._setOption('type', value);
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxiDataGridItemComponent represents DataGrid items (toolbar/form items) but now includes chat-message fields like attachments, author, isDeleted, timestamp, etc. These options do not belong to DataGrid item definitions and suggest a metadata merge collision with dxChat.Message. These members should be removed from this component and instead modeled via the dedicated chat nested components (dxo-*-chat, dxi-*-chat-item, dxi-*-attachment, etc.).

Copilot uses AI. Check for mistakes.
Comment on lines +37 to +45
@Component({
selector: 'dxo-data-grid-data-grid-editing',
standalone: true,
template: '',
styles: [''],
imports: [ DxIntegrationModule ],
providers: [NestedOptionHost]
})
export class DxoDataGridDataGridEditingComponent extends NestedOption implements OnDestroy, OnInit {
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new nested option component (dxo-data-grid-data-grid-editing) duplicates the existing dxo-data-grid-editing nested option (same _optionPath = 'editing' and same API), but with a different selector/module name. Unless it maps to a different option path, it should be removed to avoid confusing/duplicating the Angular API surface.

Copilot uses AI. Check for mistakes.
Comment on lines +309 to +313
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxTreeListComponent now collects PROPERTY_TOKEN_typingUsers at the root and sets a typingUsers option on dxTreeList, but this option belongs to dxChat. Remove this root-level ContentChildren hook (and token import) so typingUsers is only managed by the chat nested option.

Suggested change
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copilot uses AI. Check for mistakes.
Comment on lines +25 to +33
@Component({
selector: 'dxo-tree-list-tree-list-editing-texts',
standalone: true,
template: '',
styles: [''],
imports: [ DxIntegrationModule ],
providers: [NestedOptionHost]
})
export class DxoTreeListTreeListEditingTextsComponent extends NestedOption implements OnDestroy, OnInit {
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new nested option component (dxo-tree-list-tree-list-editing-texts) duplicates the existing dxo-tree-list-editing-texts nested option (_optionPath = 'texts'), but with a different selector/module name. Unless it represents a distinct option path, it should be removed to prevent duplicating/breaking the TreeList editing texts API.

Copilot uses AI. Check for mistakes.
Comment on lines 64 to +72
@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}

@ContentChildren(PROPERTY_TOKEN_attachments)
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('attachments', value);
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxiDataGridItemComponent now accepts PROPERTY_TOKEN_attachments children and calls setChildren('attachments', ...), but attachments is not a valid child collection for DataGrid item definitions. This likely comes from dxChat.Message typing and will build an incorrect option tree. Remove this ContentChildren binding (and related imports) from the DataGrid item nested component.

Copilot uses AI. Check for mistakes.
Comment on lines +279 to +282
@ContentChildren(PROPERTY_TOKEN_alerts)
set _alertsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('alerts', value);
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxDataGridComponent now collects PROPERTY_TOKEN_alerts at the root and calls setChildren('alerts', ...), but alerts is not a dxDataGrid option (it belongs to dxChat). This will cause nested <dxi-data-grid-alert> declarations (intended for aiAssistant.chat.alerts) to also be applied at the grid root. Remove this root-level ContentChildren hook (and token import) so alerts are only handled under the chat nested option.

Copilot uses AI. Check for mistakes.
Comment on lines +349 to +353
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxDataGridComponent now collects PROPERTY_TOKEN_typingUsers at the root and sets a typingUsers option on dxDataGrid, but this option belongs to dxChat. This will incorrectly apply typing users configured under aiAssistant.chat to the grid root. Remove this root-level ContentChildren hook (and token import) so typingUsers is only managed by the chat nested option.

Suggested change
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copilot uses AI. Check for mistakes.
Comment on lines +396 to +466
@Input()
get alt(): string {
return this._getOption('alt');
}
set alt(value: string) {
this._setOption('alt', value);
}

@Input()
get attachments(): Array<Attachment> {
return this._getOption('attachments');
}
set attachments(value: Array<Attachment>) {
this._setOption('attachments', value);
}

@Input()
get author(): User {
return this._getOption('author');
}
set author(value: User) {
this._setOption('author', value);
}

@Input()
get id(): number | string {
return this._getOption('id');
}
set id(value: number | string) {
this._setOption('id', value);
}

@Input()
get isDeleted(): boolean {
return this._getOption('isDeleted');
}
set isDeleted(value: boolean) {
this._setOption('isDeleted', value);
}

@Input()
get isEdited(): boolean {
return this._getOption('isEdited');
}
set isEdited(value: boolean) {
this._setOption('isEdited', value);
}

@Input()
get src(): string {
return this._getOption('src');
}
set src(value: string) {
this._setOption('src', value);
}

@Input()
get timestamp(): Date | number | string {
return this._getOption('timestamp');
}
set timestamp(value: Date | number | string) {
this._setOption('timestamp', value);
}

@Input()
get type(): string | undefined {
return this._getOption('type');
}
set type(value: string | undefined) {
this._setOption('type', value);
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxiTreeListItemComponent represents TreeList items (toolbar/form items) but now includes chat-message fields like attachments, author, isDeleted, timestamp, etc. These members do not belong to TreeList item definitions and likely come from a dxChat.Message type collision. Remove these properties and keep chat message modeling confined to the dedicated chat nested components.

Copilot uses AI. Check for mistakes.
Comment on lines 49 to 51
removeMembers(/\/grids:ColumnBase.ai/),
removeMembers(/\/grids:GridBaseOptions.aiAssistant/),
removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/),
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make-angular-metadata.ts removes /grids:GridBaseOptions.aiAssistant/, which will prevent aiAssistant from being included in generated Angular metadata. This is inconsistent with the wrapper changes in this PR that add aiAssistant inputs/events for DataGrid/TreeList. Either stop removing this member or drop the wrapper exposure so the metadata and generated wrappers stay in sync.

Copilot uses AI. Check for mistakes.
Comment on lines +154 to +155
import { DxoDataGridDataGridEditingModule } from 'devextreme-angular/ui/data-grid/nested';
import { DxoDataGridDataGridEditingTextsModule } from 'devextreme-angular/ui/data-grid/nested';
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The data-grid Angular wrapper now imports DxoDataGridDataGridEditingModule / DxoDataGridDataGridEditingTextsModule, which appear to be duplicates of the already-existing DxoDataGridEditingModule / DxoDataGridEditingTextsModule (note the extra data-grid segment in the selector names). This risks removing/renaming the public nested components users rely on. Prefer keeping the existing dxo-data-grid-editing* nested components and drop these duplicated modules unless there is a real separate option path they represent.

Suggested change
import { DxoDataGridDataGridEditingModule } from 'devextreme-angular/ui/data-grid/nested';
import { DxoDataGridDataGridEditingTextsModule } from 'devextreme-angular/ui/data-grid/nested';

Copilot uses AI. Check for mistakes.
@anna-shakhova anna-shakhova force-pushed the 26_1__ai_assistant_dts branch from bb2fc61 to f0bebcb Compare April 14, 2026 13:58
@anna-shakhova anna-shakhova reopened this Apr 14, 2026
Copilot AI review requested due to automatic review settings April 14, 2026 14:32
@anna-shakhova anna-shakhova force-pushed the 26_1__ai_assistant_dts branch from f0bebcb to c46e77f Compare April 14, 2026 14:32
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 55 out of 61 changed files in this pull request and generated 13 comments.

Comments suppressed due to low confidence (9)

packages/devextreme-angular/src/ui/data-grid/index.ts:2

  • The DataGrid Angular wrapper now includes both the existing DxoDataGridEditingModule and the new DxoDataGridDataGridEditingModule/...EditingTextsModule, which likely overlap on the same editing option path. Consider consolidating to a single editing nested-option implementation (keep one set of selectors/modules), to avoid ambiguous APIs and conflicting option writes.
    packages/devextreme-angular/src/ui/data-grid/index.ts:2
  • The DataGrid Angular wrapper now includes both the existing DxoDataGridEditingModule and the new DxoDataGridDataGridEditingModule/...EditingTextsModule, which likely overlap on the same editing option path. Consider consolidating to a single editing nested-option implementation (keep one set of selectors/modules), to avoid ambiguous APIs and conflicting option writes.
    packages/devextreme-metadata/make-angular-metadata.ts:1
  • This removes GridBaseOptions.aiAssistant from Angular metadata generation, but the PR also adds aiAssistant inputs/outputs and nested components to the Angular DataGrid/TreeList wrappers. If Angular metadata is used to generate/validate wrapper APIs, this mismatch can break builds or produce incomplete docs/metadata. Recommended fix: either keep aiAssistant in Angular metadata (remove this removeMembers(...) rule) or remove the Angular wrapper surface for aiAssistant if it is intentionally unsupported.
    packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1
  • item-dxi.ts appears to be the nested option for TreeList toolbar items (note the TreeListPredefinedToolbarItem import), but it now exposes dxChat-message-like fields (alt, attachments, author, timestamp, etc.). This mixes two unrelated option models into one Angular API entry point and may encourage users to set options that TreeList toolbar items don’t support. Recommended fix: move these chat/message-related inputs onto dedicated chat message nested-option components only (e.g., dxi-tree-list-chat-item), and keep dxi-tree-list-item limited to toolbar item options.
    packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1
  • item-dxi.ts appears to be the nested option for TreeList toolbar items (note the TreeListPredefinedToolbarItem import), but it now exposes dxChat-message-like fields (alt, attachments, author, timestamp, etc.). This mixes two unrelated option models into one Angular API entry point and may encourage users to set options that TreeList toolbar items don’t support. Recommended fix: move these chat/message-related inputs onto dedicated chat message nested-option components only (e.g., dxi-tree-list-chat-item), and keep dxi-tree-list-item limited to toolbar item options.
    packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1
  • item-dxi.ts appears to be the nested option for TreeList toolbar items (note the TreeListPredefinedToolbarItem import), but it now exposes dxChat-message-like fields (alt, attachments, author, timestamp, etc.). This mixes two unrelated option models into one Angular API entry point and may encourage users to set options that TreeList toolbar items don’t support. Recommended fix: move these chat/message-related inputs onto dedicated chat message nested-option components only (e.g., dxi-tree-list-chat-item), and keep dxi-tree-list-item limited to toolbar item options.
    packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1
  • item-dxi.ts appears to be the nested option for TreeList toolbar items (note the TreeListPredefinedToolbarItem import), but it now exposes dxChat-message-like fields (alt, attachments, author, timestamp, etc.). This mixes two unrelated option models into one Angular API entry point and may encourage users to set options that TreeList toolbar items don’t support. Recommended fix: move these chat/message-related inputs onto dedicated chat message nested-option components only (e.g., dxi-tree-list-chat-item), and keep dxi-tree-list-item limited to toolbar item options.
    packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1
  • item-dxi.ts appears to be the nested option for TreeList toolbar items (note the TreeListPredefinedToolbarItem import), but it now exposes dxChat-message-like fields (alt, attachments, author, timestamp, etc.). This mixes two unrelated option models into one Angular API entry point and may encourage users to set options that TreeList toolbar items don’t support. Recommended fix: move these chat/message-related inputs onto dedicated chat message nested-option components only (e.g., dxi-tree-list-chat-item), and keep dxi-tree-list-item limited to toolbar item options.
    packages/devextreme-angular/src/ui/data-grid/nested/item-dxi.ts:1
  • item-dxi.ts appears to represent DataGrid toolbar items (note the DataGridPredefinedToolbarItem import) but now includes chat-message-like inputs (alt, attachments, author, timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keep dxi-data-grid-item limited to toolbar item options and expose chat message properties only through dxi-data-grid-chat-item (and related nested components).
/* tslint:disable:max-line-length */

import { DxiTreeListCustomRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListCustomSpeechRecognizerModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListDayHeaderFormatModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListEditingModule } from 'devextreme-angular/ui/tree-list/nested';
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TreeList Angular wrapper now includes both DxoTreeListEditingModule and a new DxoTreeListTreeListEditingModule (both appear to target the same editing option path). This duplication is confusing for users and increases the chance of conflicting nested options. Consider removing the new tree-list-editing component/module (or replacing the old one), so there is exactly one supported nested-option component for editing and editing.texts.

Suggested change
import { DxoTreeListEditingModule } from 'devextreme-angular/ui/tree-list/nested';

Copilot uses AI. Check for mistakes.
DxiTreeListCustomRuleModule,
DxoTreeListCustomSpeechRecognizerModule,
DxoTreeListDayHeaderFormatModule,
DxoTreeListEditingModule,
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TreeList Angular wrapper now includes both DxoTreeListEditingModule and a new DxoTreeListTreeListEditingModule (both appear to target the same editing option path). This duplication is confusing for users and increases the chance of conflicting nested options. Consider removing the new tree-list-editing component/module (or replacing the old one), so there is exactly one supported nested-option component for editing and editing.texts.

Suggested change
DxoTreeListEditingModule,

Copilot uses AI. Check for mistakes.
Comment on lines +2538 to +2539
DxoTreeListTreeListEditingModule,
DxoTreeListTreeListEditingTextsModule,
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TreeList Angular wrapper now includes both DxoTreeListEditingModule and a new DxoTreeListTreeListEditingModule (both appear to target the same editing option path). This duplication is confusing for users and increases the chance of conflicting nested options. Consider removing the new tree-list-editing component/module (or replacing the old one), so there is exactly one supported nested-option component for editing and editing.texts.

Suggested change
DxoTreeListTreeListEditingModule,
DxoTreeListTreeListEditingTextsModule,

Copilot uses AI. Check for mistakes.
DxiTreeListCustomRuleModule,
DxoTreeListCustomSpeechRecognizerModule,
DxoTreeListDayHeaderFormatModule,
DxoTreeListEditingModule,
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TreeList Angular wrapper now includes both DxoTreeListEditingModule and a new DxoTreeListTreeListEditingModule (both appear to target the same editing option path). This duplication is confusing for users and increases the chance of conflicting nested options. Consider removing the new tree-list-editing component/module (or replacing the old one), so there is exactly one supported nested-option component for editing and editing.texts.

Copilot uses AI. Check for mistakes.
Comment on lines +2707 to +2708
DxoTreeListTreeListEditingModule,
DxoTreeListTreeListEditingTextsModule,
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TreeList Angular wrapper now includes both DxoTreeListEditingModule and a new DxoTreeListTreeListEditingModule (both appear to target the same editing option path). This duplication is confusing for users and increases the chance of conflicting nested options. Consider removing the new tree-list-editing component/module (or replacing the old one), so there is exactly one supported nested-option component for editing and editing.texts.

Suggested change
DxoTreeListTreeListEditingModule,
DxoTreeListTreeListEditingTextsModule,

Copilot uses AI. Check for mistakes.
Comment on lines +349 to +353
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These setChildren('alerts' | 'attachments' | 'typingUsers', ...) bindings are being applied to the DataGrid root options. The added dxChat-related collections look like they should be nested under aiAssistant.chat, not as top-level dxDataGridOptions. This risks writing unknown options onto the DataGrid and misconfiguring the component at runtime. Recommended fix: remove these root-level ContentChildren handlers and rely on the nested dxo-data-grid-chat component (under dxo-data-grid-ai-assistant) to own these collections.

Suggested change
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copilot uses AI. Check for mistakes.
Comment on lines +397 to +412
get alt(): string {
return this._getOption('alt');
}
set alt(value: string) {
this._setOption('alt', value);
}

@Input()
get attachments(): Array<Attachment> {
return this._getOption('attachments');
}
set attachments(value: Array<Attachment>) {
this._setOption('attachments', value);
}

@Input()
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

item-dxi.ts appears to represent DataGrid toolbar items (note the DataGridPredefinedToolbarItem import) but now includes chat-message-like inputs (alt, attachments, author, timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keep dxi-data-grid-item limited to toolbar item options and expose chat message properties only through dxi-data-grid-chat-item (and related nested components).

Suggested change
get alt(): string {
return this._getOption('alt');
}
set alt(value: string) {
this._setOption('alt', value);
}
@Input()
get attachments(): Array<Attachment> {
return this._getOption('attachments');
}
set attachments(value: Array<Attachment>) {
this._setOption('attachments', value);
}
@Input()

Copilot uses AI. Check for mistakes.
Comment on lines +405 to +407
get attachments(): Array<Attachment> {
return this._getOption('attachments');
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

item-dxi.ts appears to represent DataGrid toolbar items (note the DataGridPredefinedToolbarItem import) but now includes chat-message-like inputs (alt, attachments, author, timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keep dxi-data-grid-item limited to toolbar item options and expose chat message properties only through dxi-data-grid-chat-item (and related nested components).

Copilot uses AI. Check for mistakes.
Comment on lines +413 to +415
get author(): User {
return this._getOption('author');
}
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

item-dxi.ts appears to represent DataGrid toolbar items (note the DataGridPredefinedToolbarItem import) but now includes chat-message-like inputs (alt, attachments, author, timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keep dxi-data-grid-item limited to toolbar item options and expose chat message properties only through dxi-data-grid-chat-item (and related nested components).

Copilot uses AI. Check for mistakes.
Comment on lines +437 to +460
get isEdited(): boolean {
return this._getOption('isEdited');
}
set isEdited(value: boolean) {
this._setOption('isEdited', value);
}

@Input()
get src(): string {
return this._getOption('src');
}
set src(value: string) {
this._setOption('src', value);
}

@Input()
get timestamp(): Date | number | string {
return this._getOption('timestamp');
}
set timestamp(value: Date | number | string) {
this._setOption('timestamp', value);
}

@Input()
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

item-dxi.ts appears to represent DataGrid toolbar items (note the DataGridPredefinedToolbarItem import) but now includes chat-message-like inputs (alt, attachments, author, timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keep dxi-data-grid-item limited to toolbar item options and expose chat message properties only through dxi-data-grid-chat-item (and related nested components).

Suggested change
get isEdited(): boolean {
return this._getOption('isEdited');
}
set isEdited(value: boolean) {
this._setOption('isEdited', value);
}
@Input()
get src(): string {
return this._getOption('src');
}
set src(value: string) {
this._setOption('src', value);
}
@Input()
get timestamp(): Date | number | string {
return this._getOption('timestamp');
}
set timestamp(value: Date | number | string) {
this._setOption('timestamp', value);
}
@Input()

Copilot uses AI. Check for mistakes.
@anna-shakhova anna-shakhova force-pushed the 26_1__ai_assistant_dts branch from c46e77f to 1bf724d Compare April 14, 2026 14:44
Copilot AI review requested due to automatic review settings April 14, 2026 14:46
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 55 out of 61 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (2)

packages/devextreme-angular/src/ui/data-grid/nested/data-grid-editing-texts.ts:33

  • The selector/class/module rename (dxo-data-grid-editing-texts -> dxo-data-grid-data-grid-editing-texts, and corresponding symbol renames) is a breaking change for Angular templates that reference the old selector or types. If the rename is required for disambiguation, consider keeping the old selector/component as a deprecated alias that forwards to the new implementation to preserve backward compatibility.
    packages/devextreme-angular/src/ui/tree-list/nested/tree-list-editing-texts.ts:33
  • The selector/class/module rename (dxo-tree-list-editing-texts -> dxo-tree-list-tree-list-editing-texts, and corresponding symbol renames) is a breaking change for Angular templates that reference the old selector or types. If the rename is required for disambiguation, consider keeping the old selector/component as a deprecated alias that forwards to the new implementation to preserve backward compatibility.

Comment on lines +280 to +294
@ContentChildren(PROPERTY_TOKEN_alerts)
set _alertsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('alerts', value);
}

@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}

@ContentChildren(PROPERTY_TOKEN_attachments)
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('attachments', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxDataGridComponent now collects PROPERTY_TOKEN_alerts/PROPERTY_TOKEN_attachments at the widget root and calls setChildren('alerts' | 'attachments', ...), but dxDataGrid does not have alerts/attachments options in its public d.ts. This looks like chat-related nested configuration leaking to the grid root; it may result in unknown options being set on the widget. Consider removing these root-level @ContentChildren queries and keeping these collections scoped to the chat nested option only (or otherwise ensuring they map to a real dxDataGrid option path).

Suggested change
@ContentChildren(PROPERTY_TOKEN_alerts)
set _alertsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('alerts', value);
}
@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}
@ContentChildren(PROPERTY_TOKEN_attachments)
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('attachments', value);
}
@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}

Copilot uses AI. Check for mistakes.
Comment on lines +350 to +354
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxDataGridComponent now collects PROPERTY_TOKEN_typingUsers at the widget root and calls setChildren('typingUsers', ...), but dxDataGrid does not expose a typingUsers option. This appears to be chat-related nested configuration leaking to the grid root and can lead to setting an unknown option on the widget. Consider removing this root-level query and scoping typingUsers under the chat nested option only.

Suggested change
@ContentChildren(PROPERTY_TOKEN_typingUsers)
set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('typingUsers', value);
}

Copilot uses AI. Check for mistakes.
Comment on lines +255 to +269
@ContentChildren(PROPERTY_TOKEN_alerts)
set _alertsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('alerts', value);
}

@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}

@ContentChildren(PROPERTY_TOKEN_attachments)
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('attachments', value);
}

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxTreeListComponent now collects PROPERTY_TOKEN_alerts/PROPERTY_TOKEN_attachments at the widget root and calls setChildren('alerts' | 'attachments', ...), but dxTreeList does not have alerts/attachments options in its public d.ts. This looks like chat-related nested configuration leaking to the TreeList root; it may result in unknown options being set on the widget. Consider removing these root-level @ContentChildren queries and keeping these collections scoped to the chat nested option only (or otherwise ensuring they map to a real dxTreeList option path).

Suggested change
@ContentChildren(PROPERTY_TOKEN_alerts)
set _alertsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('alerts', value);
}
@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}
@ContentChildren(PROPERTY_TOKEN_attachments)
set _attachmentsContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('attachments', value);
}
@ContentChildren(PROPERTY_TOKEN_validationRules)
set _validationRulesContentChildren(value: QueryList<CollectionNestedOption>) {
this.setChildren('validationRules', value);
}

Copilot uses AI. Check for mistakes.
@anna-shakhova anna-shakhova force-pushed the 26_1__ai_assistant_dts branch from 0b8da15 to c21dda8 Compare April 14, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants