GridCore: add public types for AIAssistant#33263
GridCore: add public types for AIAssistant#33263anna-shakhova wants to merge 3 commits intoDevExpress:26_1from
Conversation
There was a problem hiding this comment.
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.AIAssistanttype andGridBaseOptions.aiAssistant, plus theonAIAssistantRequestCreatingcallback typing. - Adds
AIAssistantRequestCreatingEventtyping and exposes it viaExplicitTypesfor 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. |
| @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); | ||
| } |
There was a problem hiding this comment.
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.).
| @Component({ | ||
| selector: 'dxo-data-grid-data-grid-editing', | ||
| standalone: true, | ||
| template: '', | ||
| styles: [''], | ||
| imports: [ DxIntegrationModule ], | ||
| providers: [NestedOptionHost] | ||
| }) | ||
| export class DxoDataGridDataGridEditingComponent extends NestedOption implements OnDestroy, OnInit { |
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | ||
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | ||
| this.setChildren('typingUsers', value); | ||
| } | ||
|
|
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | |
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | |
| this.setChildren('typingUsers', value); | |
| } |
| @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 { |
There was a problem hiding this comment.
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.
| @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); | ||
| } |
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_alerts) | ||
| set _alertsContentChildren(value: QueryList<CollectionNestedOption>) { | ||
| this.setChildren('alerts', value); | ||
| } |
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | ||
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | ||
| this.setChildren('typingUsers', value); | ||
| } | ||
|
|
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | |
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | |
| this.setChildren('typingUsers', value); | |
| } |
| @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); | ||
| } |
There was a problem hiding this comment.
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.
| removeMembers(/\/grids:ColumnBase.ai/), | ||
| removeMembers(/\/grids:GridBaseOptions.aiAssistant/), | ||
| removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/), |
There was a problem hiding this comment.
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.
| import { DxoDataGridDataGridEditingModule } from 'devextreme-angular/ui/data-grid/nested'; | ||
| import { DxoDataGridDataGridEditingTextsModule } from 'devextreme-angular/ui/data-grid/nested'; |
There was a problem hiding this comment.
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.
| import { DxoDataGridDataGridEditingModule } from 'devextreme-angular/ui/data-grid/nested'; | |
| import { DxoDataGridDataGridEditingTextsModule } from 'devextreme-angular/ui/data-grid/nested'; |
bb2fc61 to
f0bebcb
Compare
f0bebcb to
c46e77f
Compare
There was a problem hiding this comment.
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
DxoDataGridEditingModuleand the newDxoDataGridDataGridEditingModule/...EditingTextsModule, which likely overlap on the sameeditingoption path. Consider consolidating to a singleeditingnested-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
DxoDataGridEditingModuleand the newDxoDataGridDataGridEditingModule/...EditingTextsModule, which likely overlap on the sameeditingoption path. Consider consolidating to a singleeditingnested-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.aiAssistantfrom Angular metadata generation, but the PR also addsaiAssistantinputs/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 keepaiAssistantin Angular metadata (remove thisremoveMembers(...)rule) or remove the Angular wrapper surface foraiAssistantif it is intentionally unsupported.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1 item-dxi.tsappears to be the nested option for TreeList toolbar items (note theTreeListPredefinedToolbarItemimport), but it now exposesdxChat-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 keepdxi-tree-list-itemlimited to toolbar item options.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1item-dxi.tsappears to be the nested option for TreeList toolbar items (note theTreeListPredefinedToolbarItemimport), but it now exposesdxChat-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 keepdxi-tree-list-itemlimited to toolbar item options.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1item-dxi.tsappears to be the nested option for TreeList toolbar items (note theTreeListPredefinedToolbarItemimport), but it now exposesdxChat-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 keepdxi-tree-list-itemlimited to toolbar item options.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1item-dxi.tsappears to be the nested option for TreeList toolbar items (note theTreeListPredefinedToolbarItemimport), but it now exposesdxChat-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 keepdxi-tree-list-itemlimited to toolbar item options.
packages/devextreme-angular/src/ui/tree-list/nested/item-dxi.ts:1item-dxi.tsappears to be the nested option for TreeList toolbar items (note theTreeListPredefinedToolbarItemimport), but it now exposesdxChat-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 keepdxi-tree-list-itemlimited to toolbar item options.
packages/devextreme-angular/src/ui/data-grid/nested/item-dxi.ts:1item-dxi.tsappears to represent DataGrid toolbar items (note theDataGridPredefinedToolbarItemimport) but now includes chat-message-like inputs (alt,attachments,author,timestamp, etc.). This conflates toolbar item configuration with chat message configuration. Recommended fix: keepdxi-data-grid-itemlimited to toolbar item options and expose chat message properties only throughdxi-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'; |
There was a problem hiding this comment.
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.
| import { DxoTreeListEditingModule } from 'devextreme-angular/ui/tree-list/nested'; |
| DxiTreeListCustomRuleModule, | ||
| DxoTreeListCustomSpeechRecognizerModule, | ||
| DxoTreeListDayHeaderFormatModule, | ||
| DxoTreeListEditingModule, |
There was a problem hiding this comment.
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.
| DxoTreeListEditingModule, |
| DxoTreeListTreeListEditingModule, | ||
| DxoTreeListTreeListEditingTextsModule, |
There was a problem hiding this comment.
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.
| DxoTreeListTreeListEditingModule, | |
| DxoTreeListTreeListEditingTextsModule, |
| DxiTreeListCustomRuleModule, | ||
| DxoTreeListCustomSpeechRecognizerModule, | ||
| DxoTreeListDayHeaderFormatModule, | ||
| DxoTreeListEditingModule, |
There was a problem hiding this comment.
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.
| DxoTreeListTreeListEditingModule, | ||
| DxoTreeListTreeListEditingTextsModule, |
There was a problem hiding this comment.
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.
| DxoTreeListTreeListEditingModule, | |
| DxoTreeListTreeListEditingTextsModule, |
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | ||
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | ||
| this.setChildren('typingUsers', value); | ||
| } | ||
|
|
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | |
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | |
| this.setChildren('typingUsers', value); | |
| } |
| 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() |
There was a problem hiding this comment.
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).
| 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 attachments(): Array<Attachment> { | ||
| return this._getOption('attachments'); | ||
| } |
There was a problem hiding this comment.
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).
| get author(): User { | ||
| return this._getOption('author'); | ||
| } |
There was a problem hiding this comment.
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).
| 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() |
There was a problem hiding this comment.
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).
| 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() |
c46e77f to
1bf724d
Compare
There was a problem hiding this comment.
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.
| @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); | ||
| } | ||
|
|
There was a problem hiding this comment.
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).
| @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); | |
| } |
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | ||
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | ||
| this.setChildren('typingUsers', value); | ||
| } | ||
|
|
There was a problem hiding this comment.
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.
| @ContentChildren(PROPERTY_TOKEN_typingUsers) | |
| set _typingUsersContentChildren(value: QueryList<CollectionNestedOption>) { | |
| this.setChildren('typingUsers', value); | |
| } |
| @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); | ||
| } | ||
|
|
There was a problem hiding this comment.
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).
| @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); | |
| } |
0b8da15 to
c21dda8
Compare
No description provided.