lithos-grid
v0.1.0
Published
**LithosGrid** é uma biblioteca de DataGrid de alta performance para Angular 18+, arquitetada com o poder do **WebAssembly (C++)** e **Web Workers**. Desenvolvida para aplicações empresariais que precisam renderizar, filtrar e manipular milhões de registr
Readme
LithosGrid v0.1.0 🚀
LithosGrid é uma biblioteca de DataGrid de alta performance para Angular 18+, arquitetada com o poder do WebAssembly (C++) e Web Workers. Desenvolvida para aplicações empresariais que precisam renderizar, filtrar e manipular milhões de registros de dados no navegador a cravados 60 FPS, sem travar a interface.
Principais Recursos
- 🚀 Motor WASM Nativo: Ordenação, Pesquisa Full-Text e Paginação ocorrem em memória bruta via C++.
- 🧵 Web Worker Dedicado: A interface (Main Thread) nunca bloqueia, garantindo animações e rolagem ultra suaves.
- ♻️ Virtual Scrolling: Arquitetura de renderização vertical (DOM Recycling).
- 📝 Edição Inline Dinâmica: Geração de forms de edição diretamente por um Schema JSON flexível.
- 🛡️ Validação de Formulários: Regras (
pattern,minLength,required) testadas em tempo real na própria célula. - ✨ Fill Handle (Excel-like): Edição em lote arrastando o mouse para preencher múltiplas linhas de uma vez.
- 🖱️ Drag & Drop de Cabeçalhos: Reordene e redimensione colunas dinamicamente (Resizing e Reorder).
- 🧩 Zero-Config WASM: O binário
.wasmjá vai embutido em Base64 dentro da biblioteca. Apenas instale e use!
Instalação
npm install lithos-gridUso Básico
Basta importar o componente e alimentar com um Schema JSON e um Array de Objetos:
import { Component } from '@angular/core';
import { DgpGridComponent, GridSchema } from 'lithos-grid';
@Component({
selector: 'app-root',
standalone: true,
imports: [DgpGridComponent],
template: `
<div style="width: 100%; height: 600px;">
<dgp-grid [schema]="mySchema" [data]="myData"></dgp-grid>
</div>
`
})
export class AppComponent {
mySchema: GridSchema = {
fields: [
{ name: 'id', type: 'number', label: 'ID', width: 80, readonly: true },
{ name: 'name', type: 'string', label: 'Nome Completo', width: 200 },
{
name: 'email',
type: 'email',
label: 'E-mail',
validations: { required: true, pattern: '^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$' }
}
]
};
myData = [
{ id: 1, name: 'João Silva', email: '[email protected]' },
// ... adicione milhões de linhas
];
}Arquitetura de Validadores (JSON)
Você pode passar regras avançadas no objeto validations de cada Field:
{
"name": "password",
"type": "password",
"label": "Senha",
"validations": {
"minLength": 8,
"pattern": "^(?=(.*[a-z]){1,})(?=(.*[A-Z]){1,})(?=(.*\\d){1,})(?=(.*[\\W_]){1,}).{8,}$",
"required": true
}
}Desenvolvido para máxima performance e UX Premium.
