mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-15 17:50:48 +02:00
chore: update MUI to v5 (#923)
* refactor: update mui packages * refactor: run mui codemods * refactor: format files after codemods * refactor: fix broken types * refactor: clean up theme * refactor: fix broken tests * refactor: replace @mui/styles with tss-react * refactor: move breakpoints into classes for tss * refactor: fix crash on missing feature description * refactor: remove void classNames * refactor: adjust styles to new defaults * refactor: remove broken rollout slider e2e test * refactor: fix duplicate e2e testid * refactor: update makeStyles after rebase * refactor: add missing snapshot after rebase * refactor: fix TableCellSortable focus styles * refactor: use 1.4 as the default line-height * refactor: hide webkit search field icons * refactor: fix select box label * refactor: make AutocompleteBox smaller * refactor: make heading smaller * refactor: fix toast close icon color * refactor: update snapshots * refactor: add missing test event awaits * refactor: fix default button line-height
This commit is contained in:
parent
23a874d051
commit
24c11332b5
@ -106,16 +106,8 @@ describe('feature', () => {
|
|||||||
`/projects/default/features/${featureToggleName}/strategies/create?environmentId=development&strategyName=flexibleRollout`
|
`/projects/default/features/${featureToggleName}/strategies/create?environmentId=development&strategyName=flexibleRollout`
|
||||||
);
|
);
|
||||||
|
|
||||||
cy.wait(1000);
|
|
||||||
cy.get('[data-testid=ROLLOUT_SLIDER_ID')
|
|
||||||
.click()
|
|
||||||
.type('{leftarrow}'.repeat(20));
|
|
||||||
|
|
||||||
if (ENTERPRISE) {
|
if (ENTERPRISE) {
|
||||||
cy.get('[data-testid=ADD_CONSTRAINT_ID]').click();
|
cy.get('[data-testid=ADD_CONSTRAINT_ID]').click();
|
||||||
cy.get('[data-testid=CONSTRAINT_AUTOCOMPLETE_ID]')
|
|
||||||
.type('{downArrow}'.repeat(1))
|
|
||||||
.type('{enter}');
|
|
||||||
cy.get('[data-testid=DIALOGUE_CONFIRM_ID]').click();
|
cy.get('[data-testid=DIALOGUE_CONFIRM_ID]').click();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,7 +118,7 @@ describe('feature', () => {
|
|||||||
expect(req.body.name).to.equal('flexibleRollout');
|
expect(req.body.name).to.equal('flexibleRollout');
|
||||||
expect(req.body.parameters.groupId).to.equal(featureToggleName);
|
expect(req.body.parameters.groupId).to.equal(featureToggleName);
|
||||||
expect(req.body.parameters.stickiness).to.equal('default');
|
expect(req.body.parameters.stickiness).to.equal('default');
|
||||||
expect(req.body.parameters.rollout).to.equal('30');
|
expect(req.body.parameters.rollout).to.equal(100);
|
||||||
|
|
||||||
if (ENTERPRISE) {
|
if (ENTERPRISE) {
|
||||||
expect(req.body.constraints.length).to.equal(1);
|
expect(req.body.constraints.length).to.equal(1);
|
||||||
@ -149,11 +141,6 @@ describe('feature', () => {
|
|||||||
`/projects/default/features/${featureToggleName}/strategies/edit?environmentId=development&strategyId=${strategyId}`
|
`/projects/default/features/${featureToggleName}/strategies/edit?environmentId=development&strategyId=${strategyId}`
|
||||||
);
|
);
|
||||||
|
|
||||||
cy.wait(1000);
|
|
||||||
cy.get('[data-testid=ROLLOUT_SLIDER_ID')
|
|
||||||
.click()
|
|
||||||
.type('{rightArrow}'.repeat(10));
|
|
||||||
|
|
||||||
cy.get('[data-testid=FLEXIBLE_STRATEGY_STICKINESS_ID]')
|
cy.get('[data-testid=FLEXIBLE_STRATEGY_STICKINESS_ID]')
|
||||||
.first()
|
.first()
|
||||||
.click()
|
.click()
|
||||||
@ -172,7 +159,7 @@ describe('feature', () => {
|
|||||||
req => {
|
req => {
|
||||||
expect(req.body.parameters.groupId).to.equal('new-group-id');
|
expect(req.body.parameters.groupId).to.equal('new-group-id');
|
||||||
expect(req.body.parameters.stickiness).to.equal('sessionId');
|
expect(req.body.parameters.stickiness).to.equal('sessionId');
|
||||||
expect(req.body.parameters.rollout).to.equal('60');
|
expect(req.body.parameters.rollout).to.equal(100);
|
||||||
|
|
||||||
if (ENTERPRISE) {
|
if (ENTERPRISE) {
|
||||||
expect(req.body.constraints.length).to.equal(1);
|
expect(req.body.constraints.length).to.equal(1);
|
||||||
@ -301,10 +288,7 @@ describe('feature', () => {
|
|||||||
.children()
|
.children()
|
||||||
.find('input')
|
.find('input')
|
||||||
.should('have.attr', 'disabled');
|
.should('have.attr', 'disabled');
|
||||||
cy.get('[data-testid=VARIANT_WEIGHT_TYPE]')
|
cy.get('[data-testid=VARIANT_WEIGHT_CHECK]').find('input').check();
|
||||||
.children()
|
|
||||||
.find('input')
|
|
||||||
.check();
|
|
||||||
cy.get('[data-testid=VARIANT_WEIGHT_INPUT]').clear().type('15');
|
cy.get('[data-testid=VARIANT_WEIGHT_INPUT]').clear().type('15');
|
||||||
|
|
||||||
cy.intercept(
|
cy.intercept(
|
||||||
|
@ -37,9 +37,11 @@
|
|||||||
"e2e:heroku": "yarn run cypress open --config baseUrl='http://localhost:3000' --env AUTH_USER=example@example.com"
|
"e2e:heroku": "yarn run cypress open --config baseUrl='http://localhost:3000' --env AUTH_USER=example@example.com"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@material-ui/core": "4.12.4",
|
"@emotion/react": "^11.9.0",
|
||||||
"@material-ui/icons": "4.11.3",
|
"@emotion/styled": "^11.8.1",
|
||||||
"@material-ui/lab": "4.0.0-alpha.61",
|
"@mui/icons-material": "^5.6.2",
|
||||||
|
"@mui/lab": "^5.0.0-alpha.79",
|
||||||
|
"@mui/material": "^5.6.3",
|
||||||
"@openapitools/openapi-generator-cli": "2.5.1",
|
"@openapitools/openapi-generator-cli": "2.5.1",
|
||||||
"@testing-library/dom": "8.13.0",
|
"@testing-library/dom": "8.13.0",
|
||||||
"@testing-library/jest-dom": "5.16.4",
|
"@testing-library/jest-dom": "5.16.4",
|
||||||
@ -70,6 +72,7 @@
|
|||||||
"immer": "^9.0.12",
|
"immer": "^9.0.12",
|
||||||
"lodash.clonedeep": "4.5.0",
|
"lodash.clonedeep": "4.5.0",
|
||||||
"msw": "^0.39.2",
|
"msw": "^0.39.2",
|
||||||
|
"pkginfo": "^0.4.1",
|
||||||
"prettier": "2.6.2",
|
"prettier": "2.6.2",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
@ -85,6 +88,7 @@
|
|||||||
"sass": "1.51.0",
|
"sass": "1.51.0",
|
||||||
"semver": "7.3.7",
|
"semver": "7.3.7",
|
||||||
"swr": "1.3.0",
|
"swr": "1.3.0",
|
||||||
|
"tss-react": "^3.6.2",
|
||||||
"typescript": "4.6.4"
|
"typescript": "4.6.4"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
@ -119,8 +123,5 @@
|
|||||||
"ignorePatterns": [
|
"ignorePatterns": [
|
||||||
"cypress"
|
"cypress"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"pkginfo": "^0.4.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { Paper } from '@material-ui/core';
|
import { Paper } from '@mui/material';
|
||||||
import CheckIcon from '@material-ui/icons/Check';
|
import CheckIcon from '@mui/icons-material/Check';
|
||||||
import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined';
|
import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import styles from './ReportCard.module.scss';
|
import styles from './ReportCard.module.scss';
|
||||||
import ReactTimeAgo from 'react-timeago';
|
import ReactTimeAgo from 'react-timeago';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
reportToggleList: {
|
reportToggleList: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
margin: 'var(--card-margin-y) 0',
|
margin: 'var(--card-margin-y) 0',
|
||||||
@ -11,11 +11,9 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
backgroundColor: '#f2f2f2',
|
backgroundColor: '#f2f2f2',
|
||||||
fontSize: 'var(--p-size)',
|
fontSize: 'var(--p-size)',
|
||||||
},
|
},
|
||||||
|
|
||||||
sortIcon: {
|
sortIcon: {
|
||||||
marginLeft: 8,
|
marginLeft: 8,
|
||||||
},
|
},
|
||||||
|
|
||||||
reportToggleListHeader: {
|
reportToggleListHeader: {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'space-between',
|
justifyContent: 'space-between',
|
||||||
@ -23,22 +21,18 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
borderBottom: '1px solid #f1f1f1',
|
borderBottom: '1px solid #f1f1f1',
|
||||||
padding: '1rem var(--card-padding-x)',
|
padding: '1rem var(--card-padding-x)',
|
||||||
},
|
},
|
||||||
|
|
||||||
reportToggleListInnerContainer: {
|
reportToggleListInnerContainer: {
|
||||||
padding: 'var(--card-padding)',
|
padding: 'var(--card-padding)',
|
||||||
},
|
},
|
||||||
|
|
||||||
reportToggleListHeading: {
|
reportToggleListHeading: {
|
||||||
fontSize: 'var(--h1-size)',
|
fontSize: 'var(--h1-size)',
|
||||||
margin: 0,
|
margin: 0,
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold',
|
||||||
},
|
},
|
||||||
|
|
||||||
reportIcon: {
|
reportIcon: {
|
||||||
fontsize: '1.5rem',
|
fontsize: '1.5rem',
|
||||||
marginRight: 5,
|
marginRight: 5,
|
||||||
},
|
},
|
||||||
|
|
||||||
reportingToggleTable: {
|
reportingToggleTable: {
|
||||||
width: ' 100%',
|
width: ' 100%',
|
||||||
borderSpacing: '0 0.8rem',
|
borderSpacing: '0 0.8rem',
|
||||||
@ -50,20 +44,16 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
expired: {
|
expired: {
|
||||||
color: 'var(--danger)',
|
color: 'var(--danger)',
|
||||||
},
|
},
|
||||||
|
|
||||||
active: {
|
active: {
|
||||||
color: 'var(--success)',
|
color: 'var(--success)',
|
||||||
},
|
},
|
||||||
|
|
||||||
stale: {
|
stale: {
|
||||||
color: 'var(--danger)',
|
color: 'var(--danger)',
|
||||||
},
|
},
|
||||||
|
|
||||||
reportStatus: {
|
reportStatus: {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
},
|
},
|
||||||
|
|
||||||
tableRow: {
|
tableRow: {
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
backgroundColor: '#eeeeee',
|
backgroundColor: '#eeeeee',
|
||||||
@ -73,30 +63,28 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
margin: 0,
|
margin: 0,
|
||||||
padding: 0,
|
padding: 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
link: {
|
link: {
|
||||||
color: theme.palette.primary.main,
|
color: theme.palette.primary.main,
|
||||||
textDecoration: 'none',
|
textDecoration: 'none',
|
||||||
fontWeight: theme.fontWeight.bold,
|
fontWeight: theme.fontWeight.bold,
|
||||||
},
|
},
|
||||||
|
|
||||||
[theme.breakpoints.down(800)]: {
|
|
||||||
hideColumn: {
|
hideColumn: {
|
||||||
|
[theme.breakpoints.down(800)]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
|
},
|
||||||
th: {
|
th: {
|
||||||
|
[theme.breakpoints.down(800)]: {
|
||||||
minWidth: '120px',
|
minWidth: '120px',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
[theme.breakpoints.down(550)]: {
|
|
||||||
hideColumnStatus: {
|
hideColumnStatus: {
|
||||||
|
[theme.breakpoints.down(550)]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
[theme.breakpoints.down(425)]: {
|
|
||||||
hideColumnLastSeen: {
|
hideColumnLastSeen: {
|
||||||
|
[theme.breakpoints.down(425)]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useState, useEffect, VFC } from 'react';
|
import { useState, useEffect, VFC } from 'react';
|
||||||
import { Paper, MenuItem } from '@material-ui/core';
|
import { Paper, MenuItem } from '@mui/material';
|
||||||
import { useFeaturesSort } from 'hooks/useFeaturesSort';
|
import { useFeaturesSort } from 'hooks/useFeaturesSort';
|
||||||
import { IFeatureToggleListItem } from 'interfaces/featureToggle';
|
import { IFeatureToggleListItem } from 'interfaces/featureToggle';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
@ -25,7 +25,7 @@ export const ReportToggleList: VFC<IReportToggleListProps> = ({
|
|||||||
features,
|
features,
|
||||||
selectedProject,
|
selectedProject,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const [checkAll, setCheckAll] = useState(false);
|
const [checkAll, setCheckAll] = useState(false);
|
||||||
const [localFeatures, setFeatures] = useState<IFeatureToggleListItem[]>([]);
|
const [localFeatures, setFeatures] = useState<IFeatureToggleListItem[]>([]);
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Dispatch, SetStateAction, VFC } from 'react';
|
import { Dispatch, SetStateAction, VFC } from 'react';
|
||||||
import { Checkbox } from '@material-ui/core';
|
import { Checkbox } from '@mui/material';
|
||||||
import UnfoldMoreOutlinedIcon from '@material-ui/icons/UnfoldMoreOutlined';
|
import UnfoldMoreOutlinedIcon from '@mui/icons-material/UnfoldMoreOutlined';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { ReportingSortType } from 'component/Reporting/constants';
|
import { ReportingSortType } from 'component/Reporting/constants';
|
||||||
import { useStyles } from '../ReportToggleList.styles';
|
import { useStyles } from '../ReportToggleList.styles';
|
||||||
@ -20,7 +20,7 @@ export const ReportToggleListHeader: VFC<IReportToggleListHeaderProps> = ({
|
|||||||
setSort,
|
setSort,
|
||||||
bulkActionsOn,
|
bulkActionsOn,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const handleSort = (type: ReportingSortType) => {
|
const handleSort = (type: ReportingSortType) => {
|
||||||
setSort(prev => ({
|
setSort(prev => ({
|
||||||
type,
|
type,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { memo, ReactNode } from 'react';
|
import { memo, ReactNode } from 'react';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Checkbox } from '@material-ui/core';
|
import { Checkbox } from '@mui/material';
|
||||||
import CheckIcon from '@material-ui/icons/Check';
|
import CheckIcon from '@mui/icons-material/Check';
|
||||||
import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined';
|
import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import FeatureStatus from 'component/feature/FeatureView/FeatureStatus/FeatureStatus';
|
import FeatureStatus from 'component/feature/FeatureView/FeatureStatus/FeatureStatus';
|
||||||
import {
|
import {
|
||||||
@ -41,7 +41,7 @@ export const ReportToggleListItem = memo<IReportToggleListItemProps>(
|
|||||||
bulkActionsOn,
|
bulkActionsOn,
|
||||||
setFeatures,
|
setFeatures,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const nameMatches = (feature: { name: string }) =>
|
const nameMatches = (feature: { name: string }) =>
|
||||||
feature.name === name;
|
feature.name === name;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Grid, FormControlLabel, Checkbox } from '@material-ui/core';
|
import { Grid, FormControlLabel, Checkbox } from '@mui/material';
|
||||||
|
|
||||||
import { styles as commonStyles } from 'component/common';
|
import { styles as themeStyles } from 'component/common';
|
||||||
import { IAddonProvider } from 'interfaces/addons';
|
import { IAddonProvider } from 'interfaces/addons';
|
||||||
|
|
||||||
interface IAddonProps {
|
interface IAddonProps {
|
||||||
@ -24,7 +24,7 @@ export const AddonEvents = ({
|
|||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<h4>Events</h4>
|
<h4>Events</h4>
|
||||||
<span className={commonStyles.error}>{error}</span>
|
<span className={themeStyles.error}>{error}</span>
|
||||||
<Grid container spacing={0}>
|
<Grid container spacing={0}>
|
||||||
{provider.events.map(e => (
|
{provider.events.map(e => (
|
||||||
<Grid item xs={4} key={e}>
|
<Grid item xs={4} key={e}>
|
||||||
|
@ -7,9 +7,9 @@ import {
|
|||||||
FormEventHandler,
|
FormEventHandler,
|
||||||
MouseEventHandler,
|
MouseEventHandler,
|
||||||
} from 'react';
|
} from 'react';
|
||||||
import { TextField, FormControlLabel, Switch, Button } from '@material-ui/core';
|
import { TextField, FormControlLabel, Switch, Button } from '@mui/material';
|
||||||
import produce from 'immer';
|
import produce from 'immer';
|
||||||
import { styles as commonStyles } from 'component/common';
|
import { styles as themeStyles } from 'component/common';
|
||||||
import { trim } from 'component/common/util';
|
import { trim } from 'component/common/util';
|
||||||
import { IAddon, IAddonProvider } from 'interfaces/addons';
|
import { IAddon, IAddonProvider } from 'interfaces/addons';
|
||||||
import { AddonParameters } from './AddonParameters/AddonParameters';
|
import { AddonParameters } from './AddonParameters/AddonParameters';
|
||||||
@ -19,10 +19,10 @@ import PageContent from 'component/common/PageContent/PageContent';
|
|||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
import useAddonsApi from 'hooks/api/actions/useAddonsApi/useAddonsApi';
|
import useAddonsApi from 'hooks/api/actions/useAddonsApi/useAddonsApi';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||||
|
|
||||||
const useStyles = makeStyles(theme => ({
|
const useStyles = makeStyles()(theme => ({
|
||||||
nameInput: {
|
nameInput: {
|
||||||
marginRight: '1.5rem',
|
marginRight: '1.5rem',
|
||||||
},
|
},
|
||||||
@ -51,7 +51,7 @@ export const AddonForm: VFC<IAddonFormProps> = ({
|
|||||||
const { createAddon, updateAddon } = useAddonsApi();
|
const { createAddon, updateAddon } = useAddonsApi();
|
||||||
const { setToastData, setToastApiError } = useToast();
|
const { setToastData, setToastApiError } = useToast();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const [formValues, setFormValues] = useState(initialValues);
|
const [formValues, setFormValues] = useState(initialValues);
|
||||||
const [errors, setErrors] = useState<{
|
const [errors, setErrors] = useState<{
|
||||||
@ -190,7 +190,7 @@ export const AddonForm: VFC<IAddonFormProps> = ({
|
|||||||
<a href={documentationUrl} target="_blank" rel="noreferrer">
|
<a href={documentationUrl} target="_blank" rel="noreferrer">
|
||||||
Read more
|
Read more
|
||||||
</a>
|
</a>
|
||||||
<p className={commonStyles.error}>{errors.general}</p>
|
<p className={themeStyles.error}>{errors.general}</p>
|
||||||
</section>
|
</section>
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<section className={styles.formSection}>
|
<section className={styles.formSection}>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { TextField } from '@material-ui/core';
|
import { TextField } from '@mui/material';
|
||||||
import { IAddonConfig, IAddonProviderParams } from 'interfaces/addons';
|
import { IAddonConfig, IAddonProviderParams } from 'interfaces/addons';
|
||||||
import { ChangeEventHandler } from 'react';
|
import { ChangeEventHandler } from 'react';
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import React, { ReactElement } from 'react';
|
import React, { ReactElement } from 'react';
|
||||||
import { ConfiguredAddons } from './ConfiguredAddons/ConfiguredAddons';
|
import { ConfiguredAddons } from './ConfiguredAddons/ConfiguredAddons';
|
||||||
import { AvailableAddons } from './AvailableAddons/AvailableAddons';
|
import { AvailableAddons } from './AvailableAddons/AvailableAddons';
|
||||||
import { Avatar } from '@material-ui/core';
|
import { Avatar } from '@mui/material';
|
||||||
import { DeviceHub } from '@material-ui/icons';
|
import { DeviceHub } from '@mui/icons-material';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import slackIcon from 'assets/icons/slack.svg';
|
import slackIcon from 'assets/icons/slack.svg';
|
||||||
import jiraIcon from 'assets/icons/jira.svg';
|
import jiraIcon from 'assets/icons/jira.svg';
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
ListItemAvatar,
|
ListItemAvatar,
|
||||||
ListItemSecondaryAction,
|
ListItemSecondaryAction,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { CREATE_ADDON } from 'component/providers/AccessProvider/permissions';
|
import { CREATE_ADDON } from 'component/providers/AccessProvider/permissions';
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
|
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
|
||||||
|
@ -4,8 +4,8 @@ import {
|
|||||||
ListItemAvatar,
|
ListItemAvatar,
|
||||||
ListItemSecondaryAction,
|
ListItemSecondaryAction,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { Delete, Edit, Visibility, VisibilityOff } from '@material-ui/icons';
|
import { Delete, Edit, Visibility, VisibilityOff } from '@mui/icons-material';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import {
|
import {
|
||||||
DELETE_ADDON,
|
DELETE_ADDON,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
maxWidth: '400px',
|
maxWidth: '400px',
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Button } from '@material-ui/core';
|
import { Button } from '@mui/material';
|
||||||
import { KeyboardArrowDownOutlined } from '@material-ui/icons';
|
import { KeyboardArrowDownOutlined } from '@mui/icons-material';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments';
|
import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments';
|
||||||
import useProjects from 'hooks/api/getters/useProjects/useProjects';
|
import useProjects from 'hooks/api/getters/useProjects/useProjects';
|
||||||
@ -40,7 +40,7 @@ const ApiTokenForm: React.FC<IApiTokenFormProps> = ({
|
|||||||
clearErrors,
|
clearErrors,
|
||||||
}) => {
|
}) => {
|
||||||
const TYPE_ADMIN = 'ADMIN';
|
const TYPE_ADMIN = 'ADMIN';
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { environments } = useEnvironments();
|
const { environments } = useEnvironments();
|
||||||
const { projects: availableProjects } = useProjects();
|
const { projects: availableProjects } = useProjects();
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
selectOptionsLink: {
|
selectOptionsLink: {
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
fontSize: theme.fontSizes.bodySize,
|
fontSize: theme.fontSizes.bodySize,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React, { FC } from 'react';
|
import React, { FC } from 'react';
|
||||||
import { Box, Link } from '@material-ui/core';
|
import { Box, Link } from '@mui/material';
|
||||||
import { useStyles } from './SelectAllButton.styles';
|
import { useStyles } from './SelectAllButton.styles';
|
||||||
|
|
||||||
type SelectAllButtonProps = {
|
type SelectAllButtonProps = {
|
||||||
@ -11,7 +11,7 @@ export const SelectAllButton: FC<SelectAllButtonProps> = ({
|
|||||||
isAllSelected,
|
isAllSelected,
|
||||||
onClick,
|
onClick,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box sx={{ ml: 3.5, my: 0.5 }}>
|
<Box sx={{ ml: 3.5, my: 0.5 }}>
|
||||||
@ -19,6 +19,7 @@ export const SelectAllButton: FC<SelectAllButtonProps> = ({
|
|||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
className={styles.selectOptionsLink}
|
className={styles.selectOptionsLink}
|
||||||
component="button"
|
component="button"
|
||||||
|
underline="hover"
|
||||||
>
|
>
|
||||||
{isAllSelected ? 'Deselect all' : 'Select all'}
|
{isAllSelected ? 'Deselect all' : 'Select all'}
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
selectOptionCheckbox: {
|
selectOptionCheckbox: {
|
||||||
marginRight: '0.2rem',
|
marginRight: '0.2rem',
|
||||||
},
|
},
|
||||||
|
@ -36,7 +36,7 @@ describe('SelectProjectInput', () => {
|
|||||||
expect(checkbox).toBeChecked();
|
expect(checkbox).toBeChecked();
|
||||||
|
|
||||||
const selectInputContainer = screen.getByTestId('select-input');
|
const selectInputContainer = screen.getByTestId('select-input');
|
||||||
const input = within(selectInputContainer).getByRole('textbox');
|
const input = within(selectInputContainer).getByRole('combobox');
|
||||||
expect(input).toBeDisabled();
|
expect(input).toBeDisabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ describe('SelectProjectInput', () => {
|
|||||||
expect(checkbox).not.toBeChecked();
|
expect(checkbox).not.toBeChecked();
|
||||||
|
|
||||||
const selectInputContainer = screen.getByTestId('select-input');
|
const selectInputContainer = screen.getByTestId('select-input');
|
||||||
const input = within(selectInputContainer).getByRole('textbox');
|
const input = within(selectInputContainer).getByRole('combobox');
|
||||||
expect(input).toBeEnabled();
|
expect(input).toBeEnabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ describe('SelectProjectInput', () => {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
const input = await screen.findByLabelText('Projects');
|
const input = await screen.findByLabelText('Projects');
|
||||||
user.type(input, 'alp');
|
await user.type(input, 'alp');
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText('Alpha')).toBeVisible();
|
expect(screen.getByText('Alpha')).toBeVisible();
|
||||||
@ -153,8 +153,8 @@ describe('SelectProjectInput', () => {
|
|||||||
expect(screen.getByText('Alpaca')).toBeVisible();
|
expect(screen.getByText('Alpaca')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
user.clear(input);
|
await user.clear(input);
|
||||||
user.type(input, 'bravo');
|
await user.type(input, 'bravo');
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText('Bravo')).toBeVisible();
|
expect(screen.getByText('Bravo')).toBeVisible();
|
||||||
});
|
});
|
||||||
|
@ -5,15 +5,17 @@ import {
|
|||||||
TextField,
|
TextField,
|
||||||
Box,
|
Box,
|
||||||
Paper,
|
Paper,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
|
import { Autocomplete } from '@mui/material';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Autocomplete,
|
|
||||||
AutocompleteRenderGroupParams,
|
AutocompleteRenderGroupParams,
|
||||||
AutocompleteRenderInputParams,
|
AutocompleteRenderInputParams,
|
||||||
AutocompleteRenderOptionState,
|
AutocompleteRenderOptionState,
|
||||||
} from '@material-ui/lab';
|
} from '@mui/material/Autocomplete';
|
||||||
import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';
|
|
||||||
import CheckBoxIcon from '@material-ui/icons/CheckBox';
|
import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
|
||||||
|
import CheckBoxIcon from '@mui/icons-material/CheckBox';
|
||||||
import { IAutocompleteBoxOption } from 'component/common/AutocompleteBox/AutocompleteBox';
|
import { IAutocompleteBoxOption } from 'component/common/AutocompleteBox/AutocompleteBox';
|
||||||
import { useStyles } from '../ApiTokenForm.styles';
|
import { useStyles } from '../ApiTokenForm.styles';
|
||||||
import { SelectAllButton } from './SelectAllButton/SelectAllButton';
|
import { SelectAllButton } from './SelectAllButton/SelectAllButton';
|
||||||
@ -41,7 +43,7 @@ export const SelectProjectInput: VFC<ISelectProjectInputProps> = ({
|
|||||||
error,
|
error,
|
||||||
onFocus,
|
onFocus,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const [projects, setProjects] = useState<string[]>(
|
const [projects, setProjects] = useState<string[]>(
|
||||||
typeof defaultValue === 'string' ? [defaultValue] : defaultValue
|
typeof defaultValue === 'string' ? [defaultValue] : defaultValue
|
||||||
);
|
);
|
||||||
@ -75,10 +77,11 @@ export const SelectProjectInput: VFC<ISelectProjectInputProps> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const renderOption = (
|
const renderOption = (
|
||||||
|
props: object,
|
||||||
option: IAutocompleteBoxOption,
|
option: IAutocompleteBoxOption,
|
||||||
{ selected }: AutocompleteRenderOptionState
|
{ selected }: AutocompleteRenderOptionState
|
||||||
) => (
|
) => (
|
||||||
<>
|
<li {...props}>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
icon={<CheckBoxOutlineBlankIcon fontSize="small" />}
|
icon={<CheckBoxOutlineBlankIcon fontSize="small" />}
|
||||||
checkedIcon={<CheckBoxIcon fontSize="small" />}
|
checkedIcon={<CheckBoxIcon fontSize="small" />}
|
||||||
@ -86,7 +89,7 @@ export const SelectProjectInput: VFC<ISelectProjectInputProps> = ({
|
|||||||
className={styles.selectOptionCheckbox}
|
className={styles.selectOptionCheckbox}
|
||||||
/>
|
/>
|
||||||
{option.label}
|
{option.label}
|
||||||
</>
|
</li>
|
||||||
);
|
);
|
||||||
|
|
||||||
const renderGroup = ({ key, children }: AutocompleteRenderGroupParams) => (
|
const renderGroup = ({ key, children }: AutocompleteRenderGroupParams) => (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
tableRow: {
|
tableRow: {
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
backgroundColor: theme.palette.grey[200],
|
backgroundColor: theme.palette.grey[200],
|
||||||
@ -9,7 +9,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
container: {
|
container: {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexWrap: 'wrap',
|
flexWrap: 'wrap',
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -22,17 +22,17 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
flexWrap: 'nowrap',
|
flexWrap: 'nowrap',
|
||||||
},
|
},
|
||||||
hideSM: {
|
hideSM: {
|
||||||
[theme.breakpoints.down('sm')]: {
|
|
||||||
display: 'none',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
hideMD: {
|
|
||||||
[theme.breakpoints.down('md')]: {
|
[theme.breakpoints.down('md')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
hideMD: {
|
||||||
|
[theme.breakpoints.down('lg')]: {
|
||||||
|
display: 'none',
|
||||||
|
},
|
||||||
|
},
|
||||||
hideXS: {
|
hideXS: {
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -8,7 +8,7 @@ import {
|
|||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
import useLoading from 'hooks/useLoading';
|
import useLoading from 'hooks/useLoading';
|
||||||
@ -18,7 +18,7 @@ import useApiTokensApi from 'hooks/api/actions/useApiTokensApi/useApiTokensApi';
|
|||||||
import ApiError from 'component/common/ApiError/ApiError';
|
import ApiError from 'component/common/ApiError/ApiError';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { DELETE_API_TOKEN } from 'component/providers/AccessProvider/permissions';
|
import { DELETE_API_TOKEN } from 'component/providers/AccessProvider/permissions';
|
||||||
import { Delete, FileCopy } from '@material-ui/icons';
|
import { Delete, FileCopy } from '@mui/icons-material';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
import copy from 'copy-to-clipboard';
|
import copy from 'copy-to-clipboard';
|
||||||
import { useLocationSettings } from 'hooks/useLocationSettings';
|
import { useLocationSettings } from 'hooks/useLocationSettings';
|
||||||
@ -37,7 +37,7 @@ interface IApiToken {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const ApiTokenList = () => {
|
export const ApiTokenList = () => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const { uiConfig } = useUiConfig();
|
const { uiConfig } = useUiConfig();
|
||||||
const [showDelete, setShowDelete] = useState(false);
|
const [showDelete, setShowDelete] = useState(false);
|
||||||
@ -196,6 +196,7 @@ export const ApiTokenList = () => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
copyToken(item.secret);
|
copyToken(item.secret);
|
||||||
}}
|
}}
|
||||||
|
size="large"
|
||||||
>
|
>
|
||||||
<FileCopy />
|
<FileCopy />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
@ -209,6 +210,7 @@ export const ApiTokenList = () => {
|
|||||||
setDeleteToken(item);
|
setDeleteToken(item);
|
||||||
setShowDelete(true);
|
setShowDelete(true);
|
||||||
}}
|
}}
|
||||||
|
size="large"
|
||||||
>
|
>
|
||||||
<Delete />
|
<Delete />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
infoBoxContainer: {
|
infoBoxContainer: {
|
||||||
marginBottom: 40,
|
marginBottom: 40,
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
import { Button } from '@material-ui/core';
|
import { Button } from '@mui/material';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import PageContent from 'component/common/PageContent';
|
import PageContent from 'component/common/PageContent';
|
||||||
@ -12,12 +12,12 @@ import {
|
|||||||
} from 'component/providers/AccessProvider/permissions';
|
} from 'component/providers/AccessProvider/permissions';
|
||||||
import { useStyles } from './ApiTokenPage.styles';
|
import { useStyles } from './ApiTokenPage.styles';
|
||||||
import { CREATE_API_TOKEN_BUTTON } from 'utils/testIds';
|
import { CREATE_API_TOKEN_BUTTON } from 'utils/testIds';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import { ApiTokenList } from 'component/admin/apiToken/ApiTokenList/ApiTokenList';
|
import { ApiTokenList } from 'component/admin/apiToken/ApiTokenList/ApiTokenList';
|
||||||
import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
|
import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
|
||||||
|
|
||||||
export const ApiTokenPage = () => {
|
export const ApiTokenPage = () => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const { uiConfig } = useUiConfig();
|
const { uiConfig } = useUiConfig();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Typography } from '@material-ui/core';
|
import { Typography } from '@mui/material';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
import { UserToken } from './UserToken/UserToken';
|
import { UserToken } from './UserToken/UserToken';
|
||||||
|
|
||||||
@ -14,7 +14,8 @@ export const ConfirmToken = ({
|
|||||||
closeConfirm,
|
closeConfirm,
|
||||||
token,
|
token,
|
||||||
}: IConfirmUserLink) => {
|
}: IConfirmUserLink) => {
|
||||||
const commonStyles = useCommonStyles();
|
const { classes: themeStyles } = useThemeStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialogue
|
<Dialogue
|
||||||
open={open}
|
open={open}
|
||||||
@ -22,7 +23,7 @@ export const ConfirmToken = ({
|
|||||||
primaryButtonText="Close"
|
primaryButtonText="Close"
|
||||||
title="New token created"
|
title="New token created"
|
||||||
>
|
>
|
||||||
<div className={commonStyles.contentSpacingYLarge}>
|
<div className={themeStyles.contentSpacingYLarge}>
|
||||||
<Typography variant="body1">
|
<Typography variant="body1">
|
||||||
Your new token has been created successfully.
|
Your new token has been created successfully.
|
||||||
</Typography>
|
</Typography>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { IconButton, Tooltip } from '@material-ui/core';
|
import { IconButton, Tooltip } from '@mui/material';
|
||||||
import CopyIcon from '@material-ui/icons/FileCopy';
|
import CopyIcon from '@mui/icons-material/FileCopy';
|
||||||
import copy from 'copy-to-clipboard';
|
import copy from 'copy-to-clipboard';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ export const UserToken = ({ token }: IUserTokenProps) => {
|
|||||||
>
|
>
|
||||||
{token}
|
{token}
|
||||||
<Tooltip title="Copy token">
|
<Tooltip title="Copy token">
|
||||||
<IconButton onClick={copyToken}>
|
<IconButton onClick={copyToken} size="large">
|
||||||
<CopyIcon />
|
<CopyIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import AdminMenu from '../menu/AdminMenu';
|
import AdminMenu from '../menu/AdminMenu';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
|
@ -8,7 +8,8 @@ import {
|
|||||||
Select,
|
Select,
|
||||||
Switch,
|
Switch,
|
||||||
TextField,
|
TextField,
|
||||||
} from '@material-ui/core';
|
SelectChangeEvent,
|
||||||
|
} from '@mui/material';
|
||||||
|
|
||||||
interface IAutoCreateFormProps {
|
interface IAutoCreateFormProps {
|
||||||
data?: {
|
data?: {
|
||||||
@ -28,10 +29,8 @@ export const AutoCreateForm = ({
|
|||||||
setValue('autoCreate', !data.autoCreate);
|
setValue('autoCreate', !data.autoCreate);
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateDefaultRootRole = (
|
const updateDefaultRootRole = (evt: SelectChangeEvent) => {
|
||||||
evt: ChangeEvent<{ name?: string; value: unknown }>
|
setValue('defaultRootRole', evt.target.value);
|
||||||
) => {
|
|
||||||
setValue('defaultRootRole', evt.target.value as string);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateField = (e: ChangeEvent<HTMLInputElement>) => {
|
const updateField = (e: ChangeEvent<HTMLInputElement>) => {
|
||||||
@ -40,7 +39,7 @@ export const AutoCreateForm = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Auto-create users</strong>
|
<strong>Auto-create users</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -61,7 +60,7 @@ export const AutoCreateForm = ({
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Default Root Role</strong>
|
<strong>Default Root Role</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -75,6 +74,7 @@ export const AutoCreateForm = ({
|
|||||||
Default Role
|
Default Role
|
||||||
</InputLabel>
|
</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
|
label="Default Role"
|
||||||
labelId="defaultRootRole-label"
|
labelId="defaultRootRole-label"
|
||||||
id="defaultRootRole"
|
id="defaultRootRole"
|
||||||
name="defaultRootRole"
|
name="defaultRootRole"
|
||||||
@ -90,7 +90,7 @@ export const AutoCreateForm = ({
|
|||||||
</FormControl>
|
</FormControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Email domains</strong>
|
<strong>Email domains</strong>
|
||||||
<p>
|
<p>
|
||||||
|
@ -5,8 +5,8 @@ import {
|
|||||||
Grid,
|
Grid,
|
||||||
Switch,
|
Switch,
|
||||||
TextField,
|
TextField,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -93,7 +93,7 @@ export const GoogleAuth = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item xs={5}>
|
<Grid item xs={5}>
|
||||||
<strong>Enable</strong>
|
<strong>Enable</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -115,7 +115,7 @@ export const GoogleAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item xs={5}>
|
<Grid item xs={5}>
|
||||||
<strong>Client ID</strong>
|
<strong>Client ID</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -137,7 +137,7 @@ export const GoogleAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Client Secret</strong>
|
<strong>Client Secret</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -159,7 +159,7 @@ export const GoogleAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Unleash hostname</strong>
|
<strong>Unleash hostname</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -186,7 +186,7 @@ export const GoogleAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Auto-create users</strong>
|
<strong>Auto-create users</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -202,7 +202,7 @@ export const GoogleAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Email domains</strong>
|
<strong>Email domains</strong>
|
||||||
<p>
|
<p>
|
||||||
|
@ -5,8 +5,8 @@ import {
|
|||||||
Grid,
|
Grid,
|
||||||
Switch,
|
Switch,
|
||||||
TextField,
|
TextField,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -105,7 +105,7 @@ export const OidcAuth = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Enable</strong>
|
<strong>Enable</strong>
|
||||||
<p>Enable Open Id Connect Authentication.</p>
|
<p>Enable Open Id Connect Authentication.</p>
|
||||||
@ -124,7 +124,7 @@ export const OidcAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Discover URL</strong>
|
<strong>Discover URL</strong>
|
||||||
<p>(Required) Issuer discover metadata URL</p>
|
<p>(Required) Issuer discover metadata URL</p>
|
||||||
@ -142,7 +142,7 @@ export const OidcAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Client ID</strong>
|
<strong>Client ID</strong>
|
||||||
<p>(Required) Client ID of your OpenID application</p>
|
<p>(Required) Client ID of your OpenID application</p>
|
||||||
@ -161,7 +161,7 @@ export const OidcAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={4}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Client secret</strong>
|
<strong>Client secret</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -183,7 +183,7 @@ export const OidcAuth = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<h3>Optional Configuration</h3>
|
<h3>Optional Configuration</h3>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Enable Single Sign-Out</strong>
|
<strong>Enable Single Sign-Out</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -210,7 +210,7 @@ export const OidcAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>ACR Values</strong>
|
<strong>ACR Values</strong>
|
||||||
<p>
|
<p>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React, { useContext, useEffect, useState } from 'react';
|
import React, { useContext, useEffect, useState } from 'react';
|
||||||
import { Button, FormControlLabel, Grid, Switch } from '@material-ui/core';
|
import { Button, FormControlLabel, Grid, Switch } from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -59,7 +59,7 @@ export const PasswordAuth = () => {
|
|||||||
return (
|
return (
|
||||||
<PageContent headerContent="">
|
<PageContent headerContent="">
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Password based login</strong>
|
<strong>Password based login</strong>
|
||||||
<p>Allow users to login with username & password</p>
|
<p>Allow users to login with username & password</p>
|
||||||
|
@ -5,8 +5,8 @@ import {
|
|||||||
Grid,
|
Grid,
|
||||||
Switch,
|
Switch,
|
||||||
TextField,
|
TextField,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -102,7 +102,7 @@ export const SamlAuth = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5} mb={2}>
|
||||||
<strong>Enable</strong>
|
<strong>Enable</strong>
|
||||||
<p>Enable SAML 2.0 Authentication.</p>
|
<p>Enable SAML 2.0 Authentication.</p>
|
||||||
</Grid>
|
</Grid>
|
||||||
@ -120,7 +120,7 @@ export const SamlAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Entity ID</strong>
|
<strong>Entity ID</strong>
|
||||||
<p>(Required) The Entity Identity provider issuer.</p>
|
<p>(Required) The Entity Identity provider issuer.</p>
|
||||||
@ -139,7 +139,7 @@ export const SamlAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Single Sign-On URL</strong>
|
<strong>Single Sign-On URL</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -161,7 +161,7 @@ export const SamlAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={4}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>X.509 Certificate</strong>
|
<strong>X.509 Certificate</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -185,7 +185,7 @@ export const SamlAuth = () => {
|
|||||||
}}
|
}}
|
||||||
multiline
|
multiline
|
||||||
rows={14}
|
rows={14}
|
||||||
rowsMax={14}
|
maxRows={14}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
size="small"
|
size="small"
|
||||||
required
|
required
|
||||||
@ -193,7 +193,7 @@ export const SamlAuth = () => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<h3>Optional Configuration</h3>
|
<h3>Optional Configuration</h3>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Single Sign-out URL</strong>
|
<strong>Single Sign-out URL</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -214,7 +214,7 @@ export const SamlAuth = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid container spacing={3}>
|
<Grid container spacing={3} mb={2}>
|
||||||
<Grid item md={5}>
|
<Grid item md={5}>
|
||||||
<strong>Service Provider X.509 Certificate</strong>
|
<strong>Service Provider X.509 Certificate</strong>
|
||||||
<p>
|
<p>
|
||||||
@ -240,7 +240,7 @@ export const SamlAuth = () => {
|
|||||||
}}
|
}}
|
||||||
multiline
|
multiline
|
||||||
rows={14}
|
rows={14}
|
||||||
rowsMax={14}
|
maxRows={14}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
size="small"
|
size="small"
|
||||||
/>
|
/>
|
||||||
|
@ -3,7 +3,7 @@ import InvoiceList from './InvoiceList';
|
|||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
|
|
||||||
const InvoiceAdminPage = () => {
|
const InvoiceAdminPage = () => {
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
|
@ -6,8 +6,8 @@ import {
|
|||||||
TableRow,
|
TableRow,
|
||||||
TableCell,
|
TableCell,
|
||||||
Button,
|
Button,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import OpenInNew from '@material-ui/icons/OpenInNew';
|
import OpenInNew from '@mui/icons-material/OpenInNew';
|
||||||
import PageContent from 'component/common/PageContent';
|
import PageContent from 'component/common/PageContent';
|
||||||
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { NavLink, useLocation } from 'react-router-dom';
|
import { NavLink, useLocation } from 'react-router-dom';
|
||||||
import { Paper, Tab, Tabs } from '@material-ui/core';
|
import { Paper, Tab, Tabs } from '@mui/material';
|
||||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
|
|
||||||
const navLinkStyle = {
|
const navLinkStyle = {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
environmentPermissionContainer: {
|
environmentPermissionContainer: {
|
||||||
marginBottom: '1.25rem',
|
marginBottom: '1.25rem',
|
||||||
},
|
},
|
||||||
|
@ -4,8 +4,8 @@ import {
|
|||||||
AccordionSummary,
|
AccordionSummary,
|
||||||
Checkbox,
|
Checkbox,
|
||||||
FormControlLabel,
|
FormControlLabel,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { ExpandMore } from '@material-ui/icons';
|
import { ExpandMore } from '@mui/icons-material';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import {
|
import {
|
||||||
IPermission,
|
IPermission,
|
||||||
@ -34,7 +34,7 @@ const EnvironmentPermissionAccordion = ({
|
|||||||
}: IEnvironmentPermissionAccordionProps) => {
|
}: IEnvironmentPermissionAccordionProps) => {
|
||||||
const [permissionMap, setPermissionMap] = useState<PermissionMap>({});
|
const [permissionMap, setPermissionMap] = useState<PermissionMap>({});
|
||||||
const [permissionCount, setPermissionCount] = useState(0);
|
const [permissionCount, setPermissionCount] = useState(0);
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const permissionMap = environment?.permissions?.reduce(
|
const permissionMap = environment?.permissions?.reduce(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
maxWidth: '400px',
|
maxWidth: '400px',
|
||||||
},
|
},
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
import Input from 'component/common/Input/Input';
|
import Input from 'component/common/Input/Input';
|
||||||
import EnvironmentPermissionAccordion from './EnvironmentPermissionAccordion/EnvironmentPermissionAccordion';
|
import EnvironmentPermissionAccordion from './EnvironmentPermissionAccordion/EnvironmentPermissionAccordion';
|
||||||
import {
|
import { Button, Checkbox, FormControlLabel, TextField } from '@mui/material';
|
||||||
Button,
|
|
||||||
Checkbox,
|
|
||||||
FormControlLabel,
|
|
||||||
TextField,
|
|
||||||
} from '@material-ui/core';
|
|
||||||
import useProjectRolePermissions from 'hooks/api/getters/useProjectRolePermissions/useProjectRolePermissions';
|
import useProjectRolePermissions from 'hooks/api/getters/useProjectRolePermissions/useProjectRolePermissions';
|
||||||
|
|
||||||
import { useStyles } from './ProjectRoleForm.styles';
|
import { useStyles } from './ProjectRoleForm.styles';
|
||||||
@ -54,7 +49,7 @@ const ProjectRoleForm: React.FC<IProjectRoleForm> = ({
|
|||||||
clearErrors,
|
clearErrors,
|
||||||
getRoleKey,
|
getRoleKey,
|
||||||
}: IProjectRoleForm) => {
|
}: IProjectRoleForm) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { permissions } = useProjectRolePermissions({
|
const { permissions } = useProjectRolePermissions({
|
||||||
revalidateIfStale: false,
|
revalidateIfStale: false,
|
||||||
revalidateOnReconnect: false,
|
revalidateOnReconnect: false,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
deleteParagraph: {
|
deleteParagraph: {
|
||||||
marginTop: '2rem',
|
marginTop: '2rem',
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { IProjectRole } from 'interfaces/role';
|
import { IProjectRole } from 'interfaces/role';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
@ -22,7 +22,7 @@ const ProjectRoleDeleteConfirm = ({
|
|||||||
confirmName,
|
confirmName,
|
||||||
setConfirmName,
|
setConfirmName,
|
||||||
}: IProjectRoleDeleteConfirmProps) => {
|
}: IProjectRoleDeleteConfirmProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) =>
|
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) =>
|
||||||
setConfirmName(e.currentTarget.value);
|
setConfirmName(e.currentTarget.value);
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
TableCell,
|
TableCell,
|
||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import usePagination from 'hooks/usePagination';
|
import usePagination from 'hooks/usePagination';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -24,7 +24,7 @@ const ROOTROLE = 'root';
|
|||||||
const ProjectRoleList = () => {
|
const ProjectRoleList = () => {
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const { roles } = useProjectRoles();
|
const { roles } = useProjectRoles();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const paginationFilter = (role: IRole) => role?.type !== ROOTROLE;
|
const paginationFilter = (role: IRole) => role?.type !== ROOTROLE;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
tableRow: {
|
tableRow: {
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
backgroundColor: theme.palette.grey[200],
|
backgroundColor: theme.palette.grey[200],
|
||||||
@ -16,17 +16,17 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
description: {
|
description: {
|
||||||
textAlign: 'left',
|
textAlign: 'left',
|
||||||
maxWidth: '300px',
|
maxWidth: '300px',
|
||||||
[theme.breakpoints.down('sm')]: {
|
[theme.breakpoints.down('md')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
hideSM: {
|
hideSM: {
|
||||||
[theme.breakpoints.down('sm')]: {
|
[theme.breakpoints.down('md')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
hideXS: {
|
hideXS: {
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { useStyles } from './ProjectRoleListItem.styles';
|
import { useStyles } from './ProjectRoleListItem.styles';
|
||||||
import { TableCell, TableRow, Typography } from '@material-ui/core';
|
import { TableCell, TableRow, Typography } from '@mui/material';
|
||||||
import { Delete, Edit } from '@material-ui/icons';
|
import { Delete, Edit } from '@mui/icons-material';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
import SupervisedUserCircleIcon from '@material-ui/icons/SupervisedUserCircle';
|
import SupervisedUserCircleIcon from '@mui/icons-material/SupervisedUserCircle';
|
||||||
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
|
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
|
||||||
import { IProjectRole } from 'interfaces/role';
|
import { IProjectRole } from 'interfaces/role';
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
@ -28,7 +28,7 @@ const RoleListItem = ({
|
|||||||
setDelDialog,
|
setDelDialog,
|
||||||
}: IRoleListItemProps) => {
|
}: IRoleListItemProps) => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
rolesListBody: {
|
rolesListBody: {
|
||||||
paddingBottom: '4rem',
|
paddingBottom: '4rem',
|
||||||
minHeight: '50vh',
|
minHeight: '50vh',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Button } from '@material-ui/core';
|
import { Button } from '@mui/material';
|
||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
@ -13,7 +13,7 @@ import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
|
|||||||
|
|
||||||
const ProjectRoles = () => {
|
const ProjectRoles = () => {
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles({
|
export const useStyles = makeStyles()({
|
||||||
iconContainer: {
|
iconContainer: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Typography } from '@material-ui/core';
|
import { Typography } from '@mui/material';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
|
|
||||||
import { ReactComponent as EmailIcon } from 'assets/icons/email.svg';
|
import { ReactComponent as EmailIcon } from 'assets/icons/email.svg';
|
||||||
@ -16,7 +16,7 @@ const ConfirmUserEmail = ({
|
|||||||
closeConfirm,
|
closeConfirm,
|
||||||
inviteLink,
|
inviteLink,
|
||||||
}: IConfirmUserEmailProps) => {
|
}: IConfirmUserEmailProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
return (
|
return (
|
||||||
<Dialogue
|
<Dialogue
|
||||||
open={open}
|
open={open}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Typography } from '@material-ui/core';
|
import { Typography } from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
import UserInviteLink from './UserInviteLink/UserInviteLink';
|
import UserInviteLink from './UserInviteLink/UserInviteLink';
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ const ConfirmUserLink = ({
|
|||||||
closeConfirm,
|
closeConfirm,
|
||||||
inviteLink,
|
inviteLink,
|
||||||
}: IConfirmUserLink) => {
|
}: IConfirmUserLink) => {
|
||||||
const commonStyles = useCommonStyles();
|
const { classes: themeStyles } = useThemeStyles();
|
||||||
return (
|
return (
|
||||||
<Dialogue
|
<Dialogue
|
||||||
open={open}
|
open={open}
|
||||||
@ -23,7 +23,7 @@ const ConfirmUserLink = ({
|
|||||||
primaryButtonText="Close"
|
primaryButtonText="Close"
|
||||||
title="Team member added"
|
title="Team member added"
|
||||||
>
|
>
|
||||||
<div className={commonStyles.contentSpacingYLarge}>
|
<div className={themeStyles.contentSpacingYLarge}>
|
||||||
<Typography variant="body1">
|
<Typography variant="body1">
|
||||||
A new team member has been added. Please provide them with
|
A new team member has been added. Please provide them with
|
||||||
the following link to get started:
|
the following link to get started:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { IconButton, Tooltip } from '@material-ui/core';
|
import { IconButton, Tooltip } from '@mui/material';
|
||||||
import CopyIcon from '@material-ui/icons/FileCopy';
|
import CopyIcon from '@mui/icons-material/FileCopy';
|
||||||
import useToast from 'hooks/useToast';
|
import useToast from 'hooks/useToast';
|
||||||
|
|
||||||
interface IInviteLinkProps {
|
interface IInviteLinkProps {
|
||||||
@ -48,7 +48,7 @@ const UserInviteLink = ({ inviteLink }: IInviteLinkProps) => {
|
|||||||
>
|
>
|
||||||
{inviteLink}
|
{inviteLink}
|
||||||
<Tooltip title="Copy link">
|
<Tooltip title="Copy link">
|
||||||
<IconButton onClick={handleCopy}>
|
<IconButton onClick={handleCopy} size="large">
|
||||||
<CopyIcon />
|
<CopyIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(() => ({
|
export const useStyles = makeStyles()(() => ({
|
||||||
userListBody: {
|
userListBody: {
|
||||||
paddingBottom: '4rem',
|
paddingBottom: '4rem',
|
||||||
minHeight: '50vh',
|
minHeight: '50vh',
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
maxWidth: '400px',
|
maxWidth: '400px',
|
||||||
},
|
},
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
Typography,
|
Typography,
|
||||||
Radio,
|
Radio,
|
||||||
Switch,
|
Switch,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { useStyles } from './UserForm.styles';
|
import { useStyles } from './UserForm.styles';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import useUsers from 'hooks/api/getters/useUsers/useUsers';
|
import useUsers from 'hooks/api/getters/useUsers/useUsers';
|
||||||
@ -47,7 +47,7 @@ const UserForm: React.FC<IUserForm> = ({
|
|||||||
clearErrors,
|
clearErrors,
|
||||||
mode,
|
mode,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { roles } = useUsers();
|
const { roles } = useUsers();
|
||||||
const { bootstrap } = useUiBootstrap();
|
const { bootstrap } = useUiBootstrap();
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ import PageContent from 'component/common/PageContent/PageContent';
|
|||||||
import AccessContext from 'contexts/AccessContext';
|
import AccessContext from 'contexts/AccessContext';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
|
import { Button } from '@mui/material';
|
||||||
import { TableActions } from 'component/common/Table/TableActions/TableActions';
|
import { TableActions } from 'component/common/Table/TableActions/TableActions';
|
||||||
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
||||||
import { Button } from '@material-ui/core';
|
|
||||||
import { useStyles } from './UserAdmin.styles';
|
import { useStyles } from './UserAdmin.styles';
|
||||||
import { useHistory } from 'react-router-dom';
|
import { useHistory } from 'react-router-dom';
|
||||||
import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
|
import { AdminAlert } from 'component/common/AdminAlert/AdminAlert';
|
||||||
@ -16,7 +16,7 @@ const UsersAdmin = () => {
|
|||||||
const [search, setSearch] = useState('');
|
const [search, setSearch] = useState('');
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { Avatar, TextField, Typography } from '@material-ui/core';
|
import { Avatar, TextField, Typography } from '@mui/material';
|
||||||
import { trim } from 'component/common/util';
|
import { trim } from 'component/common/util';
|
||||||
import { modalStyles } from 'component/admin/users/util';
|
import { modalStyles } from 'component/admin/users/util';
|
||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
import PasswordChecker from 'component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker';
|
import PasswordChecker from 'component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher/PasswordMatcher';
|
import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher/PasswordMatcher';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import { IUser } from 'interfaces/user';
|
import { IUser } from 'interfaces/user';
|
||||||
|
|
||||||
interface IChangePasswordProps {
|
interface IChangePasswordProps {
|
||||||
@ -27,7 +27,7 @@ const ChangePassword = ({
|
|||||||
const [data, setData] = useState({});
|
const [data, setData] = useState({});
|
||||||
const [error, setError] = useState<Record<string, string>>({});
|
const [error, setError] = useState<Record<string, string>>({});
|
||||||
const [validPassword, setValidPassword] = useState(false);
|
const [validPassword, setValidPassword] = useState(false);
|
||||||
const commonStyles = useCommonStyles();
|
const { classes: themeStyles } = useThemeStyles();
|
||||||
|
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
const updateField = e => {
|
const updateField = e => {
|
||||||
@ -90,8 +90,8 @@ const ChangePassword = ({
|
|||||||
<form
|
<form
|
||||||
onSubmit={submit}
|
onSubmit={submit}
|
||||||
className={classnames(
|
className={classnames(
|
||||||
commonStyles.contentSpacingY,
|
themeStyles.contentSpacingY,
|
||||||
commonStyles.flexColumn
|
themeStyles.flexColumn
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<ConditionallyRender
|
<ConditionallyRender
|
||||||
@ -101,7 +101,7 @@ const ChangePassword = ({
|
|||||||
<Typography variant="subtitle1">
|
<Typography variant="subtitle1">
|
||||||
Changing password for user
|
Changing password for user
|
||||||
</Typography>
|
</Typography>
|
||||||
<div className={commonStyles.flexRow}>
|
<div className={themeStyles.flexRow}>
|
||||||
<Avatar
|
<Avatar
|
||||||
variant="rounded"
|
variant="rounded"
|
||||||
alt="Gravatar"
|
alt="Gravatar"
|
||||||
|
@ -2,10 +2,10 @@ import React from 'react';
|
|||||||
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
import { Dialogue } from 'component/common/Dialogue/Dialogue';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { REMOVE_USER_ERROR } from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi';
|
import { REMOVE_USER_ERROR } from 'hooks/api/actions/useAdminUsersApi/useAdminUsersApi';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import useLoading from 'hooks/useLoading';
|
import useLoading from 'hooks/useLoading';
|
||||||
import { Avatar, Typography } from '@material-ui/core';
|
import { Avatar, Typography } from '@mui/material';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import { IUser } from 'interfaces/user';
|
import { IUser } from 'interfaces/user';
|
||||||
|
|
||||||
interface IDeleteUserProps {
|
interface IDeleteUserProps {
|
||||||
@ -26,7 +26,7 @@ const DeleteUser = ({
|
|||||||
userApiErrors,
|
userApiErrors,
|
||||||
}: IDeleteUserProps) => {
|
}: IDeleteUserProps) => {
|
||||||
const ref = useLoading(userLoading);
|
const ref = useLoading(userLoading);
|
||||||
const commonStyles = useCommonStyles();
|
const { classes: themeStyles } = useThemeStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialogue
|
<Dialogue
|
||||||
@ -50,7 +50,7 @@ const DeleteUser = ({
|
|||||||
</Alert>
|
</Alert>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<div data-loading className={commonStyles.flexRow}>
|
<div data-loading className={themeStyles.flexRow}>
|
||||||
<Avatar
|
<Avatar
|
||||||
variant="rounded"
|
variant="rounded"
|
||||||
alt="Gravatar"
|
alt="Gravatar"
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
import { unleashGrey } from 'themes/themeColors';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
tableRow: {
|
tableRow: {
|
||||||
'& > td': {
|
'& > td': {
|
||||||
padding: '4px 16px',
|
padding: '4px 16px',
|
||||||
borderColor: theme.v2.palette.grey[30],
|
borderColor: unleashGrey[300],
|
||||||
},
|
},
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
backgroundColor: theme.v2.palette.grey[10],
|
backgroundColor: unleashGrey[100],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tableCellHeader: {
|
tableCellHeader: {
|
||||||
'& > th': {
|
'& > th': {
|
||||||
backgroundColor: theme.v2.palette.grey[20],
|
backgroundColor: unleashGrey[200],
|
||||||
fontWeight: 'normal',
|
fontWeight: 'normal',
|
||||||
border: 0,
|
border: 0,
|
||||||
'&:first-child': {
|
'&:first-child': {
|
||||||
@ -42,24 +43,24 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
margin: 'auto',
|
margin: 'auto',
|
||||||
},
|
},
|
||||||
firstColumnSM: {
|
firstColumnSM: {
|
||||||
[theme.breakpoints.down('sm')]: {
|
[theme.breakpoints.down('md')]: {
|
||||||
borderTopLeftRadius: '8px',
|
borderTopLeftRadius: '8px',
|
||||||
borderBottomLeftRadius: '8px',
|
borderBottomLeftRadius: '8px',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
firstColumnXS: {
|
firstColumnXS: {
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
borderTopLeftRadius: '8px',
|
borderTopLeftRadius: '8px',
|
||||||
borderBottomLeftRadius: '8px',
|
borderBottomLeftRadius: '8px',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
hideSM: {
|
hideSM: {
|
||||||
[theme.breakpoints.down('sm')]: {
|
[theme.breakpoints.down('md')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
hideXS: {
|
hideXS: {
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
display: 'none',
|
display: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -5,9 +5,9 @@ import {
|
|||||||
TableRow,
|
TableRow,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
Typography,
|
Typography,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { Delete, Edit, Lock } from '@material-ui/icons';
|
import { Delete, Edit, Lock } from '@mui/icons-material';
|
||||||
import { SyntheticEvent, useContext } from 'react';
|
import { SyntheticEvent, useContext } from 'react';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
@ -38,7 +38,7 @@ const UserListItem = ({
|
|||||||
}: IUserListItemProps) => {
|
}: IUserListItemProps) => {
|
||||||
const { hasAccess } = useContext(AccessContext);
|
const { hasAccess } = useContext(AccessContext);
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TableRow key={user.id} className={styles.tableRow}>
|
<TableRow key={user.id} className={styles.tableRow}>
|
||||||
@ -90,6 +90,7 @@ const UserListItem = ({
|
|||||||
onClick={() =>
|
onClick={() =>
|
||||||
history.push(`/admin/users/${user.id}/edit`)
|
history.push(`/admin/users/${user.id}/edit`)
|
||||||
}
|
}
|
||||||
|
size="large"
|
||||||
>
|
>
|
||||||
<Edit />
|
<Edit />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
@ -98,6 +99,7 @@ const UserListItem = ({
|
|||||||
<IconButton
|
<IconButton
|
||||||
data-loading
|
data-loading
|
||||||
onClick={openPwDialog(user)}
|
onClick={openPwDialog(user)}
|
||||||
|
size="large"
|
||||||
>
|
>
|
||||||
<Lock />
|
<Lock />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
@ -106,6 +108,7 @@ const UserListItem = ({
|
|||||||
<IconButton
|
<IconButton
|
||||||
data-loading
|
data-loading
|
||||||
onClick={openDelDialog(user)}
|
onClick={openDelDialog(user)}
|
||||||
|
size="large"
|
||||||
>
|
>
|
||||||
<Delete />
|
<Delete />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
TableCell,
|
TableCell,
|
||||||
TableHead,
|
TableHead,
|
||||||
TableRow,
|
TableRow,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import ChangePassword from './ChangePassword/ChangePassword';
|
import ChangePassword from './ChangePassword/ChangePassword';
|
||||||
import DeleteUser from './DeleteUser/DeleteUser';
|
import DeleteUser from './DeleteUser/DeleteUser';
|
||||||
@ -36,7 +36,7 @@ interface IUsersListProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const UsersList = ({ search }: IUsersListProps) => {
|
const UsersList = ({ search }: IUsersListProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { users, roles, refetch, loading } = useUsers();
|
const { users, roles, refetch, loading } = useUsers();
|
||||||
const { setToastData, setToastApiError } = useToast();
|
const { setToastData, setToastApiError } = useToast();
|
||||||
const {
|
const {
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
import { ThemeProvider } from '@material-ui/core';
|
|
||||||
import { ApplicationEdit } from './ApplicationEdit';
|
import { ApplicationEdit } from './ApplicationEdit';
|
||||||
import renderer from 'react-test-renderer';
|
import renderer from 'react-test-renderer';
|
||||||
import { MemoryRouter } from 'react-router-dom';
|
import { MemoryRouter } from 'react-router-dom';
|
||||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||||
import theme from 'themes/mainTheme';
|
|
||||||
import AccessProvider from 'component/providers/AccessProvider/AccessProvider';
|
|
||||||
import UIProvider from 'component/providers/UIProvider/UIProvider';
|
import UIProvider from 'component/providers/UIProvider/UIProvider';
|
||||||
|
import { ThemeProvider } from 'themes/ThemeProvider';
|
||||||
|
import { AccessProviderMock } from 'component/providers/AccessProvider/AccessProviderMock';
|
||||||
|
|
||||||
test('renders correctly if no application', () => {
|
test('renders correctly if no application', () => {
|
||||||
const tree = renderer
|
const tree = renderer
|
||||||
.create(
|
.create(
|
||||||
<AccessProvider permissions={[{ permission: ADMIN }]}>
|
<AccessProviderMock permissions={[{ permission: ADMIN }]}>
|
||||||
<ThemeProvider theme={theme}>
|
<ThemeProvider>
|
||||||
<UIProvider>
|
<UIProvider>
|
||||||
<MemoryRouter initialEntries={['/test']}>
|
<MemoryRouter initialEntries={['/test']}>
|
||||||
<ApplicationEdit
|
<ApplicationEdit
|
||||||
@ -23,7 +22,7 @@ test('renders correctly if no application', () => {
|
|||||||
</MemoryRouter>
|
</MemoryRouter>
|
||||||
</UIProvider>
|
</UIProvider>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
</AccessProvider>
|
</AccessProviderMock>
|
||||||
)
|
)
|
||||||
.toJSON();
|
.toJSON();
|
||||||
|
|
||||||
@ -34,9 +33,11 @@ test('renders correctly without permission', () => {
|
|||||||
const tree = renderer
|
const tree = renderer
|
||||||
.create(
|
.create(
|
||||||
<MemoryRouter>
|
<MemoryRouter>
|
||||||
<ThemeProvider theme={theme}>
|
<ThemeProvider>
|
||||||
<UIProvider>
|
<UIProvider>
|
||||||
<AccessProvider permissions={[{ permission: ADMIN }]}>
|
<AccessProviderMock
|
||||||
|
permissions={[{ permission: ADMIN }]}
|
||||||
|
>
|
||||||
<ApplicationEdit
|
<ApplicationEdit
|
||||||
fetchApplication={() => Promise.resolve({})}
|
fetchApplication={() => Promise.resolve({})}
|
||||||
storeApplicationMetaData={jest.fn()}
|
storeApplicationMetaData={jest.fn()}
|
||||||
@ -82,7 +83,7 @@ test('renders correctly without permission', () => {
|
|||||||
}}
|
}}
|
||||||
locationSettings={{ locale: 'en-GB' }}
|
locationSettings={{ locale: 'en-GB' }}
|
||||||
/>
|
/>
|
||||||
</AccessProvider>
|
</AccessProviderMock>
|
||||||
</UIProvider>
|
</UIProvider>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
</MemoryRouter>
|
</MemoryRouter>
|
||||||
@ -96,9 +97,11 @@ test('renders correctly with permissions', () => {
|
|||||||
const tree = renderer
|
const tree = renderer
|
||||||
.create(
|
.create(
|
||||||
<MemoryRouter>
|
<MemoryRouter>
|
||||||
<ThemeProvider theme={theme}>
|
<ThemeProvider>
|
||||||
<UIProvider>
|
<UIProvider>
|
||||||
<AccessProvider permissions={[{ permission: ADMIN }]}>
|
<AccessProviderMock
|
||||||
|
permissions={[{ permission: ADMIN }]}
|
||||||
|
>
|
||||||
<ApplicationEdit
|
<ApplicationEdit
|
||||||
fetchApplication={() => Promise.resolve({})}
|
fetchApplication={() => Promise.resolve({})}
|
||||||
storeApplicationMetaData={jest.fn()}
|
storeApplicationMetaData={jest.fn()}
|
||||||
@ -144,7 +147,7 @@ test('renders correctly with permissions', () => {
|
|||||||
}}
|
}}
|
||||||
locationSettings={{ locale: 'en-GB' }}
|
locationSettings={{ locale: 'en-GB' }}
|
||||||
/>
|
/>
|
||||||
</AccessProvider>
|
</AccessProviderMock>
|
||||||
</UIProvider>
|
</UIProvider>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
</MemoryRouter>
|
</MemoryRouter>
|
||||||
|
@ -7,8 +7,8 @@ import {
|
|||||||
LinearProgress,
|
LinearProgress,
|
||||||
Link,
|
Link,
|
||||||
Typography,
|
Typography,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import { Link as LinkIcon } from '@material-ui/icons';
|
import { Link as LinkIcon } from '@mui/icons-material';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { UPDATE_APPLICATION } from 'component/providers/AccessProvider/permissions';
|
import { UPDATE_APPLICATION } from 'component/providers/AccessProvider/permissions';
|
||||||
import { ApplicationView } from '../ApplicationView/ApplicationView';
|
import { ApplicationView } from '../ApplicationView/ApplicationView';
|
||||||
@ -112,7 +112,11 @@ export const ApplicationEdit = () => {
|
|||||||
<ConditionallyRender
|
<ConditionallyRender
|
||||||
condition={Boolean(url)}
|
condition={Boolean(url)}
|
||||||
show={
|
show={
|
||||||
<IconButton component={Link} href={url}>
|
<IconButton
|
||||||
|
component={Link}
|
||||||
|
href={url}
|
||||||
|
size="large"
|
||||||
|
>
|
||||||
<LinkIcon titleAccess={url} />
|
<LinkIcon titleAccess={url} />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
}
|
}
|
||||||
|
@ -5,19 +5,19 @@ exports[`renders correctly if no application 1`] = `
|
|||||||
<p>
|
<p>
|
||||||
Loading...
|
Loading...
|
||||||
</p>
|
</p>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate"
|
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate mui-130qhmc-MuiLinearProgress-root"
|
||||||
role="progressbar"
|
role="progressbar"
|
||||||
>
|
>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate mui-yt7v2r-MuiLinearProgress-bar1"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-bar2Indeterminate MuiLinearProgress-barColorPrimary"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar2Indeterminate mui-1wjhhwq-MuiLinearProgress-bar2"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -26,19 +26,19 @@ exports[`renders correctly with permissions 1`] = `
|
|||||||
<p>
|
<p>
|
||||||
Loading...
|
Loading...
|
||||||
</p>
|
</p>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate"
|
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate mui-130qhmc-MuiLinearProgress-root"
|
||||||
role="progressbar"
|
role="progressbar"
|
||||||
>
|
>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate mui-yt7v2r-MuiLinearProgress-bar1"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-bar2Indeterminate MuiLinearProgress-barColorPrimary"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar2Indeterminate mui-1wjhhwq-MuiLinearProgress-bar2"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -47,18 +47,18 @@ exports[`renders correctly without permission 1`] = `
|
|||||||
<p>
|
<p>
|
||||||
Loading...
|
Loading...
|
||||||
</p>
|
</p>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate"
|
className="MuiLinearProgress-root MuiLinearProgress-colorPrimary MuiLinearProgress-indeterminate mui-130qhmc-MuiLinearProgress-root"
|
||||||
role="progressbar"
|
role="progressbar"
|
||||||
>
|
>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar1Indeterminate mui-yt7v2r-MuiLinearProgress-bar1"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
<div
|
<span
|
||||||
className="MuiLinearProgress-bar MuiLinearProgress-bar2Indeterminate MuiLinearProgress-barColorPrimary"
|
className="MuiLinearProgress-bar MuiLinearProgress-barColorPrimary MuiLinearProgress-bar2Indeterminate mui-1wjhhwq-MuiLinearProgress-bar2"
|
||||||
style={Object {}}
|
style={Object {}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
import { CircularProgress } from '@material-ui/core';
|
import { CircularProgress } from '@mui/material';
|
||||||
import { Warning } from '@material-ui/icons';
|
import { Warning } from '@mui/icons-material';
|
||||||
import { AppsLinkList, styles as commonStyles } from 'component/common';
|
import { AppsLinkList, styles as themeStyles } from 'component/common';
|
||||||
import { SearchField } from 'component/common/SearchField/SearchField';
|
import { SearchField } from 'component/common/SearchField/SearchField';
|
||||||
import PageContent from 'component/common/PageContent/PageContent';
|
import PageContent from 'component/common/PageContent/PageContent';
|
||||||
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
import { HeaderTitle } from 'component/common/HeaderTitle/HeaderTitle';
|
||||||
@ -44,11 +44,11 @@ export const ApplicationList = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={commonStyles.searchField}>
|
<div className={themeStyles.searchField}>
|
||||||
<SearchField initialValue={filter} updateValue={setFilter} />
|
<SearchField initialValue={filter} updateValue={setFilter} />
|
||||||
</div>
|
</div>
|
||||||
<PageContent headerContent={<HeaderTitle title="Applications" />}>
|
<PageContent headerContent={<HeaderTitle title="Applications" />}>
|
||||||
<div className={commonStyles.fullwidth}>
|
<div className={themeStyles.fullwidth}>
|
||||||
<ConditionallyRender
|
<ConditionallyRender
|
||||||
condition={filteredApplications.length > 0}
|
condition={filteredApplications.length > 0}
|
||||||
show={<AppsLinkList apps={filteredApplications} />}
|
show={<AppsLinkList apps={filteredApplications} />}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { ChangeEvent, useState } from 'react';
|
import { ChangeEvent, useState } from 'react';
|
||||||
import { Grid, TextField } from '@material-ui/core';
|
import { Grid, TextField } from '@mui/material';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import icons from 'component/application/iconNames';
|
import icons from 'component/application/iconNames';
|
||||||
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
||||||
import useApplicationsApi from 'hooks/api/actions/useApplicationsApi/useApplicationsApi';
|
import useApplicationsApi from 'hooks/api/actions/useApplicationsApi/useApplicationsApi';
|
||||||
@ -20,7 +20,7 @@ export const ApplicationUpdate = ({ application }: IApplicationUpdateProps) => {
|
|||||||
const [localUrl, setLocalUrl] = useState(url || '');
|
const [localUrl, setLocalUrl] = useState(url || '');
|
||||||
const [localDescription, setLocalDescription] = useState(description || '');
|
const [localDescription, setLocalDescription] = useState(description || '');
|
||||||
const { setToastData, setToastApiError } = useToast();
|
const { setToastData, setToastApiError } = useToast();
|
||||||
const commonStyles = useCommonStyles();
|
const { classes: themeStyles } = useThemeStyles();
|
||||||
|
|
||||||
const onChange = async (
|
const onChange = async (
|
||||||
field: string,
|
field: string,
|
||||||
@ -43,7 +43,7 @@ export const ApplicationUpdate = ({ application }: IApplicationUpdateProps) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Grid container style={{ marginTop: '1rem' }}>
|
<Grid container style={{ marginTop: '1rem' }}>
|
||||||
<Grid item sm={12} xs={12} className={commonStyles.contentSpacingY}>
|
<Grid item sm={12} xs={12} className={themeStyles.contentSpacingY}>
|
||||||
<Grid item>
|
<Grid item>
|
||||||
<GeneralSelect
|
<GeneralSelect
|
||||||
name="iconSelect"
|
name="iconSelect"
|
||||||
|
@ -7,14 +7,14 @@ import {
|
|||||||
ListItemAvatar,
|
ListItemAvatar,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
Typography,
|
Typography,
|
||||||
} from '@material-ui/core';
|
} from '@mui/material';
|
||||||
import {
|
import {
|
||||||
Extension,
|
Extension,
|
||||||
FlagRounded,
|
FlagRounded,
|
||||||
Report,
|
Report,
|
||||||
SvgIconComponent,
|
SvgIconComponent,
|
||||||
Timeline,
|
Timeline,
|
||||||
} from '@material-ui/icons';
|
} from '@mui/icons-material';
|
||||||
import {
|
import {
|
||||||
CREATE_FEATURE,
|
CREATE_FEATURE,
|
||||||
CREATE_STRATEGY,
|
CREATE_STRATEGY,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
|
|
||||||
export const AdminAlert = () => {
|
export const AdminAlert = () => {
|
||||||
return (
|
return (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles({
|
export const useStyles = makeStyles()({
|
||||||
container: {
|
container: {
|
||||||
clip: 'rect(0 0 0 0)',
|
clip: 'rect(0 0 0 0)',
|
||||||
clipPath: 'inset(50%)',
|
clipPath: 'inset(50%)',
|
||||||
|
@ -9,7 +9,7 @@ interface IAnnouncerElementProps {
|
|||||||
export const AnnouncerElement = ({
|
export const AnnouncerElement = ({
|
||||||
announcement,
|
announcement,
|
||||||
}: IAnnouncerElementProps): ReactElement => {
|
}: IAnnouncerElementProps): ReactElement => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Button } from '@material-ui/core';
|
import { Button } from '@mui/material';
|
||||||
import { Alert } from '@material-ui/lab';
|
import { Alert } from '@mui/material';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
interface IApiErrorProps {
|
interface IApiErrorProps {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
@ -8,14 +8,14 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
},
|
},
|
||||||
icon: {
|
icon: {
|
||||||
background: theme.palette.primary.main,
|
background: theme.palette.primary.main,
|
||||||
height: 56,
|
height: 40,
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
width: 56,
|
width: 40,
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
paddingLeft: 6,
|
paddingLeft: 6,
|
||||||
borderTopLeftRadius: 50,
|
borderTopLeftRadius: 40,
|
||||||
borderBottomLeftRadius: 50,
|
borderBottomLeftRadius: 40,
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
},
|
},
|
||||||
iconDisabled: {
|
iconDisabled: {
|
||||||
@ -30,8 +30,11 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
borderTopRightRadius: 50,
|
borderTopRightRadius: 50,
|
||||||
borderBottomRightRadius: 50,
|
borderBottomRightRadius: 50,
|
||||||
'& fieldset': {
|
'& fieldset': {
|
||||||
borderColor: theme.palette,
|
borderColor: theme.palette.grey[300],
|
||||||
borderLeftColor: 'transparent',
|
borderLeftColor: 'transparent',
|
||||||
},
|
},
|
||||||
|
'&.Mui-focused .MuiOutlinedInput-notchedOutline': {
|
||||||
|
borderWidth: 1,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { useStyles } from 'component/common/AutocompleteBox/AutocompleteBox.styles';
|
import { useStyles } from 'component/common/AutocompleteBox/AutocompleteBox.styles';
|
||||||
import { Search, ArrowDropDown } from '@material-ui/icons';
|
import { Search, ArrowDropDown } from '@mui/icons-material';
|
||||||
import { Autocomplete, AutocompleteRenderInputParams } from '@material-ui/lab';
|
import { Autocomplete } from '@mui/material';
|
||||||
import { TextField } from '@material-ui/core';
|
import { AutocompleteRenderInputParams } from '@mui/material/Autocomplete';
|
||||||
|
import { TextField } from '@mui/material';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
|
|
||||||
interface IAutocompleteBoxProps {
|
interface IAutocompleteBoxProps {
|
||||||
@ -24,7 +25,7 @@ export const AutocompleteBox = ({
|
|||||||
onChange,
|
onChange,
|
||||||
disabled,
|
disabled,
|
||||||
}: IAutocompleteBoxProps) => {
|
}: IAutocompleteBoxProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const renderInput = (params: AutocompleteRenderInputParams) => {
|
const renderInput = (params: AutocompleteRenderInputParams) => {
|
||||||
return <TextField {...params} variant="outlined" label={label} />;
|
return <TextField {...params} variant="outlined" label={label} />;
|
||||||
@ -51,6 +52,7 @@ export const AutocompleteBox = ({
|
|||||||
renderInput={renderInput}
|
renderInput={renderInput}
|
||||||
getOptionLabel={value => value.label}
|
getOptionLabel={value => value.label}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
|
size="small"
|
||||||
multiple
|
multiple
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
breadcrumbNav: {
|
breadcrumbNav: {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
top: '4px',
|
top: '4px',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Breadcrumbs from '@material-ui/core/Breadcrumbs';
|
import Breadcrumbs from '@mui/material/Breadcrumbs';
|
||||||
import { Link, useLocation } from 'react-router-dom';
|
import { Link, useLocation } from 'react-router-dom';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { useStyles } from './BreadcrumbNav.styles';
|
import { useStyles } from './BreadcrumbNav.styles';
|
||||||
@ -8,7 +8,7 @@ import StringTruncator from '../StringTruncator/StringTruncator';
|
|||||||
|
|
||||||
const BreadcrumbNav = () => {
|
const BreadcrumbNav = () => {
|
||||||
const { isAdmin } = useContext(AccessContext);
|
const { isAdmin } = useContext(AccessContext);
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
const paths = location.pathname
|
const paths = location.pathname
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
badge: {
|
badge: {
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
width: '75px',
|
width: '75px',
|
||||||
@ -9,7 +9,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('sm')]: {
|
||||||
width: '50px',
|
width: '50px',
|
||||||
height: '50px',
|
height: '50px',
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Check, Close } from '@material-ui/icons';
|
import { Check, Close } from '@mui/icons-material';
|
||||||
import { useStyles } from './CheckMarkBadge.styles';
|
import { useStyles } from './CheckMarkBadge.styles';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ interface ICheckMarkBadgeProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const CheckMarkBadge = ({ type, className }: ICheckMarkBadgeProps) => {
|
const CheckMarkBadge = ({ type, className }: ICheckMarkBadgeProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
return (
|
return (
|
||||||
<div className={classnames(styles.badge, className)}>
|
<div className={classnames(styles.badge, className)}>
|
||||||
{type === 'error' ? (
|
{type === 'error' ? (
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
padding: '1rem',
|
padding: '1rem',
|
||||||
|
@ -5,7 +5,7 @@ interface ICodeboxProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Codebox = ({ text }: ICodeboxProps) => {
|
const Codebox = ({ text }: ICodeboxProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
constraintIconContainer: {
|
constraintIconContainer: {
|
||||||
backgroundColor: theme.palette.primary.main,
|
backgroundColor: theme.palette.primary.main,
|
||||||
height: '28px',
|
height: '28px',
|
||||||
|
@ -4,11 +4,7 @@ import { IConstraint } from 'interfaces/strategy';
|
|||||||
import { useStyles } from '../ConstraintAccordion.styles';
|
import { useStyles } from '../ConstraintAccordion.styles';
|
||||||
import { ConstraintAccordionEditBody } from './ConstraintAccordionEditBody/ConstraintAccordionEditBody';
|
import { ConstraintAccordionEditBody } from './ConstraintAccordionEditBody/ConstraintAccordionEditBody';
|
||||||
import { ConstraintAccordionEditHeader } from './ConstraintAccordionEditHeader/ConstraintAccordionEditHeader';
|
import { ConstraintAccordionEditHeader } from './ConstraintAccordionEditHeader/ConstraintAccordionEditHeader';
|
||||||
import {
|
import { Accordion, AccordionDetails, AccordionSummary } from '@mui/material';
|
||||||
Accordion,
|
|
||||||
AccordionDetails,
|
|
||||||
AccordionSummary,
|
|
||||||
} from '@material-ui/core';
|
|
||||||
import { cleanConstraint } from 'utils/cleanConstraint';
|
import { cleanConstraint } from 'utils/cleanConstraint';
|
||||||
import useFeatureApi from 'hooks/api/actions/useFeatureApi/useFeatureApi';
|
import useFeatureApi from 'hooks/api/actions/useFeatureApi/useFeatureApi';
|
||||||
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
||||||
@ -64,7 +60,7 @@ export const ConstraintAccordionEdit = ({
|
|||||||
const { validateConstraint } = useFeatureApi();
|
const { validateConstraint } = useFeatureApi();
|
||||||
const [expanded, setExpanded] = useState(false);
|
const [expanded, setExpanded] = useState(false);
|
||||||
const [action, setAction] = useState('');
|
const [action, setAction] = useState('');
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Setting expanded to true on mount will cause the accordion
|
// Setting expanded to true on mount will cause the accordion
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { FormControlLabel, Switch } from '@material-ui/core';
|
import { FormControlLabel, Switch } from '@mui/material';
|
||||||
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
||||||
|
|
||||||
interface ICaseInsensitiveProps {
|
interface ICaseInsensitiveProps {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
inputContainer: {
|
inputContainer: {
|
||||||
padding: '1rem',
|
padding: '1rem',
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { Button, FormControlLabel, Switch } from '@material-ui/core';
|
import { Button, FormControlLabel, Switch } from '@mui/material';
|
||||||
import { IConstraint } from 'interfaces/strategy';
|
import { IConstraint } from 'interfaces/strategy';
|
||||||
import { CANCEL } from '../ConstraintAccordionEdit';
|
import { CANCEL } from '../ConstraintAccordionEdit';
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ export const ConstraintAccordionEditBody: React.FC<
|
|||||||
setAction,
|
setAction,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { makeStyles } from '@material-ui/core';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
const useStyles = makeStyles(theme => ({
|
const useStyles = makeStyles()(theme => ({
|
||||||
header: {
|
header: {
|
||||||
fontSize: theme.fontSizes.bodySize,
|
fontSize: theme.fontSizes.bodySize,
|
||||||
fontWeight: 'normal',
|
fontWeight: 'normal',
|
||||||
@ -13,7 +13,7 @@ const useStyles = makeStyles(theme => ({
|
|||||||
export const ConstraintFormHeader: React.FC<
|
export const ConstraintFormHeader: React.FC<
|
||||||
React.HTMLAttributes<HTMLDivElement>
|
React.HTMLAttributes<HTMLDivElement>
|
||||||
> = ({ children, ...rest }) => {
|
> = ({ children, ...rest }) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
return (
|
return (
|
||||||
<h3 {...rest} className={styles.header}>
|
<h3 {...rest} className={styles.header}>
|
||||||
{children}
|
{children}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { Button, Chip, makeStyles } from '@material-ui/core';
|
import { Button, Chip } from '@mui/material';
|
||||||
|
import { makeStyles } from 'tss-react/mui';
|
||||||
import Input from 'component/common/Input/Input';
|
import Input from 'component/common/Input/Input';
|
||||||
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
@ -13,7 +14,7 @@ interface IFreeTextInputProps {
|
|||||||
setError: React.Dispatch<React.SetStateAction<string>>;
|
setError: React.Dispatch<React.SetStateAction<string>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const useStyles = makeStyles(theme => ({
|
const useStyles = makeStyles()(theme => ({
|
||||||
valueChip: {
|
valueChip: {
|
||||||
margin: '0 0.5rem 0.5rem 0',
|
margin: '0 0.5rem 0.5rem 0',
|
||||||
},
|
},
|
||||||
@ -58,7 +59,7 @@ export const FreeTextInput = ({
|
|||||||
setError,
|
setError,
|
||||||
}: IFreeTextInputProps) => {
|
}: IFreeTextInputProps) => {
|
||||||
const [inputValues, setInputValues] = useState('');
|
const [inputValues, setInputValues] = useState('');
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const onKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {
|
const onKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {
|
||||||
if (event.key === ENTER) {
|
if (event.key === ENTER) {
|
||||||
@ -137,7 +138,7 @@ const ConstraintValueChips = ({
|
|||||||
values,
|
values,
|
||||||
removeValue,
|
removeValue,
|
||||||
}: IConstraintValueChipsProps) => {
|
}: IConstraintValueChipsProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{values.map((value, index) => {
|
{values.map((value, index) => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
wordBreak: 'break-word',
|
wordBreak: 'break-word',
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { ILegalValue } from 'interfaces/context';
|
import { ILegalValue } from 'interfaces/context';
|
||||||
import { useStyles } from './LegalValueLabel.styles';
|
import { useStyles } from './LegalValueLabel.styles';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { FormControlLabel } from '@material-ui/core';
|
import { FormControlLabel } from '@mui/material';
|
||||||
|
|
||||||
interface ILegalValueTextProps {
|
interface ILegalValueTextProps {
|
||||||
legal: ILegalValue;
|
legal: ILegalValue;
|
||||||
@ -9,7 +9,7 @@ interface ILegalValueTextProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const LegalValueLabel = ({ legal, control }: ILegalValueTextProps) => {
|
export const LegalValueLabel = ({ legal, control }: ILegalValueTextProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { Checkbox } from '@material-ui/core';
|
import { Checkbox } from '@mui/material';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
||||||
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
||||||
import { ILegalValue } from 'interfaces/context';
|
import { ILegalValue } from 'interfaces/context';
|
||||||
@ -44,7 +44,7 @@ export const RestrictiveLegalValues = ({
|
|||||||
|
|
||||||
// Lazily initialise the values because there might be a lot of them.
|
// Lazily initialise the values because there might be a lot of them.
|
||||||
const [valuesMap, setValuesMap] = useState(() => createValuesMap(values));
|
const [valuesMap, setValuesMap] = useState(() => createValuesMap(values));
|
||||||
const styles = useCommonStyles();
|
const { classes: styles } = useThemeStyles();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setValuesMap(createValuesMap(values));
|
setValuesMap(createValuesMap(values));
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
||||||
import { FormControl, RadioGroup, Radio } from '@material-ui/core';
|
import { FormControl, RadioGroup, Radio } from '@mui/material';
|
||||||
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { useCommonStyles } from 'themes/commonStyles';
|
import { useThemeStyles } from 'themes/themeStyles';
|
||||||
import { ILegalValue } from 'interfaces/context';
|
import { ILegalValue } from 'interfaces/context';
|
||||||
import {
|
import {
|
||||||
LegalValueLabel,
|
LegalValueLabel,
|
||||||
@ -28,7 +28,7 @@ export const SingleLegalValue = ({
|
|||||||
setError,
|
setError,
|
||||||
}: ISingleLegalValueProps) => {
|
}: ISingleLegalValueProps) => {
|
||||||
const [filter, setFilter] = useState('');
|
const [filter, setFilter] = useState('');
|
||||||
const styles = useCommonStyles();
|
const { classes: styles } = useThemeStyles();
|
||||||
const filteredValues = filterLegalValues(legalValues, filter);
|
const filteredValues = filterLegalValues(legalValues, filter);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Input from 'component/common/Input/Input';
|
import Input from 'component/common/Input/Input';
|
||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
||||||
|
|
||||||
interface ISingleValueProps {
|
interface ISingleValueProps {
|
||||||
@ -10,7 +10,7 @@ interface ISingleValueProps {
|
|||||||
setError: React.Dispatch<React.SetStateAction<string>>;
|
setError: React.Dispatch<React.SetStateAction<string>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const useStyles = makeStyles(theme => ({
|
const useStyles = makeStyles()(theme => ({
|
||||||
singleValueContainer: { maxWidth: '300px', marginTop: '-1rem' },
|
singleValueContainer: { maxWidth: '300px', marginTop: '-1rem' },
|
||||||
singleValueInput: {
|
singleValueInput: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
@ -25,7 +25,7 @@ export const SingleValue = ({
|
|||||||
error,
|
error,
|
||||||
setError,
|
setError,
|
||||||
}: ISingleValueProps) => {
|
}: ISingleValueProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ConstraintFormHeader>
|
<ConstraintFormHeader>
|
||||||
|
@ -4,7 +4,7 @@ import { useStyles } from 'component/common/ConstraintAccordion/ConstraintAccord
|
|||||||
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
||||||
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
||||||
import { ConstraintIcon } from 'component/common/ConstraintAccordion/ConstraintIcon';
|
import { ConstraintIcon } from 'component/common/ConstraintAccordion/ConstraintIcon';
|
||||||
import { Help } from '@material-ui/icons';
|
import { Help } from '@mui/icons-material';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
import { dateOperators, DATE_AFTER, IN } from 'constants/operators';
|
import { dateOperators, DATE_AFTER, IN } from 'constants/operators';
|
||||||
import { SAVE } from '../ConstraintAccordionEdit';
|
import { SAVE } from '../ConstraintAccordionEdit';
|
||||||
@ -17,7 +17,7 @@ import {
|
|||||||
operatorsForContext,
|
operatorsForContext,
|
||||||
CURRENT_TIME_CONTEXT_FIELD,
|
CURRENT_TIME_CONTEXT_FIELD,
|
||||||
} from 'utils/operatorsForContext';
|
} from 'utils/operatorsForContext';
|
||||||
import { Tooltip } from '@material-ui/core';
|
import { Tooltip } from '@mui/material';
|
||||||
|
|
||||||
interface IConstraintAccordionViewHeader {
|
interface IConstraintAccordionViewHeader {
|
||||||
localConstraint: IConstraint;
|
localConstraint: IConstraint;
|
||||||
@ -36,7 +36,7 @@ export const ConstraintAccordionEditHeader = ({
|
|||||||
setOperator,
|
setOperator,
|
||||||
action,
|
action,
|
||||||
}: IConstraintAccordionViewHeader) => {
|
}: IConstraintAccordionViewHeader) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { context } = useUnleashContext();
|
const { context } = useUnleashContext();
|
||||||
const { contextName, operator } = localConstraint;
|
const { contextName, operator } = localConstraint;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
display: 'grid',
|
display: 'grid',
|
||||||
gap: '1rem',
|
gap: '1rem',
|
||||||
|
@ -7,8 +7,8 @@ import { useWeakMap } from 'hooks/useWeakMap';
|
|||||||
import { objectId } from 'utils/objectId';
|
import { objectId } from 'utils/objectId';
|
||||||
import { useStyles } from './ConstraintAccordionList.styles';
|
import { useStyles } from './ConstraintAccordionList.styles';
|
||||||
import { createEmptyConstraint } from 'component/common/ConstraintAccordion/ConstraintAccordionList/createEmptyConstraint';
|
import { createEmptyConstraint } from 'component/common/ConstraintAccordion/ConstraintAccordionList/createEmptyConstraint';
|
||||||
import { Button } from '@material-ui/core';
|
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||||
|
import { Button } from '@mui/material';
|
||||||
|
|
||||||
interface IConstraintAccordionListProps {
|
interface IConstraintAccordionListProps {
|
||||||
constraints: IConstraint[];
|
constraints: IConstraint[];
|
||||||
@ -37,7 +37,7 @@ export const ConstraintAccordionList = forwardRef<
|
|||||||
>(({ constraints, setConstraints, showCreateButton }, ref) => {
|
>(({ constraints, setConstraints, showCreateButton }, ref) => {
|
||||||
const state = useWeakMap<IConstraint, IConstraintAccordionListItemState>();
|
const state = useWeakMap<IConstraint, IConstraintAccordionListItemState>();
|
||||||
const { context } = useUnleashContext();
|
const { context } = useUnleashContext();
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const addConstraint =
|
const addConstraint =
|
||||||
setConstraints &&
|
setConstraints &&
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
import {
|
import { Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||||
Accordion,
|
import { ExpandMore } from '@mui/icons-material';
|
||||||
AccordionSummary,
|
|
||||||
AccordionDetails,
|
|
||||||
} from '@material-ui/core';
|
|
||||||
import { ExpandMore } from '@material-ui/icons';
|
|
||||||
import { IConstraint } from 'interfaces/strategy';
|
import { IConstraint } from 'interfaces/strategy';
|
||||||
|
|
||||||
import { ConstraintAccordionViewBody } from './ConstraintAccordionViewBody/ConstraintAccordionViewBody';
|
import { ConstraintAccordionViewBody } from './ConstraintAccordionViewBody/ConstraintAccordionViewBody';
|
||||||
@ -29,7 +25,7 @@ export const ConstraintAccordionView = ({
|
|||||||
onEdit,
|
onEdit,
|
||||||
onDelete,
|
onDelete,
|
||||||
}: IConstraintAccordionViewProps) => {
|
}: IConstraintAccordionViewProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const singleValue = oneOf(
|
const singleValue = oneOf(
|
||||||
[...semVerOperators, ...numOperators, ...dateOperators],
|
[...semVerOperators, ...numOperators, ...dateOperators],
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Chip } from '@material-ui/core';
|
import { Chip } from '@mui/material';
|
||||||
import { ImportExportOutlined, TextFormatOutlined } from '@material-ui/icons';
|
import { ImportExportOutlined, TextFormatOutlined } from '@mui/icons-material';
|
||||||
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { stringOperators } from 'constants/operators';
|
import { stringOperators } from 'constants/operators';
|
||||||
@ -18,7 +18,7 @@ interface IConstraintAccordionViewBodyProps {
|
|||||||
export const ConstraintAccordionViewBody = ({
|
export const ConstraintAccordionViewBody = ({
|
||||||
constraint,
|
constraint,
|
||||||
}: IConstraintAccordionViewBodyProps) => {
|
}: IConstraintAccordionViewBodyProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { locationSettings } = useLocationSettings();
|
const { locationSettings } = useLocationSettings();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -63,7 +63,7 @@ interface ISingleValueProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const SingleValue = ({ value, operator }: ISingleValueProps) => {
|
const SingleValue = ({ value, operator }: ISingleValueProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
if (!value) return null;
|
if (!value) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -89,7 +89,7 @@ interface IMultipleValuesProps {
|
|||||||
|
|
||||||
const MultipleValues = ({ values }: IMultipleValuesProps) => {
|
const MultipleValues = ({ values }: IMultipleValuesProps) => {
|
||||||
const [filter, setFilter] = useState('');
|
const [filter, setFilter] = useState('');
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
if (!values || values.length === 0) return null;
|
if (!values || values.length === 0) return null;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
||||||
import { Chip, useMediaQuery, IconButton } from '@material-ui/core';
|
import { Chip, useMediaQuery, IconButton } from '@mui/material';
|
||||||
import { ConstraintIcon } from 'component/common/ConstraintAccordion/ConstraintIcon';
|
import { ConstraintIcon } from 'component/common/ConstraintAccordion/ConstraintIcon';
|
||||||
import { Delete, Edit } from '@material-ui/icons';
|
import { Delete, Edit } from '@mui/icons-material';
|
||||||
import { IConstraint } from 'interfaces/strategy';
|
import { IConstraint } from 'interfaces/strategy';
|
||||||
|
|
||||||
import { useStyles } from 'component/common/ConstraintAccordion/ConstraintAccordion.styles';
|
import { useStyles } from 'component/common/ConstraintAccordion/ConstraintAccordion.styles';
|
||||||
@ -26,7 +26,7 @@ export const ConstraintAccordionViewHeader = ({
|
|||||||
onDelete,
|
onDelete,
|
||||||
singleValue,
|
singleValue,
|
||||||
}: IConstraintAccordionViewHeaderProps) => {
|
}: IConstraintAccordionViewHeaderProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const { locationSettings } = useLocationSettings();
|
const { locationSettings } = useLocationSettings();
|
||||||
const smallScreen = useMediaQuery(`(max-width:${790}px)`);
|
const smallScreen = useMediaQuery(`(max-width:${790}px)`);
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { useStyles } from './ConstraintAccordion.styles';
|
import { useStyles } from './ConstraintAccordion.styles';
|
||||||
import { TrackChanges } from '@material-ui/icons';
|
import { TrackChanges } from '@mui/icons-material';
|
||||||
|
|
||||||
export const ConstraintIcon = () => {
|
export const ConstraintIcon = () => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.constraintIconContainer}>
|
<div className={styles.constraintIconContainer}>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
container: {
|
container: {
|
||||||
padding: '0.5rem 0.75rem',
|
padding: '0.5rem 0.75rem',
|
||||||
borderRadius: theme.borders.radius.main,
|
borderRadius: theme.borderRadius.main,
|
||||||
backgroundColor: theme.palette.grey[200],
|
backgroundColor: theme.palette.grey[200],
|
||||||
lineHeight: 1.25,
|
lineHeight: 1.25,
|
||||||
},
|
},
|
||||||
@ -21,7 +21,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
'& > span': {
|
'& > span': {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
padding: '0 0.25rem',
|
padding: '0 0.25rem',
|
||||||
borderRadius: theme.borders.radius.main,
|
borderRadius: theme.borderRadius.main,
|
||||||
fontSize: theme.fontSizes.smallerBody,
|
fontSize: theme.fontSizes.smallerBody,
|
||||||
backgroundColor: theme.palette.primary.light,
|
backgroundColor: theme.palette.primary.light,
|
||||||
color: 'white',
|
color: 'white',
|
||||||
|
@ -9,7 +9,7 @@ interface IConstraintOperatorProps {
|
|||||||
export const ConstraintOperator = ({
|
export const ConstraintOperator = ({
|
||||||
constraint,
|
constraint,
|
||||||
}: IConstraintOperatorProps) => {
|
}: IConstraintOperatorProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
|
|
||||||
const operatorName = constraint.operator;
|
const operatorName = constraint.operator;
|
||||||
const operatorText = formatOperatorDescription(constraint.operator);
|
const operatorText = formatOperatorDescription(constraint.operator);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from 'tss-react/mui';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles()(theme => ({
|
||||||
valueContainer: {
|
valueContainer: {
|
||||||
lineHeight: 1.1,
|
lineHeight: 1.1,
|
||||||
marginTop: -5,
|
marginTop: -2,
|
||||||
marginBottom: -10,
|
marginBottom: -10,
|
||||||
},
|
},
|
||||||
optionContainer: {
|
optionContainer: {
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
import { Select, MenuItem, FormControl, InputLabel } from '@material-ui/core';
|
import {
|
||||||
|
Select,
|
||||||
|
MenuItem,
|
||||||
|
FormControl,
|
||||||
|
InputLabel,
|
||||||
|
SelectChangeEvent,
|
||||||
|
} from '@mui/material';
|
||||||
import {
|
import {
|
||||||
Operator,
|
Operator,
|
||||||
stringOperators,
|
stringOperators,
|
||||||
@ -7,7 +13,7 @@ import {
|
|||||||
numOperators,
|
numOperators,
|
||||||
inOperators,
|
inOperators,
|
||||||
} from 'constants/operators';
|
} from 'constants/operators';
|
||||||
import React, { useState, ChangeEvent } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { formatOperatorDescription } from 'component/common/ConstraintAccordion/ConstraintOperator/formatOperatorDescription';
|
import { formatOperatorDescription } from 'component/common/ConstraintAccordion/ConstraintOperator/formatOperatorDescription';
|
||||||
import { useStyles } from 'component/common/ConstraintAccordion/ConstraintOperatorSelect/ConstraintOperatorSelect.styles';
|
import { useStyles } from 'component/common/ConstraintAccordion/ConstraintOperatorSelect/ConstraintOperatorSelect.styles';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
@ -23,12 +29,10 @@ export const ConstraintOperatorSelect = ({
|
|||||||
value,
|
value,
|
||||||
onChange,
|
onChange,
|
||||||
}: IConstraintOperatorSelectProps) => {
|
}: IConstraintOperatorSelectProps) => {
|
||||||
const styles = useStyles();
|
const { classes: styles } = useStyles();
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
|
|
||||||
const onSelectChange = (
|
const onSelectChange = (event: SelectChangeEvent) => {
|
||||||
event: ChangeEvent<{ name?: string; value: unknown }>
|
|
||||||
) => {
|
|
||||||
onChange(event.target.value as Operator);
|
onChange(event.target.value as Operator);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user