import { fade, makeStyles } from '@material-ui/core/styles'; import IconButton from '@material-ui/core/IconButton'; import KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'; import KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'; import ErrorOutline from '@material-ui/icons/ErrorOutline'; import Paper from '@material-ui/core/Paper'; import InputBase from '@material-ui/core/InputBase'; import Skeleton from '@material-ui/lab/Skeleton'; import gql from 'graphql-tag'; import React, { useState, useEffect, useRef } from 'react'; import { useQuery } from '@apollo/react-hooks'; import { useLocation, useHistory, Link } from 'react-router-dom'; import BugRow from './BugRow'; import List from './List'; import FilterToolbar from './FilterToolbar'; const useStyles = makeStyles(theme => ({ main: { maxWidth: 800, margin: 'auto', marginTop: theme.spacing(4), marginBottom: theme.spacing(4), overflow: 'hidden', }, pagination: { ...theme.typography.overline, display: 'flex', alignItems: 'center', justifyContent: 'center', }, header: { display: 'flex', padding: theme.spacing(2), '& > h1': { ...theme.typography.h6, margin: theme.spacing(0, 2), }, alignItems: 'center', justifyContent: 'space-between', }, search: { borderRadius: theme.shape.borderRadius, borderColor: fade(theme.palette.primary.main, 0.2), borderStyle: 'solid', borderWidth: '1px', backgroundColor: fade(theme.palette.primary.main, 0.05), padding: theme.spacing(0, 1), width: ({ searching }) => (searching ? '20rem' : '15rem'), transition: theme.transitions.create(), }, searchFocused: { borderColor: fade(theme.palette.primary.main, 0.4), backgroundColor: theme.palette.background.paper, width: '20rem!important', }, placeholderRow: { padding: theme.spacing(1), borderBottomColor: theme.palette.grey['300'], borderBottomWidth: '1px', borderBottomStyle: 'solid', display: 'flex', alignItems: 'center', }, placeholderRowStatus: { margin: theme.spacing(1, 2), }, placeholderRowText: { flex: 1, }, message: { ...theme.typography.h5, padding: theme.spacing(8), textAlign: 'center', borderBottomColor: theme.palette.grey['300'], borderBottomWidth: '1px', borderBottomStyle: 'solid', '& > p': { margin: '0', }, }, errorBox: { color: theme.palette.error.main, '& > pre': { fontSize: '1rem', textAlign: 'left', backgroundColor: theme.palette.grey['900'], color: theme.palette.common.white, marginTop: theme.spacing(4), padding: theme.spacing(2, 3), }, }, })); const QUERY = gql` query( $first: Int $last: Int $after: String $before: String $query: String ) { defaultRepository { bugs: allBugs( first: $first last: $last after: $after before: $before query: $query ) { totalCount edges { cursor node { ...BugRow } } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } } } } ${BugRow.fragment} `; function editParams(params, callback) { const cloned = new URLSearchParams(params.toString()); callback(cloned); return cloned; } // TODO: factor this out const Placeholder = ({ count }) => { const classes = useStyles(); return ( <> {new Array(count).fill(null).map((_, i) => (
No results matched your search.
There was an error while fetching bug.
{error.message}
{JSON.stringify(error, null, 2)}