devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
1,468 lines (1,350 loc) • 39.6 kB
TypeScript
/**
* DevExtreme (ui/card_view.d.ts)
* Version: 25.1.3
* Build date: Wed Jun 25 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import { DeepPartial } from '../core';
import {
DataType,
DragHighlight,
HorizontalAlignment,
Mode, ScrollbarMode, SelectAllMode, SingleMultipleOrNone, SortOrder, template, ValidationRule,
} from '../common';
import { Format } from '../common/core/localization';
import { UserDefinedElement, DxElement } from '../core/element';
import {
ColumnChooser, ColumnCustomizeTextArg, ColumnHeaderFilter, DataChange, DataErrorOccurredInfo, FilterPanel, FilterType, HeaderFilter, Pager, SearchPanel, SelectionColumnDisplayMode, Sorting,
} from '../common/grids';
import DataSource, { DataSourceLike } from '../data/data_source';
import Widget, { WidgetOptions } from './widget/ui.widget';
import { Cancelable, EventInfo, NativeEventInfo } from '../events';
import { dxToolbarItem, ToolbarItemLocation } from './toolbar';
import { dxLoadPanelOptions } from './load_panel';
import dxScrollable from './scroll_view/ui.scrollable';
import {
Properties as PopupProperties,
} from './popup';
import {
Properties as FormProperties, SimpleItem,
} from './form';
import { dxFilterBuilderOptions } from './filter_builder';
/**
* Configures paging.
*/
export type Paging = {
/**
* Enables paging.
*/
enabled?: boolean;
/**
* Specifies the page to be displayed using a zero-based index.
*/
pageIndex?: number;
/**
* Specifies the page size.
*/
pageSize?: number;
};
/**
* Notifies CardView of the server's data processing operations.
*/
export type RemoteOperations = {
/**
* Specifies whether filtering must be performed on the server.
*/
filtering?: boolean;
/**
* Specifies whether paging must be performed on the server.
*/
paging?: boolean;
/**
* Specifies whether sorting must be performed on the server.
*/
sorting?: boolean;
/**
* Specifies whether grouping must be performed on the server.
*/
grouping?: boolean;
};
// #region Toolbar
export type PredefinedToolbarItem = 'columnChooserButton' | 'searchPanel' | 'addCardButton' | 'selectAllButton' | 'clearSelectionButton';
/**
* @deprecated Use ToolbarItem instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
*/
export type dxCardViewToolbarItem = ToolbarItem;
/**
*
*/
export type ToolbarItem = dxToolbarItem & {
/**
*
*/
name?: PredefinedToolbarItem | string;
/**
*
*/
location?: ToolbarItemLocation;
};
/**
* @deprecated Use Toolbar instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
*/
export type dxCardViewToolbar = Toolbar;
/**
*
*/
export type Toolbar = {
/**
*
*/
items?: Array<PredefinedToolbarItem | ToolbarItem>;
/**
*
*/
visible?: boolean | undefined;
/**
*
*/
disabled?: boolean;
/**
*
*/
multiline?: boolean;
};
// #endregion
// #region ColumnsController
/**
* @deprecated Use FieldInfo instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
*/
export type dxCardViewFieldInfo = FieldInfo;
/**
* Information about the field.
*/
export type FieldInfo = {
/**
* The field value.
*/
value: any;
/**
* Specifies the display value.
*/
displayValue: any;
/**
* The field text.
*/
text: string;
/**
* The column associated with the field.
*/
column: Column;
/**
* The field index.
*/
index: number;
/**
* Specifies which card the field belongs to.
*/
card: CardInfo;
};
/**
* The information about the card.
*/
export type CardInfo<TCardData = unknown, TKey = unknown> = {
/**
* The card's index.
*/
index: number;
/**
* Specifies columns associated with the card.
*/
columns: Column[];
/**
* The card fields.
*/
fields: FieldInfo[];
/**
* The card's key.
*/
key: TKey;
/**
* The card's data.
*/
data: TCardData;
/**
* Specifies whether the card is selected.
*/
isSelected?: boolean;
/**
* Values of the card as they exist in the data source.
*/
values: any[];
};
/**
* Configures column properties.
*/
export type ColumnProperties<TCardData = unknown, TKey = unknown> = {
/**
* Aligns the content of the entire column.
*/
alignment?: HorizontalAlignment | undefined;
/**
* Specifies whether a user can edit cards in this column at runtime. Inherits the value of the editing.allowUpdating property.
*/
allowEditing?: boolean;
/**
* Specifies whether data can be filtered by this column.
*/
allowFiltering?: boolean;
/**
* Specifies whether data of this column can be filtered in header filter. Inherits the value of the allowFiltering property.
*/
allowHeaderFiltering?: boolean;
/**
* Specifies whether a user can hide the column using the column chooser at runtime. Applies only if columnChooser.enabled is `true`.
*/
allowHiding?: boolean;
/**
* Specifies whether users can reorder this column. Overrides the allowColumnReordering property value.
*/
allowReordering?: boolean;
/**
* Specifies whether this column can be searched. Applies only if searchPanel.visible is `true`. Inherits the value of the allowFiltering property.
*/
allowSearch?: boolean;
/**
* Specifies whether a user can sort rows by this column at runtime. Applies only if sorting.mode differs from 'none'.
*/
allowSorting?: boolean;
/**
* Calculates custom field values.
*/
calculateFieldValue?: ((this: Column, cardData: TCardData) => any);
/**
* Calculates custom display values for column fields. Requires specifying the dataField or calculateFieldValue property.
*/
calculateDisplayValue?: ((this: Column, cardData: TCardData) => any);
/**
* Specifies the column's custom rules to filter data.
*/
calculateFilterExpression?: ((this: Column, filterValue: any, selectedFilterOperation: string | null, target: string) => string | Array<any> | Function);
/**
* Calculates custom values used to sort this column.
*/
calculateSortValue?: string | ((this: Column, cardData: TCardData) => any);
/**
* Specifies a caption for the column.
*/
caption?: string | undefined;
/**
* Customizes text displayed in field values.
*/
customizeText?: ((this: Column, fieldInfo: ColumnCustomizeTextArg) => string);
/**
* Binds the column to a field of the dataSource.
*/
dataField?: string | undefined;
/**
* Converts column values to a different data type.
*/
dataType?: DataType | undefined;
/**
* Configures the default UI component used for editing.
*/
editorOptions?: any;
/**
* In a boolean column, replaces all false items with a specified text.
*/
falseText?: string;
/**
* Specifies whether a user changes the current filter by including (selecting) or excluding (clearing the selection of) values. Applies only if headerFilter.visible and allowHeaderFiltering are `true`.
*/
filterType?: FilterType;
/**
* Specifies the filter value.
*/
filterValue?: any | undefined;
/**
* Specifies the values in the header filter.
*/
filterValues?: Array<any>;
/**
* Configures the form item that the field produces in the editing state.
*/
formItem?: SimpleItem;
/**
* Formats a value before it is displayed in a field.
*/
format?: Format;
/**
* Specifies data settings for the header filter.
*/
headerFilter?: ColumnHeaderFilter | undefined;
/**
* Specifies the column's unique identifier. If not set in code, this value is inherited from the dataField.
*/
name?: string | undefined;
/**
* Specifies a function to be invoked after the user has edited a field value, but before it is saved in the data source.
*/
setFieldValue?: ((this: Column, newData: DeepPartial<TCardData>, value: any, currentCardData: TCardData) => void | PromiseLike<void>);
/**
* Specifies whether the column chooser can contain the column header.
*/
showInColumnChooser?: boolean;
/**
* Specifies the index according to which columns participate in sorting.
*/
sortIndex?: number | undefined;
/**
* Specifies the sort order of column values.
*/
sortOrder?: SortOrder | undefined;
/**
* Specifies a custom comparison function for sorting. Applies only when sorting is performed on the client.
*/
sortingMethod?: ((this: Column, value1: any, value2: any) => number) | undefined;
/**
* In a boolean column, replaces all true items with the specified text.
*/
trueText?: string;
/**
* Specifies validation rules to be checked when field values are updated.
*/
validationRules?: Array<ValidationRule>;
/**
* Specifies whether the column is visible.
*/
visible?: boolean;
/**
* Specifies the position of the column among other columns in the resulting UI component.
*/
visibleIndex?: number | undefined;
/**
* Specifies a custom template for the field.
*/
fieldTemplate?: template | ((data: FieldTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Specifies a custom template for the field caption.
*/
fieldCaptionTemplate?: template | ((data: FieldTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Specifies a custom template for the field value.
*/
fieldValueTemplate?: template | ((data: FieldTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Specifies a custom template for the header item.
*/
headerItemTemplate?: template | ((data: ColumnTemplateData<TCardData, TKey>, container: DxElement) => string | UserDefinedElement);
/**
* CSS class name applied to header item elements.
*/
headerItemCssClass?: string;
};
/**
* Configures the column.
*/
export type Column<TCardData = unknown, TKey = unknown> = ColumnProperties<TCardData, TKey> & {
defaultCalculateFilterExpression: NonNullable<ColumnProperties['calculateFilterExpression']>;
defaultSetFieldValue: NonNullable<ColumnProperties['setFieldValue']>;
defaultCalculateFieldValue: NonNullable<ColumnProperties['calculateFieldValue']>;
};
// #endregion
// #region HeaderPanel
/**
* Configures the header panel.
*/
export type HeaderPanel<TCardData = unknown, TKey = unknown> = {
/**
* Configures item dragging.
*/
dragging?: {
/**
* Specifies how to highlight the header item's drop position.
*/
dropFeedbackMode?: DragHighlight;
/**
* Specifies the scrolling speed when dragging an item beyond the viewport.
*/
scrollSpeed?: number;
/**
* Specifies the distance in pixels from the edge of viewport at which scrolling should start.
*/
scrollSensitivity?: number;
/**
* A function that is called when the dragged item's position changes.
*/
onDragChange?: ((e: any) => void);
/**
* A function that is called when the drag gesture is finished.
*/
onDragEnd?: ((e: any) => void);
/**
* A function that is called every time a draggable item is moved.
*/
onDragMove?: ((e: any) => void);
/**
* A function that is called when a drag gesture is initialized.
*/
onDragStart?: ((e: any) => void);
/**
* A function that is called when a draggable item is removed.
*/
onRemove?: ((e: any) => void);
/**
* A function that is called when the draggable items are reordered.
*/
onReorder?: ((e: any) => void);
};
/**
* Specifies whether the header panel is visible.
*/
visible?: boolean;
/**
* Specifies a custom template for header panel items.
*/
itemTemplate?: template | ((data: ColumnTemplateData<TCardData, TKey>, container: DxElement) => string | UserDefinedElement);
/**
* CSS class name applied to item root elements.
*/
itemCssClass?: string;
};
// #endregion
// #region ContentView
/**
* @docid
* @hidden
*/
type WithCardInfo = {
/**
*
*/
readonly card: CardInfo;
/**
*
*/
readonly cardElement: DxElement;
};
/**
* @docid
* @hidden
*/
type WithFieldCaptionInfo = {
/**
*
*/
readonly field: FieldInfo;
/**
*
*/
readonly fieldCaptionElement: DxElement;
};
/**
* @docid
* @hidden
*/
type WithFieldValueInfo = {
/**
*
*/
readonly field: FieldInfo;
/**
*
*/
readonly fieldValueElement: DxElement;
};
/**
* The argument type in the cardClick event.
*/
export type CardClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithCardInfo;
/**
* The argument type in the cardDblClick event.
*/
export type CardDblClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithCardInfo;
/**
* The argument type in the cardPrepared event.
*/
export type CardPreparedEvent = EventInfo<dxCardView> & WithCardInfo;
/**
* The argument type in the fieldCaptionClick event.
*/
export type FieldCaptionClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithFieldCaptionInfo;
/**
* The argument type in the fieldCaptionDblClick event.
*/
export type FieldCaptionDblClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithFieldCaptionInfo;
/**
* The argument type in the fieldValuePrepared event.
*/
export type FieldValuePreparedEvent = EventInfo<dxCardView> & WithFieldValueInfo;
/**
* The argument type in the fieldValueClick event.
*/
export type FieldValueClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithFieldValueInfo;
/**
* The argument type in the fieldValueDblClick event.
*/
export type FieldValueDblClickEvent = NativeEventInfo<dxCardView, PointerEvent | MouseEvent | TouchEvent> & WithFieldValueInfo;
/**
* The argument type in the fieldCaptionPrepared event.
*/
export type FieldCaptionPreparedEvent = EventInfo<dxCardView> & WithFieldCaptionInfo;
/**
* The argument type in the cardHoverChanged event.
*/
export type CardHoverChangedEvent = EventInfo<dxCardView> & WithCardInfo & {
/**
* Indicates whether the pointer entered or left the card. Can be either 'mouseover' or 'mouseout'.
*/
eventType: string;
};
/**
* Specifies a custom template for the field.
*/
export type FieldTemplateData = {
/**
* Information about the field.
*/
field: FieldInfo;
};
/**
* Specifies card template data.
*/
export type CardTemplateData = {
card: CardInfo;
};
/**
* The data of column template.
*/
export type ColumnTemplateData<TCardData = unknown, TKey = unknown> = {
column: Column<TCardData, TKey>;
};
/**
* Configures the card cover.
*/
export type CardCover<TCardData = unknown> = {
/**
* Specifies which data field to use as the `src` argument of the cover image.
*/
imageExpr: string | ((data: TCardData) => string);
/**
* Specifies which data field to use as the `alt` argument of the cover image.
*/
altExpr: string | ((data: TCardData) => string);
/**
* Specifies the maximum height for the card cover.
*/
maxHeight?: number;
/**
* Specifies the aspect ratio of the image container.
*/
aspectRatio?: string;
/**
* Specifies a custom template for the card cover.
*/
template?: template | ((data: CardTemplateData, container: DxElement) => string | UserDefinedElement);
};
export type CardHeaderPredefinedItem = 'selectionCheckBox' | 'updateButton' | 'deleteButton';
/**
* Configures card header items.
*/
export type CardHeaderItem = dxToolbarItem & {
/**
* A name used to identify the card header item.
*/
name?: CardHeaderPredefinedItem | string;
/**
* Specifies the item's location in the card header.
*/
location?: ToolbarItemLocation;
};
/**
* Configures the card header.
*/
export type CardHeader = {
/**
* Specifies whether to display the card header.
*/
visible?: boolean;
/**
* Configures card header items.
*/
items?: Array<CardHeaderPredefinedItem | CardHeaderItem>;
/**
* Specifies a custom template for the card header.
*/
template?: template | ((data: CardTemplateData) => string | UserDefinedElement);
};
// #endregion
// #region Editing
// Conflicts with recently introduced chat.d.ts Editing after merge
// Use a computed / parent-based docids until agreement
// Specified docid similar to other grids
/**
* The texts displayed when editing a card.
*/
export type EditingTexts = {
/**
* Specifies the text of the button that adds a card.
*/
addCard?: string;
/**
* Specifies the text of the deletion confirmation message.
*/
confirmDeleteMessage?: string;
/**
* Specifies the title text of the pop-up deletion confirmation.
*/
confirmDeleteTitle?: string;
/**
* Specifies the text of the button that invokes card deletion.
*/
deleteCard?: string;
/**
* Specifies the text of the button that invokes card editing.
*/
editCard?: string;
/**
* Specifies the text of the button that saves the edited card.
*/
saveCard?: string;
};
/**
* @deprecated Use Editing instead
* @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution.
*/
export type dxCardViewEditing<TCardData=unknown, TKey=unknown> = Editing<TCardData, TKey>;
/**
* Configures editing.
*/
export type Editing<TCardData=unknown, TKey=unknown> = {
/**
* Specifies whether a user can add new cards.
*/
allowAdding?: boolean;
/**
* Specifies whether a user can delete cards.
*/
allowDeleting?: boolean;
/**
* Specifies whether a user can update cards.
*/
allowUpdating?: boolean;
/**
* An array of pending row changes.
*/
changes?: DataChange<TCardData, TKey>[];
/**
* Specifies if confirmation is required when a user deletes a row.
*/
confirmDelete?: boolean;
/**
* The key(s) of a card being edited.
*/
editCardKey?: TKey | null;
/**
* Configures the form inside the editing popup.
*/
form?: FormProperties;
/**
* Configures the editing popup.
*/
popup?: PopupProperties;
/**
*
*/
texts?: EditingTexts;
};
/**
* The argument type in the editCanceled event.
*/
export type EditCanceledEvent = EventInfo<dxCardView> & {
/**
* Discarded card changes.
*/
changes: DataChange[];
};
/**
* The argument type in the editCanceling event.
*/
export type EditCancelingEvent = EventInfo<dxCardView> & Cancelable & {
/**
* Card changes to be discarded.
*/
changes: DataChange[];
};
/**
* The argument type in the editingStart event.
*/
export type EditingStartEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & Cancelable & {
/**
* The data of a card to be edited.
*/
data: TCardData;
/**
* The card's key.
*/
key: TKey;
};
/**
* The argument type in the initNewCard event.
*/
export type InitNewCardEvent<TCardData = unknown> = EventInfo<dxCardView> & {
/**
* The data of the inserted card; initially empty.
*/
data: DeepPartial<TCardData>;
/**
* Assign a Promise to this field to perform an asynchronous operation, such as a request to the server.
*/
promise?: PromiseLike<void>;
};
/**
* The argument type in the cardInserted event.
*/
export type CardInsertedEvent<TCardData = unknown> = EventInfo<dxCardView> & {
/**
* The data of the card.
*/
data: DeepPartial<TCardData>;
};
/**
* The argument type in the cardInserting event.
*/
export type CardInsertingEvent<TCardData = unknown> = EventInfo<dxCardView> & Cancelable & {
/**
* The data of the card.
*/
data: DeepPartial<TCardData>;
};
/**
* The argument type in the cardRemoved event.
*/
export type CardRemovedEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & {
/**
* The data of the card.
*/
data: TCardData;
/**
* The card's key.
*/
key: TKey;
};
/**
* The argument type in the cardRemoving event.
*/
export type CardRemovingEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & Cancelable & {
/**
* The data of the card.
*/
data: TCardData;
/**
* The card's key.
*/
key: TKey;
};
/**
* The argument type in the cardUpdated event.
*/
export type CardUpdatedEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & {
/**
* The updated data of the card.
*/
data: TCardData;
/**
* The card's key.
*/
key: TKey;
};
/**
* The argument type in the cardUpdating event.
*/
export type CardUpdatingEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & Cancelable & {
/**
* The card's key.
*/
key: TKey;
/**
* The card's old data.
*/
oldData: TCardData;
/**
* The card's updated data.
*/
newData: DeepPartial<TCardData>;
};
/**
* The argument type in the cardSaved event.
*/
export type CardSavedEvent = EventInfo<dxCardView> & {
/**
* All card data (including changes). Differs from onCardSaving, which only consists of pending changes.
*/
changes: DataChange[];
};
/**
* The argument type in the cardSaving event.
*/
export type CardSavingEvent = EventInfo<dxCardView> & Cancelable & {
/**
* Assign a Promise to this field to perform an asynchronous operation, such as a request to a server.
*/
promise?: PromiseLike<void>;
/**
* Pending row changes; a copy of the editing.changes array. Includes only card changes, unlike onCardSaved, which contains all card data (including changes).
*/
changes: DataChange[];
};
// #endregion
// #region Selection
/**
* Configures runtime selection.
*/
export type SelectionConfiguration = {
/**
* Allows users to simultaneously select all or current page cards (depending on selectAllMode).
*/
allowSelectAll?: boolean;
/**
* Specifies the selection mode.
*/
mode?: SingleMultipleOrNone;
/**
* Specifies the mode for selecting cards. Applies only if selection.allowSelectAll is `true`.
*/
selectAllMode?: SelectAllMode;
/**
* Specifies when to display card selection checkboxes.
*/
showCheckBoxesMode?: SelectionColumnDisplayMode;
};
/**
* The argument type in the selectionChanged event.
*/
export type SelectionChangedEvent<TCardData = unknown, TKey = unknown> = EventInfo<dxCardView> & {
/**
* The data of all selected cards.
*/
selectedCardsData: Array<TCardData>;
/**
* The keys of all selected cards.
*/
selectedCardKeys: Array<TKey>;
/**
* The keys of the cards that were selected.
*/
currentSelectedCardKeys: Array<TKey>;
/**
* The keys of the cards whose selection was cleared.
*/
currentDeselectedCardKeys: Array<TKey>;
};
// #endregion
// #region ContextMenu
export type ContextMenuTarget = 'toolbar' | 'headerPanel' | 'content';
/**
* The argument type in the contextMenuPreparing event.
*/
export type ContextMenuPreparingEvent<TCardData = unknown> = EventInfo<dxCardView> & {
/**
* Items to be displayed in the context menu.
*/
items?: any[];
/**
* The name of the element on which the context menu is invoked: 'headerPanel', 'content', or 'toolbar'.
*/
readonly target: ContextMenuTarget;
/**
* The target element's container.
*/
readonly targetElement: DxElement;
/**
* The index of the column on which the context menu is invoked.
*/
readonly columnIndex?: number;
/**
* The column's configuration.
*/
readonly column?: Column;
/**
* The index of the card on which the context menu is invoked.
*/
readonly cardIndex?: number;
/**
* The card properties.
*/
readonly card?: TCardData;
};
// #endregion
// #region KBN
/**
* The argument type in the focusedCardChanged event.
*/
export type FocusedCardChanged = EventInfo<dxCardView> & WithCardInfo;
// #endregion
/**
*
* @deprecated
*/
export interface dxCardViewOptions<TCardData = unknown, TKey = unknown> extends WidgetOptions<dxCardView> {
// #region DataController
/**
* Binds the UI component to data.
*/
dataSource?: DataSourceLike<TCardData, TKey>;
/**
* Configures paging.
*/
paging?: Paging;
/**
* Specifies the key property (or properties) that supply key values to access data items. Each key value must be unique. This property applies only if data is a simple array.
*/
keyExpr?: string | string[]; // can be undefined because of default?
/**
* Notifies CardView of the server's data processing operations.
*/
remoteOperations?: RemoteOperations | boolean | Mode;
/**
* A function that is executed when an error occurs in the data source.
*/
onDataErrorOccurred?: (e: EventInfo<dxCardView> & DataErrorOccurredInfo) => void;
// #endregion
// #region Pager
/**
* Configures the pager.
*/
pager?: Pager;
// #endregion
// #region ColumnsController
/**
* An array of CardView columns.
*/
columns?: (ColumnProperties<TCardData, TKey> | string)[];
/**
* Specifies whether a user can reorder columns.
*/
allowColumnReordering?: boolean;
// #endregion
// #region HeaderPanel
/**
* Configures the header panel.
*/
headerPanel?: HeaderPanel<TCardData, TKey>;
// #endregion
// #region ContentView
/**
* Configures scrolling.
*/
scrolling?: {
/**
* Specifies whether a user can scroll the content with a swipe gesture. Applies only if useNative is `false`.
*/
scrollByContent?: boolean;
/**
* Specifies whether a user can scroll the content with the scrollbar. Applies only if useNative is `false`.
*/
scrollByThumb?: boolean;
/**
* Specifies when to display scroll bars. Applies only if useNative is `false`.
*/
showScrollbar?: ScrollbarMode;
/**
* Specifies whether CardView should use native or simulated scrolling.
*/
useNative?: boolean | Mode;
};
/**
* Indicates whether to show the error row.
*/
errorRowEnabled?: boolean;
/**
* Configures the load panel.
*/
loadPanel?: dxLoadPanelOptions;
/**
* Specifies a text string to display when no data appears in CardView.
*/
noDataText?: string;
/**
* Specifies a custom template to be displayed when no data appears in CardView.
*/
noDataTemplate?: template | ((e: { text: string }, container: DxElement) => string | UserDefinedElement);
/**
* Specifies the number of cards per row.
*/
cardsPerRow?: number | Mode;
/**
* Specifies the minimum width of the card.
*/
cardMinWidth?: number;
/**
* Specifies the maximum width of the card.
*/
cardMaxWidth?: number;
/**
* Specifies whether text that does not fit into a field should be wrapped.
*/
wordWrapEnabled?: boolean;
/**
* Configures the card cover.
*/
cardCover?: CardCover<TCardData>;
/**
* Specifies a custom template for the card.
*/
cardTemplate?: template | ((data: CardTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Specifies a custom template for card content.
*/
cardContentTemplate?: template | ((data: CardTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Displays a hint when the mouse hovers over truncated field content.
*/
fieldHintEnabled?: boolean;
/**
* A function that is executed when a card is clicked or tapped.
*/
onCardClick?: (e: CardClickEvent) => void;
/**
* A function that is executed when a card is double-clicked or double-tapped.
*/
onCardDblClick?: (e: CardDblClickEvent) => void;
/**
* A function that is executed after a card is created.
*/
onCardPrepared?: (e: CardPreparedEvent) => void;
/**
* A function that is executed when a field caption is clicked or tapped.
*/
onFieldCaptionClick?: (e: FieldCaptionClickEvent) => void;
/**
* A function that is executed when a field caption is double-clicked or double-tapped.
*/
onFieldCaptionDblClick?: (e: FieldCaptionDblClickEvent) => void;
/**
* A function that is executed after a field caption is created.
*/
onFieldCaptionPrepared?: (e: FieldCaptionPreparedEvent) => void;
/**
* A function that is executed when a field value is clicked or tapped.
*/
onFieldValueClick?: (e: FieldValueClickEvent) => void;
/**
* A function that is executed when a field value is double-clicked or double-tapped.
*/
onFieldValueDblClick?: (e: FieldValueDblClickEvent) => void;
/**
* A function that is executed after a field value is created.
*/
onFieldValuePrepared?: (e: FieldValuePreparedEvent) => void;
/**
* A function that is executed after the pointer enters or leaves a card.
*/
onCardHoverChanged?: (e: CardHoverChangedEvent) => void;
/**
* Specifies a custom template for a card footer.
*/
cardFooterTemplate?: template | ((data: CardTemplateData, container: DxElement) => string | UserDefinedElement);
/**
* Configures the card header.
*/
cardHeader?: CardHeader;
/**
* Specifies whether the UI component changes its appearance when a user hovers over it.
*/
hoverStateEnabled?: boolean;
// #endregion
// #region Toolbar
/**
* Configures the toolbar.
*/
toolbar?: Toolbar;
// #endregion
/**
* Configures sorting.
*/
sorting?: Sorting;
/**
* Specifies a filter expression.
*/
filterValue?: string | Array<any> | Function;
/**
* Configures the integrated filter builder popup.
*/
filterBuilderPopup?: PopupProperties;
/**
* Configures the filter builder.
*/
filterBuilder?: dxFilterBuilderOptions;
/**
* Configures the filter panel.
*/
filterPanel?: FilterPanel<dxCardView>;
/**
* Configures the column chooser.
*/
columnChooser?: ColumnChooser;
/**
* Configures the search panel.
*/
searchPanel?: SearchPanel;
/**
* Configures the header filter.
*/
headerFilter?: HeaderFilter;
// #region Editing
/**
* Configures editing.
*/
editing?: Editing<TCardData, TKey>;
/**
* A function that is executed after card changes are discarded.
*/
onEditCanceled?: (e: EditCanceledEvent) => void;
/**
* A function that is executed when the edit operation is canceled, but card changes are not yet discarded.
*/
onEditCanceling?: (e: EditCancelingEvent) => void;
/**
* A function that is executed before a card switches to the editing state.
*/
onEditingStart?: (e: EditingStartEvent) => void;
/**
* A function that is executed before a new card is added to the UI component.
*/
onInitNewCard?: (e: InitNewCardEvent<TCardData>) => void;
/**
* A function that is executed after a new card is inserted into the data source.
*/
onCardInserted?: (e: CardInsertedEvent) => void;
/**
* A function that is executed before a new card is inserted into the data source.
*/
onCardInserting?: (e: CardInsertingEvent) => void;
/**
* A function that is executed after a card was removed from the data source.
*/
onCardRemoved?: (e: CardRemovedEvent) => void;
/**
* A function that is executed before a card is removed from the data source.
*/
onCardRemoving?: (e: CardRemovingEvent) => void;
/**
* A function that is executed after a card is updated in the data source.
*/
onCardUpdated?: (e: CardUpdatedEvent) => void;
/**
* A function that is executed before a card is updated in the data source.
*/
onCardUpdating?: (e: CardUpdatingEvent) => void;
/**
* A function that is executed after card changes are saved.
*/
onCardSaved?: (e: CardSavedEvent) => void;
/**
* A function that is executed before pending card changes are saved.
*/
onCardSaving?: (e: CardSavingEvent) => void;
// #endregion
// #region Selection
/**
* Allows you to select cards or determine which cards are selected.
*/
selectedCardKeys?: Array<TKey>;
/**
* Configures runtime selection.
*/
selection?: SelectionConfiguration;
/**
* A function that is executed when a card is selected or its selection is cleared.
*/
onSelectionChanged?: (e: SelectionChangedEvent) => void;
// #endregion
// #region KBN
/**
* A function that is executed after the focused card changes.
*/
onFocusedCardChanged?: (e: FocusedCardChanged) => void;
// #endregion
/**
* A function that is executed before the context menu is rendered.
*/
onContextMenuPreparing?: ((e: ContextMenuPreparingEvent<TCardData>) => void);
}
/**
* CardView is a UI component that uses a 'card' layout to present information.
*/
export default class dxCardView<TCardData = unknown, TKey = unknown> extends Widget<Properties> {
/**
* Gets the container of a card with a specific index.
*/
getCardElement(cardIndex: number): DxElement;
/**
* Gets currently rendered cards.
*/
getVisibleCards(): CardInfo[];
/**
* Gets the index of a card with a specific key.
*/
getCardIndexByKey(key: TKey): number;
/**
* Gets the key of a card with a specific index.
*/
getKeyByCardIndex(cardIndex: number): TKey;
/**
* Gets the instance of the UI component's scrollable part.
*/
getScrollable(): dxScrollable;
/**
* Displays the load panel.
*/
beginCustomLoading(text?: string): void;
/**
* Hides the load panel.
*/
endCustomLoading(): void;
/**
* Clears sorting settings of all columns.
*/
clearSorting(): void;
/**
* Gets the total filter that combines all the filters applied.
*/
getCombinedFilter(): any;
/**
* Clears all filters applied to UI component cards.
*/
clearFilter(): void;
/**
* Hides the column chooser.
*/
hideColumnChooser(): void;
/**
* Shows the column chooser.
*/
showColumnChooser(): void;
/**
* Searches for a string in columns whose allowSearch property is `true`.
*/
searchByText(text: string): void;
// #region Editing
/**
* Adds an empty card and switches it to the editing state.
*/
addCard(): void;
/**
* Discards changes that a user made to data.
*/
cancelEditData(): void;
/**
* Removes a card with a specific index.
*/
deleteCard(cardIndex: number): void;
/**
* Switches a card with a specific index to the editing state.
*/
editCard(cardIndex: number): void;
/**
* Checks whether the UI component has unsaved changes.
*/
hasEditData(): void; // boolean?
/**
* Saves changes that a user made to data.
*/
saveEditData(): void;
// #endregion
// #region DataController
/**
* Gets a data object with a specific key.
*/
byKey(key: TKey): TCardData;
/**
* Gets the DataSource instance.
*/
getDataSource(): DataSource<TCardData, TKey>;
/**
* Gets a data item's key value.
*/
keyOf(obj: TCardData): TKey;
/**
* Gets the total page count.
*/
pageCount(): number;
/**
* Gets the current page index.
*/
pageIndex(): number;
/**
* Switches the UI component to a specific page using a zero-based index.
*/
pageIndex(value: number): void;
/**
* Gets the current page size.
*/
pageSize(): number;
/**
* Sets the page size.
*/
pageSize(value: number): void;
/**
* Gets the total card count.
*/
totalCount(): number;
// #endregion
// #region Selection
/**
* Selects cards with specific keys.
*/
selectCards(keys: Array<TKey>, preserve: boolean): void;
/**
* Cancels the selection of cards with specific keys.
*/
deselectCards(keys: Array<TKey>): void;
/**
* Selects all cards.
*/
selectAll(): void;
/**
* Clears the selection of all cards on all pages or the currently rendered page only.
*/
deselectAll(): void;
/**
* Clears selection of all cards on all pages.
*/
clearSelection(): void;
/**
* Gets the selected cards' data objects.
*/
getSelectedCardsData(): Array<TCardData>;
/**
* Gets the selected card keys.
*/
getSelectedCardKeys(): Array<TKey>;
/**
* Checks whether a card with a specific key is selected.
*/
isCardSelected(key: TKey): boolean;
// #endregion
}
// usually imported / re-exports are right after heading imports,
// plus, some of these types are already exported with direct declarations
export {
ScrollbarMode,
DragHighlight,
Sorting,
Pager,
DataErrorOccurredInfo,
PopupProperties,
FormProperties,
ColumnChooser,
SearchPanel,
HeaderFilter,
};
export type ExplicitTypes<TCardData = unknown, TKey = unknown> = {
Properties: Properties<TCardData, TKey>;
};
export type Properties<TCardData = unknown, TKey = unknown> = dxCardViewOptions<TCardData, TKey>;