UNPKG

@eclipse-scout/core

Version:
151 lines (149 loc) 6.06 kB
/* * 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; }