Intelligent GridDocumentação em português

Primeiros passos

Instalação

npm install @andmarruda/intelligent-grid sorla-db

O sorla-db (1.7.1 ou mais recente) é uma peer dependency: a grade guarda as linhas no SorlaDB, e você fornece a biblioteca.

Carregando o SorlaDB

O pacote do SorlaDB 1.0 traz um bundle para navegador que registra window.sorla. A grade o usa automaticamente:

<script src="node_modules/sorla-db/dist/sorla.min.js"></script>

Você também pode passar a classe (ou uma instância) explicitamente, que é o que se faz no Node ou em testes:

new IntelligentGrid('#grid', { sorla: window.sorla, columns, data });

Cada grade cria seu próprio banco de dados no SorlaDB (intelligent_grid_1, intelligent_grid_2…). Use a opção database para escolher o nome.

Escolha um build

Arquivo Use para
dist/index.js ES module: bundlers (Vite, webpack, esbuild) ou <script type="module">
dist/index.cjs require() do CommonJS
dist/intelligent-grid.min.js Tag <script> clássica: registra window.IntelligentGrid
dist/intelligent-grid.css / .min.css Estilos (obrigatórios)
dist/types/ Declarações TypeScript (detectadas automaticamente)
// bundler / ES module
import { IntelligentGrid } from '@andmarruda/intelligent-grid';
import '@andmarruda/intelligent-grid/styles.css';
<!-- sem bundler -->
<link rel="stylesheet" href="node_modules/@andmarruda/intelligent-grid/dist/intelligent-grid.min.css">
<script src="node_modules/sorla-db/dist/sorla.min.js"></script>
<script src="node_modules/@andmarruda/intelligent-grid/dist/intelligent-grid.min.js"></script>
<script>
  const grid = new IntelligentGrid('#grid', { columns: [...], data: [...] });
  // todos os outros exports ficam pendurados no global: IntelligentGrid.toCSV, IntelligentGrid.ERRORS...
</script>

A primeira grade

<div id="orders"></div>
import { IntelligentGrid } from '@andmarruda/intelligent-grid';

const grid = new IntelligentGrid('#orders', {
    locale: 'pt-BR',
    idField: 'id',
    editable: true,
    data: [
        { id: 1, product: 'Café', qty: 2, price: 9.5, due: '2026-11-03' },
        { id: 2, product: 'Bolo', qty: 1, price: 32, due: '2026-11-10' }
    ],
    columns: [
        { field: 'product', title: 'Produto', validate: { required: true } },
        { field: 'qty', title: 'Qtd', type: 'integer', footer: 'sum' },
        { field: 'price', title: 'Preço', type: 'currency' },
        { field: 'total', title: 'Total', type: 'currency', formula: '=[@qty]*[@price]', footer: 'sum' },
        { field: 'due', title: 'Vencimento', type: 'date' }
    ]
});

grid.on('cellChange', event => api.save(event.detail.row));

O que você ganha logo de cara:

Regras dos dados

Próximo: Colunas · Opções da grade · Exemplos

Editar esta página no GitHub