add SearchInput/UsersPage's TableToolbar
This commit is contained in:
parent
970d962ca5
commit
ff3636542c
6
.babelrc
6
.babelrc
|
@ -30,7 +30,11 @@
|
|||
"validator": {
|
||||
"transform": "validator/lib/${member}",
|
||||
"preventFullImport": true
|
||||
}
|
||||
},
|
||||
"react-use": {
|
||||
"transform": "react-use/lib/${member}",
|
||||
"preventFullImport": true
|
||||
},
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
"react-hook-form": "^6.15.4",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-scripts": "4.0.3",
|
||||
"react-use": "^17.2.1",
|
||||
"typescript": "^4.1.2",
|
||||
"use-debounce": "^5.2.1",
|
||||
"use-query-params": "^1.2.0",
|
||||
"web-vitals": "^1.0.1"
|
||||
},
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
import React, { useRef } from 'react';
|
||||
|
||||
import {
|
||||
TextField,
|
||||
InputAdornment,
|
||||
IconButton,
|
||||
TextFieldProps,
|
||||
} from '@material-ui/core';
|
||||
import { Search as SearchIcon, Close as CloseIcon } from '@material-ui/icons';
|
||||
|
||||
export type SearchInputProps = TextFieldProps & {
|
||||
onResetValue?: () => void;
|
||||
};
|
||||
|
||||
function SearchInput({ value, onResetValue, ...rest }: SearchInputProps) {
|
||||
const input = useRef<HTMLInputElement | null>(null);
|
||||
|
||||
return (
|
||||
<TextField
|
||||
{...rest}
|
||||
value={value}
|
||||
inputRef={input}
|
||||
InputProps={{
|
||||
startAdornment: (
|
||||
<InputAdornment
|
||||
position="start"
|
||||
onClick={() => {
|
||||
if (input.current) {
|
||||
input.current.focus();
|
||||
}
|
||||
}}
|
||||
>
|
||||
<SearchIcon />
|
||||
</InputAdornment>
|
||||
),
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<IconButton
|
||||
size="small"
|
||||
type="button"
|
||||
disabled={typeof value === 'string' && value === ''}
|
||||
onClick={() => {
|
||||
if (!value && input.current) {
|
||||
input.current.value = '';
|
||||
}
|
||||
if (onResetValue) {
|
||||
onResetValue();
|
||||
}
|
||||
}}
|
||||
>
|
||||
<CloseIcon />
|
||||
</IconButton>
|
||||
</InputAdornment>
|
||||
),
|
||||
...(rest.InputProps ?? {}),
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default SearchInput;
|
|
@ -1,29 +1,60 @@
|
|||
import useUsers from './UsersPage.useUsers';
|
||||
import { NumberParam, useQueryParams, withDefault } from 'use-query-params';
|
||||
import {
|
||||
NumberParam,
|
||||
useQueryParams,
|
||||
withDefault,
|
||||
StringParam,
|
||||
} from 'use-query-params';
|
||||
import SortParam, { decodeSort } from 'libs/serialize-query-params/SortParam';
|
||||
import { validateRowsPerPage } from 'common/Table/helpers';
|
||||
import { DEFAULT_SORT, COLUMNS } from './constants';
|
||||
|
||||
import { Container, Paper } from '@material-ui/core';
|
||||
import { Container, IconButton, Paper } from '@material-ui/core';
|
||||
import { Edit as EditIcon } from '@material-ui/icons';
|
||||
import Table from 'common/Table/Table';
|
||||
import TableToolbar from './components/TableToolbar/TableToolbar';
|
||||
|
||||
const UsersPage = () => {
|
||||
const [{ page, sort, ...rest }, setQueryParams] = useQueryParams({
|
||||
const [{ page, sort, search, ...rest }, setQueryParams] = useQueryParams({
|
||||
limit: NumberParam,
|
||||
page: withDefault(NumberParam, 0),
|
||||
sort: withDefault(SortParam, DEFAULT_SORT),
|
||||
search: withDefault(StringParam, ''),
|
||||
});
|
||||
const limit = validateRowsPerPage(rest.limit);
|
||||
const { users, total, loading } = useUsers(page, limit, sort.toString());
|
||||
const { users, total, loading } = useUsers(
|
||||
page,
|
||||
limit,
|
||||
sort.toString(),
|
||||
search
|
||||
);
|
||||
console.log(users);
|
||||
|
||||
return (
|
||||
<Container>
|
||||
<Paper>
|
||||
<TableToolbar
|
||||
search={search}
|
||||
onChangeSearchValue={val => {
|
||||
setQueryParams({ page: 0, search: val });
|
||||
}}
|
||||
/>
|
||||
<Table
|
||||
selection
|
||||
columns={COLUMNS}
|
||||
data={users}
|
||||
actions={[
|
||||
{
|
||||
icon: row => {
|
||||
return (
|
||||
<IconButton>
|
||||
<EditIcon />
|
||||
</IconButton>
|
||||
);
|
||||
},
|
||||
tooltip: 'Edytuj',
|
||||
},
|
||||
]}
|
||||
loading={loading}
|
||||
orderBy={sort.orderBy}
|
||||
orderDirection={sort.orderDirection}
|
||||
|
|
|
@ -2,7 +2,12 @@ import { useQuery } from '@apollo/client';
|
|||
import { QUERY_USERS } from './queries';
|
||||
import { Query, QueryUsersArgs } from 'libs/graphql/types';
|
||||
|
||||
const useUsers = (page: number, limit: number, sort: string) => {
|
||||
const useUsers = (
|
||||
page: number,
|
||||
limit: number,
|
||||
sort: string,
|
||||
search: string
|
||||
) => {
|
||||
const { data, loading } = useQuery<Pick<Query, 'users'>, QueryUsersArgs>(
|
||||
QUERY_USERS,
|
||||
{
|
||||
|
@ -11,6 +16,12 @@ const useUsers = (page: number, limit: number, sort: string) => {
|
|||
offset: page * limit,
|
||||
sort: [sort],
|
||||
limit,
|
||||
filter: {
|
||||
or: {
|
||||
displayNameIEQ: '%' + search + '%',
|
||||
emailIEQ: '%' + search + '%',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import React, { useState } from 'react';
|
||||
import { useDebounce } from 'react-use';
|
||||
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
import { IconButton, Tooltip } from '@material-ui/core';
|
||||
import { Add as AddIcon } from '@material-ui/icons';
|
||||
import BaseTableToolbar from 'common/Table/TableToolbar';
|
||||
import SearchInput from 'common/Form/SearchInput';
|
||||
|
||||
export interface TableToolbarProps {
|
||||
search: string;
|
||||
onChangeSearchValue: (search: string) => void;
|
||||
}
|
||||
|
||||
const TableToolbar = ({ search, onChangeSearchValue }: TableToolbarProps) => {
|
||||
const classes = useStyles();
|
||||
const [_search, setSearch] = useState<string>(search);
|
||||
useDebounce(
|
||||
() => {
|
||||
onChangeSearchValue(_search);
|
||||
},
|
||||
500,
|
||||
[_search]
|
||||
);
|
||||
|
||||
return (
|
||||
<BaseTableToolbar className={classes.toolbar}>
|
||||
<SearchInput
|
||||
value={_search}
|
||||
onChange={e => {
|
||||
setSearch(e.target.value);
|
||||
}}
|
||||
onResetValue={() => {
|
||||
setSearch('');
|
||||
}}
|
||||
/>
|
||||
<Tooltip title="Utwórz użykownika">
|
||||
<IconButton>
|
||||
<AddIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
</BaseTableToolbar>
|
||||
);
|
||||
};
|
||||
|
||||
const useStyles = makeStyles(theme => ({
|
||||
toolbar: {
|
||||
justifyContent: 'flex-end',
|
||||
'& > *:not(:last-child)': {
|
||||
marginRight: theme.spacing(0.5),
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
export default TableToolbar;
|
|
@ -9,33 +9,47 @@ export type Scalars = {
|
|||
Boolean: boolean;
|
||||
Int: number;
|
||||
Float: number;
|
||||
Time: any;
|
||||
Upload: any;
|
||||
Time: any;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
export type QuestionInput = {
|
||||
content?: Maybe<Scalars['String']>;
|
||||
from?: Maybe<Scalars['String']>;
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer?: Maybe<Answer>;
|
||||
qualificationID?: Maybe<Scalars['Int']>;
|
||||
image?: Maybe<Scalars['Upload']>;
|
||||
deleteImage?: Maybe<Scalars['Boolean']>;
|
||||
answerA?: Maybe<Answer>;
|
||||
answerAImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerAImage?: Maybe<Scalars['Boolean']>;
|
||||
answerB?: Maybe<Answer>;
|
||||
answerBImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerBImage?: Maybe<Scalars['Boolean']>;
|
||||
answerC?: Maybe<Answer>;
|
||||
answerCImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerCImage?: Maybe<Scalars['Boolean']>;
|
||||
answerD?: Maybe<Answer>;
|
||||
answerDImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type ProfessionFilter = {
|
||||
|
@ -56,11 +70,24 @@ export type ProfessionFilter = {
|
|||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
export type Question = {
|
||||
id: Scalars['ID'];
|
||||
from?: Maybe<Scalars['String']>;
|
||||
content: Scalars['String'];
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer: Answer;
|
||||
image?: Maybe<Scalars['String']>;
|
||||
answerA?: Maybe<Answer>;
|
||||
answerAImage?: Maybe<Scalars['String']>;
|
||||
answerB?: Maybe<Answer>;
|
||||
answerBImage?: Maybe<Scalars['String']>;
|
||||
answerC?: Maybe<Answer>;
|
||||
answerCImage?: Maybe<Scalars['String']>;
|
||||
answerD?: Maybe<Answer>;
|
||||
answerDImage?: Maybe<Scalars['String']>;
|
||||
qualification?: Maybe<Qualification>;
|
||||
createdAt: Scalars['Time'];
|
||||
updatedAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
|
||||
|
@ -69,19 +96,16 @@ export type QualificationList = {
|
|||
items?: Maybe<Array<Qualification>>;
|
||||
};
|
||||
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
};
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user'
|
||||
}
|
||||
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QualificationFilter = {
|
||||
|
@ -110,58 +134,12 @@ export type QualificationFilter = {
|
|||
or?: Maybe<QualificationFilterOr>;
|
||||
};
|
||||
|
||||
export type UserList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<User>>;
|
||||
};
|
||||
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd'
|
||||
}
|
||||
|
||||
export type QuestionInput = {
|
||||
content?: Maybe<Scalars['String']>;
|
||||
from?: Maybe<Scalars['String']>;
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer?: Maybe<Answer>;
|
||||
qualificationID?: Maybe<Scalars['Int']>;
|
||||
image?: Maybe<Scalars['Upload']>;
|
||||
deleteImage?: Maybe<Scalars['Boolean']>;
|
||||
answerA?: Maybe<Answer>;
|
||||
answerAImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerAImage?: Maybe<Scalars['Boolean']>;
|
||||
answerB?: Maybe<Answer>;
|
||||
answerBImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerBImage?: Maybe<Scalars['Boolean']>;
|
||||
answerC?: Maybe<Answer>;
|
||||
answerCImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerCImage?: Maybe<Scalars['Boolean']>;
|
||||
answerD?: Maybe<Answer>;
|
||||
answerDImage?: Maybe<Scalars['Upload']>;
|
||||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user'
|
||||
}
|
||||
|
||||
export type Qualification = {
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
code: Scalars['String'];
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
|
@ -174,13 +152,79 @@ export type QualificationInput = {
|
|||
dissociateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
};
|
||||
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UserList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<User>>;
|
||||
};
|
||||
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type ProfessionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Profession>>;
|
||||
};
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd'
|
||||
}
|
||||
|
||||
export type QuestionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Question>>;
|
||||
};
|
||||
|
||||
export type QuestionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
from?: Maybe<Array<Scalars['String']>>;
|
||||
contentIEQ?: Maybe<Scalars['String']>;
|
||||
contentMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationIDNEQ?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationFilter?: Maybe<QualificationFilter>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
};
|
||||
|
||||
export type UserWithToken = {
|
||||
|
@ -188,73 +232,6 @@ export type UserWithToken = {
|
|||
user: User;
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['Int'];
|
||||
};
|
||||
|
||||
export type Mutation = {
|
||||
createProfession?: Maybe<Profession>;
|
||||
updateProfession?: Maybe<Profession>;
|
||||
|
@ -349,61 +326,84 @@ export type MutationSignInArgs = {
|
|||
staySignedIn?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type QuestionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Question>>;
|
||||
};
|
||||
|
||||
export type QuestionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
from?: Maybe<Array<Scalars['String']>>;
|
||||
contentIEQ?: Maybe<Scalars['String']>;
|
||||
contentMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationIDNEQ?: Maybe<Array<Scalars['Int']>>;
|
||||
qualificationFilter?: Maybe<QualificationFilter>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type ProfessionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Profession>>;
|
||||
};
|
||||
|
||||
export type Question = {
|
||||
export type Qualification = {
|
||||
id: Scalars['ID'];
|
||||
from?: Maybe<Scalars['String']>;
|
||||
content: Scalars['String'];
|
||||
explanation?: Maybe<Scalars['String']>;
|
||||
correctAnswer: Answer;
|
||||
image?: Maybe<Scalars['String']>;
|
||||
answerA?: Maybe<Answer>;
|
||||
answerAImage?: Maybe<Scalars['String']>;
|
||||
answerB?: Maybe<Answer>;
|
||||
answerBImage?: Maybe<Scalars['String']>;
|
||||
answerC?: Maybe<Answer>;
|
||||
answerCImage?: Maybe<Scalars['String']>;
|
||||
answerD?: Maybe<Answer>;
|
||||
answerDImage?: Maybe<Scalars['String']>;
|
||||
qualification?: Maybe<Qualification>;
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
code: Scalars['String'];
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
updatedAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['Int']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['Int'];
|
||||
};
|
||||
|
|
172
yarn.lock
172
yarn.lock
|
@ -2537,6 +2537,11 @@
|
|||
jest-diff "^26.0.0"
|
||||
pretty-format "^26.0.0"
|
||||
|
||||
"@types/js-cookie@^2.2.6":
|
||||
version "2.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f"
|
||||
integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==
|
||||
|
||||
"@types/js-yaml@^3.12.5":
|
||||
version "3.12.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.6.tgz#7f10c926aa41e189a2755c4c7fcf8e4573bd7ac1"
|
||||
|
@ -3018,6 +3023,11 @@
|
|||
dependencies:
|
||||
tslib "^1.14.1"
|
||||
|
||||
"@xobotyi/scrollbar-width@^1.9.5":
|
||||
version "1.9.5"
|
||||
resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d"
|
||||
integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==
|
||||
|
||||
"@xtuc/ieee754@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
|
||||
|
@ -4637,6 +4647,13 @@ copy-descriptor@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
|
||||
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
||||
|
||||
copy-to-clipboard@^3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
|
||||
integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==
|
||||
dependencies:
|
||||
toggle-selection "^1.0.6"
|
||||
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.8.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56"
|
||||
|
@ -4817,6 +4834,14 @@ css-has-pseudo@^0.10.0:
|
|||
postcss "^7.0.6"
|
||||
postcss-selector-parser "^5.0.0-rc.4"
|
||||
|
||||
css-in-js-utils@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99"
|
||||
integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==
|
||||
dependencies:
|
||||
hyphenate-style-name "^1.0.2"
|
||||
isobject "^3.0.1"
|
||||
|
||||
css-loader@4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e"
|
||||
|
@ -5022,7 +5047,7 @@ csstype@^2.5.2:
|
|||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.16.tgz#544d69f547013b85a40d15bff75db38f34fe9c39"
|
||||
integrity sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==
|
||||
|
||||
csstype@^3.0.2:
|
||||
csstype@^3.0.2, csstype@^3.0.6:
|
||||
version "3.0.7"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b"
|
||||
integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==
|
||||
|
@ -6132,7 +6157,7 @@ extsprintf@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
@ -6159,6 +6184,16 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
|
|||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
|
||||
|
||||
fast-shallow-equal@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b"
|
||||
integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==
|
||||
|
||||
fastest-stable-stringify@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76"
|
||||
integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e"
|
||||
|
@ -7100,7 +7135,7 @@ human-signals@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
|
||||
|
||||
hyphenate-style-name@^1.0.3:
|
||||
hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
|
||||
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
|
||||
|
@ -7269,6 +7304,13 @@ ini@^1.3.5, ini@~1.3.0:
|
|||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
inline-style-prefixer@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b"
|
||||
integrity sha512-XTHvRUS4ZJNzC1GixJRmOlWSS45fSt+DJoyQC9ytj0WxQfcgofQtDtyKKYxHUqEsWCs+LIWftPF1ie7+i012Fg==
|
||||
dependencies:
|
||||
css-in-js-utils "^2.0.0"
|
||||
|
||||
inquirer@^7.3.3:
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
|
||||
|
@ -8263,6 +8305,11 @@ jest@26.6.0:
|
|||
import-local "^3.0.2"
|
||||
jest-cli "^26.6.0"
|
||||
|
||||
js-cookie@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
|
||||
integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
|
@ -9288,6 +9335,20 @@ nan@^2.12.1:
|
|||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
|
||||
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
|
||||
|
||||
nano-css@^5.3.1:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f"
|
||||
integrity sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==
|
||||
dependencies:
|
||||
css-tree "^1.1.2"
|
||||
csstype "^3.0.6"
|
||||
fastest-stable-stringify "^2.0.2"
|
||||
inline-style-prefixer "^6.0.0"
|
||||
rtl-css-js "^1.14.0"
|
||||
sourcemap-codec "^1.4.8"
|
||||
stacktrace-js "^2.0.2"
|
||||
stylis "^4.0.6"
|
||||
|
||||
nanoid@^3.1.20:
|
||||
version "3.1.20"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
|
||||
|
@ -11238,6 +11299,31 @@ react-transition-group@^4.4.0:
|
|||
loose-envify "^1.4.0"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
react-universal-interface@^0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b"
|
||||
integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==
|
||||
|
||||
react-use@^17.2.1:
|
||||
version "17.2.1"
|
||||
resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.2.1.tgz#c81e12544115ed049c7deba1e3bb3d977dfee9b8"
|
||||
integrity sha512-9r51/at7/Nr/nEP4CsHz+pl800EAqhIY9R6O68m68kaWc8slDAfx1UrIedQqpsb4ImddFYb+6hF1i5Vj4u4Cnw==
|
||||
dependencies:
|
||||
"@types/js-cookie" "^2.2.6"
|
||||
"@xobotyi/scrollbar-width" "^1.9.5"
|
||||
copy-to-clipboard "^3.3.1"
|
||||
fast-deep-equal "^3.1.3"
|
||||
fast-shallow-equal "^1.0.0"
|
||||
js-cookie "^2.2.1"
|
||||
nano-css "^5.3.1"
|
||||
react-universal-interface "^0.6.2"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
screenfull "^5.1.0"
|
||||
set-harmonic-interval "^1.0.1"
|
||||
throttle-debounce "^3.0.1"
|
||||
ts-easing "^0.2.0"
|
||||
tslib "^2.1.0"
|
||||
|
||||
react@^17.0.1:
|
||||
version "17.0.1"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
|
||||
|
@ -11566,6 +11652,11 @@ requires-port@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
|
||||
|
||||
resize-observer-polyfill@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
|
||||
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||
|
||||
resolve-cwd@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
|
||||
|
@ -11760,6 +11851,13 @@ rsvp@^4.8.4:
|
|||
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
|
||||
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
|
||||
|
||||
rtl-css-js@^1.14.0:
|
||||
version "1.14.0"
|
||||
resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d"
|
||||
integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.1.2"
|
||||
|
||||
run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
|
@ -11886,6 +11984,11 @@ schema-utils@^3.0.0:
|
|||
ajv "^6.12.5"
|
||||
ajv-keywords "^3.5.2"
|
||||
|
||||
screenfull@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8"
|
||||
integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA==
|
||||
|
||||
scuid@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/scuid/-/scuid-1.1.0.tgz#d3f9f920956e737a60f72d0e4ad280bf324d5dab"
|
||||
|
@ -12005,6 +12108,11 @@ set-blocking@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-harmonic-interval@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249"
|
||||
integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||
|
@ -12230,6 +12338,11 @@ source-map-url@^0.4.0:
|
|||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
|
||||
integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
|
||||
|
||||
source-map@0.5.6:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
|
||||
integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
|
||||
|
||||
source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
|
@ -12245,7 +12358,7 @@ source-map@^0.7.3, source-map@~0.7.2:
|
|||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
sourcemap-codec@^1.4.4:
|
||||
sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
@ -12362,6 +12475,13 @@ stable@^0.1.8:
|
|||
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
|
||||
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
|
||||
|
||||
stack-generator@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36"
|
||||
integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==
|
||||
dependencies:
|
||||
stackframe "^1.1.1"
|
||||
|
||||
stack-utils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277"
|
||||
|
@ -12374,6 +12494,23 @@ stackframe@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
|
||||
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
|
||||
|
||||
stacktrace-gps@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a"
|
||||
integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg==
|
||||
dependencies:
|
||||
source-map "0.5.6"
|
||||
stackframe "^1.1.1"
|
||||
|
||||
stacktrace-js@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b"
|
||||
integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==
|
||||
dependencies:
|
||||
error-stack-parser "^2.0.6"
|
||||
stack-generator "^2.0.5"
|
||||
stacktrace-gps "^3.0.4"
|
||||
|
||||
static-extend@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
||||
|
@ -12634,6 +12771,11 @@ stylehacks@^4.0.0:
|
|||
postcss "^7.0.0"
|
||||
postcss-selector-parser "^3.0.0"
|
||||
|
||||
stylis@^4.0.6:
|
||||
version "4.0.7"
|
||||
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904"
|
||||
integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA==
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
@ -12838,6 +12980,11 @@ throat@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
|
||||
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
|
||||
|
||||
throttle-debounce@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
|
||||
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
|
||||
|
||||
through2@^2.0.0:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
||||
|
@ -12944,6 +13091,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
|
|||
regex-not "^1.0.2"
|
||||
safe-regex "^1.1.0"
|
||||
|
||||
toggle-selection@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
|
||||
integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
|
||||
|
||||
toidentifier@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||
|
@ -12978,6 +13130,11 @@ tryer@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
||||
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
|
||||
|
||||
ts-easing@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec"
|
||||
integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==
|
||||
|
||||
ts-invariant@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.6.1.tgz#eb4c52b45daaca8367abbfd6cff998ea871d592d"
|
||||
|
@ -13024,7 +13181,7 @@ tslib@^1.10.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.1.0:
|
||||
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
|
||||
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
|
||||
|
@ -13304,11 +13461,6 @@ url@^0.11.0:
|
|||
punycode "1.3.2"
|
||||
querystring "0.2.0"
|
||||
|
||||
use-debounce@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-5.2.1.tgz#7366543c769f1de3e92104dee64de5c4dfddfd33"
|
||||
integrity sha512-BQG5uEypYHd/ASF6imzYR8tJHh5qGn28oZG/5iVAbljV6MUrfyT4jzxA8co+L+WLCT1U8VBwzzvlb3CHmUDpEA==
|
||||
|
||||
use-query-params@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/use-query-params/-/use-query-params-1.2.0.tgz#91dda012a9f3767120515a0de5078919444d3aa8"
|
||||
|
|
Reference in New Issue