@eclipse-scout/core
Version:
Eclipse Scout runtime
151 lines (149 loc) • 6.06 kB
text/typescript
/*
* Copyright (c) 2010, 2024 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 {Comparator, Filter, FilterSupport, Menu, ObjectOrChildModel, ObjectOrModel, TextFilter, Tile, TileGridLayoutConfig, TileGridSelectionHandler, VirtualScrolling, WidgetModel} from '../index';
export interface TileGridModel extends WidgetModel {
/**
* Specifies whether tiles should be animated when they are deleted. Default is true.
*/
animateTileRemoval?: boolean;
/**
* Specifies whether tiles should be animated when they are inserted. Default is true.
*/
animateTileInsertion?: boolean;
/**
* If a comparator is set, the tiles are sorted according to that comparator. Default is null.
*/
comparator?: Comparator<Tile>;
/**
* The filters control which tiles are allowed to be displayed in the grid.
*
* If one of the filters does not accept a specific tile, the tile won't be shown. Hence, all filters must agree to make a tile visible.
*
* By default, there are no filters.
*
* @see TileGrid.filteredTiles
* @see Table.tiles
*/
filters?: Filter<Tile>[];
/**
* Configures the preferred number of columns in the tile grid. Default is 4.
*
* The number of columns will be reduced automatically by the {@link TileGridLayout},
* if the width of the tile grid is too small to display all tiles of a row.
*/
gridColumnCount?: number;
/**
* Specifies the layouting hints for the tile grid used by {@link TileGridLayout}.
*
* If no explicit values are set, the values are initialized using CSS.
*
* @see TileGridLayoutConfig.getTileDefaultLayoutConfig
*/
layoutConfig?: ObjectOrModel<TileGridLayoutConfig>;
menus?: ObjectOrChildModel<Menu>[];
/**
* Specifies whether multiple tiles can be selected at once. Default is true.
*/
multiSelect?: boolean;
/**
* Specifies whether an animation should be executed whenever the tile grid is rendered.
*
* The animation is quite small and discreet and just moves the tiles a little.
* It will happen if the startup animation is disabled or done and every time the tiles are rendered anew.
*
* Default is false.
*/
renderAnimationEnabled?: boolean;
/**
* Specifies whether the tiles can be selected. Default is false.
*/
selectable?: boolean;
/**
* Specifies the tiles to be selected. By default, no tiles are selected.
*/
selectedTiles?: (Tile | string)[];
selectionHandler?: TileGridSelectionHandler;
/**
* Specifies whether the tile grid should be scrollable or not.
*
* If true, it will be vertically scrollable.
* It will also be horizontally scrollable but only if {@link LogicalGridLayoutConfig.minWidth} is set.
*
* Default is false.
*/
scrollable?: boolean;
/**
* Specifies whether an animation should be executed when the tile grid is rendered the first time.
*
* Default is false.
*/
startupAnimationEnabled?: boolean;
/**
* Specifies the tiles of the tile grid. By default, there are no tiles.
*/
tiles?: ObjectOrChildModel<Tile>[];
/**
* Specifies the number of grid rows to be rendered if virtual scrolling is active (if {@link virtual} is true).
* The value depends on the grid size and will be calculated automatically by the layout using {@link VirtualScrolling.calculateViewRangeSize}.
*
* It can be set manually for testing purposes. Keep in mind that it will be overridden as soon as the grid gets layouted.
*/
viewRangeSize?: number;
/**
* Virtual relates to the term "Virtual Scrolling". This means, only the tiles in the view port and some more will be
* rendered. The others will be rendered as soon as they will be moved into the view port, either by scrolling or by
* any other action like sorting, filtering etc. This can lead to a big performance boost when having many tiles.
*
* To make Virtual Scrolling work, the real width and height needs to be known so that scroll bar position can be
* calculated correctly. This means Virtual Scrolling does only work if all tiles have the same size, so the following
* {@link GridData} properties cannot be used: useUiWidth, useUiHeight, widthInPixel, heightInPixel, w, h.
*
* If these preconditions are given, you can use the virtual mode and your grid will be able to handle a lot of tiles.
*
* Default is false.
*/
virtual?: boolean;
/**
* If enabled, artificial placeholder tiles are added automatically if the tiles in the last row don't fill the whole row.
*
* Default is false.
*/
withPlaceholders?: boolean;
/**
* If enabled, a text field is shown when the tile grid is focused or hovered so the user can filter the tiles by typing.
*
* Default is false.
*/
textFilterEnabled?: boolean;
filterSupport?: FilterSupport<Tile>;
/**
* Factory function to create a custom {@link TextFilter} that is used if {@link textFilterEnabled} is set to true.
*
* If no function is set, the {@link TileTextFilter} will be used that will convert the rendered content of the tile to plain text and apply the filter to that.
*
* Default is null which means the {@link TileTextFilter} is active.
*/
createTextFilter?: () => TextFilter<Tile>;
/**
* A function to update the {@link TextFilter.acceptedText}.
*
* Setting this property may be necessary if a custom {@link TextFilter} is set using {@link createTextFilter}.
*
* Default is null which means {@link TileGrid._updateTextFilterText} is used that works with {@link TileTextFilter.setText}.
*/
updateTextFilterText?: string;
defaultMenuTypes?: string[];
/**
* Defines whether the grid column count should be dynamically adjusted if the preferred width of the grid exceeds the available width.
*
* Default is true.
*/
wrappable?: boolean;
}