Intelligent GridDocumentação em português

TypeScript

O pacote é escrito em TypeScript e inclui as declarações (dist/types). Tudo é tipado, inclusive as definições de coluna, o modelo de filtro, os eventos e as funções de fórmula.

import { IntelligentGrid } from '@andmarruda/intelligent-grid';
import type { ColumnDefinition, GridOptions, FilterModel, SortEntry, Row, CellChangeDetail, GridEvent, CustomEditor, FormulaFunction } from '@andmarruda/intelligent-grid';

interface Order {
    id: number;
    product: string;
    qty: number;
    price: number;
}

const columns: ColumnDefinition[] = [
    { field: 'product', validate: { required: true } },
    { field: 'qty', type: 'integer', footer: 'sum' },
    { field: 'price', type: 'currency' },
    { field: 'total', type: 'currency', formula: '=[@qty]*[@price]' }
];

const orders: Order[] = await api.orders();
const grid = new IntelligentGrid('#orders', { columns, data: orders as unknown as Record<string, unknown>[], idField: 'id' });

grid.on('cellChange', (event: GridEvent<CellChangeDetail>) => {
    const row = event.detail.row as (Row & Order) | null;
    if (row) api.save(row);
});

const filters: FilterModel = { qty: { conditions: [{ op: 'gte', value: 10 }] } };
grid.setFilters(filters);

As linhas são registros sem tipo (Row = { _id: string; [field: string]: unknown }) porque as colunas, os campos calculados e o _id só são conhecidos em tempo de execução. Faça o cast para a sua própria interface onde você os lê.

Tipos principais

Tipo Descrição
GridOptions Opções do construtor
ColumnDefinition / Column A coluna como você a escreve / depois de aplicados os padrões
ColumnType 'text' | 'number' | 'integer' | 'currency' | 'percent' | 'date' | 'datetime' | 'boolean' | 'select'
Row, RowData Registros de linha (_id + campos)
Filter, FilterModel, FilterCondition, FilterOperator Modelo de filtro
SortEntry { field, dir: 'asc' | 'desc' }
SelectionOptions, NavbarOptions, NavbarItem, AppendOptions, AppendLoadParams, AppendResult Opções de recursos
CsvExportOptions, XlsxExportOptions Opções de exportação
CellChangeDetail, GridEvent<T>, GridEventHandler Eventos
CustomEditor, EditorContext, EditorInstance Editores personalizados
ValidationRules, ValidationFunction, ConditionalFormat Regras de coluna
FormulaFunction, LazyFormulaFunction, FunctionContext, FormulaValue, AstNode, EvaluationContext Motor de fórmulas
SetCellResult, DistinctValue Resultados de métodos
ConfirmRequest Solicitação do modal de confirmação
QueryNode, QueryGroup, QueryRule, QueryOperator Modelo do filtro avançado
ChangeSet, InsertedRow, UpdatedRow, DeletedRow, FieldChange, ChangeSummary, HistoryEntry, ChangeTrackingOptions Rastreamento de alterações

As funções personalizadas recebem argumentos tipados a partir das sobrecargas de defineFunction / registerFunction:

IntelligentGrid.defineFunction('VAT', ([value]) => typeof value === 'number' ? value * 0.2 : null);

Editar esta página no GitHub