@eclipse-scout/core
Version:
Eclipse Scout runtime
58 lines • 2.92 kB
TypeScript
import { KeyStrokeContext, Menu, NavigateButtonModel, Outline, Page, SomeRequired } from '../../../index';
/**
* The outline navigation works mostly browser-side. The navigation logic is implemented in JavaScript.
* When a navigation button is clicked, we process that click browser-side first and send an event to
* the server which nodes have been selected. We do that for better user experience. In a first attempt
* the whole navigation logic was on the server, which caused a lag and flickering in the UI.
*/
export declare abstract class NavigateButton extends Menu implements NavigateButtonModel {
model: NavigateButtonModel;
initModel: SomeRequired<this['model'], 'parent' | 'node' | 'outline'>;
node: Page;
outline: Outline;
altKeyStrokeContext: KeyStrokeContext;
overflow: boolean;
protected _defaultText: string;
protected _defaultIconId: string;
constructor();
protected _render(): void;
protected _renderProperties(): void;
protected _remove(): void;
/**
* Toggles the visibility of the detail form according to {@link _toggleDetail}. Called when the button is clicked and {@link _isDetail} is `true`.
*/
protected _setDetailVisible(): void;
/**
* @returns `true` if the page has a detail form and the detail form is marked as visible.
*/
protected _hasDetailForm(): boolean;
/**
* @returns `true` if the page has a detail table and the detail table is marked as visible and the detail table contains
* at least one row. The last requirement can be lifted by setting the optional parameter `requireRows` to false.
*/
protected _hasDetailTable(requireRows?: boolean): boolean;
protected _doAction(): void;
/**
* Returns `true` if the button is in "detail toggle mode", i .e. the page has both a detail form and a detail table and the button
* should toggle between these two detail views instead of changing the selected page. In other words, when this is `true`, clicking
* the button does not {@link _drill drill} up or down like normal, but only changes the displayed "detail content".
*/
protected abstract _isDetail(): boolean;
/**
* Sets the outline selection to the child or parent page. Called when the button is clicked and {@link _isDetail} is `false`.
*/
protected abstract _drill(): any;
/**
* Specifies the new value of {@link Page#detailFormVisibleByUi} when toggling the detail content instead of changing the selected page.
*/
protected abstract _toggleDetail(): boolean;
/**
* Computes whether this button should be enabled in the current state of the application.
*/
protected abstract _buttonEnabled(): boolean;
/**
* Called when enabled state must be re-calculated and probably rendered.
*/
updateEnabled(): void;
}
//# sourceMappingURL=NavigateButton.d.ts.map