1.0.1 • Published 2 years ago

react-actiontable v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Introdução

react-actiontable

Componente React para visualização de dados em tabela. Possui suporte a paginação, busca, registros por página e fonte remota de dados. Permite a customização de ações para cada um dos registros retornados pelo endpoint ou da propriedade data. É baseado em Bootstrap 4, Superagent e FontAwesome.

Live Preview

Clique para acessar o preview

Instalação

Via NPM:

npm install react-actiontable

Utilização

import React from 'react';
import ReactDOM from 'react-dom/client';
import ActionTable from 'react-actiontable';

import "bootstrap/dist/css/bootstrap.css";
import "react-actiontable/dist/css/actiontable.css";

const root = ReactDOM.createRoot(document.getElementById('root'));

root.render(
  <React.StrictMode>
    <ActionTable 
      endpoint="http://actiontable.free.beeceptor.com"
      data={ data }
    />
  </React.StrictMode>
);

API

\<ActionTable \/>

Renderiza uma tabela para visualização e controle dos dados.

PropriedadeTipoValor PadrãoDetalhes
dataObject | ArrayundefinedObjeto que possui os detalhes dos registros a serem exibidos
data.headersArray[]Lista de Cabeçalhos para os registros
data.headers[].titleString"Coluna n"Nome da coluna referente ao cabeçalho
data.headers[].orderStringheader.titlevalor do parâmetro order, quando utilizada a utilização de fonte remota de dados
data.rowsArray Lista de Registros que serão gerenciados pela Action Table.
data.rows[].columnsArray Valores das colunas definidos na mesma sequência dos cabeçalhos
data.rows[].actionsArray Lista ações definidas para o registro
data.rows[].actions[]String | Object(vazio)Definição da ação a ser executada. Esta definição é repassada no callback onAction quando acionada
data.rows[].actions[].titleStringdata.rows[].actions[].toString()Título da ação
data.countNumberdata.rows.lengthQuantidade total de registros, considerando a filtragem e desconsiderando a paginação. Este parâmetro é utilizado para cálculo do número de páginas
endpointString | ObjectundefinedDefinição da fonte remota de dados
endpoint.urlStringendpointEndereço da fonte de dados
endpoint.methodString"get"Método de busca HTTP dos dados
langObjectActiveTable.EnUsStrings da interface
getHeadersFunction() => nullObtém os parâmetros do cabeçalho para requição dos dados do endpoint. Útil quando é necessária a autenticação via JWT
mapStateToParamsFunction({limit = 0, offset = 0, filter = '', order = '', dir = 'ASC|DESC'}) => reqParamsObtém os parâmetros da query para busca dos dados na fonte remota
mapResponseToDataFunctionresponse => response.bodyObtém o mapeamento da resposta do endpoint para formação do objeto data
onErrorFunctionerror => undefinedCallback chamado em caso de erro na busca dos dados
onActionFunction(action, update) => undefinedCallback chamado no momento do acionamento da Ação. O parâmetro update pode ser chamado assincronamente para atualização dos dados da tabela
onUpdateFunctiondata => undefinedCallback chamado quando a tabela é atualizada
onNewRecordClickFunction(update) => undefinedSe configurado, habilita o botão de criação de novo registro. O usuário deverá realizar a inclusão dos dados (no backend ou frontend) e então chamar assincronamente a função update para atualização dos dados da tabela
toolsPositionString"top" | "bottom" | "both" | "none", Padrão: "top"Configura a exibição da barra de filtro, limite, paginação e inclusão de registros

Exemplos

Exemplos Mínimos

Dados Estáticos

/* ... */
const data = [
 "Banana", "Laranja", "Limão", /* ... */
]
/* ... */
<ActionTable data={data} />
/* ... */

Dados Remotos

/* ... */
const endpoint = "http://myendpoint.com";
/* ... */
<ActionTable endpoint={endpoint} onUpdate={data => console.log(data)} />
/* ... */

Exemplo Completo

/* ... */
const data = {
  headers: [
    {
      title: "Nome",
      order: "nome"
    },
    {
      title: "E-mail",
      order: "email"
    }
  ],
  rows: [
    {
      columns: [
        "Harvey Auer DVM", "Glen.Gislason@hotmail.com"
      ]
      actions: [
        {
          title: "Edit",
          id: 1 //Parâmetro personalizado
        },
        {
          title: "Delete",
          id: 1 //Parâmetro personalizado
        }
      ]
    },
    /* ... */
  ]
  count: 99
}
/* ... */
<ActionTable 
  data={data} 
  onAction={(action, update) => asyncAction(action).then(update)}
  getActionButtonComponent={action => props => <button {...props}>{action.title}</button>}
 />
/* ... */

Licença

MIT

Autor

Luiz Alfredo Galiza alfredogaliza@gmail.com

Engenheiro da Computação formado pela Universidade Federal do Pará, trabalha há mais de 20 anos na área de programação. É oficial do Corpo de Bombeiros Militar e atualmente coordena a equipe de desenvolvimento de sistemas da Secretaria de Segurança Pública do Pará.