@eclipse-scout/core
Version:
Eclipse Scout runtime
66 lines (57 loc) • 1.72 kB
text/typescript
/*
* Copyright (c) 2010, 2026 BSI Business Systems Integration AG
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
import {ContextMenuPopup, Menu, MenuModel, Popup, scout, SimpleTabArea} from '..';
export class SimpleTabOverflowMenu extends Menu implements SimpleTabOverflowMenuModel {
declare parent: SimpleTabArea;
overflowTabIndices: number[];
constructor() {
super();
this.toggleAction = true;
}
get tabArea(): SimpleTabArea {
return this.parent;
}
protected override _render() {
super._render();
this.$container
.addClass('simple-overflow-tab-item')
.removeClass('menu-item')
.appendDiv('num-tabs').text(this.overflowTabIndices.length);
}
protected override _doActionTogglesPopup(): boolean {
return true;
}
protected override _createPopup(): Popup {
let overflowMenus = [];
for (const i of this.overflowTabIndices) {
let tab = this.tabArea.getTabs()[i];
let menu = scout.create(Menu, {
parent: this.tabArea,
text: tab.getMenuText()
});
menu.on('action', () => {
this.tabArea.selectTab(tab);
});
overflowMenus.push(menu);
}
return scout.create(ContextMenuPopup, {
parent: this.tabArea,
menuItems: overflowMenus,
cloneMenuItems: false,
$anchor: this.$container,
closeOnAnchorMouseDown: false
});
}
}
export interface SimpleTabOverflowMenuModel extends MenuModel {
parent?: SimpleTabArea;
tabArea?: SimpleTabArea;
overflowTabIndices?: number[];
}