{"version":3,"file":"reactTable-BTPL0BQf.js","sources":["../../../client/app/bundles/Shared/components/reactTable/reactTable.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useExpanded, useFilters, useGroupBy, usePagination, useSortBy, useTable, } from \"react-table\";\n\nimport ReactTablePagination from './reactTablePagination';\n\nimport { NumberFilterInputProps } from \"../../interfaces\";\n\nconst DEFAULT_PAGE_SIZE = 100\n\nfunction columnClassName(isSorted, isSortedDesc) {\n const defaultClassName = 'rt-th -cursor-pointer'\n if (!isSorted) { return defaultClassName }\n\n if (isSortedDesc) { return `${defaultClassName} -sort-desc` }\n\n return `${defaultClassName} -sort-asc`\n}\n\nexport const TextFilter = ({ column, setFilter, }) => {\n return (\n setFilter(column.id, event.target.value)}\n style={{ width: \"100%\" }}\n value={column.filterValue}\n />\n )\n}\n\nexport const NumberFilterInput = ({ handleChange, label, column }: NumberFilterInputProps) => {\n return (\n
\n handleChange(column.id, e.target.value)}\n placeholder={`0-5, >1, <1`}\n style={{ width: '100px', marginRight: '0.5rem' }}\n type=\"text\"\n value={column.filterValue || ''}\n />\n
\n );\n}\n\nexport const expanderColumn = {\n Header: \"\",\n id: \"expander\",\n resizable: false,\n className: \"text-center\",\n Cell: ({ row }) => {\n return (\n \n
\n •\n
\n \n );\n }\n}\n\ninterface ReactTableProps {\n columns: any[],\n data: any[],\n className?: string,\n filterable?: boolean,\n defaultPageSize?: number,\n disableSortBy?: boolean,\n currentPage?: number,\n defaultSorted?: string | { id: string, desc: boolean }[],\n onSortedChange?: (sortBy: string) => void,\n onPageChange?: (pageIndex: number) => void,\n onFiltersChange?: (filters: []) => void,\n showPagination?: boolean,\n showPaginationBottom?: boolean,\n manualFilters?: boolean,\n manualSortBy?: boolean,\n manualPagination?: boolean,\n manualPageCount?: boolean,\n minRows?: number,\n defaultGroupBy?: string,\n SubComponent?: any\n}\n\nexport const ReactTable = ({\n columns,\n data,\n className,\n filterable,\n defaultPageSize,\n currentPage,\n defaultSorted,\n disableSortBy,\n onSortedChange,\n onPageChange,\n onFiltersChange,\n showPaginationBottom,\n manualSortBy,\n manualPagination,\n manualPageCount,\n manualFilters,\n defaultGroupBy,\n SubComponent,\n}: ReactTableProps) => {\n const defaultColumn = {\n width: 'min-content',\n };\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n prepareRow,\n page,\n canPreviousPage,\n canNextPage,\n pageCount,\n gotoPage,\n state: { pageIndex, sortBy, filters }\n } = useTable(\n {\n data,\n defaultColumn,\n disableSortBy,\n manualSortBy,\n manualPagination,\n manualFilters: manualFilters,\n SubComponent,\n columns,\n autoResetSortBy: false,\n pageCount: manualPageCount,\n initialState: {\n pageIndex: currentPage || 0,\n pageSize: defaultPageSize || data.length || DEFAULT_PAGE_SIZE,\n sortBy: defaultSorted || [],\n groupBy: defaultGroupBy || [],\n filters: [],\n }\n },\n useFilters,\n useGroupBy,\n useSortBy,\n useExpanded,\n usePagination,\n );\n\n React.useEffect(() => {\n if (manualSortBy && onSortedChange) {\n onSortedChange(sortBy);\n }\n }, [sortBy]);\n\n React.useEffect(() => {\n if (manualPagination && onPageChange) {\n onPageChange(pageIndex);\n }\n }, [pageIndex]);\n\n React.useEffect(() => {\n if (manualFilters && onFiltersChange) {\n onFiltersChange(filters);\n }\n\n }, [filters]);\n\n return (\n
\n \n \n {headerGroups.map(headerGroup => (\n \n {headerGroup.headers.map(column => (\n \n
{column.render(\"Header\")}
\n
{filterable && column.canFilter ? column.render(\"Filter\") : null}
\n \n ))}\n
\n ))}\n \n \n {page.map((row, i) => {\n prepareRow(row);\n return (\n
\n
\n {row.cells.map(cell => {\n return (\n \n {cell.isAggregated ? cell.render(\"Aggregated\") : cell.render('Cell')}\n \n );\n })}\n \n {row.isExpanded && row.original && SubComponent ? SubComponent(row) : null}\n \n );\n })}\n \n
\n {showPaginationBottom && (\n \n )}\n
\n );\n};\n"],"names":["DEFAULT_PAGE_SIZE","columnClassName","isSorted","isSortedDesc","defaultClassName","TextFilter","column","setFilter","React.createElement","event","NumberFilterInput","handleChange","label","e","expanderColumn","row","ReactTable","columns","data","className","filterable","defaultPageSize","currentPage","defaultSorted","disableSortBy","onSortedChange","onPageChange","onFiltersChange","showPaginationBottom","manualSortBy","manualPagination","manualPageCount","manualFilters","defaultGroupBy","SubComponent","defaultColumn","getTableProps","getTableBodyProps","headerGroups","prepareRow","page","canPreviousPage","canNextPage","pageCount","gotoPage","pageIndex","sortBy","filters","useTable","useFilters","useGroupBy","useSortBy","useExpanded","usePagination","React.useEffect","headerGroup","i","cell","ReactTablePagination"],"mappings":"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"}