4.0.20 • Published 7 months ago

priorics-table v4.0.20

Weekly downloads
-
License
-
Repository
github
Last release
7 months ago

Tabela Editável

Este componente de tabela foi projetado para ser flexível e personalizável, permitindo edição de valores, formatação específica (como moeda ou datas), e suporte a pesquisa e seleção de linhas. A tabela é implementada com base em um provedor de contexto, garantindo fácil manipulação de dados e estado.

Exemplo de Uso

import { Table, Head, Body, SearchBar, TableProvider } from 'priorics-table';

const columns = [
  { key: 'nmusuario', title: 'Nome', width: '50%', editable: true },
  { key: 'endereco', title: 'Endereço', width: '40%', editable: true },
  { key: 'idade', title: 'Idade', width: '10%' },
  { key: 'aniversario', title: 'Aniversário', width: '10%', date: true },
  { key: 'salario', title: 'Salário', width: '10%', money: true },
];

const values = [
  {
    data: [
      { key: 'cdpessoa', value: 1 },
      { key: 'nmusuario', value: 'Rafael Santos' },
      { key: 'endereco', value: 'Rua 1401, 100' },
      { key: 'idade', value: 23 },
      { key: 'aniversario', value: '2001-02-04' },
      { key: 'salario', value: 2400 },
    ],
  },
];

export default function EditableTable() {
  return (
    <TableProvider columns={columns} initialData={values} canSelect selectKey='cdpessoa'>
      <SearchBar filterKey='value' />
      <Table className='rounded-b-xl' scrollY>
        <Head columns={columns} />
        <Body columns={columns} />
      </Table>
    </TableProvider>
  );
}

Componentes e Props

TableProvider

  • Descrição: Provê contexto para gerenciar estado da tabela.
  • Props:

    PropDescriçãoTipoObrigatório
    columnsDados que formam as colunas da tabelaArraytrue
    initialDataDados iniciais da tabelaArraytrue
    canSelectDefine se as linhas podem ser selecionáveisBooleanfalse
    selectKeyDefine a chave que será selecionada nas linhas (Ex: ID)Stringfalse
    minPerPageMínimo de itens por página, 20 por padrãonumberfalse

Table

  • Descrição: Componente principal que encapsula a tabela.
  • Props:
PropDescriçãoTipoObrigatório
classNameEstilização da DIV que engloba a tag <table></table>Stringfalse
scrollYDefine se terá scroll na vertical ou a tabela será infinita, por padrão é falseBooleanfalse
scrollXDefine se terá scroll na horizontal ou a tabela será limitada, por padrão é falseBooleanfalse
scrollMinHeightAltura mínima para que o scroll na vertical apareça, por padrão é max-h-96Stringfalse

SearchBar

  • Descrição: Barra de pesquisa integrada.
  • Props:
PropDescriçãoTipoObrigatório
classNameEstilização da div principalStringfalse
inputClassNameEstilização do input de pesquisaStringfalse
iconClassNameEstilização do ícone do input de pesquisaStringfalse
filterKeyChave para o filtro, exemplo: value, logo, o filtro funcionará para todo value que for igual ao que o usuário escreverStringfalse
placeholderPlaceholder do input, caso queira alterar, por padrão é 'Pesquisar...'Stringfalse
iconÍcone do input de pesquisa, caso queira alterar para se enquadrar na lib de ícones utilizada pelo projetoComponentfalse
rightComponente que queira colocar à direita do input de pesquisa (Ex: Botão com Ação)Componentfalse

Head

  • Descrição: Define o cabeçalho da tabela.
  • Props:
PropDescriçãoTipoObrigatório
tHeadClassNameEstilização da tag theadStringfalse
tRowClassNameEstilização da tag trStringfalse
thClassNameEstilização da tag thStringfalse
tHeadCheckboxClassNameEstilização da tag th que engloba a Checkbox de Selecionar todas as linhasStringfalse
checkboxClassNameEstilização da Checkbox de Selecionar todas as linhasStringfalse

Body

  • Descrição: Renderiza as linhas e células da tabela.
  • Props:
PropDescriçãoTipoObrigatório
tBodyClassNameEstilização da tag tbodyStringfalse
tDataCheckboxClassNameEstilização da tag td que engloba a Checkbox de Selecionar a LinhaStringfalse
checkboxClassNameEstilização da Checkbox de Selecionar a LinhaStringfalse

Configuração das Colunas

