Table
Name | Type | Description |
---|---|---|
childComponents | ChildComponents |
customization logic for ka-table parts (cells, rows, editors, etc.) (Demo: Events, Custom Cell) |
columnReordering | boolean |
Enables columns reordering using drag and drop |
columnResizing | boolean |
Enables columns resizing |
columns | Column[] |
Columns in table and their look and behaviour |
controlledPropsKeys | (keyof ITableProps)[] | is used to specify controlled properties in uncontrolled mode default: [‘searchText’, ‘loading’] if loading is enabled, [‘searchText’, ‘loading’, ‘data’, ‘paging’] if loading is disabled |
data | any[] |
The Table’s data |
dispatch | (action) => any |
The function takes action as an argument, is used as a notification about any changes and events in the Table. dispatch enables controlled mode in the table |
editableCells | EditableCell[] |
Array of cells currently editing (Demo: Editing Example) |
editingMode | ‘cell’ ‘none’ |
Sets the table’s editing mode (Demo: Editing Example) note: when EditingMode.Cell is enabled table calls CloseEditor action each time editor loses focus |
extendedFilter | (data: any[]) => boolean |
adds additional filtering layer Demo |
filter | (props: { |
Returns filter function |
filteringMode | ‘filterRow’ ‘headerFilter’ ‘filterRowAndHeaderFilter’ ‘none’ |
Show filter UI elements in Table (Demo: Filter Row Example) |
focused | { |
stores information about the currently focused element (Demo: Keyboard navigation) |
format | (props: { |
Returns formated cell string (Demo: Example) |
gropedColumns | GroupedColumn[] |
Demo: Grouped Columns |
groups | Group[] |
Group’s in the table (Demo: Grouping Example) |
groupsExpanded | any[][] |
Expanded groups - array of group keys |
groupPanel | { |
Allows users to select grouping columns in the UI. Demo: Grouping |
height | string | number |
height of the component |
loading | { |
Loading indicator options (Demo: Loading) |
noData | { |
no data settings (for deeper UI customization childComponents.noDataRow also) (Demo: Search) |
oddEvenRows | boolean |
enables rows alternation styles (Demo: Demo) |
paging | { |
Paging settings (Demo: Paging) |
rowKeyField | string |
Data’s field which is used to identify row |
rowReordering | boolean |
Enables rows reordering using drag and drop |
search | (props: { |
Overrides the default search method for the cell. Executes if Table.search option is set |
searchText | string |
Specifies the text for search by data (Demo: Search Example) |
selectedRows | any[] |
Array of selected rows keys (Demo: Selection Example) |
singleAction | any |
dispathes only ones after Table render (Demo: Remote Data), after this action ka-table will dispatch ‘ClearSingleAction’ to set singleAction as undefined |
sort | (props: { |
Returns sorting function (Demo: Sorting Custom Logic) |
sortingMode | ‘single’ ‘singleTripleState’ ‘singleRemote’ ‘singleTripleStateRemote’ ‘multipleRemote’ ‘multipleTripleStateRemote’ ‘none’ |
Sorting mode. Remote - means only grid elements are updated but data should be sorted outside of the grid. TripleState - means: “ascend - descend - no sorting” (Demo: Sorting Example) |
table | { ...actionCreators } |
object is used only by uncontrolled mode to get/set table props, use useTable() to create your own instance and handle changes using onDispatch, and use useTableInstance() to get instance of table from context |
treeExpandButtonColumnKey | string |
sets the column key where tree expanded button will be rendered, by default it is rendered in the first column of the table |
treeGroupsExpanded | any[] |
array of ids of expanded rows, if it is undefined - all rows are expanded (Demo: Tree Mode) |
treeGroupKeyField | string |
group key field (Demo: Tree Mode) |
validation | (props: { |
Returns the validation error string or does not return anything in case of passed validation (Demo: Validation Example) |
virtualScrolling | VirtualScrolling |
Virtual scrolling options (Demo: Many Rows Example) |
width | string | number |
width of the component |
Column
Name | Type | Description |
---|---|---|
colGroup | React.ColHTMLAttributes |
Sets attributes for col element in table colGroup |
dataType | ‘boolean’ ‘date’ ‘number’ ‘object’ ‘string’ |
Specifies the type of column |
filter | (value: any, filterValue: any, rowData?: any) => boolean; |
Returns filter function for particular column (Demo: Filter Custom Logic) |
filterRowOperator | string |
Sets filter row operator (Demo: Filter Row Custom Editor). Predefined filter operators are: ‘=’, ‘!=’, ‘>’, ‘<’, ‘>=’, ‘<=’, ‘contains’ |
filterRowValue | any |
Sets filter row value (Demo: Filter Row) |
field | string |
Specifies the property of data’s object which value will be used in column, if null value from key option will be used |
headerFilterListItems | (props: { data?: any[] }) => string[] |
Returns array of header filter items (Demo: Header Filter - Logic) |
headerFilterSearch | (value: any, searchValue: any, rowData?: any) => boolean; |
used to customize header filter search logic (Demo: Header Filter - Logic) |
headerFilterSearchValue | string |
stores value for search by headerFilterValues (Demo: Header Filter - Logic) |
headerFilterValues | any[] |
Array of selected values |
headerFilterPopupPosition | { x: number; y: number; } |
Header filter popup position |
isDraggable | boolean |
Specifies can a column be dragged or not |
isEditable | boolean |
Specifies can a column be editable or not |
isFilterable | boolean |
If false then header filter cell content will not be shown for a column |
isHeaderFilterPopupShown | boolean |
Shows/hides header filter popup for specific column |
isHeaderFilterSearchable | boolean |
enables search in header filter |
isResizable | boolean |
Specifies can a column be resized or not (Demo: Column Resizing) |
isSortable | boolean |
Specifies can a column be sorted or not (Demo: Column Resizing) |
key | string |
Mandatory field, specifies unique key for the column |
sortDirection | ‘ascend’ ‘descend’ |
Sets the direction of sorting for the column (Demo: Sorting) |
sortIndex | number |
The priority of the column for sorting (Demo: Sorting) |
style | React.CSSProperties |
Sets the style options of the elements |
title | string |
Specifies the text of the header |
visible | boolean |
Shows/Hides columns |
width | number | string |
column width |
EditableCell
Describes the editor of a cell in the table
Name | Type | Description |
---|---|---|
columnKey | string |
the key of specific column |
rowKeyValue | any |
data’s key value of every specific row |
editorValue | any |
value of the editor |
validationMessage | any |
validation message of the column |
ChildComponents
Provides ability to customize grid inner components
Demos: Events Demo, Custom Cell
ChildComponent<T>
Name | Type | Element |
---|---|---|
elementAttributes | (props: PropsWithChildren<T>) => ChildAttributesItem<T> |
Events Demo |
content | (props: PropsWithChildren<TProps>) => any |
Custom Cell |
ChildAttributesItem<T>
This object is an extension for React HTMLAttributes. It contains all attributes and all react Synthetic Events, but in each event it adds a second parameter which contains additional data with AttributeTableData type
.
AttributeTableData<T>
A second parameter in each react Synthetic Event. Contains component-related information.
Name | Type | Description |
---|---|---|
baseFunc | any |
Contains default function for overrided function - it is easy to add additional logic and execute default behaviour where you want it |
childElementAttributes | HTMLAttributes<HTMLElement> |
Default HTMLAttributes of the component |
childProps | T |
Props of the component |
dispatch | (type: string, data: any) => void |
Executes specific action with specific data |
Group
Name | Type | Description |
---|---|---|
field | string |
The grouped column’s field |
enableSummary | boolean |
Enable summary row for the group |
GroupedColumn
Demo: Grouped Columns
Name | Type | Description |
---|---|---|
key | string |
unique identifier |
title | string |
Used to show text in the cell |
columnsKeys | string |
List of chicdren’s keys |
VirtualScrolling
Properties
Name | Type | Description |
---|---|---|
enabled | boolean |
Enables virtual scrolling |
scrollPosition | number |
Current scroll top position |
itemHeight | ((data: any) => number) | number |
Returns height of specific row |
tbodyHeight | number |
tbody height |
topInvisibleCount | number |
amount of rows which should be rendered over visible area (usefull for scrolling - in that case some items will be already visible and it will be more smoth) |
bottomInvisibleCount | number |
amount of rows which should be rendered under visible area |
You can set VirtualScrolling as empty object {} to enable virtual scrolling and auto calculate its parameters
useTable()
Returns a value to pass to table
property of the component
import { Table, useTable } from 'ka-table';
const table = useTable({
onDispatch: (action, tableState, prevState) => { // subscription to all actions in the table (optional)
},
customReducer: (nextState, action, prevState) => { // add additional actions or override current behavior (optional)
//...
return newState;
}
});
return <Table
table={table}
rowKeyId="id"
data={[]} />
useTableInstance()
Returns a value which was passed to table
property of the component, can be used if table is in uncontrolled mode
import { useTableInstance } from 'ka-table';
kaPropsUtils
Set of specific functions used for parsing table props
import { kaPropsUtils } from 'ka-table/utils';
kaPropsUtils.getData(tableProps)
Obtains sorted, filtered, grouped, paged data for table according to current props (Demo: Get Data By Props)
const data = kaPropsUtils.getData(tableProps);
kaPropsUtils.getFilteredData(tableProps)
Obtains filtered data
const data = kaPropsUtils.getFilteredData(tableProps);
kaPropsUtils.getSelectedData(tableProps)
Obtains selected data for table according to current props (Demo: Selection - Single)
const data = kaPropsUtils.getSelectedData(tableProps);
kaPropsUtils.areAllFilteredRowsSelected(tableProps)
returns true if all filtered rows are selected
const data = kaPropsUtils.areAllFilteredRowsSelected(tableProps);
kaPropsUtils.areAllVisibleRowsSelected(tableProps)
returns true if all visible rows are selected
const data = kaPropsUtils.areAllVisibleRowsSelected(tableProps);
kaPropsUtils.getSortedColumns(tableProps)
returns array of columns with sortDirection only, and they are sorted by sortIndex (if it is set)
const data = kaPropsUtils.getSortedColumns(tableProps);