Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6fdacbf
feat(grid-lite): Add initial structure for new grid-lite wrapper
mddragnev Jan 20, 2026
ee400c6
chore(*): Add dev sample
mddragnev Jan 20, 2026
b1eedf5
chore(*): Add package-lock and package.json
mddragnev Jan 20, 2026
299b664
feat: expose column component with templating
mddragnev Jan 22, 2026
640be5c
chore(*): Change template context typings
mddragnev Jan 23, 2026
debafdf
Merge branch 'master' of https://github.com/IgniteUI/igniteui-angular…
mddragnev Jan 23, 2026
6cf0ce7
chore(*): Rename some types. Expose inline templating
mddragnev Jan 23, 2026
f6bcddb
chore(*): delete unused import
mddragnev Jan 23, 2026
aab9d25
feat: expose grid inputs, outputs and public API
mddragnev Jan 23, 2026
7499bf6
chore(*): Use crypto instead of math.rand
mddragnev Jan 23, 2026
9d470fb
Merge branch 'master' into mdragnev/grid-lite-wrapper
mddragnev Jan 27, 2026
bd39aed
chore(*): Move directive definitions before usage
mddragnev Jan 27, 2026
bdda894
test: Add couple of tests
mddragnev Jan 27, 2026
5433063
chore(grid): Adjust template fallback order in column component
mddragnev Jan 28, 2026
34c865f
Merge remote-tracking branch 'origin/master' into mdragnev/grid-lite-…
damyanpetev Feb 6, 2026
b918ec0
chore(deps): bump igniteui-grid-lite@0.4.0
damyanpetev Feb 6, 2026
34e0ac3
chore(lib,deps): add igniteui-grid-lite as optional peer dep
damyanpetev Feb 6, 2026
db30cb1
refactor(grid-lite): shorter template directive names, closer to igx-…
damyanpetev Feb 6, 2026
a2a1f31
refactor(grid-lite): keep all template context props
damyanpetev Feb 6, 2026
c08188c
refactor(grid-lite): add booleanAttribute for input coercion
damyanpetev Feb 6, 2026
e13ef3e
chore(grid-lite): schematics entry fix
damyanpetev Feb 6, 2026
5c4529e
chore(grid-lite): drop total items getter
damyanpetev Feb 9, 2026
325503c
fix(grid-lite): actually emit outputs
damyanpetev Feb 9, 2026
07d34d2
docs(grid-lite): add readme for the component
damyanpetev Feb 9, 2026
83e13fa
docs(grid-lite): update license to include
damyanpetev Feb 9, 2026
33a2a0c
chore(grid-lite): revert redundant ng-package entry
damyanpetev Feb 10, 2026
bd6ed9c
refactor(grid-lite): sorting/filteringExpressions as model; elem sync…
damyanpetev Feb 10, 2026
a78accb
refactor(grid-lite): use wc as the angular host (#16896)
damyanpetev Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Covered Components, Directives and Services with MIT License:
- igx-divider
- igx-drop-down
- igx-expansion-panel
- igx-grid-lite
- igx-icon
- igx-input-group
- igx-linear-bar
Expand Down Expand Up @@ -81,7 +82,7 @@ Covered Components, Directives and Services with MIT License:
- IgxTextHighlightService
- igxToggle

The MIT License applies exclusively to the components (encompassing all related modules and directives), directives, and services listed above and their associated source code.
The MIT License applies exclusively to the components (encompassing all related modules and directives), directives, and services listed above and their associated source code.
All other parts of this package remain under the Infragistics Commercial License.

The MIT License (MIT)
Expand Down
19 changes: 19 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
"hammerjs": "^2.0.8",
"ig-typedoc-theme": "^7.0.1",
"igniteui-dockmanager": "^1.17.0",
"igniteui-grid-lite": "~0.4.0",
"igniteui-i18n-resources": "^1.0.2",
"igniteui-sassdoc-theme": "^2.1.0",
"igniteui-webcomponents": "^6.5.0",
Expand Down
290 changes: 290 additions & 0 deletions projects/igniteui-angular/grids/lite/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
# IgxGridLite

**IgxGridLite** is a lightweight Angular wrapper component for the `igniteui-grid-lite` web component, providing a simple and performant data grid solution with essential features like sorting, filtering, and virtualization.

A walkthrough of how to get started can be found [here](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid-lite/overview)

## Usage

```html
<igx-grid-lite [data]="data" [autoGenerate]="true">
</igx-grid-lite>
```

Or with manual column definitions:

```html
<igx-grid-lite [data]="data">
<igx-grid-lite-column
field="firstName"
header="First Name">
</igx-grid-lite-column>
<igx-grid-lite-column
field="age"
header="Age"
dataType="number">
</igx-grid-lite-column>
</igx-grid-lite>
```

## Getting Started

### Installation
To get started, install Ignite UI for Angular package as well as the Ignite UI for Web Component one that powers the UI:

```shell
npm install igniteui-grid-lite
```

### Dependencies

The Grid Lite is exported as a standalone component, thus all you need to do in your application is to import the `IgxGridLiteComponent` and `IgxGridLiteColumnComponent` in your component:

```typescript
import { IgxGridLiteComponent, IgxGridLiteColumnComponent } from 'igniteui-angular/grids/lite';

@Component({
selector: 'app-grid-lite-sample',
templateUrl: './grid-lite-sample.html',
standalone: true,
imports: [IgxGridLiteComponent, IgxGridLiteColumnComponent]
})
export class GridLiteSampleComponent {
public data = [
{ id: 1, firstName: 'John', lastName: 'Doe', age: 30 },
{ id: 2, firstName: 'Jane', lastName: 'Smith', age: 25 }
];
}
```

### Basic Configuration

Define the grid with auto-generated columns:

```html
<igx-grid-lite [data]="data" [autoGenerate]="true">
</igx-grid-lite>
```

Or define columns manually:

```html
<igx-grid-lite [data]="data">
<igx-grid-lite-column field="id" header="ID" dataType="number"></igx-grid-lite-column>
<igx-grid-lite-column field="firstName" header="First Name"></igx-grid-lite-column>
<igx-grid-lite-column field="lastName" header="Last Name"></igx-grid-lite-column>
<igx-grid-lite-column field="age" header="Age" dataType="number"></igx-grid-lite-column>
</igx-grid-lite>
```

### Sorting

Configure sorting mode:

```typescript
protected sortingOptions: IgxGridLiteSortingOptions = {
mode: 'single'
}
```

```html
<igx-grid-lite [data]="data" [sortingOptions]="sortingOptions">
</igx-grid-lite>
```

Set initial sorting expressions:

```typescript
protected sortingExpressions: IgxGridLiteSortingExpression[] = [
{
key: 'firstName',
direction: 'ascending'
}
]
```

```html
<igx-grid-lite [data]="data" [sortingExpressions]="sortingExpressions">
</igx-grid-lite>
```

### Filtering

Set initial filtering expressions:

```typescript
protected filteringExpressions: IgxGridLiteFilteringExpression[] = [
{
key: 'age',
condition: 'greaterThan',
searchTerm: 50
}
]
```

```html
<igx-grid-lite [data]="data" [filteringExpressions]="filteringExpressions">
</igx-grid-lite>
```

### Custom Templates

Define custom header templates:

```html
<igx-grid-lite [data]="data">
<igx-grid-lite-column field="firstName" header="First Name">
<ng-template igxGridLiteHeader let-column>
<div>{{ column.header }} (Custom)</div>
</ng-template>
</igx-grid-lite-column>
</igx-grid-lite>
```

Define custom cell templates:

```html
<igx-grid-lite [data]="data">
<igx-grid-lite-column field="active" header="Active">
<ng-template igxGridLiteCell let-value>
@if (value === true) {
<span>Yes</span>
} @else {
<span>No</span>
}
</ng-template>
</igx-grid-lite-column>
</igx-grid-lite>
```

### Events

Listen to sorting and filtering events:

```html
<igx-grid-lite
[data]="data"
(sorting)="onSorting($event)"
(sorted)="onSorted($event)"
(filtering)="onFiltering($event)"
(filtered)="onFiltered($event)">
</igx-grid-lite>
```

```typescript
public onSorting(event: CustomEvent<IgxGridLiteSortingExpression>) {
console.log('Sorting initiated:', event.detail);
}

public onSorted(event: CustomEvent<IgxGridLiteSortingExpression>) {
console.log('Sorting completed:', event.detail);
}

public onFiltering(event: CustomEvent<IgxGridLiteFilteringExpression>) {
console.log('Filtering initiated:', event.detail);
}

public onFiltered(event: CustomEvent<IgxGridLiteFilteringExpression>) {
console.log('Filtering completed:', event.detail);
}
```

## API

### Inputs

**IgxGridLiteComponent**

| Name | Type | Description |
|------|------|-------------|
| `data` | `any[]` | The data source for the grid |
| `autoGenerate` | `boolean` | Whether to auto-generate columns from data. Default is `false` |
| `sortingOptions` | `IgxGridLiteSortingOptions` | Configuration for sorting behavior (single/multiple mode) |
| `sortingExpressions` | `IgxGridLiteSortingExpression[]` | Initial sorting state |
| `filteringExpressions` | `IgxGridLiteFilteringExpression[]` | Initial filtering state |
| `dataPipelineConfiguration` | `IgxGridLiteDataPipelineConfiguration` | Configuration for remote data operations |

**IgxGridLiteColumnComponent**

| Name | Type | Description |
|------|------|-------------|
| `field` | `string` | The data field to bind to |
| `header` | `string` | The column header text |
| `dataType` | `'string' \| 'number' \| 'boolean' | The data type of the column. Default is `'string'` |
| `width` | `string` | The width of the column |
| `hidden` | `boolean` | Indicates whether the column is hidden. Default is `false` |
| `resizable` | `boolean` | Indicates whether the column is resizable. Default is `false` |
| `sortable` | `boolean` | Indicates whether the column is sortable. Default is `false` |
| `sortingCaseSensitive` | `boolean` | Whether sort operations will be case sensitive. Default is `false` |
| `sortConfiguration` | `IgxGridLiteColumnSortConfiguration<T>` | Sort configuration for the column (e.g., custom comparer) |
| `filterable` | `boolean` | Indicates whether the column is filterable. Default is `false` |
| `filteringCaseSensitive` | `boolean` | Whether filter operations will be case sensitive. Default is `false` |
| `headerTemplate` | `TemplateRef` | Custom template for the header |
| `cellTemplate` | `TemplateRef` | Custom template for cells |

### Outputs

| Name | Type | Description |
|------|------|-------------|
| `sorting` | `CustomEvent<IgxGridLiteSortingExpression>` | Emitted when sorting is initiated |
| `sorted` | `CustomEvent<IgxGridLiteSortingExpression>` | Emitted when sorting completes |
| `filtering` | `CustomEvent<IgxGridLiteFilteringExpression>` | Emitted when filtering is initiated |
| `filtered` | `CustomEvent<IgxGridLiteFilteringExpression>` | Emitted when filtering completes |

### Properties

| Name | Type | Description |
|------|------|-------------|
| `columns` | `IgxGridLiteColumnConfiguration[]` | Gets the column configuration |
| `rows` | `any[]` | Gets the currently rendered rows |
| `dataView` | `ReadonlyArray<T>` | Gets the data after sort/filter operations |

### Methods

| Name | Parameters | Description |
|------|------------|-------------|
| `sort` | `expressions: IgxGridLiteSortingExpression \| IgxGridLiteSortingExpression[]` | Performs a sort operation |
| `clearSort` | `key?: Keys<T>` | Clears sorting for a specific column or all columns |
| `filter` | `config: IgxGridLiteFilteringExpression \| IgxGridLiteFilteringExpression[]` | Performs a filter operation |
| `clearFilter` | `key?: Keys<T>` | Clears filtering for a specific column or all columns |
| `navigateTo` | `row: number, column?: Keys<T>, activate?: boolean` | Navigates to a specific cell |
| `getColumn` | `id: Keys<T> \| number` | Returns column configuration by field or index |

## Template Directives

### igxGridLiteHeader

Context properties:
- `$implicit` - The column configuration object
- `column` - The column configuration object

```html
<ng-template igxGridLiteHeader let-column>
<div>{{ column.header }}</div>
</ng-template>
```

### igxGridLiteCell

Context properties:
- `$implicit` - The cell value
- `value` - The cell value
- `column` - The column configuration
- `rowIndex` - The row index
- `data` - The row data object

```html
<ng-template igxGridLiteCell let-value let-data="data">
<div>{{ value }} - {{ data.otherField }}</div>
</ng-template>
```

## Related Components

- [IgxGrid](../grid/README.md) - Full-featured data grid with advanced capabilities
- [IgxTreeGrid](../tree-grid/README.md) - same-schema hierarchical or flat self-referencing data grid
- [IgxHierarchicalGrid](../hierarchical-grid/README.md) - Multi-level hierarchical schema data grid

## Additional Resources

- [Official Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid-lite/overview)
1 change: 1 addition & 0 deletions projects/igniteui-angular/grids/lite/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './src/public_api';
1 change: 1 addition & 0 deletions projects/igniteui-angular/grids/lite/ng-package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<igc-grid-lite-column
[field]="field()"
[dataType]="dataType()"
[header]="header()"
[width]="width()"
[hidden]="hidden()"
[resizable]="resizable()"
[sortable]="sortable()"
[sortingCaseSensitive]="sortingCaseSensitive()"
[sortConfiguration]="sortConfiguration()"
[filterable]="filterable()"
[filteringCaseSensitive]="filteringCaseSensitive()"
[headerTemplate]="headerTemplateFunc"
[cellTemplate]="cellTemplateFunc"
></igc-grid-lite-column>
Loading
Loading