import React, { useEffect, useState } from 'react' import { Button } from '../components/Button' import { format } from 'date-fns' import CodeIcon from '@mui/icons-material/Code' import CreateIcon from '@mui/icons-material/Create' import UncontrolledTable from '../components/UncontrolledTable/UncontrolledTable' import { TableButton } from '../components/UncontrolledTable/interface' const Template = (args) => { return } export default { title: 'Uncontrolled/Table', component: Template, tags: ['autodocs'], parameters: { layout: 'centered', backgrounds: { default: 'gray', values: [ { name: 'gray', value: '#f8f8f8', }, ], }, }, argTypes: {}, } const columns = [ { header: 'Data', accessorKey: 'date', type: 'date', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'duration', type: 'number', enableColumnFilter: true, filterFn: 'customFilterText', width: '150px', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'campaign', type: 'string', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'campaign', type: 'string', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'campaign', type: 'string', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'campaign', type: 'string', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Confiança da transcrição da conversa', accessorKey: 'campaign', type: 'string', enableColumnFilter: true, filterFn: 'customFilterText', }, { header: 'Ação', accessorKey: 'action', type: 'action', enableColumnFilter: false, filterFn: 'customFilterText', disableMenu: true, }, ] const dnd_columns = [ { header: 'Data', accessorKey: 'date', type: 'date', enableColumnFilter: false, filterFn: 'customFilterText', }, { header: 'Duração', accessorKey: 'duration', type: 'number', enableColumnFilter: false, filterFn: 'customFilterText', }, { header: 'Campanha', accessorKey: 'campaign', type: 'string', enableColumnFilter: false, filterFn: 'customFilterText', }, { header: 'Ação', accessorKey: 'action', type: 'action', enableColumnFilter: false, filterFn: 'customFilterText', }, ] export const Default = (args) => { const data = [ { date: format(new Date('8-14-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 1', agent: 'Maggie Leach', dnis: 'dnis', disposition: 'Disposition 1', origin: 'origin', id: '1', action: ( ), }, { date: format(new Date('8-13-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 2', agent: 'Christina Harris', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 2', origin: 'origin', id: '2', action: ( ), }, { date: format(new Date('8-12-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 3', agent: 'Alexia Crawford', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 3', origin: 'origin', id: '3', action: ( ), }, { date: format(new Date('8-11-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 4', agent: 'Robyn Phillips', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 4', origin: 'origin', id: '4', action: ( ), }, { date: format(new Date('8-10-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 5', agent: 'Bruce Robinson', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 5', origin: 'origin', id: '5', action: ( ), }, { date: format(new Date('8-9-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 6', agent: 'Sophia Fletcher', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 6', origin: 'origin', id: '6', action: ( ), }, { date: format(new Date('8-8-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 7', agent: 'Blanca Roberts', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 7', origin: 'origin', id: '7', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, ] const [hiddenColumns, setHiddenColumns] = useState(() => JSON.parse(localStorage.getItem('hiddenColumns') || '[]'), ) const handleColumnVisibilityChange = (columnId: string, isVisible: boolean) => { setHiddenColumns((prevHiddenColumns) => { const updatedHiddenColumns = isVisible ? prevHiddenColumns.filter((col) => col !== columnId) : [...prevHiddenColumns, columnId] localStorage.setItem('hiddenColumns', JSON.stringify(updatedHiddenColumns)) return updatedHiddenColumns }) } useEffect(() => { console.info('Colunas escondidas ao carregar:::', hiddenColumns) }, [hiddenColumns]) return ( <> console.log('onClick line:', value)} onMouseOver={(value) => console.log('onMouseOver line:', value)} onMouseOut={(value) => console.log('onMouseOut line:', value)} pagination={{ pageIndex: 1, pageSize: 10, }} totalPages={10} labels={{ orderAsc: 'orderAsc', }} tableClassName="table" sticky={{ enabled: true, top: 0, }} hideColumns={hiddenColumns} onColumnVisibilityChange={handleColumnVisibilityChange} onChangePage={(pagination) => console.log('onChangePage', pagination)} onFilterClick={(column) => console.log('onFilterClick', column)} onSortClick={(column, direction) => console.log('onSortClick', column, direction)} {...args} /> ) } Default.args = {} export const RowDnd = (args) => { const [data, setData] = useState([ { date: format(new Date('8-14-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 1', agent: 'Maggie Leach', dnis: 'dnis', disposition: 'Disposition 1', origin: 'origin', id: '1', action: ( ), }, { date: format(new Date('8-13-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 2', agent: 'Christina Harris', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 2', origin: 'origin', id: '2', action: ( ), }, { date: format(new Date('8-12-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 3', agent: 'Alexia Crawford', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 3', origin: 'origin', id: '3', action: ( ), }, { date: format(new Date('8-11-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 4', agent: 'Robyn Phillips', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 4', origin: 'origin', id: '4', action: ( ), }, { date: format(new Date('8-10-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 5', agent: 'Bruce Robinson', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 5', origin: 'origin', id: '5', action: ( ), }, { date: format(new Date('8-9-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 6', agent: 'Sophia Fletcher', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 6', origin: 'origin', id: '6', action: ( ), }, { date: format(new Date('8-8-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 7', agent: 'Blanca Roberts', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 7', origin: 'origin', id: '7', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '55', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '9', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '10', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '11', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '12', action: ( ), }, ]) return ( <> setData(data)} {...args} /> ) } RowDnd.args = {} export const ExtraMenu = (args) => { const data = [ { date: format(new Date('8-14-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 10', agent: 'Maggie Leach', dnis: 'dnis', disposition: 'Disposition 1', origin: 'origin', id: '1', action: ( ), }, { date: format(new Date('8-13-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 2', agent: 'Christina Harris', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 2', origin: 'origin', id: '2', action: ( ), }, { date: format(new Date('8-12-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 3', agent: 'Alexia Crawford', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 3', origin: 'origin', id: '3', action: ( ), }, { date: format(new Date('8-11-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 4', agent: 'Robyn Phillips', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 4', origin: 'origin', id: '4', action: ( ), }, { date: format(new Date('8-10-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 5', agent: 'Bruce Robinson', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 5', origin: 'origin', id: '5', action: ( ), }, { date: format(new Date('8-9-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 6', agent: 'Sophia Fletcher', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 6', origin: 'origin', id: '6', action: ( ), }, { date: format(new Date('8-8-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 7', agent: 'Blanca Roberts', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 7', origin: 'origin', id: '7', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, { date: format(new Date('8-7-2023 21:29'), 'dd/MM/yyyy'), duration: 60, campaign: 'Campaign 8', agent: 'Peter Warburton', ani: 'ani', dnis: 'dnis', disposition: 'Disposition 8', origin: 'origin', id: '8', action: ( ), }, ] const menus: TableButton[] = [ { render: () => Menu, onClick: () => console.log('Menu clicked'), disabled: true, }, { render: () => Agrupar, list: { options: [ { id: 'groupByCampaign', label:
OK Agrupar por campanha
, onClick: (id) => console.log('Agrupar por campanha', id), }, { id: 'groupByDate', label: 'Agrupar por data', onClick: (id) => console.log('Agrupar por data', id), }, ], closeOnClick: true, }, }, ] return ( <> ) } ExtraMenu.args = {}