Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/komarovalexander/ka-table/blob/master/LICENSE) [![npm version](https://img.shields.io/npm/v/ka-table.svg?style=flat-square)](https://www.npmjs.com/package/ka-table)
The customizable, extendable, lightweight and free React Table Component
npm
npm install ka-table
yarn
yarn add ka-table
import React, { useState } from 'react';
import { ITableOption, Table } from 'ka-table';
import { DataType, SortDirection, SortingMode } from 'ka-table/enums';
import { OptionChangeFunc } from 'ka-table/types';
const dataArray: any[] = [
{ id: 1, name: 'Mike Wazowski', score: 80, passed: true },
{ id: 2, name: 'Billi Bob', score: 55, passed: false },
{ id: 3, name: 'Tom Williams', score: 45, passed: false },
{ id: 4, name: 'Kurt Cobain', score: 75, passed: true },
{ id: 5, name: 'Marshall Bruce', score: 77, passed: true },
{ id: 6, name: 'Sunny Fox', score: 33, passed: false },
];
const tableOption: ITableOption = {
columns: [
{
dataType: DataType.String,
key: 'name',
sortDirection: SortDirection.Descend,
style: { width: '33%' },
title: 'Name',
},
{ key: 'score', title: 'Score', style: { width: '10%' }, dataType: DataType.Number },
{ key: 'passed', title: 'Passed', dataType: DataType.Boolean },
],
rowKeyField: 'id',
sortingMode: SortingMode.Single,
};
const SortingDemo: React.FC = () => {
const [option, changeOptions] = useState(tableOption);
const onOptionChange: OptionChangeFunc = (value) => {
changeOptions({...option, ...value });
};
return (
<Table
{...option}
data={dataArray}
onOptionChange={onOptionChange}
/>
);
};
export default SortingDemo;
Command Column - Functional columns which are not bound to data and used to add custom command to table
Custom Cell - Best way to customise look of every column in table
Custom DataRow - Customise look of a row in the table
Custom Editor - Table supports user created editors
Custom Header Cell - Customisation of header cell
Editing - Editing out of the box
Events - All events are trackable
Filter Extended - Easy filtered by extended filters
Filter Row - Built-in filter row
Filter Row - Custom Editor - Customise filter cell every way you want
Grouping - Group data for most convenient work with it
25000 Rows - Virtualisation are supported
10000 Grouped Rows - Virtualisation work well with grouping
Search - Search by the whole Table is easy
Selection - Select and process specific rows
State Storing - Save Table's state and restore it after page reload
Properties
Name | Type | Description |
---|---|---|
childAttributes | ChildAttributes | Object describes attributes for data grid child components Events Demo |
columns | Column[] | Columns in table and their look and behaviour |
data | any[] | The Table's data |
dataRow | DataRowFunc | Returns Data Row Template [Custom Data Row Example](https://komarovalexander.github.io/ka-table/#/custom-data-row |
editableCells | Cell[] | Array of cells that are in edit mode Editing Example |
editingMode | EditingMode | Sets the table's editing mode Editing Example |
filterRow | FilteringMode | Show filtering related UI elements in Table Filter Row Example |
groups | Group[] | Group's in the table Grouping Example |
groupsExpanded | any[][] | Groups that are expanded in the grid |
noDataRow | () => any | The function returns string or a component which should appear when there are no data to show |
onDataChange | (data: any[]) => void | This function is called each time when data going to change, use it to override current data Editing Example |
onEvent | (type: string, data: any) => void | Executes each time when dispatch is called Events |
onOptionChange | (value: any) => void | This is mandatory function, this executes each time when grid going to change its state, use it to override current state Example |
rowKeyField | string | Data's field which is used to identify row |
search | string | Specifies the text which are used for search by data Search Example |
selectedRows | any[] | Array of rows keys which are marked as selected Selection Example |
sortingMode | SortingMode | Sorting mode Sorting Example |
virtualScrolling | VirtualScrolling | Virtual scrolling options - set it as empty object {} to enable virtual scrolling and auto calculate its parameters Many Rows Example |
Describes column of table its look and behaviour Properties
Name | Type | Description |
---|---|---|
cell | CellFunc | Returns a custom cell if Table is not in editable mode Custom Cell |
dataType | DataType | Specifies the type of column |
editor | EditorFunc | Returns an editor if cell is in editable mode Custom Editor Example |
filterRowCell | FilterRowFunc | Returns an editor for filter row cell Filter Row Custom Editor |
filterRowOperator | string | Sets filter row operator Filter Row Custom Editor. See the list of predefined filter operators FilterOperatorName |
filterRowValue | any | Sets filter row value 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 |
format | FormatFunc | Returns formated cell string Example |
headCell | HeaderCellFunc | Returns a custom header cell Custom Head Cell Example |
isEditable | boolean | Specifies can column be editable or not |
key | string | Mandatory field, specifies unique key for the column |
search | SearchFunc | Overrides the default search method for the cell. Executes if Table.search option is set |
sortDirection | SortDirection | Sets the direction of sorting for the column |
style | React.CSSProperties | Sets the style options of the elements |
title | string | Specifies the text of the header |
validation | ValidationFunc | Returns the validation error string or does not return anything in case of passed validation Validation Example |
Describes the position of a cell in the table
Properties
Name | Type | Description |
---|---|---|
field | string | The field of specific column |
rowKeyValue | any | Data's key value of every specific row |
Describes the attributes for a specific child component It is possible to override default behaviour just specify particular handler Events Demo
Name | Type | Description |
---|---|---|
cell | ChildAttributesItem<ICellContentProps> | Sets custom attributes for cell element |
table | ChildAttributesItem<Table> | Sets custom attributes for table element |
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
.
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 |
Properties
Name | Type | Description |
---|---|---|
field | string | The grouped column's field |
Properties
Name | Type | Description |
---|---|---|
scrollPosition | number | Current scroll top position |
itemHeight | ((data: any) => number) | number | Returns height of specific row |
tbodyHeight | number | tbody height |
Property | String value |
---|---|
Boolean | 'boolean' |
Date | 'date' |
Number | 'number' |
Object | 'object' |
String | 'string' |
Property | String value | Description |
---|---|---|
None | 'none' | Editing is disabled |
Cell | 'cell' | Data is edited by cell to cell, click by cell activates editing |
Property | String value | Description |
---|---|---|
None | 'none' | All filtering elements are hidden |
FilterRow | 'filterRow' | Filter row is shown |
Property | String value |
---|---|
Equal | '=' |
MoreThan | '>' |
LessThan | '<' |
MoreThanOrEqual | '>=' |
LessThanOrEqual | '<=' |
Contains | 'contains' |
Property | String value |
---|---|
Ascend | 'ascend' |
Descend | 'descend' |
Property | String value |
---|---|
None | 'none' |
Single | 'single' |
(props: ICellContentProps) => any;
Function which obtains ICellContentProps
as parameter and returns React component which should be shown instead of cell content.
(props: IDataRowProps) => any;
Function which obtains IDataRowProps
as parameter and returns React component which should be shown instead of Row content.
(props: ICellEditorProps) => any;
Function which obtains ICellEditorProps
as parameter and returns React component which should be shown instead of default editor.
(props: IFilterRowEditorProps) => any;
Function which obtains IFilterRowEditorProps
as parameter and returns React component which should be shown instead of default filter row's editor.
(value: any) => any;
Function which obtains value as parameter and returns formated value which will be shown in cell.
(searchText?: string, rowData?: any, column?: Column) => boolean;
Function which obtains searchText?: string, rowData?: any, column?: Column
- as parameters and returns boolean
value which is true if cell's value is matched with searched value and false otherwise.
(value: any, rowData: any) => string | void;
Function which obtains value of specific cell and row - as parameters and returns validation error string or does not return anything in case of passed validation.
Properties
Name | Type | Description |
---|---|---|
column | Column | column of the editor |
dispatch | (type: string, data: any) => void | can forse Table make change in data, close the editor, and other actions |
field | string | field name of current column |
rowData | any | data of the row in which editor is shown |
isSelectedRow | boolean | selection state of the current row |
rowKeyField | string | field which is used to identify row |
Properties
Name | Type | Description |
---|---|---|
column | Column | column of the editor |
dispatch | (type: string, data: any) => void | can forse Table make change in filter data and other actions |
Properties
Name | Type | Description |
---|---|---|
column | Column | settings of the column in which editor is shown |
openEditor | () => void | call this method to open editor of the cell |
rowData | any | data of the row in which editor is shown |
Properties
Name | Type | Description |
---|---|---|
columns | Column[] | Columns in table and their look and behaviour |
dispatch | (type: string, data: any) => void | Executes specific action with specific data |
editableCells | Cell[] | Array of cells that are in edit mode |
editingMode | EditingMode | Table's editing mode |
rowData | any | Data of current row |
isSelectedRow | boolean | Describes selected state of current row |
rowKeyField | string | Data's field which is used to identify row |
selectedRows | any[] | Array of rows keys which are marked as selected |
FAQs
The customizable, extendable, lightweight, and fully free React Table Component
The npm package ka-table receives a total of 5,733 weekly downloads. As such, ka-table popularity was classified as popular.
We found that ka-table demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.