, e?: MouseEvent) => (ListViewReturnOrder | void);
export declare type ListViewColumnFunction = (props: P) => ListViewColumnProps;
export declare type ListViewMultiStageRowItemProps = {
columns: Array>;
header?: boolean;
headerHeightFlexRate?: number;
headerClassName?: string | Array;
footer?: boolean;
footerHeightFlexRate?: number;
footerClassName?: string | Array;
body?: boolean;
bodyHeightFlexRate?: number;
bodyClassName?: string | Array;
};
export declare type ListViewEditTargetProps = {
data: T;
columnName: string;
index: number;
id: number;
};
export declare type ListViewEditParams = {
target: ListViewEditTargetProps;
editElement: HTMLDivElement;
endEdit: (commit?: boolean) => void;
cell: $ListViewCell;
styleCtx: LayoutContextProps;
};
export declare type ListViewBeginEditFunc = (params: ListViewEditParams) => {
node: ReactNode;
effect?: () => void;
};
export declare type ListViewEditInputAttributes> = Omit;
export declare type ListViewColumnProps = {
name: string;
vName?: string;
label?: string;
dataType?: "string" | "number";
initialize?: (props: ListViewColumnProps, listView: ListViewClass) => {
[key: string]: any;
};
dispose?: (lv: ListViewClass) => void;
headerCellLabel?: string | ((cellElement: HTMLDivElement, displayedItems: Array<$ListViewItem>, originItems: Array) => void);
headerCellInitialize?: (column: $ListViewColumn, initializeParameters: {
[key: string]: any;
}) => void;
headerCellTextAlign?: TextAlign;
footerCellLabel?: string | ((cellElement: HTMLDivElement, displayedItems: Array<$ListViewItem>, originItems: Array) => void);
footerCellInitialize?: (column: $ListViewColumn, initializeParameters: {
[key: string]: any;
}) => void;
footerCellTextAlign?: TextAlign;
width?: number;
cellInitialize?: (cell: $ListViewCell, initializeParameters: {
[key: string]: any;
}, lv: ListViewClass) => void;
cellDispose?: (cell: $ListViewCell, lv: ListViewClass) => void;
cellRender?: (cell: $ListViewCell, initializeParameters: {
[key: string]: any;
}) => void;
cellTextAlign?: TextAlign;
appearance?: "label" | "anchor";
sort?: boolean | ((order: SortOrder) => (data1: {
data: T;
}, data2: {
data: T;
}) => number);
resize?: boolean;
fill?: boolean;
fixed?: boolean;
tabStop?: boolean;
notScrollFocusWhenTabStop?: boolean;
disabled?: boolean;
borderless?: boolean;
clickHeaderCell?: ListViewHeaderOrFooterCellClicked;
clickFooterCell?: ListViewHeaderOrFooterCellClicked;
clickCell?: ListViewCellClickFunc;
clickRow?: ListViewCellClickFunc;
_preventClearSelected?: boolean;
data?: {
[key: string]: any;
};
bindedItems?: (originItems: Array) => void;
initializeRowData?: (data: T) => void | boolean;
_beginEdit?: ListViewBeginEditFunc;
_endEdit?: (target: ListViewEditTargetProps, commit: boolean, editElement: HTMLDivElement) => ListViewReturnOrder | void;
editedRowData?: ((data: T) => void) | boolean;
_rows?: Array>;
headerClassNames?: string | Array;
footerClassNames?: string | Array;
bodyClassNames?: string | Array;
jsxStyle?: JSX.Element;
_lv?: (lv: ListViewClass) => void;
};
export declare type ListViewEditColumnProps = ListViewColumnProps & {
edit?: boolean;
beganEdit?: (value: T, target: ListViewEditTargetProps) => void;
endedEdit?: (values: {
before: T;
after: T;
}, target: ListViewEditTargetProps, commit: boolean) => void;
};
export declare type ListViewOptions = {
header?: boolean;
headerHeight?: number;
footer?: boolean;
footerHeight?: number;
rowHeight?: number;
rowNumber?: boolean;
selectMode?: ListViewSelectMode;
multiSelect?: boolean;
oddEven?: boolean;
dragScroll?: boolean | "horizontal" | "vertical";
rowBorderless?: boolean;
colBorderless?: boolean;
sort?: (itemData1: T, itemData2: T) => number;
sorted?: (columnName: string, order: "asc" | "desc" | "", columnProps: ListViewColumnProps) => void;
externalSort?: boolean;
filter?: (itemData: T) => boolean;
clickCell?: ListViewCellClickFunc;
filtered?: (items: Array<$ListViewItem>) => void;
enterIsClick?: boolean;
scrollTimeoutInterval?: number;
};
export declare type ListViewAttributes = HTMLAttributes & {
ref?: ForwardedRef;
$fto?: FitToOuter;
$hook?: ListViewHook;
$items?: Array;
$columns?: Array>;
$preventColumnsMemo?: boolean;
$options?: ListViewOptions;
$preventOptionsMemo?: boolean;
$padding?: boolean;
$border?: boolean;
$radius?: boolean;
$resize?: boolean | "x" | "y" | "xy";
};
interface ListViewFC extends FunctionComponent {
(attrs: ListViewAttributes, ref?: ForwardedRef): ReactElement>;
}
declare const ListView: ListViewFC;
export declare const useListView: () => ListViewHook;
export declare type $ListViewMultiStageRowItem = {
columns: Array<$ListViewColumn>;
header: boolean;
headerHeightFlexRate: number;
headerClassName: Array;
footer: boolean;
footerHeightFlexRate: number;
footerClassName: Array;
body: boolean;
bodyHeightFlexRate: number;
bodyClassName: Array;
};
export declare type $ListViewColumn = {
prop?: ListViewColumnProps;
name: string;
vName: string;
label: string;
dataType: "string" | "number";
cells: Array<$ListViewCell>;
width: number;
minWidth: number;
initializeParameters: {
[key: string]: any;
};
dispose: (lv: ListViewClass) => void;
headerCellElement: HTMLDivElement;
headerCellLabelElement?: HTMLDivElement;
renderHeaderCell?: (cellElement: HTMLDivElement, displayedItems: Array<$ListViewItem>, originItems: Array) => void;
sortElement?: HTMLDivElement;
resizeElement?: HTMLDivElement;
footerCellElement: HTMLDivElement;
footerCellLabelElement?: HTMLDivElement;
renderFooterCell?: (cellElement: HTMLDivElement, displayedItems: Array<$ListViewItem>, originItems: Array) => void;
cellInitialize: (cell: $ListViewCell, initializeParameters: {
[key: string]: any;
}, lv: ListViewClass) => void;
disposeCell?: (cell: $ListViewCell, lv: ListViewClass) => void;
renderCell: (cell: $ListViewCell, initializeParameters: {
[key: string]: any;
}) => void;
textAlign: TextAlign;
appearance?: "label" | "anchor";
sort: (order: SortOrder) => (itemData1: {
data: T;
}, itemData2: {
data: T;
}) => number;
sortOrder: SortOrder;
resize: boolean;
fill: boolean;
fixed: boolean;
fixedLeft: number;
left: number;
tabStop: boolean;
notScrollFocusWhenTabStop: boolean;
render: boolean;
disabled: boolean;
borderless?: boolean;
clickHeaderCell?: ListViewHeaderOrFooterCellClicked;
clickFooterCell?: ListViewHeaderOrFooterCellClicked;
clickCell?: ListViewCellClickFunc;
clickRow?: ListViewCellClickFunc;
preventClearSelected: boolean;
bindedItems?: (originItems: Array) => void;
initializeRowData?: (data: T) => void | boolean;
rows?: Array<$ListViewMultiStageRowItem>;
parent?: $ListViewColumn;
beginEdit?: ListViewBeginEditFunc;
endEdit?: (target: ListViewEditTargetProps, commit: boolean, editElement: HTMLDivElement) => ListViewReturnOrder | void;
editedRowData: ((data: T) => void) | boolean;
headerClassNames?: Array;
footerClassNames?: Array;
bodyClassNames?: Array;
built: boolean;
};
declare type $ListViewItem = {
data: T;
id: number;
rowSelected: boolean;
cellSelected: {
[key: string]: boolean;
};
};
declare type $ListViewRow = {
element: HTMLDivElement;
index: number;
id: number;
cells: Array<$ListViewCell>;
item: $ListViewItem;
cache: {
_lv_selected: boolean;
_lv_oddEven: 0 | 1;
};
};
declare type $ListViewCell = {
element: HTMLDivElement;
contentElements: Array;
column: $ListViewColumn;
row: $ListViewRow;
cache: {
_lv_selected: boolean;
} & {
[key: string]: any;
};
};
export declare class ListViewClass extends DomComponentClass {
protected element: HTMLElement;
protected layoutCtx: LayoutContextProps;
protected initialized: boolean;
protected resizeObserver: ResizeObserver;
protected headerElement: HTMLDivElement;
protected headerRowElement: HTMLDivElement;
protected bodyElement: HTMLDivElement;
protected dummyElement: HTMLDivElement;
protected footerElement: HTMLDivElement;
protected footerRowElement: HTMLDivElement;
protected editElement: HTMLDivElement;
protected editMaskElement: HTMLDivElement;
protected editRoot: Root;
protected columns: Array<$ListViewColumn>;
protected renderColumns: Array<$ListViewColumn>;
protected originItems: Array;
protected bindingItems: Array<$ListViewItem>;
protected filteredItems: Array<$ListViewItem>;
protected sortedItems: Array<$ListViewItem>;
protected rows: Array<$ListViewRow>;
protected selectedRows: {
[key: string]: $ListViewItem;
};
protected lastSelectedCell: {
index: number;
item: $ListViewItem;
column: $ListViewColumn;
};
protected lastSelectedBaseCell: {
index: number;
item: $ListViewItem;
column: $ListViewColumn;
};
protected lastScrolledTop: number;
protected lastScrolledLeft: number;
protected maxFirstIndex: number;
protected firstIndex: number;
protected lastChangedX: boolean;
protected hasFillColumn: boolean;
protected editTarget: {
item: $ListViewItem;
column: $ListViewColumn;
index: number;
useReact?: boolean;
};
protected scrollingMode: "stop" | "up" | "down";
protected scrollingId: number;
protected scrollingInterval: number;
protected cloneBase: {
div: HTMLDivElement;
rowElem: HTMLDivElement;
cellElem: HTMLDivElement;
labelCellElem: HTMLDivElement;
};
protected rowNumberColumn: $ListViewColumn;
protected headerVisible: boolean;
protected headerHeight: number;
protected footerVisible: boolean;
protected footerHeight: number;
protected rowHeight: number;
protected selectMode: ListViewSelectMode;
protected multiSelect: boolean;
protected oddEven: boolean;
protected dragScroll: boolean | "horizontal" | "vertical";
protected rowNumber: boolean;
protected sort: (itemData1: {
[key: string]: any;
}, itemData2: {
[key: string]: any;
}) => number;
protected sorted?: (columnName: string, order: "asc" | "desc" | "", columnProps: ListViewColumnProps) => void;
protected externalSort: boolean;
protected filter: (itemData: {
[key: string]: any;
}) => boolean;
protected clickCell: ListViewCellClickFunc;
protected filtered: (items: Array<$ListViewItem>) => void;
protected enterIsClick: boolean;
protected colBorderless: boolean;
protected rowBorderless: boolean;
protected scrollTimeoutInterval: number;
protected endEditEventListener: () => void;
protected itemsCallBindedRev: number;
protected colCallBindedRev: number;
constructor(element: HTMLElement, props: ListViewAttributes, layoutCtx: LayoutContextProps);
dispose(): void;
setOptions(options?: ListViewOptions): this;
protected optimizeElementsPosition(): void;
setHeaderVisible(visible: boolean): this;
setHeaderHeight(height: number): this;
setFooterVisible(visible: boolean): this;
setFooterHeight(height: number): this;
setRowHeight(height: number): this;
setRowNumber(visible: boolean): this;
setSelectMode(selectMode: ListViewSelectMode): this;
setMultiSelect(multiSelect: boolean): this;
setOddEven(oddEven: boolean): this;
setDragScroll(dragScroll: boolean | "horizontal" | "vertical"): this;
setSort(func: (itemData1: {
[key: string]: any;
}, itemData2: {
[key: string]: any;
}) => number): this;
setSorted(func: (columnName: string, order: "asc" | "desc" | "", columnProps: ListViewColumnProps) => void): this;
setExternalSort(external: boolean): this;
setFilter(func: (itemData: {
[key: string]: any;
}) => boolean): this;
setClickCell(func: ListViewCellClickFunc): this;
setFiltered(func: (items: Array<$ListViewItem>) => void): this;
setEnterIsClick(enterIsClick: boolean): this;
setColBorderless(borderless: boolean): this;
setRowBorderless(borderless: boolean): this;
setScrollTimeoutInterval(interval: number): this;
protected generateElements(): void;
protected clearSelectedRows(render?: boolean): void;
protected rangeSelectRow(item: $ListViewItem, column: $ListViewColumn, index: number): void;
protected scrollToIndex(index: number, render?: boolean): void;
protected scrollToColumn(column: $ListViewColumn, render?: boolean, renderAbsolute?: boolean): boolean;
protected arrowUpDown(updown: number, focusIndex: number, rangeSelect?: boolean): boolean;
protected arrowUp(up?: number, rangeSelect?: boolean): boolean;
protected arrowDown(down?: number, rangeSelect?: boolean): boolean;
protected arrowLeftRightOptimize(index: number, column: $ListViewColumn, rangeSelect?: boolean): boolean;
protected arrowLeft(ctrlKey?: boolean, rangeSelect?: boolean): boolean;
protected arrowRight(ctrlKey?: boolean, rangeSelect?: boolean): boolean;
render(): this;
protected renderHeaderCells(): this;
protected renderFooterCells(): this;
protected renderRow(row: $ListViewRow, allColumn?: boolean): void;
protected renderRowColumns(columns: Array<$ListViewColumn>, row: $ListViewRow): void;
protected renderCell(cell: $ListViewCell): void;
protected renderWhenScrolled(absolute?: boolean): void;
protected renderWhenResized(absolute?: boolean): boolean;
protected generateCell(row: $ListViewRow, col: $ListViewColumn, rowElem: HTMLDivElement): $ListViewCell;
protected optimizeMaxFirstIndex(): void;
protected optimizeRenderColumns(): boolean;
protected optimizeRowNumberColumnWidth(): void;
protected optimizeDummySize(): void;
protected disposeRows(maxRowLen?: number): void;
protected findColumn(func: (column: $ListViewColumn) => boolean): $ListViewColumn;
protected findFirstColumn(): $ListViewColumn;
protected findLastColumn(): $ListViewColumn;
protected findPrevColumn(columnName: string): {
column: $ListViewColumn;
nextRow: boolean;
};
protected findNextColumn(columnName: string): {
column: $ListViewColumn;
nextRow: boolean;
};
protected disposeColumn(column: $ListViewColumn): void;
protected disposeColumns(): void;
protected bindColumns(columns: Array>): void;
protected bindColumn(col: ListViewColumnProps, fill: boolean): $ListViewColumn;
protected buildColumns(): void;
protected buildColumn(column: $ListViewColumn, element: {
header: HTMLDivElement;
footer: HTMLDivElement;
}): void;
setColumns(columns: Array>): this;
protected columnForEach(func: (column: $ListViewColumn) => void | boolean): void;
protected bindItems(items: Array): void;
executeColumnBindedItems(): void;
protected filterItems(): void;
protected sortItems(): void;
setItems(items: Array): this;
protected cellClickedImpl(item: $ListViewItem, column: $ListViewColumn, index: number, ctrlKey: boolean, shiftKey: boolean, e?: MouseEvent): void;
protected beginEditLastSelectedCell(lastScrollTop?: number): void;
protected beginEdit(item: $ListViewItem, column: $ListViewColumn, index: number): void;
protected endEdit(commit: boolean, options?: {
unmountTimeout?: boolean;
callback?: (edit: boolean) => void;
}): void;
getValue(): Array;
getFilteredValue(): Array<$ListViewItem>;
getSortedValue(): Array<$ListViewItem>;
getLength(): number;
getFilteredLength(): number;
select(rowIndex: number, columnName?: string): boolean;
clearSelect(): void;
getSelectedRows(): Array<{
id: number;
data: T;
}>;
getSelectedCells(): Array<{
id: number;
data: T;
columnName: string;
}>;
focus(): this;
getElement(): HTMLElement;
getBodyElement(): HTMLDivElement;
getRowHeight(): number;
getDisplayedFirstRowIndex(): number;
getBodyScrollTop(): number;
clearSpaceRow(): this;
startScrollContinue(order: "up" | "down", interval?: number, startCallback?: (interval: number) => void, endCallback?: (code: "stop" | "over" | "already") => void): void;
stopScrollContinue(): void;
protected scrollContinue(endCallback?: (code: "stop" | "over") => void): void;
dragMovingRow(dragingRowIndex: number, top: number): this;
dropMoveRow(dragingRowIndex: number, top: number): this;
renderByOriginData(originData: T, callEditedRowData?: boolean): this;
setStyleContext(ctx: LayoutContextProps): this;
}
export declare const ListViewStyle: JSX.Element;
export default ListView;