# Luna Data Grid
Grid for displaying datasets.
## Demo
https://luna.liriliri.io/?path=/story/data-grid
## Install
Add the following script and style to your page.
```html
```
You can also get it on npm.
```bash
npm install luna-data-grid luna-menu --save
```
```javascript
import 'luna-menu/luna-menu.css'
import 'luna-data-grid/luna-data-grid.css'
import LunaDataGrid from 'luna-data-grid'
```
## Usage
```javascript
const dataGrid = new DataGrid(container, {
columns: [
{
id: 'name',
title: 'Name',
sortable: true,
},
{
id: 'site',
title: 'Site',
},
],
})
dataGrid.append({
name: 'Runoob',
site: 'www.runoob.com',
})
```
## Configuration
* columns(IColumn[]): Table columns.
* filter(string | RegExp | AnyFn): Data filter.
* headerContextMenu(boolean): Whether to show context menu on header.
* height(number): Table height.
* maxHeight(number): Max table height.
* minHeight(number): Min table height.
* selectable(boolean): Default selectable for all nodes.
## Api
### append(data: NodeData, options?: IDataGridNodeOptions): DataGridNode
Append row data.
### clear(): void
Clear all data.
### fit(): void
Fit height to the containing element.
### remove(node: DataGridNode): void
Remove row data.
### setData(data: NodeData | [], uniqueId?: string): void
Set data.
## Types
### IColumn
* comparator(AnyFn): Column sort comparator if sortable is true.
* id(string): Column id.
* sortable(boolean): Is column sortable.
* title(string): Column display name.
* visible(boolean): Is column initially visible.
* weight(number): Column weight.
### IDataGridNodeOptions
* selectable(boolean): Whether the node is selectable.