diff --git a/packages/devextreme-angular/src/common/grids/index.ts b/packages/devextreme-angular/src/common/grids/index.ts index 3a0957fda2f1..03696c47816d 100644 --- a/packages/devextreme-angular/src/common/grids/index.ts +++ b/packages/devextreme-angular/src/common/grids/index.ts @@ -1,5 +1,7 @@ export type { AdaptiveDetailRowPreparingInfo, + AIAssistant, + AIAssistantRequestCreatingInfo, AIColumnMode, AIColumnRequestCreatingInfo, ApplyChangesMode, diff --git a/packages/devextreme-angular/src/common/index.ts b/packages/devextreme-angular/src/common/index.ts index 05834113823d..5e3f39ff823e 100644 --- a/packages/devextreme-angular/src/common/index.ts +++ b/packages/devextreme-angular/src/common/index.ts @@ -273,6 +273,8 @@ export namespace Export { export function Grids(): void {} export namespace Grids { export type AdaptiveDetailRowPreparingInfo = GridsModule.AdaptiveDetailRowPreparingInfo; + export type AIAssistant = GridsModule.AIAssistant; + export type AIAssistantRequestCreatingInfo = GridsModule.AIAssistantRequestCreatingInfo; export type AIColumnMode = GridsModule.AIColumnMode; export type AIColumnRequestCreatingInfo = GridsModule.AIColumnRequestCreatingInfo; export type ApplyChangesMode = GridsModule.ApplyChangesMode; diff --git a/packages/devextreme-angular/src/ui/data-grid/index.ts b/packages/devextreme-angular/src/ui/data-grid/index.ts index 4a70db38e603..3bb0dc063bfe 100644 --- a/packages/devextreme-angular/src/ui/data-grid/index.ts +++ b/packages/devextreme-angular/src/ui/data-grid/index.ts @@ -25,9 +25,9 @@ export type { ExplicitTypes } from 'devextreme/ui/data_grid'; import type dxSortable from 'devextreme/ui/sortable'; import type dxDraggable from 'devextreme/ui/draggable'; +import type { AIAssistant, ColumnChooser, ColumnResizeMode, DataChange, GridsEditMode, NewRowPosition, GridsEditRefreshMode, StartEditAction, FilterPanel, ApplyFilterMode, GroupExpandMode, HeaderFilter, EnterKeyAction, EnterKeyDirection, Pager, GridBase, DataRenderMode, SearchPanel, SelectionColumnDisplayMode, Sorting, StateStoreType, SummaryType } from 'devextreme/common/grids'; import type { AIIntegration } from 'devextreme/common/ai-integration'; -import type { ColumnChooser, ColumnResizeMode, DataChange, GridsEditMode, NewRowPosition, GridsEditRefreshMode, StartEditAction, FilterPanel, ApplyFilterMode, GroupExpandMode, HeaderFilter, EnterKeyAction, EnterKeyDirection, Pager, GridBase, DataRenderMode, SearchPanel, SelectionColumnDisplayMode, Sorting, StateStoreType, SummaryType } from 'devextreme/common/grids'; -import type { default as dxDataGrid, dxDataGridColumn, dxDataGridRowObject, DataGridExportFormat, AdaptiveDetailRowPreparingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, DataGridScrollMode, SelectionSensitivity, dxDataGridToolbar } from 'devextreme/ui/data_grid'; +import type { default as dxDataGrid, dxDataGridColumn, dxDataGridRowObject, DataGridExportFormat, AdaptiveDetailRowPreparingEvent, AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, DataGridScrollMode, SelectionSensitivity, dxDataGridToolbar } from 'devextreme/ui/data_grid'; import type { Mode, DragDirection, DragHighlight, ScrollbarMode, SingleMultipleOrNone, SelectAllMode, SortOrder, HorizontalAlignment } from 'devextreme/common'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; @@ -118,6 +118,7 @@ import { DxiTotalItemModule } from 'devextreme-angular/ui/nested'; import { DxoToolbarModule } from 'devextreme-angular/ui/nested'; import { DxoDataGridAIModule } from 'devextreme-angular/ui/data-grid/nested'; +import { DxoDataGridAIAssistantModule } from 'devextreme-angular/ui/data-grid/nested'; import { DxoDataGridAIOptionsModule } from 'devextreme-angular/ui/data-grid/nested'; import { DxoDataGridAnimationModule } from 'devextreme-angular/ui/data-grid/nested'; import { DxiDataGridAsyncRuleModule } from 'devextreme-angular/ui/data-grid/nested'; @@ -343,6 +344,16 @@ export class DxDataGridComponent extends DxComponent } + + @Input() + get aiAssistant(): AIAssistant { + return this._getOption('aiAssistant'); + } + set aiAssistant(value: AIAssistant) { + this._setOption('aiAssistant', value); + } + + /** * [descr:GridBaseOptions.aiIntegration] @@ -1314,6 +1325,14 @@ export class DxDataGridComponent extends DxComponent */ @Output() onAdaptiveDetailRowPreparing: EventEmitter; + /** + + * [descr:dxDataGridOptions.onAIAssistantRequestCreating] + + + */ + @Output() onAIAssistantRequestCreating: EventEmitter; + /** * [descr:dxDataGridOptions.onAIColumnRequestCreating] @@ -1656,6 +1675,13 @@ export class DxDataGridComponent extends DxComponent */ @Output() activeStateEnabledChange: EventEmitter; + /** + + * This member supports the internal infrastructure and is not intended to be used directly from your code. + + */ + @Output() aiAssistantChange: EventEmitter; + /** * This member supports the internal infrastructure and is not intended to be used directly from your code. @@ -2188,6 +2214,7 @@ export class DxDataGridComponent extends DxComponent this._createEventEmitters([ { subscribe: 'adaptiveDetailRowPreparing', emit: 'onAdaptiveDetailRowPreparing' }, + { subscribe: 'aIAssistantRequestCreating', emit: 'onAIAssistantRequestCreating' }, { subscribe: 'aIColumnRequestCreating', emit: 'onAIColumnRequestCreating' }, { subscribe: 'cellClick', emit: 'onCellClick' }, { subscribe: 'cellDblClick', emit: 'onCellDblClick' }, @@ -2231,6 +2258,7 @@ export class DxDataGridComponent extends DxComponent { subscribe: 'toolbarPreparing', emit: 'onToolbarPreparing' }, { emit: 'accessKeyChange' }, { emit: 'activeStateEnabledChange' }, + { emit: 'aiAssistantChange' }, { emit: 'aiIntegrationChange' }, { emit: 'allowColumnReorderingChange' }, { emit: 'allowColumnResizingChange' }, @@ -2429,6 +2457,7 @@ export class DxDataGridComponent extends DxComponent DxiTotalItemModule, DxoToolbarModule, DxoDataGridAIModule, + DxoDataGridAIAssistantModule, DxoDataGridAIOptionsModule, DxoDataGridAnimationModule, DxiDataGridAsyncRuleModule, @@ -2602,6 +2631,7 @@ export class DxDataGridComponent extends DxComponent DxiTotalItemModule, DxoToolbarModule, DxoDataGridAIModule, + DxoDataGridAIAssistantModule, DxoDataGridAIOptionsModule, DxoDataGridAnimationModule, DxiDataGridAsyncRuleModule, diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/ai-assistant.ts b/packages/devextreme-angular/src/ui/data-grid/nested/ai-assistant.ts new file mode 100644 index 000000000000..bf3d005ac860 --- /dev/null +++ b/packages/devextreme-angular/src/ui/data-grid/nested/ai-assistant.ts @@ -0,0 +1,108 @@ +/* tslint:disable:max-line-length */ + + +import { + Component, + OnInit, + OnDestroy, + NgModule, + Host, + SkipSelf, + Input +} from '@angular/core'; + + + + +import type { AIIntegration } from 'devextreme/common/ai-integration'; +import type { dxPopupOptions } from 'devextreme/ui/popup'; + +import { + DxIntegrationModule, + NestedOptionHost, +} from 'devextreme-angular/core'; +import { NestedOption } from 'devextreme-angular/core'; + + +@Component({ + selector: 'dxo-data-grid-ai-assistant', + template: '', + styles: [''], + imports: [ DxIntegrationModule ], + providers: [NestedOptionHost] +}) +export class DxoDataGridAIAssistantComponent extends NestedOption implements OnDestroy, OnInit { + @Input() + get aiIntegration(): AIIntegration { + return this._getOption('aiIntegration'); + } + set aiIntegration(value: AIIntegration) { + this._setOption('aiIntegration', value); + } + + @Input() + get chat(): Record { + return this._getOption('chat'); + } + set chat(value: Record) { + this._setOption('chat', value); + } + + @Input() + get enabled(): boolean { + return this._getOption('enabled'); + } + set enabled(value: boolean) { + this._setOption('enabled', value); + } + + @Input() + get popup(): dxPopupOptions { + return this._getOption('popup'); + } + set popup(value: dxPopupOptions) { + this._setOption('popup', value); + } + + @Input() + get title(): string { + return this._getOption('title'); + } + set title(value: string) { + this._setOption('title', value); + } + + + protected get _optionPath() { + return 'aiAssistant'; + } + + + constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost, + @Host() optionHost: NestedOptionHost) { + super(); + parentOptionHost.setNestedOption(this); + optionHost.setHost(this, this._fullOptionPath.bind(this)); + } + + + ngOnInit() { + this._addRecreatedComponent(); + } + + ngOnDestroy() { + this._addRemovedOption(this._getOptionPath()); + } + + +} + +@NgModule({ + imports: [ + DxoDataGridAIAssistantComponent + ], + exports: [ + DxoDataGridAIAssistantComponent + ], +}) +export class DxoDataGridAIAssistantModule { } diff --git a/packages/devextreme-angular/src/ui/data-grid/nested/index.ts b/packages/devextreme-angular/src/ui/data-grid/nested/index.ts index 9458b527cc5e..13175e4ec816 100644 --- a/packages/devextreme-angular/src/ui/data-grid/nested/index.ts +++ b/packages/devextreme-angular/src/ui/data-grid/nested/index.ts @@ -1,3 +1,4 @@ +export * from './ai-assistant'; export * from './ai-options'; export * from './ai'; export * from './animation'; diff --git a/packages/devextreme-angular/src/ui/tree-list/index.ts b/packages/devextreme-angular/src/ui/tree-list/index.ts index 21b8807f5167..70ce1e06201c 100644 --- a/packages/devextreme-angular/src/ui/tree-list/index.ts +++ b/packages/devextreme-angular/src/ui/tree-list/index.ts @@ -25,9 +25,9 @@ export type { ExplicitTypes } from 'devextreme/ui/tree_list'; import type dxSortable from 'devextreme/ui/sortable'; import type dxDraggable from 'devextreme/ui/draggable'; +import type { AIAssistant, ColumnChooser, ColumnResizeMode, DataChange, GridsEditMode, GridsEditRefreshMode, StartEditAction, FilterPanel, ApplyFilterMode, HeaderFilter, EnterKeyAction, EnterKeyDirection, Pager, GridBase, DataRenderMode, SearchPanel, Sorting, StateStoreType } from 'devextreme/common/grids'; import type { AIIntegration } from 'devextreme/common/ai-integration'; -import type { ColumnChooser, ColumnResizeMode, DataChange, GridsEditMode, GridsEditRefreshMode, StartEditAction, FilterPanel, ApplyFilterMode, HeaderFilter, EnterKeyAction, EnterKeyDirection, Pager, GridBase, DataRenderMode, SearchPanel, Sorting, StateStoreType } from 'devextreme/common/grids'; -import type { default as dxTreeList, dxTreeListColumn, dxTreeListRowObject, TreeListFilterMode, AdaptiveDetailRowPreparingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, NodesInitializedEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, dxTreeListToolbar } from 'devextreme/ui/tree_list'; +import type { default as dxTreeList, dxTreeListColumn, dxTreeListRowObject, TreeListFilterMode, AdaptiveDetailRowPreparingEvent, AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellHoverChangedEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, FocusedCellChangedEvent, FocusedCellChangingEvent, FocusedRowChangedEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, NodesInitializedEvent, OptionChangedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, SelectionChangedEvent, ToolbarPreparingEvent, dxTreeListToolbar } from 'devextreme/ui/tree_list'; import type { Mode, DataStructure, DragDirection, DragHighlight, ScrollMode, ScrollbarMode, SingleMultipleOrNone } from 'devextreme/common'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; @@ -108,6 +108,7 @@ import { DxoStateStoringModule } from 'devextreme-angular/ui/nested'; import { DxoToolbarModule } from 'devextreme-angular/ui/nested'; import { DxoTreeListAIModule } from 'devextreme-angular/ui/tree-list/nested'; +import { DxoTreeListAIAssistantModule } from 'devextreme-angular/ui/tree-list/nested'; import { DxoTreeListAIOptionsModule } from 'devextreme-angular/ui/tree-list/nested'; import { DxoTreeListAnimationModule } from 'devextreme-angular/ui/tree-list/nested'; import { DxiTreeListAsyncRuleModule } from 'devextreme-angular/ui/tree-list/nested'; @@ -303,6 +304,16 @@ export class DxTreeListComponent extends DxComponent } + + @Input() + get aiAssistant(): AIAssistant { + return this._getOption('aiAssistant'); + } + set aiAssistant(value: AIAssistant) { + this._setOption('aiAssistant', value); + } + + /** * [descr:GridBaseOptions.aiIntegration] @@ -1272,6 +1283,14 @@ export class DxTreeListComponent extends DxComponent */ @Output() onAdaptiveDetailRowPreparing: EventEmitter; + /** + + * [descr:dxTreeListOptions.onAIAssistantRequestCreating] + + + */ + @Output() onAIAssistantRequestCreating: EventEmitter; + /** * [descr:dxTreeListOptions.onAIColumnRequestCreating] @@ -1614,6 +1633,13 @@ export class DxTreeListComponent extends DxComponent */ @Output() activeStateEnabledChange: EventEmitter; + /** + + * This member supports the internal infrastructure and is not intended to be used directly from your code. + + */ + @Output() aiAssistantChange: EventEmitter; + /** * This member supports the internal infrastructure and is not intended to be used directly from your code. @@ -2146,6 +2172,7 @@ export class DxTreeListComponent extends DxComponent this._createEventEmitters([ { subscribe: 'adaptiveDetailRowPreparing', emit: 'onAdaptiveDetailRowPreparing' }, + { subscribe: 'aIAssistantRequestCreating', emit: 'onAIAssistantRequestCreating' }, { subscribe: 'aIColumnRequestCreating', emit: 'onAIColumnRequestCreating' }, { subscribe: 'cellClick', emit: 'onCellClick' }, { subscribe: 'cellDblClick', emit: 'onCellDblClick' }, @@ -2189,6 +2216,7 @@ export class DxTreeListComponent extends DxComponent { subscribe: 'toolbarPreparing', emit: 'onToolbarPreparing' }, { emit: 'accessKeyChange' }, { emit: 'activeStateEnabledChange' }, + { emit: 'aiAssistantChange' }, { emit: 'aiIntegrationChange' }, { emit: 'allowColumnReorderingChange' }, { emit: 'allowColumnResizingChange' }, @@ -2374,6 +2402,7 @@ export class DxTreeListComponent extends DxComponent DxoStateStoringModule, DxoToolbarModule, DxoTreeListAIModule, + DxoTreeListAIAssistantModule, DxoTreeListAIOptionsModule, DxoTreeListAnimationModule, DxiTreeListAsyncRuleModule, @@ -2526,6 +2555,7 @@ export class DxTreeListComponent extends DxComponent DxoStateStoringModule, DxoToolbarModule, DxoTreeListAIModule, + DxoTreeListAIAssistantModule, DxoTreeListAIOptionsModule, DxoTreeListAnimationModule, DxiTreeListAsyncRuleModule, diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/ai-assistant.ts b/packages/devextreme-angular/src/ui/tree-list/nested/ai-assistant.ts new file mode 100644 index 000000000000..1b2722649f16 --- /dev/null +++ b/packages/devextreme-angular/src/ui/tree-list/nested/ai-assistant.ts @@ -0,0 +1,108 @@ +/* tslint:disable:max-line-length */ + + +import { + Component, + OnInit, + OnDestroy, + NgModule, + Host, + SkipSelf, + Input +} from '@angular/core'; + + + + +import type { AIIntegration } from 'devextreme/common/ai-integration'; +import type { dxPopupOptions } from 'devextreme/ui/popup'; + +import { + DxIntegrationModule, + NestedOptionHost, +} from 'devextreme-angular/core'; +import { NestedOption } from 'devextreme-angular/core'; + + +@Component({ + selector: 'dxo-tree-list-ai-assistant', + template: '', + styles: [''], + imports: [ DxIntegrationModule ], + providers: [NestedOptionHost] +}) +export class DxoTreeListAIAssistantComponent extends NestedOption implements OnDestroy, OnInit { + @Input() + get aiIntegration(): AIIntegration { + return this._getOption('aiIntegration'); + } + set aiIntegration(value: AIIntegration) { + this._setOption('aiIntegration', value); + } + + @Input() + get chat(): Record { + return this._getOption('chat'); + } + set chat(value: Record) { + this._setOption('chat', value); + } + + @Input() + get enabled(): boolean { + return this._getOption('enabled'); + } + set enabled(value: boolean) { + this._setOption('enabled', value); + } + + @Input() + get popup(): dxPopupOptions { + return this._getOption('popup'); + } + set popup(value: dxPopupOptions) { + this._setOption('popup', value); + } + + @Input() + get title(): string { + return this._getOption('title'); + } + set title(value: string) { + this._setOption('title', value); + } + + + protected get _optionPath() { + return 'aiAssistant'; + } + + + constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost, + @Host() optionHost: NestedOptionHost) { + super(); + parentOptionHost.setNestedOption(this); + optionHost.setHost(this, this._fullOptionPath.bind(this)); + } + + + ngOnInit() { + this._addRecreatedComponent(); + } + + ngOnDestroy() { + this._addRemovedOption(this._getOptionPath()); + } + + +} + +@NgModule({ + imports: [ + DxoTreeListAIAssistantComponent + ], + exports: [ + DxoTreeListAIAssistantComponent + ], +}) +export class DxoTreeListAIAssistantModule { } diff --git a/packages/devextreme-angular/src/ui/tree-list/nested/index.ts b/packages/devextreme-angular/src/ui/tree-list/nested/index.ts index 017f7f2588f9..91b3f2b577eb 100644 --- a/packages/devextreme-angular/src/ui/tree-list/nested/index.ts +++ b/packages/devextreme-angular/src/ui/tree-list/nested/index.ts @@ -1,3 +1,4 @@ +export * from './ai-assistant'; export * from './ai-options'; export * from './ai'; export * from './animation'; diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index 42774f532e9f..ae5cbc51f910 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -47,6 +47,7 @@ Ng.makeMetadata({ ...replaceTypesMutations, removeMembers(/\/grids:ColumnBase.ai/), + removeMembers(/\/grids:GridBaseOptions.aiAssistant/), removeMembers(/\/calendar:dxCalendarOptions.todayButtonText/), removeMembers(/\/card_view:/), removeMembers(/\/chat:TextMessage.attachments/), diff --git a/packages/devextreme-metadata/make-aspnet-metadata.ts b/packages/devextreme-metadata/make-aspnet-metadata.ts index 07949141bca3..ea99c30f8259 100644 --- a/packages/devextreme-metadata/make-aspnet-metadata.ts +++ b/packages/devextreme-metadata/make-aspnet-metadata.ts @@ -168,6 +168,7 @@ AspNet.makeMetadata({ ['ui/button:dxButtonOptions', 'ui/form:dxFormButtonItem.buttonOptions'], ['ui/button_group:dxButtonGroupOptions', 'ui/chat:dxChatOptions.suggestions'], ['ui/calendar:dxCalendarOptions', 'ui/date_box:DateBoxBaseOptions.calendarOptions'], + ['ui/chat:dxChatOptions', 'common/grids:AIAssistant.chat'], [ 'ui/file_uploader:dxFileUploaderOptions', 'ui/html_editor:dxHtmlEditorImageUpload.fileUploaderOptions', @@ -179,6 +180,7 @@ AspNet.makeMetadata({ ['ui/form:dxFormOptions', 'ui/card_view:Editing.form'], ['ui/form:dxFormOptions', 'ui/scheduler:dxSchedulerOptions.editing.form'], ['ui/popover:dxPopoverOptions', 'ui/lookup:dxLookupOptions.dropDownOptions'], + ['ui/popup:dxPopupOptions', 'common/grids:AIAssistant.popup'], ['ui/popup:dxPopupOptions', 'common/grids:ColumnAIOptions.popup'], ['ui/popup:dxPopupOptions', 'common/grids:EditingBase.popup'], ['ui/popup:dxPopupOptions', 'common/grids:GridBaseOptions.filterBuilderPopup'], diff --git a/packages/devextreme-metadata/make-integration-metadata.ts b/packages/devextreme-metadata/make-integration-metadata.ts index e1ed28867689..14ac44d14eae 100644 --- a/packages/devextreme-metadata/make-integration-metadata.ts +++ b/packages/devextreme-metadata/make-integration-metadata.ts @@ -9,6 +9,7 @@ Imd.makeMetadata({ artifacts: PATHS.artifactsDir, }, mutations: [ + replaceTypes('common/grids:AIAssistant.chat', ['*'], ['object']), replaceTypes('common/grids:ColumnAIOptions.popup', ['*'], ['object']), replaceTypes('ui/card_view:dxCardViewOptions.filterBuilderPopup', ['*'], ['object']), replaceTypes('ui/card_view:Editing.popup', ['*'], ['object']), diff --git a/packages/devextreme-react/src/common/grids.ts b/packages/devextreme-react/src/common/grids.ts index 3a2c80da1a00..2cf419615368 100644 --- a/packages/devextreme-react/src/common/grids.ts +++ b/packages/devextreme-react/src/common/grids.ts @@ -1,5 +1,7 @@ export type { AdaptiveDetailRowPreparingInfo, + AIAssistant, + AIAssistantRequestCreatingInfo, AIColumnMode, AIColumnRequestCreatingInfo, ApplyChangesMode, diff --git a/packages/devextreme-react/src/common/index.ts b/packages/devextreme-react/src/common/index.ts index 44eee965a2a0..2986f0bf89c6 100644 --- a/packages/devextreme-react/src/common/index.ts +++ b/packages/devextreme-react/src/common/index.ts @@ -273,6 +273,8 @@ export namespace Export { export function Grids(): void {} export namespace Grids { export type AdaptiveDetailRowPreparingInfo = GridsModule.AdaptiveDetailRowPreparingInfo; + export type AIAssistant = GridsModule.AIAssistant; + export type AIAssistantRequestCreatingInfo = GridsModule.AIAssistantRequestCreatingInfo; export type AIColumnMode = GridsModule.AIColumnMode; export type AIColumnRequestCreatingInfo = GridsModule.AIColumnRequestCreatingInfo; export type ApplyChangesMode = GridsModule.ApplyChangesMode; diff --git a/packages/devextreme-react/src/data-grid.ts b/packages/devextreme-react/src/data-grid.ts index e5efdc3db829..6d7e70388720 100644 --- a/packages/devextreme-react/src/data-grid.ts +++ b/packages/devextreme-react/src/data-grid.ts @@ -9,7 +9,7 @@ import dxDataGrid, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { dxDataGridColumn, AdaptiveDetailRowPreparingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangingEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, ToolbarPreparingEvent, dxDataGridRowObject, DataGridPredefinedColumnButton, ColumnButtonClickEvent, dxDataGridColumnButton, DataGridCommandColumnType, SelectionSensitivity, DataGridPredefinedToolbarItem, DataGridExportFormat, DataGridScrollMode, dxDataGridToolbarItem } from "devextreme/ui/data_grid"; +import type { dxDataGridColumn, AdaptiveDetailRowPreparingEvent, AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, ExportingEvent, FocusedCellChangingEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, ToolbarPreparingEvent, dxDataGridRowObject, DataGridPredefinedColumnButton, ColumnButtonClickEvent, dxDataGridColumnButton, DataGridCommandColumnType, SelectionSensitivity, DataGridPredefinedToolbarItem, DataGridExportFormat, DataGridScrollMode, dxDataGridToolbarItem } from "devextreme/ui/data_grid"; import type { DataChange, AIColumnMode, DataChangeType, ColumnAIOptions, FilterOperation, FilterType, FixedPosition, ColumnHeaderFilter as GridsColumnHeaderFilter, SelectedFilterOperation, ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, HeaderFilterSearchConfig, HeaderFilterTexts, SelectionColumnDisplayMode, GridsEditMode, NewRowPosition, GridsEditRefreshMode, StartEditAction, FilterPanel as GridsFilterPanel, FilterPanelTexts as GridsFilterPanelTexts, ApplyFilterMode, GroupExpandMode, SummaryType, EnterKeyAction, EnterKeyDirection, PagerPageSize, GridBase, DataRenderMode, StateStoreType } from "devextreme/common/grids"; import type { Mode, ValidationRuleType, HorizontalAlignment, VerticalAlignment, template, TextEditorButtonLocation, ButtonStyle, ButtonType, DataType, Format as CommonFormat, SortOrder, SearchMode, ComparisonOperator, SingleMultipleOrNone, SelectAllMode, ToolbarItemLocation, ToolbarItemComponent, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position as CommonPosition, ValidationStatus, PositionAlignment, Direction, DisplayMode, DragDirection, DragHighlight, ScrollbarMode, TabsIconPosition, TabsStyle } from "devextreme/common"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; @@ -18,13 +18,13 @@ import type { ContentReadyEvent as FilterBuilderContentReadyEvent, DisposingEven import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, FormItemType, FormPredefinedButtonItem, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormOptions, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, dxTabPanelItem, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; import type { AIIntegration } from "devextreme/common/ai-integration"; +import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; -import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { event } from "devextreme/events/events.types"; import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; @@ -47,6 +47,7 @@ type ReplaceFieldTypes = { type IDataGridOptionsNarrowedEvents = { onAdaptiveDetailRowPreparing?: ((e: AdaptiveDetailRowPreparingEvent) => void); + onAIAssistantRequestCreating?: ((e: AIAssistantRequestCreatingEvent) => void); onAIColumnRequestCreating?: ((e: AIColumnRequestCreatingEvent) => void); onCellClick?: ((e: CellClickEvent) => void); onCellDblClick?: ((e: CellDblClickEvent) => void); @@ -130,8 +131,8 @@ const DataGrid = memo( } ), []); - const subscribableOptions = useMemo(() => (["columns","editing","editing.changes","editing.editColumnName","editing.editRowKey","filterValue","focusedColumnIndex","focusedRowIndex","focusedRowKey","groupPanel","groupPanel.visible","paging","paging.pageIndex","paging.pageSize","selectedRowKeys","selectionFilter","filterBuilder.value","filterBuilderPopup.height","filterBuilderPopup.position","filterBuilderPopup.visible","filterBuilderPopup.width","filterPanel.filterEnabled","editing.form.formData","editing.popup.height","editing.popup.position","editing.popup.visible","editing.popup.width","searchPanel.text"]), []); - const independentEvents = useMemo(() => (["onAdaptiveDetailRowPreparing","onAIColumnRequestCreating","onCellClick","onCellDblClick","onCellPrepared","onContentReady","onContextMenuPreparing","onDataErrorOccurred","onDisposing","onEditCanceled","onEditCanceling","onEditingStart","onEditorPrepared","onEditorPreparing","onExporting","onFocusedCellChanging","onFocusedRowChanging","onInitialized","onInitNewRow","onKeyDown","onRowClick","onRowCollapsed","onRowCollapsing","onRowDblClick","onRowExpanded","onRowExpanding","onRowInserted","onRowInserting","onRowPrepared","onRowRemoved","onRowRemoving","onRowUpdated","onRowUpdating","onRowValidating","onSaved","onSaving","onToolbarPreparing"]), []); + const subscribableOptions = useMemo(() => (["columns","editing","editing.changes","editing.editColumnName","editing.editRowKey","filterValue","focusedColumnIndex","focusedRowIndex","focusedRowKey","groupPanel","groupPanel.visible","paging","paging.pageIndex","paging.pageSize","selectedRowKeys","selectionFilter","filterBuilder.value","filterBuilderPopup.height","filterBuilderPopup.position","filterBuilderPopup.visible","filterBuilderPopup.width","filterPanel.filterEnabled","editing.form.formData","editing.popup.height","aIAssistant.popup.height","editing.popup.position","aIAssistant.popup.position","editing.popup.visible","aIAssistant.popup.visible","editing.popup.width","aIAssistant.popup.width","searchPanel.text"]), []); + const independentEvents = useMemo(() => (["onAdaptiveDetailRowPreparing","onAIAssistantRequestCreating","onAIColumnRequestCreating","onCellClick","onCellDblClick","onCellPrepared","onContentReady","onContextMenuPreparing","onDataErrorOccurred","onDisposing","onEditCanceled","onEditCanceling","onEditingStart","onEditorPrepared","onEditorPreparing","onExporting","onFocusedCellChanging","onFocusedRowChanging","onInitialized","onInitNewRow","onKeyDown","onRowClick","onRowCollapsed","onRowCollapsing","onRowDblClick","onRowExpanded","onRowExpanding","onRowInserted","onRowInserting","onRowPrepared","onRowRemoved","onRowRemoving","onRowUpdated","onRowUpdating","onRowValidating","onSaved","onSaving","onToolbarPreparing"]), []); const defaults = useMemo(() => ({ defaultColumns: "columns", @@ -147,6 +148,7 @@ const DataGrid = memo( }), []); const expectedChildren = useMemo(() => ({ + aiAssistant: { optionName: "aiAssistant", isCollectionItem: false }, column: { optionName: "columns", isCollectionItem: true }, columnChooser: { optionName: "columnChooser", isCollectionItem: false }, columnFixing: { optionName: "columnFixing", isCollectionItem: false }, @@ -237,6 +239,31 @@ const AI = Object.assign(_componentAI, componentType: "option", }); +// owners: +// DataGrid +type IAIAssistantProps = React.PropsWithChildren<{ + aiIntegration?: AIIntegration; + chat?: Record; + enabled?: boolean; + popup?: dxPopupOptions; + title?: string; +}> +const _componentAIAssistant = (props: IAIAssistantProps) => { + return React.createElement(NestedOption, { + ...props, + elementDescriptor: { + OptionName: "aiAssistant", + ExpectedChildren: { + popup: { optionName: "popup", isCollectionItem: false } + }, + }, + }); +}; + +const AIAssistant = Object.assign(_componentAIAssistant, { + componentType: "option", +}); + // owners: // FormItem // SimpleItem @@ -2819,6 +2846,7 @@ const PatternRule = Object.assign | { @@ -3965,6 +3993,8 @@ export { DataGridRef, AI, IAIProps, + AIAssistant, + IAIAssistantProps, AIOptions, IAIOptionsProps, Animation, diff --git a/packages/devextreme-react/src/tree-list.ts b/packages/devextreme-react/src/tree-list.ts index a618090fdfff..7e9dd03cd9bc 100644 --- a/packages/devextreme-react/src/tree-list.ts +++ b/packages/devextreme-react/src/tree-list.ts @@ -9,7 +9,7 @@ import dxTreeList, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { dxTreeListColumn, AdaptiveDetailRowPreparingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, FocusedCellChangingEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, NodesInitializedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, ToolbarPreparingEvent, dxTreeListRowObject, TreeListPredefinedColumnButton, ColumnButtonClickEvent, dxTreeListColumnButton, TreeListCommandColumnType, TreeListPredefinedToolbarItem, dxTreeListToolbarItem } from "devextreme/ui/tree_list"; +import type { dxTreeListColumn, AdaptiveDetailRowPreparingEvent, AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, CellPreparedEvent, ContentReadyEvent, ContextMenuPreparingEvent, DataErrorOccurredEvent, DisposingEvent, EditCanceledEvent, EditCancelingEvent, EditingStartEvent, EditorPreparedEvent, EditorPreparingEvent, FocusedCellChangingEvent, FocusedRowChangingEvent, InitializedEvent, InitNewRowEvent, KeyDownEvent, NodesInitializedEvent, RowClickEvent, RowCollapsedEvent, RowCollapsingEvent, RowDblClickEvent, RowExpandedEvent, RowExpandingEvent, RowInsertedEvent, RowInsertingEvent, RowPreparedEvent, RowRemovedEvent, RowRemovingEvent, RowUpdatedEvent, RowUpdatingEvent, RowValidatingEvent, SavedEvent, SavingEvent, ToolbarPreparingEvent, dxTreeListRowObject, TreeListPredefinedColumnButton, ColumnButtonClickEvent, dxTreeListColumnButton, TreeListCommandColumnType, TreeListPredefinedToolbarItem, dxTreeListToolbarItem } from "devextreme/ui/tree_list"; import type { DataChange, AIColumnMode, DataChangeType, ColumnAIOptions, FilterOperation, FilterType, FixedPosition, ColumnHeaderFilter as GridsColumnHeaderFilter, SelectedFilterOperation, ColumnChooserMode, ColumnChooserSearchConfig, ColumnChooserSelectionConfig, HeaderFilterGroupInterval, ColumnHeaderFilterSearchConfig, GridsEditMode, GridsEditRefreshMode, StartEditAction, FilterPanel as GridsFilterPanel, FilterPanelTexts as GridsFilterPanelTexts, ApplyFilterMode, HeaderFilterSearchConfig, HeaderFilterTexts, EnterKeyAction, EnterKeyDirection, PagerPageSize, GridBase, DataRenderMode, StateStoreType } from "devextreme/common/grids"; import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; import type { ContentReadyEvent as TextBoxContentReadyEvent, DisposingEvent as TextBoxDisposingEvent, InitializedEvent as TextBoxInitializedEvent, KeyDownEvent as TextBoxKeyDownEvent, dxTextBoxOptions, OptionChangedEvent as TextBoxOptionChangedEvent, TextBoxType, ChangeEvent, CopyEvent, CutEvent, EnterKeyEvent, FocusInEvent, FocusOutEvent, InputEvent, KeyUpEvent, PasteEvent, ValueChangedEvent } from "devextreme/ui/text_box"; @@ -17,12 +17,12 @@ import type { ContentReadyEvent as FilterBuilderContentReadyEvent, DisposingEven import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, FormItemType, FormPredefinedButtonItem, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormOptions, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, dxTabPanelItem, ItemClickEvent, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; import type { AIIntegration } from "devextreme/common/ai-integration"; +import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { AnimationConfig, CollisionResolution, PositionConfig, AnimationState, AnimationType, CollisionResolutionCombination } from "devextreme/common/core/animation"; import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, template, TextEditorButtonLocation, ButtonStyle, ButtonType, DataType, Format as CommonFormat, SortOrder, SearchMode, ComparisonOperator, TextBoxPredefinedButton, TextEditorButton, LabelMode, MaskMode, EditorStyle, ValidationMessageMode, Position as CommonPosition, ValidationStatus, PositionAlignment, Mode, Direction, ToolbarItemLocation, ToolbarItemComponent, DisplayMode, DragDirection, DragHighlight, ScrollMode, ScrollbarMode, SingleMultipleOrNone, TabsIconPosition, TabsStyle } from "devextreme/common"; import type { Format as LocalizationFormat } from "devextreme/common/core/localization"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; -import type { dxPopupOptions, dxPopupToolbarItem, ToolbarLocation } from "devextreme/ui/popup"; import type { event } from "devextreme/events/events.types"; import type { EventInfo } from "devextreme/common/core/events"; import type { Component } from "devextreme/core/component"; @@ -47,6 +47,7 @@ type ReplaceFieldTypes = { type ITreeListOptionsNarrowedEvents = { onAdaptiveDetailRowPreparing?: ((e: AdaptiveDetailRowPreparingEvent) => void); + onAIAssistantRequestCreating?: ((e: AIAssistantRequestCreatingEvent) => void); onAIColumnRequestCreating?: ((e: AIColumnRequestCreatingEvent) => void); onCellClick?: ((e: CellClickEvent) => void); onCellDblClick?: ((e: CellDblClickEvent) => void); @@ -124,8 +125,8 @@ const TreeList = memo( } ), []); - const subscribableOptions = useMemo(() => (["columns","editing","editing.changes","editing.editColumnName","editing.editRowKey","expandedRowKeys","filterValue","focusedColumnIndex","focusedRowIndex","focusedRowKey","paging","paging.pageIndex","paging.pageSize","selectedRowKeys","filterBuilder.value","filterBuilderPopup.height","filterBuilderPopup.position","filterBuilderPopup.visible","filterBuilderPopup.width","filterPanel.filterEnabled","editing.form.formData","editing.popup.height","editing.popup.position","editing.popup.visible","editing.popup.width","searchPanel.text"]), []); - const independentEvents = useMemo(() => (["onAdaptiveDetailRowPreparing","onAIColumnRequestCreating","onCellClick","onCellDblClick","onCellPrepared","onContentReady","onContextMenuPreparing","onDataErrorOccurred","onDisposing","onEditCanceled","onEditCanceling","onEditingStart","onEditorPrepared","onEditorPreparing","onFocusedCellChanging","onFocusedRowChanging","onInitialized","onInitNewRow","onKeyDown","onNodesInitialized","onRowClick","onRowCollapsed","onRowCollapsing","onRowDblClick","onRowExpanded","onRowExpanding","onRowInserted","onRowInserting","onRowPrepared","onRowRemoved","onRowRemoving","onRowUpdated","onRowUpdating","onRowValidating","onSaved","onSaving","onToolbarPreparing"]), []); + const subscribableOptions = useMemo(() => (["columns","editing","editing.changes","editing.editColumnName","editing.editRowKey","expandedRowKeys","filterValue","focusedColumnIndex","focusedRowIndex","focusedRowKey","paging","paging.pageIndex","paging.pageSize","selectedRowKeys","filterBuilder.value","filterBuilderPopup.height","filterBuilderPopup.position","filterBuilderPopup.visible","filterBuilderPopup.width","filterPanel.filterEnabled","editing.form.formData","editing.popup.height","aIAssistant.popup.height","editing.popup.position","aIAssistant.popup.position","editing.popup.visible","aIAssistant.popup.visible","editing.popup.width","aIAssistant.popup.width","searchPanel.text"]), []); + const independentEvents = useMemo(() => (["onAdaptiveDetailRowPreparing","onAIAssistantRequestCreating","onAIColumnRequestCreating","onCellClick","onCellDblClick","onCellPrepared","onContentReady","onContextMenuPreparing","onDataErrorOccurred","onDisposing","onEditCanceled","onEditCanceling","onEditingStart","onEditorPrepared","onEditorPreparing","onFocusedCellChanging","onFocusedRowChanging","onInitialized","onInitNewRow","onKeyDown","onNodesInitialized","onRowClick","onRowCollapsed","onRowCollapsing","onRowDblClick","onRowExpanded","onRowExpanding","onRowInserted","onRowInserting","onRowPrepared","onRowRemoved","onRowRemoving","onRowUpdated","onRowUpdating","onRowValidating","onSaved","onSaving","onToolbarPreparing"]), []); const defaults = useMemo(() => ({ defaultColumns: "columns", @@ -140,6 +141,7 @@ const TreeList = memo( }), []); const expectedChildren = useMemo(() => ({ + aiAssistant: { optionName: "aiAssistant", isCollectionItem: false }, column: { optionName: "columns", isCollectionItem: true }, columnChooser: { optionName: "columnChooser", isCollectionItem: false }, columnFixing: { optionName: "columnFixing", isCollectionItem: false }, @@ -209,6 +211,31 @@ const AI = Object.assign(_componentAI, componentType: "option", }); +// owners: +// TreeList +type IAIAssistantProps = React.PropsWithChildren<{ + aiIntegration?: AIIntegration; + chat?: Record; + enabled?: boolean; + popup?: dxPopupOptions; + title?: string; +}> +const _componentAIAssistant = (props: IAIAssistantProps) => { + return React.createElement(NestedOption, { + ...props, + elementDescriptor: { + OptionName: "aiAssistant", + ExpectedChildren: { + popup: { optionName: "popup", isCollectionItem: false } + }, + }, + }); +}; + +const AIAssistant = Object.assign(_componentAIAssistant, { + componentType: "option", +}); + // owners: // FormItem // SimpleItem @@ -2451,6 +2478,7 @@ const PatternRule = Object.assign | { @@ -3544,6 +3572,8 @@ export { TreeListRef, AI, IAIProps, + AIAssistant, + IAIAssistantProps, AIOptions, IAIOptionsProps, Animation, diff --git a/packages/devextreme-vue/src/common/grids.ts b/packages/devextreme-vue/src/common/grids.ts index 3a2c80da1a00..2cf419615368 100644 --- a/packages/devextreme-vue/src/common/grids.ts +++ b/packages/devextreme-vue/src/common/grids.ts @@ -1,5 +1,7 @@ export type { AdaptiveDetailRowPreparingInfo, + AIAssistant, + AIAssistantRequestCreatingInfo, AIColumnMode, AIColumnRequestCreatingInfo, ApplyChangesMode, diff --git a/packages/devextreme-vue/src/common/index.ts b/packages/devextreme-vue/src/common/index.ts index 44eee965a2a0..2986f0bf89c6 100644 --- a/packages/devextreme-vue/src/common/index.ts +++ b/packages/devextreme-vue/src/common/index.ts @@ -273,6 +273,8 @@ export namespace Export { export function Grids(): void {} export namespace Grids { export type AdaptiveDetailRowPreparingInfo = GridsModule.AdaptiveDetailRowPreparingInfo; + export type AIAssistant = GridsModule.AIAssistant; + export type AIAssistantRequestCreatingInfo = GridsModule.AIAssistantRequestCreatingInfo; export type AIColumnMode = GridsModule.AIColumnMode; export type AIColumnRequestCreatingInfo = GridsModule.AIColumnRequestCreatingInfo; export type ApplyChangesMode = GridsModule.ApplyChangesMode; diff --git a/packages/devextreme-vue/src/data-grid.ts b/packages/devextreme-vue/src/data-grid.ts index 3015cf797c17..913742eec14f 100644 --- a/packages/devextreme-vue/src/data-grid.ts +++ b/packages/devextreme-vue/src/data-grid.ts @@ -11,9 +11,7 @@ import dxPopup from "devextreme/ui/popup"; import dxSortable from "devextreme/ui/sortable"; import dxDraggable from "devextreme/ui/draggable"; import { - AIIntegration, -} from "devextreme/common/ai-integration"; -import { + AIAssistant, ColumnChooser, ColumnResizeMode, FilterPanel, @@ -53,9 +51,13 @@ import { DataRenderMode, StateStoreType, } from "devextreme/common/grids"; +import { + AIIntegration, +} from "devextreme/common/ai-integration"; import { dxDataGridColumn, AdaptiveDetailRowPreparingEvent, + AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, @@ -273,6 +275,7 @@ import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, aiIntegration: Object as PropType, allowColumnReordering: Boolean, allowColumnResizing: Boolean, @@ -445,6 +450,7 @@ const componentConfig = { masterDetail: Object as PropType>, noDataText: String, onAdaptiveDetailRowPreparing: Function as PropType<((e: AdaptiveDetailRowPreparingEvent) => void)>, + onAIAssistantRequestCreating: Function as PropType<((e: AIAssistantRequestCreatingEvent) => void)>, onAIColumnRequestCreating: Function as PropType<((e: AIColumnRequestCreatingEvent) => void)>, onCellClick: Function as PropType<((e: CellClickEvent) => void)>, onCellDblClick: Function as PropType<((e: CellDblClickEvent) => void)>, @@ -521,6 +527,7 @@ const componentConfig = { "update:hoveredElement": null, "update:accessKey": null, "update:activeStateEnabled": null, + "update:aiAssistant": null, "update:aiIntegration": null, "update:allowColumnReordering": null, "update:allowColumnResizing": null, @@ -567,6 +574,7 @@ const componentConfig = { "update:masterDetail": null, "update:noDataText": null, "update:onAdaptiveDetailRowPreparing": null, + "update:onAIAssistantRequestCreating": null, "update:onAIColumnRequestCreating": null, "update:onCellClick": null, "update:onCellDblClick": null, @@ -647,6 +655,7 @@ const componentConfig = { (this as any).$_WidgetClass = DataGrid; (this as any).$_hasAsyncTemplate = false; (this as any).$_expectedChildren = { + aiAssistant: { isCollectionItem: false, optionName: "aiAssistant" }, column: { isCollectionItem: true, optionName: "columns" }, columnChooser: { isCollectionItem: false, optionName: "columnChooser" }, columnFixing: { isCollectionItem: false, optionName: "columnFixing" }, @@ -719,6 +728,34 @@ const DxAI = defineComponent(DxAIConfig); editorOptions: { isCollectionItem: false, optionName: "editorOptions" } }; +const DxAIAssistantConfig = { + emits: { + "update:isActive": null, + "update:hoveredElement": null, + "update:aiIntegration": null, + "update:chat": null, + "update:enabled": null, + "update:popup": null, + "update:title": null, + }, + props: { + aiIntegration: Object as PropType, + chat: Object as PropType>, + enabled: Boolean, + popup: Object as PropType | Record>, + title: String + } +}; + +prepareConfigurationComponentConfig(DxAIAssistantConfig); + +const DxAIAssistant = defineComponent(DxAIAssistantConfig); + +(DxAIAssistant as any).$_optionName = "aiAssistant"; +(DxAIAssistant as any).$_expectedChildren = { + popup: { isCollectionItem: false, optionName: "popup" } +}; + const DxAIOptionsConfig = { emits: { "update:isActive": null, @@ -4697,6 +4734,7 @@ export default DxDataGrid; export { DxDataGrid, DxAI, + DxAIAssistant, DxAIOptions, DxAnimation, DxAsyncRule, diff --git a/packages/devextreme-vue/src/tree-list.ts b/packages/devextreme-vue/src/tree-list.ts index 890d50a06aae..dca3b8a87164 100644 --- a/packages/devextreme-vue/src/tree-list.ts +++ b/packages/devextreme-vue/src/tree-list.ts @@ -11,9 +11,7 @@ import dxPopup from "devextreme/ui/popup"; import dxSortable from "devextreme/ui/sortable"; import dxDraggable from "devextreme/ui/draggable"; import { - AIIntegration, -} from "devextreme/common/ai-integration"; -import { + AIAssistant, ColumnChooser, ColumnResizeMode, FilterPanel, @@ -49,10 +47,14 @@ import { DataRenderMode, StateStoreType, } from "devextreme/common/grids"; +import { + AIIntegration, +} from "devextreme/common/ai-integration"; import { dxTreeListColumn, TreeListFilterMode, AdaptiveDetailRowPreparingEvent, + AIAssistantRequestCreatingEvent, AIColumnRequestCreatingEvent, CellClickEvent, CellDblClickEvent, @@ -268,6 +270,7 @@ import { prepareConfigurationComponentConfig } from "./core/index"; type AccessibleOptions = Pick>, aiIntegration: Object as PropType, allowColumnReordering: Boolean, allowColumnResizing: Boolean, @@ -442,6 +447,7 @@ const componentConfig = { loadPanel: Object as PropType>, noDataText: String, onAdaptiveDetailRowPreparing: Function as PropType<((e: AdaptiveDetailRowPreparingEvent) => void)>, + onAIAssistantRequestCreating: Function as PropType<((e: AIAssistantRequestCreatingEvent) => void)>, onAIColumnRequestCreating: Function as PropType<((e: AIColumnRequestCreatingEvent) => void)>, onCellClick: Function as PropType<((e: CellClickEvent) => void)>, onCellDblClick: Function as PropType<((e: CellDblClickEvent) => void)>, @@ -516,6 +522,7 @@ const componentConfig = { "update:hoveredElement": null, "update:accessKey": null, "update:activeStateEnabled": null, + "update:aiAssistant": null, "update:aiIntegration": null, "update:allowColumnReordering": null, "update:allowColumnResizing": null, @@ -564,6 +571,7 @@ const componentConfig = { "update:loadPanel": null, "update:noDataText": null, "update:onAdaptiveDetailRowPreparing": null, + "update:onAIAssistantRequestCreating": null, "update:onAIColumnRequestCreating": null, "update:onCellClick": null, "update:onCellDblClick": null, @@ -642,6 +650,7 @@ const componentConfig = { (this as any).$_WidgetClass = TreeList; (this as any).$_hasAsyncTemplate = false; (this as any).$_expectedChildren = { + aiAssistant: { isCollectionItem: false, optionName: "aiAssistant" }, column: { isCollectionItem: true, optionName: "columns" }, columnChooser: { isCollectionItem: false, optionName: "columnChooser" }, columnFixing: { isCollectionItem: false, optionName: "columnFixing" }, @@ -708,6 +717,34 @@ const DxAI = defineComponent(DxAIConfig); editorOptions: { isCollectionItem: false, optionName: "editorOptions" } }; +const DxAIAssistantConfig = { + emits: { + "update:isActive": null, + "update:hoveredElement": null, + "update:aiIntegration": null, + "update:chat": null, + "update:enabled": null, + "update:popup": null, + "update:title": null, + }, + props: { + aiIntegration: Object as PropType, + chat: Object as PropType>, + enabled: Boolean, + popup: Object as PropType | Record>, + title: String + } +}; + +prepareConfigurationComponentConfig(DxAIAssistantConfig); + +const DxAIAssistant = defineComponent(DxAIAssistantConfig); + +(DxAIAssistant as any).$_optionName = "aiAssistant"; +(DxAIAssistant as any).$_expectedChildren = { + popup: { isCollectionItem: false, optionName: "popup" } +}; + const DxAIOptionsConfig = { emits: { "update:isActive": null, @@ -4283,6 +4320,7 @@ export default DxTreeList; export { DxTreeList, DxAI, + DxAIAssistant, DxAIOptions, DxAnimation, DxAsyncRule, diff --git a/packages/devextreme/js/__internal/grids/grid_core/ai_assistant/__tests__/ai_assistant_view_controller.integration.test.ts b/packages/devextreme/js/__internal/grids/grid_core/ai_assistant/__tests__/ai_assistant_view_controller.integration.test.ts index 8507eb20f77b..28c54f07de73 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/ai_assistant/__tests__/ai_assistant_view_controller.integration.test.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/ai_assistant/__tests__/ai_assistant_view_controller.integration.test.ts @@ -6,29 +6,14 @@ import { it, jest, } from '@jest/globals'; -import type { Properties as DataGridProperties } from '@js/ui/data_grid'; import { afterTest, beforeTest, - createDataGrid as commonCreateDataGrid, + createDataGrid, type DataGridInstance, } from '../../__tests__/__mock__/helpers/utils'; -// TODO remove when types added to public dts -interface AIAssistantDataGridProperties extends DataGridProperties { - aiAssistant?: { - enabled?: boolean; - title?: string; - }; -} - -// TODO remove when types added to public dts -const createDataGrid = ( - options: AIAssistantDataGridProperties = {}, -// eslint-disable-next-line @typescript-eslint/no-explicit-any -): ReturnType => commonCreateDataGrid(options as any); - const AI_ASSISTANT_BUTTON_SELECTOR = '.dx-datagrid-ai-assistant-button'; const HIDDEN_CLASS = 'dx-hidden'; diff --git a/packages/devextreme/js/__internal/grids/grid_core/m_types.ts b/packages/devextreme/js/__internal/grids/grid_core/m_types.ts index d925ef21d3bd..2a0d02e319ab 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/m_types.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/m_types.ts @@ -4,9 +4,7 @@ import type { GridBase, GridBaseOptions, SelectionBase } from '@js/common/grids' import type { Component } from '@js/core/component'; import type { PropertyType } from '@js/core/index'; import type { dxElementWrapper } from '@js/core/renderer'; -import type { Properties as ChatOptions } from '@js/ui/chat'; import type { Properties as DataGridOptions } from '@js/ui/data_grid'; -import type { Properties as PopupOptions } from '@js/ui/popup'; import type { Properties as TreeListdOptions } from '@js/ui/tree_list'; import type Widget from '@js/ui/widget/ui.widget'; @@ -129,14 +127,6 @@ export interface InternalGridOptions extends GridBaseOptions; + /** + * @docid + * @type object + */ + responseSchema: Record; +}; + /** * @docid * @hidden @@ -1940,6 +1991,11 @@ interface GridBaseOptionsBlank, TRow * @type object */ export type GridBaseOptions, TRowData = any, TKey = any> = Omit, 'focusStateEnabled'> & { + /** + * @docid + * @public + */ + aiAssistant?: AIAssistant; /** * @docid * @default undefined @@ -2145,6 +2201,15 @@ export type GridBaseOptions, TRowDat * @public */ noDataText?: string; + /** + * @docid + * @default null + * @type_function_param1 e:object + * @type_function_param1_field component:this + * @action + * @public + */ + onAIAssistantRequestCreating?: ((e: EventInfo & Cancelable & AIAssistantRequestCreatingInfo) => void); /** * @docid * @default null diff --git a/packages/devextreme/js/ui/data_grid.d.ts b/packages/devextreme/js/ui/data_grid.d.ts index 18e2f15521c4..45ebe3c527b7 100644 --- a/packages/devextreme/js/ui/data_grid.d.ts +++ b/packages/devextreme/js/ui/data_grid.d.ts @@ -41,46 +41,47 @@ import { } from '../localization'; import { - AdaptiveDetailRowPreparingInfo, - ColumnBase as ComponentColumnBase, - ColumnButtonBase as ComponentColumnButtonBase, - GridsContextMenuTarget, - EditingBase as ComponentEditingBase, - EditingTextsBase as ComponentEditingTextsBase, - DataChangeInfo, - DataErrorOccurredInfo, - DragDropInfo, - DragReorderInfo, - DragStartEventInfo, - FilterPanel as ComponentFilterPanel, - FilterPanelCustomizeTextArg as ComponentFilterPanelCustomizeTextArg, - GridBase, - GridBaseOptions, - GroupExpandMode, - KeyDownInfo, - NewRowInfo, - NewRowPosition, - PagingBase as ComponentPaging, - ReducedNativeEventInfo, - RowDragging as ComponentRowDragging, - RowDraggingEventInfo, - RowDraggingTemplateData, - RowInsertedInfo, - RowInsertingInfo, - RowKeyInfo, - RowRemovedInfo, - RowRemovingInfo, - RowUpdatedInfo, - RowUpdatingInfo, - RowValidatingInfo, - SavingInfo, - ScrollingBase as ComponentScrollingBase, - SelectionBase as ComponentSelectionBase, - SelectionChangedInfo, - SelectionColumnDisplayMode, - SummaryType, - ToolbarPreparingInfo, - AIColumnRequestCreatingInfo, + AdaptiveDetailRowPreparingInfo, + ColumnBase as ComponentColumnBase, + ColumnButtonBase as ComponentColumnButtonBase, + GridsContextMenuTarget, + EditingBase as ComponentEditingBase, + EditingTextsBase as ComponentEditingTextsBase, + DataChangeInfo, + DataErrorOccurredInfo, + DragDropInfo, + DragReorderInfo, + DragStartEventInfo, + FilterPanel as ComponentFilterPanel, + FilterPanelCustomizeTextArg as ComponentFilterPanelCustomizeTextArg, + GridBase, + GridBaseOptions, + GroupExpandMode, + KeyDownInfo, + NewRowInfo, + NewRowPosition, + PagingBase as ComponentPaging, + ReducedNativeEventInfo, + RowDragging as ComponentRowDragging, + RowDraggingEventInfo, + RowDraggingTemplateData, + RowInsertedInfo, + RowInsertingInfo, + RowKeyInfo, + RowRemovedInfo, + RowRemovingInfo, + RowUpdatedInfo, + RowUpdatingInfo, + RowValidatingInfo, + SavingInfo, + ScrollingBase as ComponentScrollingBase, + SelectionBase as ComponentSelectionBase, + SelectionChangedInfo, + SelectionColumnDisplayMode, + SummaryType, + ToolbarPreparingInfo, + AIColumnRequestCreatingInfo, + AIAssistantRequestCreatingInfo, } from '../common/grids'; export { @@ -100,6 +101,7 @@ export { } from '../common'; export { + AIAssistant, ApplyFilterMode, ColumnChooser, ColumnChooserMode, @@ -258,6 +260,14 @@ export type GridBaseColumn = ColumnBase; */ export type GridBaseColumnButton = ColumnButtonBase; +/** + * @docid _ui_data_grid_AIAssistantRequestCreatingEvent + * @public + * @type object + * @inherits EventInfo,Cancelable,AIAssistantRequestCreatingInfo + */ +export type AIAssistantRequestCreatingEvent = EventInfo> & Cancelable & AIAssistantRequestCreatingInfo; + /** * @docid _ui_data_grid_AdaptiveDetailRowPreparingEvent * @public @@ -2446,6 +2456,7 @@ export type Row = { /** @public */ export type ExplicitTypes = { + AIAssistantRequestCreatingEvent: AIAssistantRequestCreatingEvent; AdaptiveDetailRowPreparingEvent: AdaptiveDetailRowPreparingEvent; CellClickEvent: CellClickEvent; CellDblClickEvent: CellDblClickEvent; @@ -2546,6 +2557,11 @@ type EventsIntegrityCheckingHelper = CheckedEvents, * @hidden */ type Events = { +/** + * @docid dxDataGridOptions.onAIAssistantRequestCreating + * @type_function_param1 e:{ui/data_grid:AIAssistantRequestCreatingEvent} + */ +onAIAssistantRequestCreating?: ((e: AIAssistantRequestCreatingEvent) => void); /** * @docid dxDataGridOptions.onAdaptiveDetailRowPreparing * @type_function_param1 e:{ui/data_grid:AdaptiveDetailRowPreparingEvent} diff --git a/packages/devextreme/js/ui/data_grid_types.d.ts b/packages/devextreme/js/ui/data_grid_types.d.ts index 0f8612da06b2..fcf7ed3db4b7 100644 --- a/packages/devextreme/js/ui/data_grid_types.d.ts +++ b/packages/devextreme/js/ui/data_grid_types.d.ts @@ -12,6 +12,7 @@ export { Sortable, SortOrder, ToolbarItemLocation, + AIAssistant, ApplyFilterMode, ColumnChooser, ColumnChooserMode, @@ -62,6 +63,7 @@ export { DataGridPredefinedColumnButton, DataGridPredefinedToolbarItem, GroupData, + AIAssistantRequestCreatingEvent, AdaptiveDetailRowPreparingEvent, CellClickEvent, CellDblClickEvent, diff --git a/packages/devextreme/js/ui/tree_list.d.ts b/packages/devextreme/js/ui/tree_list.d.ts index 7eebdda84622..285edd25180f 100644 --- a/packages/devextreme/js/ui/tree_list.d.ts +++ b/packages/devextreme/js/ui/tree_list.d.ts @@ -62,6 +62,7 @@ import { SelectionChangedInfo, ToolbarPreparingInfo, AIColumnRequestCreatingInfo, + AIAssistantRequestCreatingInfo, } from '../common/grids'; import { dxToolbarItem } from './toolbar'; @@ -114,6 +115,7 @@ export { } from '../common'; export { + AIAssistant, ApplyFilterMode, ColumnChooser, ColumnChooserMode, @@ -181,6 +183,14 @@ export type TreeListFilterMode = 'fullBranch' | 'withAncestors' | 'matchOnly'; /** @public */ export type Scrollable = Omit; +/** +* @docid _ui_tree_list_AIAssistantRequestCreatingEvent +* @public +* @type object +* @inherits EventInfo,Cancelable,AIAssistantRequestCreatingInfo +*/ +export type AIAssistantRequestCreatingEvent = EventInfo> & Cancelable & AIAssistantRequestCreatingInfo; + /** * @docid _ui_tree_list_AdaptiveDetailRowPreparingEvent * @public @@ -1799,6 +1809,7 @@ export type Row = { /** @public */ export type ExplicitTypes = { + AIAssistantRequestCreatingEvent: AIAssistantRequestCreatingEvent; AdaptiveDetailRowPreparingEvent: AdaptiveDetailRowPreparingEvent; CellClickEvent: CellClickEvent; CellDblClickEvent: CellDblClickEvent; @@ -1876,6 +1887,11 @@ type EventsIntegrityCheckingHelper = CheckedEvents, */ type Events = { /** + * @docid dxTreeListOptions.onAIAssistantRequestCreating + * @type_function_param1 e:{ui/tree_list:AIAssistantRequestCreatingEvent} + */ +onAIAssistantRequestCreating?: ((e: AIAssistantRequestCreatingEvent) => void); + /** * @docid dxTreeListOptions.onAdaptiveDetailRowPreparing * @type_function_param1 e:{ui/tree_list:AdaptiveDetailRowPreparingEvent} */ diff --git a/packages/devextreme/js/ui/tree_list_types.d.ts b/packages/devextreme/js/ui/tree_list_types.d.ts index 14ca5da11c53..1ea95a61a974 100644 --- a/packages/devextreme/js/ui/tree_list_types.d.ts +++ b/packages/devextreme/js/ui/tree_list_types.d.ts @@ -1,6 +1,7 @@ export { DisplayMode, SearchMode, + AIAssistant, ApplyFilterMode, ColumnChooser, ColumnChooserMode, @@ -56,6 +57,7 @@ export { TreeListCommandColumnType, TreeListFilterMode, Scrollable, + AIAssistantRequestCreatingEvent, AdaptiveDetailRowPreparingEvent, CellClickEvent, CellDblClickEvent, diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 44b09be25f1b..97f306cb53c3 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -4547,6 +4547,45 @@ declare module DevExpress.common.grids { */ readonly formOptions: any; }; + /** + * [descr:AIAssistant] + */ + export type AIAssistant = { + /** + * [descr:AIAssistant.aiIntegration] + */ + aiIntegration?: DevExpress.aiIntegration.AIIntegration; + /** + * [descr:AIAssistant.chat] + */ + chat?: DevExpress.ui.dxChat.Properties; + /** + * [descr:AIAssistant.enabled] + */ + enabled?: boolean; + /** + * [descr:AIAssistant.popup] + */ + popup?: DevExpress.ui.dxPopup.Properties; + /** + * [descr:AIAssistant.title] + */ + title?: string; + }; + /** + * [descr:AIAssistantRequestCreatingInfo] + * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. + */ + export type AIAssistantRequestCreatingInfo = { + /** + * [descr:AIAssistantRequestCreatingInfo.context] + */ + context: Record; + /** + * [descr:AIAssistantRequestCreatingInfo.responseSchema] + */ + responseSchema: Record; + }; export type AIColumnMode = 'auto' | 'manual'; /** * [descr:AIColumnRequestCreatingInfo] @@ -5762,6 +5801,10 @@ declare module DevExpress.common.grids { GridBaseOptionsBlank, 'focusStateEnabled' > & { + /** + * [descr:GridBaseOptions.aiAssistant] + */ + aiAssistant?: AIAssistant; /** * [descr:GridBaseOptions.aiIntegration] */ @@ -5894,6 +5937,14 @@ declare module DevExpress.common.grids { * [descr:GridBaseOptions.noDataText] */ noDataText?: string; + /** + * [descr:GridBaseOptions.onAIAssistantRequestCreating] + */ + onAIAssistantRequestCreating?: ( + e: DevExpress.common.core.events.EventInfo & + DevExpress.common.core.events.Cancelable & + AIAssistantRequestCreatingInfo + ) => void; /** * [descr:GridBaseOptions.onAdaptiveDetailRowPreparing] */ @@ -12249,6 +12300,15 @@ declare module DevExpress.ui { TKey = any > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.AdaptiveDetailRowPreparingInfo; + /** + * [descr:_ui_data_grid_AIAssistantRequestCreatingEvent] + */ + export type AIAssistantRequestCreatingEvent< + TRowData = any, + TKey = any + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.Cancelable & + DevExpress.common.grids.AIAssistantRequestCreatingInfo; /** * [descr:_ui_data_grid_AIColumnRequestCreatingEvent] */ @@ -12901,6 +12961,10 @@ declare module DevExpress.ui { readonly row?: Row; }; export type ExplicitTypes = { + AIAssistantRequestCreatingEvent: AIAssistantRequestCreatingEvent< + TRowData, + TKey + >; AdaptiveDetailRowPreparingEvent: AdaptiveDetailRowPreparingEvent< TRowData, TKey @@ -30673,6 +30737,15 @@ declare module DevExpress.ui { TKey = any > = DevExpress.common.core.events.EventInfo> & DevExpress.common.grids.AdaptiveDetailRowPreparingInfo; + /** + * [descr:_ui_tree_list_AIAssistantRequestCreatingEvent] + */ + export type AIAssistantRequestCreatingEvent< + TRowData = any, + TKey = any + > = DevExpress.common.core.events.EventInfo> & + DevExpress.common.core.events.Cancelable & + DevExpress.common.grids.AIAssistantRequestCreatingInfo; /** * [descr:_ui_tree_list_AIColumnRequestCreatingEvent] */ @@ -31132,6 +31205,10 @@ declare module DevExpress.ui { readonly row?: Row; }; export type ExplicitTypes = { + AIAssistantRequestCreatingEvent: AIAssistantRequestCreatingEvent< + TRowData, + TKey + >; AdaptiveDetailRowPreparingEvent: AdaptiveDetailRowPreparingEvent< TRowData, TKey