@eureca/eureca-ui
Version:
UI component library of Eureca's user and admin apps
79 lines (71 loc) • 1.94 kB
JavaScript
import React from 'react';
import Faker from 'faker/locale/pt_BR';
import { Avatar } from '../../Avatar';
import { TableMenu } from '../../TableMenu';
import { stableSort } from '../../Table/table-sorting';
import { format } from 'date-fns/esm';
const options = [
{ id: 0, label: 'Ver detalhes', onClick: () => console.log("Clicou 'Salvar Detalhes'") },
{ id: 1, label: 'Enviar-email', onClick: () => console.log("Clicou 'Enviar Email'") },
];
function createData({ id, avatarUrl, email, access, expiration, invitation }) {
return {
id,
avatar: <Avatar name="avatar" size={40} src={avatarUrl} />,
email,
access,
expiration: format(expiration, 'dd/MM/yyyy'),
invitation,
menu: <TableMenu options={options} />,
};
}
const rawData = [...Array(4).keys()].map(() => ({
id: Faker.random.number(),
avatarUrl: Faker.image.avatar(),
email: Faker.name.findName(),
access: Faker.random.arrayElement(['Administrador', 'Editor', 'Avaliador', 'Observador']),
expiration: Faker.date.between('2019-01-01', '2022-01-01'),
invitation: Faker.random.arrayElement(['Ativo', 'Pendente']),
}));
const basicContent = rawData.map(d => createData(d));
const basicColumns = [
{
id: 'id',
skip: true,
},
{
id: 'avatar',
numeric: false,
disablePadding: true,
sortable: false,
label: '',
style: { width: 40 },
},
{
id: 'email',
numeric: false,
disablePadding: false,
label: 'Email',
},
{
id: 'access',
numeric: false,
disablePadding: false,
label: 'Tipo de Acesso',
},
{
id: 'expiration',
numeric: false,
disablePadding: false,
label: 'Expira em',
},
{
id: 'invitation',
numeric: false,
disablePadding: false,
label: 'Convite',
sortFn: (d, cmp) => stableSort(rawData, cmp).map(d => createData(d)),
},
{ id: 'menu', numeric: false, label: '' },
];
export { basicColumns, basicContent };