From eede7c7b07907548dd17b11fa755a2efddcb6771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 16:14:08 +0200 Subject: [PATCH 1/6] Step 1 --- .../make-angular-metadata.ts | 1 + .../data/data_controller/data_controller.ts | 2 +- .../js/__internal/ui/drop_down_button.ts | 17 +++++++------ .../devextreme/js/ui/drop_down_button.d.ts | 24 +++++++++---------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index 8ddde37f2223..b8bfa4d38110 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -61,6 +61,7 @@ Ng.makeMetadata({ removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), removeMembers(/\/form:FormPredefinedButtonItem/), removeMembers(/\/drop_down_editor\/ui.drop_down_editor:FieldAddons/), + removeMembers(/\/drop_down_button/), removeMembers(/\/load_panel:dxLoadPanelOptions.indicatorOptions/), removeMembers(/\/grids:LoadPanel.indicatorOptions/), removeMembers(/\/popup:dxPopupOptions.tabFocusLoopEnabled/), diff --git a/packages/devextreme/js/__internal/data/data_controller/data_controller.ts b/packages/devextreme/js/__internal/data/data_controller/data_controller.ts index 93399b855398..d7b835cdba68 100644 --- a/packages/devextreme/js/__internal/data/data_controller/data_controller.ts +++ b/packages/devextreme/js/__internal/data/data_controller/data_controller.ts @@ -184,7 +184,7 @@ class DataController { } } - updateDataSource(items?: unknown[] | DataSourceType, key?: string): void { + updateDataSource(items?: unknown[] | DataSourceType | null, key?: string): void { const dataSourceOptions = items ?? this.items(); if (key) { diff --git a/packages/devextreme/js/__internal/ui/drop_down_button.ts b/packages/devextreme/js/__internal/ui/drop_down_button.ts index 309854a9a3a4..a62063b4caae 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_button.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_button.ts @@ -97,7 +97,6 @@ class DropDownButton extends Widget { itemTemplate: 'item', keyExpr: 'this', selectedItem: null, - // @ts-expect-error public API needs to be fixed selectedItemKey: null, stylingMode: 'outlined', deferRendering: true, @@ -109,11 +108,11 @@ class DropDownButton extends Widget { template: null, text: '', type: 'normal', - onButtonClick: undefined, - onSelectionChanged: undefined, - onItemClick: undefined, + onButtonClick: null, + onSelectionChanged: null, + onItemClick: null, opened: false, - items: undefined, + items: null, dataSource: null, focusStateEnabled: true, hoverStateEnabled: true, @@ -202,7 +201,6 @@ class DropDownButton extends Widget { } // T977758 - _renderFocusTarget(): void {} _render(): void { @@ -500,6 +498,7 @@ class DropDownButton extends Widget { noDataText, displayExpr, itemTemplate, + // @ts-expect-error Update dxListOptions.items typings items, dataSource: this._dataController.getDataSource() as DataSourceLike | null, onItemClick: (e): void => { @@ -771,7 +770,7 @@ class DropDownButton extends Widget { } } - _updateDataController(items?: unknown[] | DataSourceType): void { + _updateDataController(items?: unknown[] | DataSourceType | null): void { const { keyExpr } = this.option(); this._dataController.updateDataSource(items, keyExpr); this._updateKeyExpr(); @@ -827,12 +826,12 @@ class DropDownButton extends Widget { this._updateButtonGroup(name, value); super._optionChanged(args); break; - case 'items': - // eslint-disable-next-line no-case-declarations + case 'items': { const { items } = this.option(); this._updateDataController(items); this._updateItemCollection(name); break; + } case 'dataSource': this._dataController.updateDataSource(value as unknown[] | DataSourceType); this._updateKeyExpr(); diff --git a/packages/devextreme/js/ui/drop_down_button.d.ts b/packages/devextreme/js/ui/drop_down_button.d.ts index 726515766ce4..b7c423239169 100644 --- a/packages/devextreme/js/ui/drop_down_button.d.ts +++ b/packages/devextreme/js/ui/drop_down_button.d.ts @@ -193,11 +193,11 @@ export interface dxDropDownButtonOptions extends WidgetOptions itemTemplate?: template | ((itemData: any, itemIndex: number, itemElement: DxElement) => string | UserDefinedElement); /** * @docid - * @type Array + * @type Array | null * @default null * @public */ - items?: Array; + items?: Array | null; /** * @docid * @default 'this' @@ -213,30 +213,30 @@ export interface dxDropDownButtonOptions extends WidgetOptions /** * @docid * @default null - * @type function + * @type function | null * @type_function_param1 e:{ui/drop_down_button:ButtonClickEvent} * @action * @public */ - onButtonClick?: ((e: ButtonClickEvent) => void) | string; + onButtonClick?: ((e: ButtonClickEvent) => void) | string | null; /** * @docid * @default null - * @type function + * @type function | null * @type_function_param1 e:{ui/drop_down_button:ItemClickEvent} * @action * @public */ - onItemClick?: ((e: ItemClickEvent) => void) | string; + onItemClick?: ((e: ItemClickEvent) => void) | string | null; /** * @docid * @default null - * @type function + * @type function | null * @type_function_param1 e:{ui/drop_down_button:SelectionChangedEvent} * @action * @public */ - onSelectionChanged?: ((e: SelectionChangedEvent) => void) | string; + onSelectionChanged?: ((e: SelectionChangedEvent) => void) | string | null; /** * @docid * @default false @@ -249,13 +249,13 @@ export interface dxDropDownButtonOptions extends WidgetOptions * @readonly * @public */ - selectedItem?: string | number | any; + selectedItem?: string | number | any | null; /** * @docid * @default null * @public */ - selectedItemKey?: string | number; + selectedItemKey?: string | number | null; /** * @docid * @default true @@ -363,11 +363,11 @@ export interface dxDropDownButtonItem extends dxListItem { /** * @docid * @default null - * @type function + * @type function | null * @type_function_param1 e:{ui/drop_down_button:ItemClickEvent} * @public */ - onClick?: ((e: ItemClickEvent) => void) | string; + onClick?: ((e: ItemClickEvent) => void) | string | null; } /** @public */ From 0d82d0cc47084d324389beec223b2d4fa57eecdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 16:16:17 +0200 Subject: [PATCH 2/6] Step 1 --- .../src/ui/drop-down-button/index.ts | 176 ++---------------- .../ui/drop-down-button/nested/item-dxi.ts | 4 +- .../ui/nested/base/button-group-item-dxi.ts | 1 - .../devextreme-react/src/drop-down-button.ts | 6 +- .../devextreme-vue/src/drop-down-button.ts | 12 +- packages/devextreme/ts/dx.all.d.ts | 18 +- 6 files changed, 38 insertions(+), 179 deletions(-) diff --git a/packages/devextreme-angular/src/ui/drop-down-button/index.ts b/packages/devextreme-angular/src/ui/drop-down-button/index.ts index e00e4a019aa2..2d766740a35b 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/index.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/index.ts @@ -42,19 +42,6 @@ import { CollectionNestedOption, } from 'devextreme-angular/core'; -import { DxoDropDownOptionsModule } from 'devextreme-angular/ui/nested'; -import { DxoAnimationModule } from 'devextreme-angular/ui/nested'; -import { DxoHideModule } from 'devextreme-angular/ui/nested'; -import { DxoFromModule } from 'devextreme-angular/ui/nested'; -import { DxoPositionModule } from 'devextreme-angular/ui/nested'; -import { DxoAtModule } from 'devextreme-angular/ui/nested'; -import { DxoBoundaryOffsetModule } from 'devextreme-angular/ui/nested'; -import { DxoCollisionModule } from 'devextreme-angular/ui/nested'; -import { DxoMyModule } from 'devextreme-angular/ui/nested'; -import { DxoOffsetModule } from 'devextreme-angular/ui/nested'; -import { DxoToModule } from 'devextreme-angular/ui/nested'; -import { DxoShowModule } from 'devextreme-angular/ui/nested'; -import { DxiItemModule } from 'devextreme-angular/ui/nested'; import { DxoDropDownButtonAnimationModule } from 'devextreme-angular/ui/drop-down-button/nested'; import { DxoDropDownButtonAtModule } from 'devextreme-angular/ui/drop-down-button/nested'; @@ -76,10 +63,7 @@ import { } from 'devextreme-angular/core/tokens'; -/** - * [descr:dxDropDownButton] - */ @Component({ selector: 'dx-drop-down-button', template: '', @@ -106,10 +90,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, instance: DxDropDownButton = null; - /** - * [descr:WidgetOptions.accessKey] - */ @Input() get accessKey(): string | undefined { return this._getOption('accessKey'); @@ -119,10 +100,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:WidgetOptions.activeStateEnabled] - */ @Input() get activeStateEnabled(): boolean { return this._getOption('activeStateEnabled'); @@ -132,10 +110,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.dataSource] - */ @Input() get dataSource(): Array | DataSource | DataSourceOptions | null | Store | string { return this._getOption('dataSource'); @@ -145,10 +120,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.deferRendering] - */ @Input() get deferRendering(): boolean { return this._getOption('deferRendering'); @@ -158,10 +130,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:WidgetOptions.disabled] - */ @Input() get disabled(): boolean { return this._getOption('disabled'); @@ -171,10 +140,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.displayExpr] - */ @Input() get displayExpr(): ((itemData: any) => string) | string | undefined { return this._getOption('displayExpr'); @@ -184,10 +150,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.dropDownContentTemplate] - */ @Input() get dropDownContentTemplate(): any { return this._getOption('dropDownContentTemplate'); @@ -197,10 +160,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.dropDownOptions] - */ @Input() get dropDownOptions(): dxPopupOptions { return this._getOption('dropDownOptions'); @@ -210,10 +170,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:DOMComponentOptions.elementAttr] - */ @Input() get elementAttr(): Record { return this._getOption('elementAttr'); @@ -223,10 +180,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.focusStateEnabled] - */ @Input() get focusStateEnabled(): boolean { return this._getOption('focusStateEnabled'); @@ -236,10 +190,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:DOMComponentOptions.height] - */ @Input() get height(): number | string | undefined { return this._getOption('height'); @@ -249,10 +200,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:WidgetOptions.hint] - */ @Input() get hint(): string | undefined { return this._getOption('hint'); @@ -262,10 +210,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.hoverStateEnabled] - */ @Input() get hoverStateEnabled(): boolean { return this._getOption('hoverStateEnabled'); @@ -275,10 +220,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.icon] - */ @Input() get icon(): string | undefined { return this._getOption('icon'); @@ -288,23 +230,17 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.items] - */ @Input() - get items(): Array { + get items(): Array | null { return this._getOption('items'); } - set items(value: Array) { + set items(value: Array | null) { this._setOption('items', value); } - /** - * [descr:dxDropDownButtonOptions.itemTemplate] - */ @Input() get itemTemplate(): any { return this._getOption('itemTemplate'); @@ -314,10 +250,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.keyExpr] - */ @Input() get keyExpr(): string { return this._getOption('keyExpr'); @@ -327,10 +260,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.noDataText] - */ @Input() get noDataText(): string { return this._getOption('noDataText'); @@ -340,10 +270,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.opened] - */ @Input() get opened(): boolean { return this._getOption('opened'); @@ -353,10 +280,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:DOMComponentOptions.rtlEnabled] - */ @Input() get rtlEnabled(): boolean { return this._getOption('rtlEnabled'); @@ -366,36 +290,27 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.selectedItem] - */ @Input() - get selectedItem(): any | number | string { + get selectedItem(): any | null | number | string { return this._getOption('selectedItem'); } - set selectedItem(value: any | number | string) { + set selectedItem(value: any | null | number | string) { this._setOption('selectedItem', value); } - /** - * [descr:dxDropDownButtonOptions.selectedItemKey] - */ @Input() - get selectedItemKey(): number | string { + get selectedItemKey(): null | number | string { return this._getOption('selectedItemKey'); } - set selectedItemKey(value: number | string) { + set selectedItemKey(value: null | number | string) { this._setOption('selectedItemKey', value); } - /** - * [descr:dxDropDownButtonOptions.showArrowIcon] - */ @Input() get showArrowIcon(): boolean { return this._getOption('showArrowIcon'); @@ -405,10 +320,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.splitButton] - */ @Input() get splitButton(): boolean { return this._getOption('splitButton'); @@ -418,10 +330,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.stylingMode] - */ @Input() get stylingMode(): ButtonStyle { return this._getOption('stylingMode'); @@ -431,10 +340,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:WidgetOptions.tabIndex] - */ @Input() get tabIndex(): number { return this._getOption('tabIndex'); @@ -444,10 +350,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.template] - */ @Input() get template(): any { return this._getOption('template'); @@ -457,10 +360,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.text] - */ @Input() get text(): string { return this._getOption('text'); @@ -470,10 +370,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.type] - */ @Input() get type(): ButtonType | string { return this._getOption('type'); @@ -483,10 +380,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.useItemTextAsTitle] - */ @Input() get useItemTextAsTitle(): boolean { return this._getOption('useItemTextAsTitle'); @@ -496,10 +390,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.useSelectMode] - */ @Input() get useSelectMode(): boolean { return this._getOption('useSelectMode'); @@ -509,10 +400,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:WidgetOptions.visible] - */ @Input() get visible(): boolean { return this._getOption('visible'); @@ -522,10 +410,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:DOMComponentOptions.width] - */ @Input() get width(): number | string | undefined { return this._getOption('width'); @@ -535,10 +420,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } - /** - * [descr:dxDropDownButtonOptions.wrapItemText] - */ @Input() get wrapItemText(): boolean { return this._getOption('wrapItemText'); @@ -549,7 +431,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onButtonClick] + * [descr:undefined] */ @@ -557,7 +439,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onContentReady] + * [descr:undefined] */ @@ -565,7 +447,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onDisposing] + * [descr:undefined] */ @@ -573,7 +455,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onInitialized] + * [descr:undefined] */ @@ -581,7 +463,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onItemClick] + * [descr:undefined] */ @@ -589,7 +471,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onOptionChanged] + * [descr:undefined] */ @@ -597,7 +479,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:dxDropDownButtonOptions.onSelectionChanged] + * [descr:undefined] */ @@ -706,7 +588,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() itemsChange: EventEmitter>; + @Output() itemsChange: EventEmitter | null>; /** @@ -748,14 +630,14 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() selectedItemChange: EventEmitter; + @Output() selectedItemChange: EventEmitter; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() selectedItemKeyChange: EventEmitter; + @Output() selectedItemKeyChange: EventEmitter; /** @@ -944,19 +826,6 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, @NgModule({ imports: [ DxDropDownButtonComponent, - DxoDropDownOptionsModule, - DxoAnimationModule, - DxoHideModule, - DxoFromModule, - DxoPositionModule, - DxoAtModule, - DxoBoundaryOffsetModule, - DxoCollisionModule, - DxoMyModule, - DxoOffsetModule, - DxoToModule, - DxoShowModule, - DxiItemModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, @@ -976,19 +845,6 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, ], exports: [ DxDropDownButtonComponent, - DxoDropDownOptionsModule, - DxoAnimationModule, - DxoHideModule, - DxoFromModule, - DxoPositionModule, - DxoAtModule, - DxoBoundaryOffsetModule, - DxoCollisionModule, - DxoMyModule, - DxoOffsetModule, - DxoToModule, - DxoShowModule, - DxiItemModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts index 09c1593fbcaa..22bab633eda0 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts @@ -79,10 +79,10 @@ export class DxiDropDownButtonItemComponent extends CollectionNestedOption imple } @Input() - get onClick(): ((e: ItemClickEvent) => void) { + get onClick(): ((e: ItemClickEvent) => void) | null { return this._getOption('onClick'); } - set onClick(value: ((e: ItemClickEvent) => void)) { + set onClick(value: ((e: ItemClickEvent) => void) | null) { this._setOption('onClick', value); } diff --git a/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts b/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts index 94adf1872bda..d7f7cc2c6866 100644 --- a/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts @@ -12,7 +12,6 @@ import type { User } from 'devextreme/ui/chat'; import type { dxContextMenuItem } from 'devextreme/ui/context_menu'; import type { DataGridPredefinedToolbarItem } from 'devextreme/ui/data_grid'; import type { Command, CustomCommand } from 'devextreme/ui/diagram'; -import type { ItemClickEvent } from 'devextreme/ui/drop_down_button'; import type { dxFileManagerContextMenuItem, FileManagerPredefinedContextMenuItem, FileManagerPredefinedToolbarItem } from 'devextreme/ui/file_manager'; import type { ButtonItem, EmptyItem, FormItemComponent, FormItemType, GroupItem, LabelLocation, SimpleItem, TabbedItem } from 'devextreme/ui/form'; import type { GanttPredefinedContextMenuItem, GanttPredefinedToolbarItem } from 'devextreme/ui/gantt'; diff --git a/packages/devextreme-react/src/drop-down-button.ts b/packages/devextreme-react/src/drop-down-button.ts index 528e0d883b23..f6ce53cc405a 100644 --- a/packages/devextreme-react/src/drop-down-button.ts +++ b/packages/devextreme-react/src/drop-down-button.ts @@ -27,11 +27,11 @@ type ReplaceFieldTypes = { } type IDropDownButtonOptionsNarrowedEvents = { - onButtonClick?: ((e: ButtonClickEvent) => void); + onButtonClick?: ((e: ButtonClickEvent) => void) | null; onContentReady?: ((e: ContentReadyEvent) => void); onDisposing?: ((e: DisposingEvent) => void); onInitialized?: ((e: InitializedEvent) => void); - onItemClick?: ((e: ItemClickEvent) => void); + onItemClick?: ((e: ItemClickEvent) => void) | null; } type IDropDownButtonOptions = React.PropsWithChildren & IHtmlOptions & { @@ -345,7 +345,7 @@ type IItemProps = React.PropsWithChildren<{ disabled?: boolean; html?: string; icon?: string; - onClick?: ((e: ItemClickEvent) => void); + onClick?: ((e: ItemClickEvent) => void) | null; template?: ((itemData: CollectionWidgetItem, itemIndex: number, itemElement: any) => string | any) | template; text?: string; visible?: boolean; diff --git a/packages/devextreme-vue/src/drop-down-button.ts b/packages/devextreme-vue/src/drop-down-button.ts index e41d25fa9f4f..e5fc9b521087 100644 --- a/packages/devextreme-vue/src/drop-down-button.ts +++ b/packages/devextreme-vue/src/drop-down-button.ts @@ -124,21 +124,21 @@ const componentConfig = { hint: String, hoverStateEnabled: Boolean, icon: String, - items: Array as PropType>, + items: Array as PropType<(Array) | null>, itemTemplate: {}, keyExpr: String, noDataText: String, - onButtonClick: Function as PropType<((e: ButtonClickEvent) => void)>, + onButtonClick: Function as PropType<(((e: ButtonClickEvent) => void)) | null>, onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, onDisposing: Function as PropType<((e: DisposingEvent) => void)>, onInitialized: Function as PropType<((e: InitializedEvent) => void)>, - onItemClick: Function as PropType<((e: ItemClickEvent) => void)>, + onItemClick: Function as PropType<(((e: ItemClickEvent) => void)) | null>, onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, - onSelectionChanged: Function as PropType<((e: SelectionChangedEvent) => void)>, + onSelectionChanged: Function as PropType<(((e: SelectionChangedEvent) => void)) | null>, opened: Boolean, rtlEnabled: Boolean, selectedItem: {}, - selectedItemKey: [Number, String], + selectedItemKey: [Number, String] as PropType, showArrowIcon: Boolean, splitButton: Boolean, stylingMode: String as PropType, @@ -500,7 +500,7 @@ const DxItemConfig = { disabled: Boolean, html: String, icon: String, - onClick: Function as PropType<((e: ItemClickEvent) => void)>, + onClick: Function as PropType<(((e: ItemClickEvent) => void)) | null>, template: {}, text: String, visible: Boolean diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index c4b401bff1d2..b17c74607a3b 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -17053,7 +17053,8 @@ declare module DevExpress.ui { */ onClick?: | ((e: DevExpress.ui.dxDropDownButton.ItemClickEvent) => void) - | string; + | string + | null; } /** * [descr:dxDropDownButtonOptions] @@ -17116,7 +17117,7 @@ declare module DevExpress.ui { /** * [descr:dxDropDownButtonOptions.items] */ - items?: Array; + items?: Array | null; /** * [descr:dxDropDownButtonOptions.keyExpr] */ @@ -17130,19 +17131,22 @@ declare module DevExpress.ui { */ onButtonClick?: | ((e: DevExpress.ui.dxDropDownButton.ButtonClickEvent) => void) - | string; + | string + | null; /** * [descr:dxDropDownButtonOptions.onItemClick] */ onItemClick?: | ((e: DevExpress.ui.dxDropDownButton.ItemClickEvent) => void) - | string; + | string + | null; /** * [descr:dxDropDownButtonOptions.onSelectionChanged] */ onSelectionChanged?: | ((e: DevExpress.ui.dxDropDownButton.SelectionChangedEvent) => void) - | string; + | string + | null; /** * [descr:dxDropDownButtonOptions.opened] */ @@ -17150,11 +17154,11 @@ declare module DevExpress.ui { /** * [descr:dxDropDownButtonOptions.selectedItem] */ - selectedItem?: string | number | any; + selectedItem?: string | number | any | null; /** * [descr:dxDropDownButtonOptions.selectedItemKey] */ - selectedItemKey?: string | number; + selectedItemKey?: string | number | null; /** * [descr:dxDropDownButtonOptions.showArrowIcon] */ From a1e50f1357aca6c817d2fbcc55cb5bee6393dccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 16:34:55 +0200 Subject: [PATCH 3/6] Update /make-angular-metadata.ts --- .../src/ui/drop-down-button/index.ts | 140 +++++++++++++++++- .../make-angular-metadata.ts | 2 +- 2 files changed, 137 insertions(+), 5 deletions(-) diff --git a/packages/devextreme-angular/src/ui/drop-down-button/index.ts b/packages/devextreme-angular/src/ui/drop-down-button/index.ts index 2d766740a35b..48ec32c1b465 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/index.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/index.ts @@ -42,6 +42,18 @@ import { CollectionNestedOption, } from 'devextreme-angular/core'; +import { DxoDropDownOptionsModule } from 'devextreme-angular/ui/nested'; +import { DxoAnimationModule } from 'devextreme-angular/ui/nested'; +import { DxoHideModule } from 'devextreme-angular/ui/nested'; +import { DxoFromModule } from 'devextreme-angular/ui/nested'; +import { DxoPositionModule } from 'devextreme-angular/ui/nested'; +import { DxoAtModule } from 'devextreme-angular/ui/nested'; +import { DxoBoundaryOffsetModule } from 'devextreme-angular/ui/nested'; +import { DxoCollisionModule } from 'devextreme-angular/ui/nested'; +import { DxoMyModule } from 'devextreme-angular/ui/nested'; +import { DxoOffsetModule } from 'devextreme-angular/ui/nested'; +import { DxoToModule } from 'devextreme-angular/ui/nested'; +import { DxoShowModule } from 'devextreme-angular/ui/nested'; import { DxoDropDownButtonAnimationModule } from 'devextreme-angular/ui/drop-down-button/nested'; import { DxoDropDownButtonAtModule } from 'devextreme-angular/ui/drop-down-button/nested'; @@ -63,7 +75,10 @@ import { } from 'devextreme-angular/core/tokens'; +/** + * [descr:dxDropDownButton] + */ @Component({ selector: 'dx-drop-down-button', template: '', @@ -90,7 +105,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, instance: DxDropDownButton = null; + /** + * [descr:WidgetOptions.accessKey] + */ @Input() get accessKey(): string | undefined { return this._getOption('accessKey'); @@ -100,7 +118,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:WidgetOptions.activeStateEnabled] + */ @Input() get activeStateEnabled(): boolean { return this._getOption('activeStateEnabled'); @@ -110,7 +131,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.dataSource] + */ @Input() get dataSource(): Array | DataSource | DataSourceOptions | null | Store | string { return this._getOption('dataSource'); @@ -120,7 +144,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.deferRendering] + */ @Input() get deferRendering(): boolean { return this._getOption('deferRendering'); @@ -130,7 +157,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:WidgetOptions.disabled] + */ @Input() get disabled(): boolean { return this._getOption('disabled'); @@ -140,7 +170,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.displayExpr] + */ @Input() get displayExpr(): ((itemData: any) => string) | string | undefined { return this._getOption('displayExpr'); @@ -150,7 +183,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.dropDownContentTemplate] + */ @Input() get dropDownContentTemplate(): any { return this._getOption('dropDownContentTemplate'); @@ -160,7 +196,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.dropDownOptions] + */ @Input() get dropDownOptions(): dxPopupOptions { return this._getOption('dropDownOptions'); @@ -170,7 +209,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:DOMComponentOptions.elementAttr] + */ @Input() get elementAttr(): Record { return this._getOption('elementAttr'); @@ -180,7 +222,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.focusStateEnabled] + */ @Input() get focusStateEnabled(): boolean { return this._getOption('focusStateEnabled'); @@ -190,7 +235,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:DOMComponentOptions.height] + */ @Input() get height(): number | string | undefined { return this._getOption('height'); @@ -200,7 +248,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:WidgetOptions.hint] + */ @Input() get hint(): string | undefined { return this._getOption('hint'); @@ -210,7 +261,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.hoverStateEnabled] + */ @Input() get hoverStateEnabled(): boolean { return this._getOption('hoverStateEnabled'); @@ -220,7 +274,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.icon] + */ @Input() get icon(): string | undefined { return this._getOption('icon'); @@ -240,7 +297,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.itemTemplate] + */ @Input() get itemTemplate(): any { return this._getOption('itemTemplate'); @@ -250,7 +310,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.keyExpr] + */ @Input() get keyExpr(): string { return this._getOption('keyExpr'); @@ -260,7 +323,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.noDataText] + */ @Input() get noDataText(): string { return this._getOption('noDataText'); @@ -270,7 +336,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.opened] + */ @Input() get opened(): boolean { return this._getOption('opened'); @@ -280,7 +349,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:DOMComponentOptions.rtlEnabled] + */ @Input() get rtlEnabled(): boolean { return this._getOption('rtlEnabled'); @@ -310,7 +382,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.showArrowIcon] + */ @Input() get showArrowIcon(): boolean { return this._getOption('showArrowIcon'); @@ -320,7 +395,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.splitButton] + */ @Input() get splitButton(): boolean { return this._getOption('splitButton'); @@ -330,7 +408,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.stylingMode] + */ @Input() get stylingMode(): ButtonStyle { return this._getOption('stylingMode'); @@ -340,7 +421,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:WidgetOptions.tabIndex] + */ @Input() get tabIndex(): number { return this._getOption('tabIndex'); @@ -350,7 +434,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.template] + */ @Input() get template(): any { return this._getOption('template'); @@ -360,7 +447,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.text] + */ @Input() get text(): string { return this._getOption('text'); @@ -370,7 +460,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.type] + */ @Input() get type(): ButtonType | string { return this._getOption('type'); @@ -380,7 +473,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.useItemTextAsTitle] + */ @Input() get useItemTextAsTitle(): boolean { return this._getOption('useItemTextAsTitle'); @@ -390,7 +486,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.useSelectMode] + */ @Input() get useSelectMode(): boolean { return this._getOption('useSelectMode'); @@ -400,7 +499,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:WidgetOptions.visible] + */ @Input() get visible(): boolean { return this._getOption('visible'); @@ -410,7 +512,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:DOMComponentOptions.width] + */ @Input() get width(): number | string | undefined { return this._getOption('width'); @@ -420,7 +525,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.wrapItemText] + */ @Input() get wrapItemText(): boolean { return this._getOption('wrapItemText'); @@ -439,7 +547,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onContentReady] */ @@ -447,7 +555,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onDisposing] */ @@ -455,7 +563,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onInitialized] */ @@ -471,7 +579,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onOptionChanged] */ @@ -826,6 +934,18 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, @NgModule({ imports: [ DxDropDownButtonComponent, + DxoDropDownOptionsModule, + DxoAnimationModule, + DxoHideModule, + DxoFromModule, + DxoPositionModule, + DxoAtModule, + DxoBoundaryOffsetModule, + DxoCollisionModule, + DxoMyModule, + DxoOffsetModule, + DxoToModule, + DxoShowModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, @@ -845,6 +965,18 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, ], exports: [ DxDropDownButtonComponent, + DxoDropDownOptionsModule, + DxoAnimationModule, + DxoHideModule, + DxoFromModule, + DxoPositionModule, + DxoAtModule, + DxoBoundaryOffsetModule, + DxoCollisionModule, + DxoMyModule, + DxoOffsetModule, + DxoToModule, + DxoShowModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index b8bfa4d38110..cdf90a7fa08d 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -61,7 +61,7 @@ Ng.makeMetadata({ removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), removeMembers(/\/form:FormPredefinedButtonItem/), removeMembers(/\/drop_down_editor\/ui.drop_down_editor:FieldAddons/), - removeMembers(/\/drop_down_button/), + removeMembers(/\/drop_down_button:dxDropDownButtonOptions\.(items|onButtonClick|onItemClick|onSelectionChanged|selectedItem|selectedItemKey)/), removeMembers(/\/load_panel:dxLoadPanelOptions.indicatorOptions/), removeMembers(/\/grids:LoadPanel.indicatorOptions/), removeMembers(/\/popup:dxPopupOptions.tabFocusLoopEnabled/), From 7401555b8f9d055d9d1b8c06631568c3be29074a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 16:57:40 +0200 Subject: [PATCH 4/6] Refactor --- packages/devextreme-metadata/make-angular-metadata.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index cdf90a7fa08d..11d01e66e50b 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -61,7 +61,9 @@ Ng.makeMetadata({ removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), removeMembers(/\/form:FormPredefinedButtonItem/), removeMembers(/\/drop_down_editor\/ui.drop_down_editor:FieldAddons/), - removeMembers(/\/drop_down_button:dxDropDownButtonOptions\.(items|onButtonClick|onItemClick|onSelectionChanged|selectedItem|selectedItemKey)/), + removeMembers( + /\/drop_down_button:dxDropDownButtonOptions\.(items|onButtonClick|onItemClick|onSelectionChanged|selectedItem|selectedItemKey)/, + ), removeMembers(/\/load_panel:dxLoadPanelOptions.indicatorOptions/), removeMembers(/\/grids:LoadPanel.indicatorOptions/), removeMembers(/\/popup:dxPopupOptions.tabFocusLoopEnabled/), From dc69589252133d8dc9be780467286dfa69ff5a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 17:41:37 +0200 Subject: [PATCH 5/6] Fix wrappers: Remove | null from type-tag in function --- .../src/ui/drop-down-button/nested/item-dxi.ts | 4 ++-- packages/devextreme-react/src/drop-down-button.ts | 6 +++--- packages/devextreme-vue/src/drop-down-button.ts | 8 ++++---- packages/devextreme/js/ui/drop_down_button.d.ts | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts b/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts index 22bab633eda0..09c1593fbcaa 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/nested/item-dxi.ts @@ -79,10 +79,10 @@ export class DxiDropDownButtonItemComponent extends CollectionNestedOption imple } @Input() - get onClick(): ((e: ItemClickEvent) => void) | null { + get onClick(): ((e: ItemClickEvent) => void) { return this._getOption('onClick'); } - set onClick(value: ((e: ItemClickEvent) => void) | null) { + set onClick(value: ((e: ItemClickEvent) => void)) { this._setOption('onClick', value); } diff --git a/packages/devextreme-react/src/drop-down-button.ts b/packages/devextreme-react/src/drop-down-button.ts index f6ce53cc405a..528e0d883b23 100644 --- a/packages/devextreme-react/src/drop-down-button.ts +++ b/packages/devextreme-react/src/drop-down-button.ts @@ -27,11 +27,11 @@ type ReplaceFieldTypes = { } type IDropDownButtonOptionsNarrowedEvents = { - onButtonClick?: ((e: ButtonClickEvent) => void) | null; + onButtonClick?: ((e: ButtonClickEvent) => void); onContentReady?: ((e: ContentReadyEvent) => void); onDisposing?: ((e: DisposingEvent) => void); onInitialized?: ((e: InitializedEvent) => void); - onItemClick?: ((e: ItemClickEvent) => void) | null; + onItemClick?: ((e: ItemClickEvent) => void); } type IDropDownButtonOptions = React.PropsWithChildren & IHtmlOptions & { @@ -345,7 +345,7 @@ type IItemProps = React.PropsWithChildren<{ disabled?: boolean; html?: string; icon?: string; - onClick?: ((e: ItemClickEvent) => void) | null; + onClick?: ((e: ItemClickEvent) => void); template?: ((itemData: CollectionWidgetItem, itemIndex: number, itemElement: any) => string | any) | template; text?: string; visible?: boolean; diff --git a/packages/devextreme-vue/src/drop-down-button.ts b/packages/devextreme-vue/src/drop-down-button.ts index e5fc9b521087..b288957c537c 100644 --- a/packages/devextreme-vue/src/drop-down-button.ts +++ b/packages/devextreme-vue/src/drop-down-button.ts @@ -128,13 +128,13 @@ const componentConfig = { itemTemplate: {}, keyExpr: String, noDataText: String, - onButtonClick: Function as PropType<(((e: ButtonClickEvent) => void)) | null>, + onButtonClick: Function as PropType<((e: ButtonClickEvent) => void)>, onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, onDisposing: Function as PropType<((e: DisposingEvent) => void)>, onInitialized: Function as PropType<((e: InitializedEvent) => void)>, - onItemClick: Function as PropType<(((e: ItemClickEvent) => void)) | null>, + onItemClick: Function as PropType<((e: ItemClickEvent) => void)>, onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, - onSelectionChanged: Function as PropType<(((e: SelectionChangedEvent) => void)) | null>, + onSelectionChanged: Function as PropType<((e: SelectionChangedEvent) => void)>, opened: Boolean, rtlEnabled: Boolean, selectedItem: {}, @@ -500,7 +500,7 @@ const DxItemConfig = { disabled: Boolean, html: String, icon: String, - onClick: Function as PropType<(((e: ItemClickEvent) => void)) | null>, + onClick: Function as PropType<((e: ItemClickEvent) => void)>, template: {}, text: String, visible: Boolean diff --git a/packages/devextreme/js/ui/drop_down_button.d.ts b/packages/devextreme/js/ui/drop_down_button.d.ts index b7c423239169..4a5fc6f364ea 100644 --- a/packages/devextreme/js/ui/drop_down_button.d.ts +++ b/packages/devextreme/js/ui/drop_down_button.d.ts @@ -213,7 +213,7 @@ export interface dxDropDownButtonOptions extends WidgetOptions /** * @docid * @default null - * @type function | null + * @type function * @type_function_param1 e:{ui/drop_down_button:ButtonClickEvent} * @action * @public @@ -222,7 +222,7 @@ export interface dxDropDownButtonOptions extends WidgetOptions /** * @docid * @default null - * @type function | null + * @type function * @type_function_param1 e:{ui/drop_down_button:ItemClickEvent} * @action * @public @@ -231,7 +231,7 @@ export interface dxDropDownButtonOptions extends WidgetOptions /** * @docid * @default null - * @type function | null + * @type function * @type_function_param1 e:{ui/drop_down_button:SelectionChangedEvent} * @action * @public @@ -363,7 +363,7 @@ export interface dxDropDownButtonItem extends dxListItem { /** * @docid * @default null - * @type function | null + * @type function * @type_function_param1 e:{ui/drop_down_button:ItemClickEvent} * @public */ From e7d27499f676a53c8474b8544f319e134e0c2619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 25 Jun 2026 17:51:34 +0200 Subject: [PATCH 6/6] revert(make-angular-metadata.ts): Revert && Regenerate --- .../src/ui/drop-down-button/index.ts | 18 +++++++++++++++--- .../ui/nested/base/button-group-item-dxi.ts | 1 + .../make-angular-metadata.ts | 3 --- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/devextreme-angular/src/ui/drop-down-button/index.ts b/packages/devextreme-angular/src/ui/drop-down-button/index.ts index 48ec32c1b465..26edeac06a7f 100644 --- a/packages/devextreme-angular/src/ui/drop-down-button/index.ts +++ b/packages/devextreme-angular/src/ui/drop-down-button/index.ts @@ -54,6 +54,7 @@ import { DxoMyModule } from 'devextreme-angular/ui/nested'; import { DxoOffsetModule } from 'devextreme-angular/ui/nested'; import { DxoToModule } from 'devextreme-angular/ui/nested'; import { DxoShowModule } from 'devextreme-angular/ui/nested'; +import { DxiItemModule } from 'devextreme-angular/ui/nested'; import { DxoDropDownButtonAnimationModule } from 'devextreme-angular/ui/drop-down-button/nested'; import { DxoDropDownButtonAtModule } from 'devextreme-angular/ui/drop-down-button/nested'; @@ -287,7 +288,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.items] + */ @Input() get items(): Array | null { return this._getOption('items'); @@ -362,7 +366,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.selectedItem] + */ @Input() get selectedItem(): any | null | number | string { return this._getOption('selectedItem'); @@ -372,7 +379,10 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, } + /** + * [descr:dxDropDownButtonOptions.selectedItemKey] + */ @Input() get selectedItemKey(): null | number | string { return this._getOption('selectedItemKey'); @@ -539,7 +549,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onButtonClick] */ @@ -571,7 +581,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onItemClick] */ @@ -587,7 +597,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, /** - * [descr:undefined] + * [descr:dxDropDownButtonOptions.onSelectionChanged] */ @@ -946,6 +956,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, DxoOffsetModule, DxoToModule, DxoShowModule, + DxiItemModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, @@ -977,6 +988,7 @@ export class DxDropDownButtonComponent extends DxComponent implements OnDestroy, DxoOffsetModule, DxoToModule, DxoShowModule, + DxiItemModule, DxoDropDownButtonAnimationModule, DxoDropDownButtonAtModule, DxoDropDownButtonBoundaryOffsetModule, diff --git a/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts b/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts index d7f7cc2c6866..94adf1872bda 100644 --- a/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/base/button-group-item-dxi.ts @@ -12,6 +12,7 @@ import type { User } from 'devextreme/ui/chat'; import type { dxContextMenuItem } from 'devextreme/ui/context_menu'; import type { DataGridPredefinedToolbarItem } from 'devextreme/ui/data_grid'; import type { Command, CustomCommand } from 'devextreme/ui/diagram'; +import type { ItemClickEvent } from 'devextreme/ui/drop_down_button'; import type { dxFileManagerContextMenuItem, FileManagerPredefinedContextMenuItem, FileManagerPredefinedToolbarItem } from 'devextreme/ui/file_manager'; import type { ButtonItem, EmptyItem, FormItemComponent, FormItemType, GroupItem, LabelLocation, SimpleItem, TabbedItem } from 'devextreme/ui/form'; import type { GanttPredefinedContextMenuItem, GanttPredefinedToolbarItem } from 'devextreme/ui/gantt'; diff --git a/packages/devextreme-metadata/make-angular-metadata.ts b/packages/devextreme-metadata/make-angular-metadata.ts index 11d01e66e50b..8ddde37f2223 100644 --- a/packages/devextreme-metadata/make-angular-metadata.ts +++ b/packages/devextreme-metadata/make-angular-metadata.ts @@ -61,9 +61,6 @@ Ng.makeMetadata({ removeMembers(/\/form:dxFormSimpleItem\.aiOptions/), removeMembers(/\/form:FormPredefinedButtonItem/), removeMembers(/\/drop_down_editor\/ui.drop_down_editor:FieldAddons/), - removeMembers( - /\/drop_down_button:dxDropDownButtonOptions\.(items|onButtonClick|onItemClick|onSelectionChanged|selectedItem|selectedItemKey)/, - ), removeMembers(/\/load_panel:dxLoadPanelOptions.indicatorOptions/), removeMembers(/\/grids:LoadPanel.indicatorOptions/), removeMembers(/\/popup:dxPopupOptions.tabFocusLoopEnabled/),