DVD ‐ Dispo View Data - Dispo-Empresa/Dispo-Client GitHub Wiki

Datatable simples

image

Parâmetros

  • rowClick - Habilita o click nas linhas, elas ativam a checkbox caso tenha
  • noDataMessage - Mensagem que aparece DataTable caso não tenha resultados
  • showCheckbox - Habilita a checkbox em cada linha
  • rowsPerPage - Array numérica para identificar as opções de quantidade de linhas por página
  • columns - Colunas que compõem a Datatable
  • data - Registros que compõem a Datatable
  • loading - Habilita o loading assincrono da Datatable
  • customButtons - Botões customizáveis que vão ficar na coluna Ações
  • selectedItens - Itens selecionados que podem ser obtidos ao selecionar os itens nas checkbox
  • setSelectedItens - Set dos itens selecionados
  • onDeleteButton - Ação que vai ser executada ao clicar no botão Delete, caso não tenha, o botão não aparecerá
  • onViewButton - Ação que vai ser executada ao clicar no botão View, caso não tenha, o botão não aparecerá

image

Exemplo

import React, { useState } from "react";

import useFetch from "../../../hooks/useFetchApi";
import Datatable from "../../../components/structured/datatable/Datatable";
import ContentPage from "../../../layouts/content/ContentPage";
import ButtonGroup from "../../../components/ui/buttons/group/ButtonGroup";
import { ENDPOINTS } from "../../../utils/constants/endpoints";
import { QueryDataButton } from "../../../components/ui/buttons/icons/IconButton";

function ProductQueryCard() {
  const [selectedProducts, setSelectedProducts] = useState(null);
  const { data, loading } = useFetch(ENDPOINTS.products.getAll);

  const columns = [
    { field: "name", header: "Nome", minWidth: "350px" },
    { field: "purchasePrice", header: "Preço de compra" },
    { field: "salePrice", header: "Preço de venda" },
    { field: "category", header: "Categoria" },
    { field: "unitOfMeasurement", header: "Unidade de Peso" },
  ];

  const customButtons = (row) => { // <--- Padrão para botões personalizados
    return (
      <ButtonGroup>
        <QueryDataButton
          onClick={() => {
            alert(row.id);
          }}
        />
      </ButtonGroup>
    );
  };

  const deleteTest = (row) => {
    alert("Deletando: " + row.id);
  };

  const viewTest = (row) => {
    alert("Vendo: " + row.id);
  };

  return (
    <ContentPage title="Produtos">
      <Datatable
        noDataMessage="Produtos não encontrados"
        showCheckbox
        rowsPerPage={[5, 10, 25]}
        columns={columns}
        data={data}
        loading={loading}
        //customButtons={customButtons}
        setSelectedItens={setSelectedProducts}
        selectedItens={selectedProducts}
        onDeleteButton={deleteTest}
        onViewButton={viewTest}
      />
    </ContentPage>
  );
}

export default ProductQueryCard;

https://primereact.org/datatable/ https://primereact.org/theming/ https://designer.primereact.org/#/