PropDescriçãoTipoObrigatório
keyChave da ColunaString or Numbertrue
titleTítulo da ColunaStringfalse
widthLargura da ColunaStringfalse
editableDefine se o dado será editável ou nãoBooleantrue
moneyDefine se o dado terá formatação para dinheiroBooleanfalse
dateDefine se o dado terá formatação para dataBooleanfalse
personalizedDefine se o dado será renderizado em um componente personalizadoBooleanfalse
componentDefine o componente personalizadoComponentfalse
propsPassa props para o componente personalizado, por exemplo algum dado importante ou algo do tipoObjectfalse
functionsPassa funções para o componente personalizadoArrayfalse
typeTipo do input quando possível editarStringfalse
formatFormato da dataStringfalse

Exemplo de Coluna com Personalized

{
    key: 'nmusuario',
    title: 'Nome',
    personalized: true,
    component: CustomInput,
    props: { placeholder: 'Digite um nome' },
}

Estrutura dos Valores da Tabela

[
    {
        data: [
           { key: String, value: any, className: String, tDataClassName: String} ,
        ],
        tRowClassName: String;
    }
]
PropDescriçãoTipoObrigatório
dataArray com um ou mais objetos que contemplam os valores que serão mostrados na tabelaArraytrue
keyChave da LinhaString or Numbertrue
valueValor da Linhaanytrue
classNameEstilização da tag input da Linha quando editávelStringfalse
tDataClassNameEstilização da tag tdStringfalse
tRowClassNameEstilização da tag trStringfalse

Dados Importantes

Linhas Selecionadas

  • Descrição: Array com os valores selecionados referentes a selectKey
  • Exemplo:
import { useTableContext } from 'priorics-table';

const { selected } = useTableContext();
console.log(selected);

//Output: [1, 2, 3, 4, 5];

Valores Editados

  • Descrição: Array com os valores editados na Tabela
  • Exemplo:
import { useTableContext } from 'priorics-table';

const { editedData } = useTableContext();
console.log(editedData);

/* 
Output: 

[
    {
        cdpessoa: 1,
        nmusuario: 'Rafael Silva',
        endereco: 'Rua 1401, 100',
        idade: 23,
        aniversario: '2001-02-04',
        salario: 2400,
    }
];
*/

Setters

Para setar dados, o TableContext disponibiliza alguns sets para realizar as ações quando o Dev quiser, por exemplo logo após atualizar os dados, limpar o array editedData

import { useTableContext } from 'priorics-table';

const { setEditedData, setSelected, setData, page, setPage } = useTableContext();

setEditedData([]); //Zera o array de dados editados
setSelected([]); //Zera o array de linhas selecionadas
setPage(2); //Define a página atual do scroll infinito
console.log(page) //Acessa o número da página atual

const newData = [...];
setData(newData); //Define os dados da tabela com novos
4.0.19

7 months ago

4.0.20

7 months ago

4.0.5

7 months ago

4.0.4

7 months ago

4.0.10

7 months ago

4.0.7

7 months ago

4.0.6

7 months ago

4.0.1

7 months ago

4.0.0

7 months ago

4.0.3

7 months ago

4.0.2

7 months ago

4.0.16

7 months ago

4.0.15

7 months ago

4.0.18

7 months ago

4.0.17

7 months ago

4.0.12

7 months ago

4.0.11

7 months ago

4.0.14

7 months ago

4.0.13

7 months ago

4.0.9

7 months ago

4.0.8

7 months ago

3.2.1

10 months ago

3.2.0

10 months ago

3.3.1

10 months ago

3.3.0

10 months ago

3.1.0

10 months ago

3.3.2

10 months ago

1.2.0

1 year ago

1.1.1

1 year ago

1.0.2

1 year ago

1.1.0

1 year ago

1.7.3

12 months ago

1.5.5

12 months ago

1.7.2

12 months ago

1.5.4

12 months ago

1.8.0

12 months ago

1.7.1

12 months ago

1.6.2

12 months ago

1.5.3

12 months ago

1.7.0

12 months ago

1.6.1

12 months ago

1.5.2

12 months ago

1.4.3

12 months ago

1.0.7

1 year ago

1.6.0

12 months ago

1.5.1

12 months ago

1.4.2

12 months ago

1.0.6

1 year ago

1.5.0

12 months ago

1.4.1

12 months ago

1.2.3

1 year ago

1.0.5

1 year ago

1.4.0

12 months ago

1.2.2

1 year ago

1.1.3

1 year ago

1.0.4

1 year ago

1.3.0

12 months ago

1.2.1

1 year ago

1.1.2

1 year ago

1.0.3

1 year ago

2.0.0

11 months ago

3.0.3

11 months ago

3.0.2

11 months ago

3.0.1

11 months ago

3.0.0

11 months ago

1.5.8

12 months ago

1.5.7

12 months ago

1.5.6

12 months ago

1.0.1

1 year ago

1.0.0

1 year ago