diff --git a/frontend/cypress/integration/feature/feature.spec.ts b/frontend/cypress/integration/feature/feature.spec.ts index 080cd8dffb..f58e403cab 100644 --- a/frontend/cypress/integration/feature/feature.spec.ts +++ b/frontend/cypress/integration/feature/feature.spec.ts @@ -106,16 +106,8 @@ describe('feature', () => { `/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) { 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(); } @@ -126,7 +118,7 @@ describe('feature', () => { expect(req.body.name).to.equal('flexibleRollout'); expect(req.body.parameters.groupId).to.equal(featureToggleName); 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) { expect(req.body.constraints.length).to.equal(1); @@ -149,11 +141,6 @@ describe('feature', () => { `/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]') .first() .click() @@ -172,7 +159,7 @@ describe('feature', () => { req => { expect(req.body.parameters.groupId).to.equal('new-group-id'); 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) { expect(req.body.constraints.length).to.equal(1); @@ -301,10 +288,7 @@ describe('feature', () => { .children() .find('input') .should('have.attr', 'disabled'); - cy.get('[data-testid=VARIANT_WEIGHT_TYPE]') - .children() - .find('input') - .check(); + cy.get('[data-testid=VARIANT_WEIGHT_CHECK]').find('input').check(); cy.get('[data-testid=VARIANT_WEIGHT_INPUT]').clear().type('15'); cy.intercept( diff --git a/frontend/package.json b/frontend/package.json index 9c4f9a6e52..0c67555997 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -37,9 +37,11 @@ "e2e:heroku": "yarn run cypress open --config baseUrl='http://localhost:3000' --env AUTH_USER=example@example.com" }, "devDependencies": { - "@material-ui/core": "4.12.4", - "@material-ui/icons": "4.11.3", - "@material-ui/lab": "4.0.0-alpha.61", + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@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", "@testing-library/dom": "8.13.0", "@testing-library/jest-dom": "5.16.4", @@ -70,6 +72,7 @@ "immer": "^9.0.12", "lodash.clonedeep": "4.5.0", "msw": "^0.39.2", + "pkginfo": "^0.4.1", "prettier": "2.6.2", "prop-types": "15.8.1", "react": "17.0.2", @@ -85,6 +88,7 @@ "sass": "1.51.0", "semver": "7.3.7", "swr": "1.3.0", + "tss-react": "^3.6.2", "typescript": "4.6.4" }, "jest": { @@ -119,8 +123,5 @@ "ignorePatterns": [ "cypress" ] - }, - "dependencies": { - "pkginfo": "^0.4.1" } } diff --git a/frontend/src/component/Reporting/ReportCard/ReportCard.tsx b/frontend/src/component/Reporting/ReportCard/ReportCard.tsx index db3251126f..04e73f5372 100644 --- a/frontend/src/component/Reporting/ReportCard/ReportCard.tsx +++ b/frontend/src/component/Reporting/ReportCard/ReportCard.tsx @@ -1,7 +1,7 @@ import classnames from 'classnames'; -import { Paper } from '@material-ui/core'; -import CheckIcon from '@material-ui/icons/Check'; -import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined'; +import { Paper } from '@mui/material'; +import CheckIcon from '@mui/icons-material/Check'; +import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import styles from './ReportCard.module.scss'; import ReactTimeAgo from 'react-timeago'; diff --git a/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.styles.ts b/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.styles.ts index 2707be78ab..dc7aea6442 100644 --- a/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.styles.ts +++ b/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.styles.ts @@ -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: { width: '100%', margin: 'var(--card-margin-y) 0', @@ -11,11 +11,9 @@ export const useStyles = makeStyles(theme => ({ backgroundColor: '#f2f2f2', fontSize: 'var(--p-size)', }, - sortIcon: { marginLeft: 8, }, - reportToggleListHeader: { display: 'flex', justifyContent: 'space-between', @@ -23,22 +21,18 @@ export const useStyles = makeStyles(theme => ({ borderBottom: '1px solid #f1f1f1', padding: '1rem var(--card-padding-x)', }, - reportToggleListInnerContainer: { padding: 'var(--card-padding)', }, - reportToggleListHeading: { fontSize: 'var(--h1-size)', margin: 0, fontWeight: 'bold', }, - reportIcon: { fontsize: '1.5rem', marginRight: 5, }, - reportingToggleTable: { width: ' 100%', borderSpacing: '0 0.8rem', @@ -50,20 +44,16 @@ export const useStyles = makeStyles(theme => ({ expired: { color: 'var(--danger)', }, - active: { color: 'var(--success)', }, - stale: { color: 'var(--danger)', }, - reportStatus: { display: 'flex', alignItems: 'center', }, - tableRow: { '&:hover': { backgroundColor: '#eeeeee', @@ -73,30 +63,28 @@ export const useStyles = makeStyles(theme => ({ margin: 0, padding: 0, }, - link: { color: theme.palette.primary.main, textDecoration: 'none', fontWeight: theme.fontWeight.bold, }, - - [theme.breakpoints.down(800)]: { - hideColumn: { + hideColumn: { + [theme.breakpoints.down(800)]: { display: 'none', }, - th: { + }, + th: { + [theme.breakpoints.down(800)]: { minWidth: '120px', }, }, - - [theme.breakpoints.down(550)]: { - hideColumnStatus: { + hideColumnStatus: { + [theme.breakpoints.down(550)]: { display: 'none', }, }, - - [theme.breakpoints.down(425)]: { - hideColumnLastSeen: { + hideColumnLastSeen: { + [theme.breakpoints.down(425)]: { display: 'none', }, }, diff --git a/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.tsx b/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.tsx index b14cfa9885..b0dac53df4 100644 --- a/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.tsx +++ b/frontend/src/component/Reporting/ReportToggleList/ReportToggleList.tsx @@ -1,5 +1,5 @@ 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 { IFeatureToggleListItem } from 'interfaces/featureToggle'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; @@ -25,7 +25,7 @@ export const ReportToggleList: VFC = ({ features, selectedProject, }) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const [checkAll, setCheckAll] = useState(false); const [localFeatures, setFeatures] = useState([]); // @ts-expect-error diff --git a/frontend/src/component/Reporting/ReportToggleList/ReportToggleListHeader/ReportToggleListHeader.tsx b/frontend/src/component/Reporting/ReportToggleList/ReportToggleListHeader/ReportToggleListHeader.tsx index d799b81bbe..bcb8bbe97e 100644 --- a/frontend/src/component/Reporting/ReportToggleList/ReportToggleListHeader/ReportToggleListHeader.tsx +++ b/frontend/src/component/Reporting/ReportToggleList/ReportToggleListHeader/ReportToggleListHeader.tsx @@ -1,6 +1,6 @@ import { Dispatch, SetStateAction, VFC } from 'react'; -import { Checkbox } from '@material-ui/core'; -import UnfoldMoreOutlinedIcon from '@material-ui/icons/UnfoldMoreOutlined'; +import { Checkbox } from '@mui/material'; +import UnfoldMoreOutlinedIcon from '@mui/icons-material/UnfoldMoreOutlined'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ReportingSortType } from 'component/Reporting/constants'; import { useStyles } from '../ReportToggleList.styles'; @@ -20,7 +20,7 @@ export const ReportToggleListHeader: VFC = ({ setSort, bulkActionsOn, }) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const handleSort = (type: ReportingSortType) => { setSort(prev => ({ type, diff --git a/frontend/src/component/Reporting/ReportToggleList/ReportToggleListItem/ReportToggleListItem.tsx b/frontend/src/component/Reporting/ReportToggleList/ReportToggleListItem/ReportToggleListItem.tsx index 5fe410225f..bfe97a1ea2 100644 --- a/frontend/src/component/Reporting/ReportToggleList/ReportToggleListItem/ReportToggleListItem.tsx +++ b/frontend/src/component/Reporting/ReportToggleList/ReportToggleListItem/ReportToggleListItem.tsx @@ -1,9 +1,9 @@ import { memo, ReactNode } from 'react'; import classnames from 'classnames'; import { Link } from 'react-router-dom'; -import { Checkbox } from '@material-ui/core'; -import CheckIcon from '@material-ui/icons/Check'; -import ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined'; +import { Checkbox } from '@mui/material'; +import CheckIcon from '@mui/icons-material/Check'; +import ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import FeatureStatus from 'component/feature/FeatureView/FeatureStatus/FeatureStatus'; import { @@ -41,7 +41,7 @@ export const ReportToggleListItem = memo( bulkActionsOn, setFeatures, }) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const nameMatches = (feature: { name: string }) => feature.name === name; diff --git a/frontend/src/component/addons/AddonForm/AddonEvents/AddonEvents.tsx b/frontend/src/component/addons/AddonForm/AddonEvents/AddonEvents.tsx index e483b9bc5f..39e737a3dc 100644 --- a/frontend/src/component/addons/AddonForm/AddonEvents/AddonEvents.tsx +++ b/frontend/src/component/addons/AddonForm/AddonEvents/AddonEvents.tsx @@ -1,7 +1,7 @@ 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'; interface IAddonProps { @@ -24,7 +24,7 @@ export const AddonEvents = ({ return (

Events

- {error} + {error} {provider.events.map(e => ( diff --git a/frontend/src/component/addons/AddonForm/AddonForm.tsx b/frontend/src/component/addons/AddonForm/AddonForm.tsx index 2b86332cae..10ba48b855 100644 --- a/frontend/src/component/addons/AddonForm/AddonForm.tsx +++ b/frontend/src/component/addons/AddonForm/AddonForm.tsx @@ -7,9 +7,9 @@ import { FormEventHandler, MouseEventHandler, } from 'react'; -import { TextField, FormControlLabel, Switch, Button } from '@material-ui/core'; +import { TextField, FormControlLabel, Switch, Button } from '@mui/material'; 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 { IAddon, IAddonProvider } from 'interfaces/addons'; import { AddonParameters } from './AddonParameters/AddonParameters'; @@ -19,10 +19,10 @@ import PageContent from 'component/common/PageContent/PageContent'; import { useHistory } from 'react-router-dom'; import useAddonsApi from 'hooks/api/actions/useAddonsApi/useAddonsApi'; import useToast from 'hooks/useToast'; -import { makeStyles } from '@material-ui/core/styles'; +import { makeStyles } from 'tss-react/mui'; import { formatUnknownError } from 'utils/formatUnknownError'; -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles()(theme => ({ nameInput: { marginRight: '1.5rem', }, @@ -51,7 +51,7 @@ export const AddonForm: VFC = ({ const { createAddon, updateAddon } = useAddonsApi(); const { setToastData, setToastApiError } = useToast(); const history = useHistory(); - const styles = useStyles(); + const { classes: styles } = useStyles(); const [formValues, setFormValues] = useState(initialValues); const [errors, setErrors] = useState<{ @@ -190,7 +190,7 @@ export const AddonForm: VFC = ({ Read more -

{errors.general}

+

{errors.general}

diff --git a/frontend/src/component/addons/AddonForm/AddonParameters/AddonParameter/AddonParameter.tsx b/frontend/src/component/addons/AddonForm/AddonParameters/AddonParameter/AddonParameter.tsx index a33fb1a76b..a994709bf8 100644 --- a/frontend/src/component/addons/AddonForm/AddonParameters/AddonParameter/AddonParameter.tsx +++ b/frontend/src/component/addons/AddonForm/AddonParameters/AddonParameter/AddonParameter.tsx @@ -1,4 +1,4 @@ -import { TextField } from '@material-ui/core'; +import { TextField } from '@mui/material'; import { IAddonConfig, IAddonProviderParams } from 'interfaces/addons'; import { ChangeEventHandler } from 'react'; diff --git a/frontend/src/component/addons/AddonList/AddonList.tsx b/frontend/src/component/addons/AddonList/AddonList.tsx index 1407d3f2a0..4f448204bc 100644 --- a/frontend/src/component/addons/AddonList/AddonList.tsx +++ b/frontend/src/component/addons/AddonList/AddonList.tsx @@ -1,8 +1,8 @@ import React, { ReactElement } from 'react'; import { ConfiguredAddons } from './ConfiguredAddons/ConfiguredAddons'; import { AvailableAddons } from './AvailableAddons/AvailableAddons'; -import { Avatar } from '@material-ui/core'; -import { DeviceHub } from '@material-ui/icons'; +import { Avatar } from '@mui/material'; +import { DeviceHub } from '@mui/icons-material'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import slackIcon from 'assets/icons/slack.svg'; import jiraIcon from 'assets/icons/jira.svg'; diff --git a/frontend/src/component/addons/AddonList/AvailableAddons/AvailableAddons.tsx b/frontend/src/component/addons/AddonList/AvailableAddons/AvailableAddons.tsx index 4a1e27ace1..4307c92ee9 100644 --- a/frontend/src/component/addons/AddonList/AvailableAddons/AvailableAddons.tsx +++ b/frontend/src/component/addons/AddonList/AvailableAddons/AvailableAddons.tsx @@ -6,7 +6,7 @@ import { ListItemAvatar, ListItemSecondaryAction, ListItemText, -} from '@material-ui/core'; +} from '@mui/material'; import { CREATE_ADDON } from 'component/providers/AccessProvider/permissions'; import { useHistory } from 'react-router-dom'; import PermissionButton from 'component/common/PermissionButton/PermissionButton'; diff --git a/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.tsx b/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.tsx index 41887a8071..f507c398a3 100644 --- a/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.tsx +++ b/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.tsx @@ -4,8 +4,8 @@ import { ListItemAvatar, ListItemSecondaryAction, ListItemText, -} from '@material-ui/core'; -import { Delete, Edit, Visibility, VisibilityOff } from '@material-ui/icons'; +} from '@mui/material'; +import { Delete, Edit, Visibility, VisibilityOff } from '@mui/icons-material'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { DELETE_ADDON, diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.styles.ts b/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.styles.ts index d771e686ac..7677b5a830 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.styles.ts +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.styles.ts @@ -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: { maxWidth: '400px', }, diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.tsx b/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.tsx index cbbd279f50..6b14065814 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/ApiTokenForm.tsx @@ -1,5 +1,5 @@ -import { Button } from '@material-ui/core'; -import { KeyboardArrowDownOutlined } from '@material-ui/icons'; +import { Button } from '@mui/material'; +import { KeyboardArrowDownOutlined } from '@mui/icons-material'; import React from 'react'; import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments'; import useProjects from 'hooks/api/getters/useProjects/useProjects'; @@ -40,7 +40,7 @@ const ApiTokenForm: React.FC = ({ clearErrors, }) => { const TYPE_ADMIN = 'ADMIN'; - const styles = useStyles(); + const { classes: styles } = useStyles(); const { environments } = useEnvironments(); const { projects: availableProjects } = useProjects(); diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.styles.ts b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.styles.ts index 06424e9dfe..5c1e706282 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.styles.ts +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.styles.ts @@ -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: { cursor: 'pointer', fontSize: theme.fontSizes.bodySize, diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.tsx b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.tsx index 70ea7879ef..10d8165223 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectAllButton/SelectAllButton.tsx @@ -1,5 +1,5 @@ import React, { FC } from 'react'; -import { Box, Link } from '@material-ui/core'; +import { Box, Link } from '@mui/material'; import { useStyles } from './SelectAllButton.styles'; type SelectAllButtonProps = { @@ -11,7 +11,7 @@ export const SelectAllButton: FC = ({ isAllSelected, onClick, }) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); return ( @@ -19,6 +19,7 @@ export const SelectAllButton: FC = ({ onClick={onClick} className={styles.selectOptionsLink} component="button" + underline="hover" > {isAllSelected ? 'Deselect all' : 'Select all'} diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.styles.ts b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.styles.ts index 5e5fc582ef..7c29c9bd3c 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.styles.ts +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.styles.ts @@ -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: { marginRight: '0.2rem', }, diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.test.tsx b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.test.tsx index 7c97626fcc..c27528824e 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.test.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.test.tsx @@ -36,7 +36,7 @@ describe('SelectProjectInput', () => { expect(checkbox).toBeChecked(); const selectInputContainer = screen.getByTestId('select-input'); - const input = within(selectInputContainer).getByRole('textbox'); + const input = within(selectInputContainer).getByRole('combobox'); expect(input).toBeDisabled(); }); @@ -72,7 +72,7 @@ describe('SelectProjectInput', () => { expect(checkbox).not.toBeChecked(); const selectInputContainer = screen.getByTestId('select-input'); - const input = within(selectInputContainer).getByRole('textbox'); + const input = within(selectInputContainer).getByRole('combobox'); expect(input).toBeEnabled(); }); @@ -138,7 +138,7 @@ describe('SelectProjectInput', () => { /> ); const input = await screen.findByLabelText('Projects'); - user.type(input, 'alp'); + await user.type(input, 'alp'); await waitFor(() => { expect(screen.getByText('Alpha')).toBeVisible(); @@ -153,8 +153,8 @@ describe('SelectProjectInput', () => { expect(screen.getByText('Alpaca')).toBeVisible(); }); - user.clear(input); - user.type(input, 'bravo'); + await user.clear(input); + await user.type(input, 'bravo'); await waitFor(() => { expect(screen.getByText('Bravo')).toBeVisible(); }); diff --git a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.tsx b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.tsx index 58cadb6161..37e2c3c4ca 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenForm/SelectProjectInput/SelectProjectInput.tsx @@ -5,15 +5,17 @@ import { TextField, Box, Paper, -} from '@material-ui/core'; +} from '@mui/material'; +import { Autocomplete } from '@mui/material'; + import { - Autocomplete, AutocompleteRenderGroupParams, AutocompleteRenderInputParams, AutocompleteRenderOptionState, -} from '@material-ui/lab'; -import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; -import CheckBoxIcon from '@material-ui/icons/CheckBox'; +} from '@mui/material/Autocomplete'; + +import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; +import CheckBoxIcon from '@mui/icons-material/CheckBox'; import { IAutocompleteBoxOption } from 'component/common/AutocompleteBox/AutocompleteBox'; import { useStyles } from '../ApiTokenForm.styles'; import { SelectAllButton } from './SelectAllButton/SelectAllButton'; @@ -41,7 +43,7 @@ export const SelectProjectInput: VFC = ({ error, onFocus, }) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const [projects, setProjects] = useState( typeof defaultValue === 'string' ? [defaultValue] : defaultValue ); @@ -75,10 +77,11 @@ export const SelectProjectInput: VFC = ({ }; const renderOption = ( + props: object, option: IAutocompleteBoxOption, { selected }: AutocompleteRenderOptionState ) => ( - <> +
  • } checkedIcon={} @@ -86,7 +89,7 @@ export const SelectProjectInput: VFC = ({ className={styles.selectOptionCheckbox} /> {option.label} - +
  • ); const renderGroup = ({ key, children }: AutocompleteRenderGroupParams) => ( diff --git a/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.styles.ts b/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.styles.ts index d89dda8837..4b86ac8b9d 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.styles.ts +++ b/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.styles.ts @@ -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: { '&:hover': { backgroundColor: theme.palette.grey[200], @@ -9,7 +9,7 @@ export const useStyles = makeStyles(theme => ({ container: { display: 'flex', flexWrap: 'wrap', - [theme.breakpoints.down('xs')]: { + [theme.breakpoints.down('sm')]: { justifyContent: 'center', }, }, @@ -22,17 +22,17 @@ export const useStyles = makeStyles(theme => ({ flexWrap: 'nowrap', }, hideSM: { - [theme.breakpoints.down('sm')]: { - display: 'none', - }, - }, - hideMD: { [theme.breakpoints.down('md')]: { display: 'none', }, }, + hideMD: { + [theme.breakpoints.down('lg')]: { + display: 'none', + }, + }, hideXS: { - [theme.breakpoints.down('xs')]: { + [theme.breakpoints.down('sm')]: { display: 'none', }, }, diff --git a/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.tsx b/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.tsx index 255fde0fc3..0b7acfef66 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenList/ApiTokenList.tsx @@ -8,7 +8,7 @@ import { TableHead, TableRow, Tooltip, -} from '@material-ui/core'; +} from '@mui/material'; import AccessContext from 'contexts/AccessContext'; import useToast from 'hooks/useToast'; 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 { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; 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 copy from 'copy-to-clipboard'; import { useLocationSettings } from 'hooks/useLocationSettings'; @@ -37,7 +37,7 @@ interface IApiToken { } export const ApiTokenList = () => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const { hasAccess } = useContext(AccessContext); const { uiConfig } = useUiConfig(); const [showDelete, setShowDelete] = useState(false); @@ -196,6 +196,7 @@ export const ApiTokenList = () => { onClick={() => { copyToken(item.secret); }} + size="large" > @@ -209,6 +210,7 @@ export const ApiTokenList = () => { setDeleteToken(item); setShowDelete(true); }} + size="large" > diff --git a/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.styles.ts b/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.styles.ts index 16dd3dc13e..eb0c802bc2 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.styles.ts +++ b/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.styles.ts @@ -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: { marginBottom: 40, }, diff --git a/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.tsx b/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.tsx index 5bda1724f8..15fbdb05ec 100644 --- a/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.tsx +++ b/frontend/src/component/admin/apiToken/ApiTokenPage/ApiTokenPage.tsx @@ -1,6 +1,6 @@ import { useContext } from 'react'; import { useHistory } from 'react-router-dom'; -import { Button } from '@material-ui/core'; +import { Button } from '@mui/material'; import AccessContext from 'contexts/AccessContext'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import PageContent from 'component/common/PageContent'; @@ -12,12 +12,12 @@ import { } from 'component/providers/AccessProvider/permissions'; import { useStyles } from './ApiTokenPage.styles'; 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 { AdminAlert } from 'component/common/AdminAlert/AdminAlert'; export const ApiTokenPage = () => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const { hasAccess } = useContext(AccessContext); const { uiConfig } = useUiConfig(); const history = useHistory(); diff --git a/frontend/src/component/admin/apiToken/ConfirmToken/ConfirmToken.tsx b/frontend/src/component/admin/apiToken/ConfirmToken/ConfirmToken.tsx index ea592c9a8f..7526b9dffc 100644 --- a/frontend/src/component/admin/apiToken/ConfirmToken/ConfirmToken.tsx +++ b/frontend/src/component/admin/apiToken/ConfirmToken/ConfirmToken.tsx @@ -1,5 +1,5 @@ -import { Typography } from '@material-ui/core'; -import { useCommonStyles } from 'themes/commonStyles'; +import { Typography } from '@mui/material'; +import { useThemeStyles } from 'themes/themeStyles'; import { Dialogue } from 'component/common/Dialogue/Dialogue'; import { UserToken } from './UserToken/UserToken'; @@ -14,7 +14,8 @@ export const ConfirmToken = ({ closeConfirm, token, }: IConfirmUserLink) => { - const commonStyles = useCommonStyles(); + const { classes: themeStyles } = useThemeStyles(); + return ( -
    +
    Your new token has been created successfully. diff --git a/frontend/src/component/admin/apiToken/ConfirmToken/UserToken/UserToken.tsx b/frontend/src/component/admin/apiToken/ConfirmToken/UserToken/UserToken.tsx index f434c27b97..530fdecf4b 100644 --- a/frontend/src/component/admin/apiToken/ConfirmToken/UserToken/UserToken.tsx +++ b/frontend/src/component/admin/apiToken/ConfirmToken/UserToken/UserToken.tsx @@ -1,5 +1,5 @@ -import { IconButton, Tooltip } from '@material-ui/core'; -import CopyIcon from '@material-ui/icons/FileCopy'; +import { IconButton, Tooltip } from '@mui/material'; +import CopyIcon from '@mui/icons-material/FileCopy'; import copy from 'copy-to-clipboard'; import useToast from 'hooks/useToast'; @@ -38,7 +38,7 @@ export const UserToken = ({ token }: IUserTokenProps) => { > {token} - + diff --git a/frontend/src/component/admin/auth/AuthSettings.tsx b/frontend/src/component/admin/auth/AuthSettings.tsx index ed3fbf36e0..1391d42956 100644 --- a/frontend/src/component/admin/auth/AuthSettings.tsx +++ b/frontend/src/component/admin/auth/AuthSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; import AdminMenu from '../menu/AdminMenu'; -import { Alert } from '@material-ui/lab'; +import { Alert } from '@mui/material'; import PageContent from 'component/common/PageContent/PageContent'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; diff --git a/frontend/src/component/admin/auth/AutoCreateForm/AutoCreateForm.tsx b/frontend/src/component/admin/auth/AutoCreateForm/AutoCreateForm.tsx index 94ca9fc9e6..bc89340ad6 100644 --- a/frontend/src/component/admin/auth/AutoCreateForm/AutoCreateForm.tsx +++ b/frontend/src/component/admin/auth/AutoCreateForm/AutoCreateForm.tsx @@ -8,7 +8,8 @@ import { Select, Switch, TextField, -} from '@material-ui/core'; + SelectChangeEvent, +} from '@mui/material'; interface IAutoCreateFormProps { data?: { @@ -28,10 +29,8 @@ export const AutoCreateForm = ({ setValue('autoCreate', !data.autoCreate); }; - const updateDefaultRootRole = ( - evt: ChangeEvent<{ name?: string; value: unknown }> - ) => { - setValue('defaultRootRole', evt.target.value as string); + const updateDefaultRootRole = (evt: SelectChangeEvent) => { + setValue('defaultRootRole', evt.target.value); }; const updateField = (e: ChangeEvent) => { @@ -40,7 +39,7 @@ export const AutoCreateForm = ({ return ( - + Auto-create users

    @@ -61,7 +60,7 @@ export const AutoCreateForm = ({ /> - + Default Root Role

    @@ -75,6 +74,7 @@ export const AutoCreateForm = ({ Default Role @@ -336,7 +336,7 @@ export const AddVariant = ({ name="variant-payload-value" id="variant-payload-value" label="Value" - className={commonStyles.fullWidth} + className={themeStyles.fullWidth} value={payload.value} onChange={e => onPayload('value')(e.target.value)} data-testid={'VARIANT_PAYLOAD_VALUE'} diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.styles.ts b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.styles.ts index 089faf0116..7c0281c5db 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.styles.ts +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.styles.ts @@ -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 => ({ contextFieldSelect: { marginRight: '8px', }, diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.tsx index 28cf1d5c6e..4144dac7d9 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/AddFeatureVariant/OverrideConfig/OverrideConfig.tsx @@ -1,11 +1,11 @@ import { ChangeEvent, VFC } from 'react'; import classnames from 'classnames'; -import { Grid, IconButton, TextField, Tooltip } from '@material-ui/core'; -import { Delete } from '@material-ui/icons'; +import { Grid, IconButton, TextField, Tooltip } from '@mui/material'; +import { Delete } from '@mui/icons-material'; import { useStyles } from './OverrideConfig.styles'; -import { Autocomplete } from '@material-ui/lab'; +import { Autocomplete } from '@mui/material'; import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect'; -import { useCommonStyles } from 'themes/commonStyles'; +import { useThemeStyles } from 'themes/themeStyles'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { InputListField } from 'component/common/InputListField/InputListField'; import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext'; @@ -21,8 +21,8 @@ export const OverrideConfig: VFC = ({ overrides, overridesDispatch, }) => { - const styles = useStyles(); - const commonStyles = useCommonStyles(); + const { classes: styles } = useStyles(); + const { classes: themeStyles } = useThemeStyles(); const { context } = useUnleashContext(); const contextNames = context.map(({ name }) => ({ @@ -77,7 +77,7 @@ export const OverrideConfig: VFC = ({ value={override.contextName} options={contextNames} classes={{ - root: classnames(commonStyles.fullWidth), + root: classnames(themeStyles.fullWidth), }} onChange={(value: string) => { overridesDispatch({ @@ -96,7 +96,10 @@ export const OverrideConfig: VFC = ({ { + isOptionEqualToValue={( + option, + value + ) => { return option === value; }} options={legalValues} @@ -138,6 +141,7 @@ export const OverrideConfig: VFC = ({ payload: index, }); }} + size="large" > diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsList.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsList.tsx index 6efcc5163e..6f7cb3846f 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsList.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsList.tsx @@ -9,7 +9,7 @@ import { TableHead, TableRow, Typography, -} from '@material-ui/core'; +} from '@mui/material'; import { AddVariant } from './AddFeatureVariant/AddFeatureVariant'; import { useContext, useEffect, useState } from 'react'; diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/FeatureVariantsListItem.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/FeatureVariantsListItem.tsx index c4d3d48f75..e28ded2b63 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/FeatureVariantsListItem.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/FeatureVariantsListItem.tsx @@ -1,11 +1,5 @@ -import { - Chip, - IconButton, - TableCell, - TableRow, - Tooltip, -} from '@material-ui/core'; -import { Delete, Edit } from '@material-ui/icons'; +import { Chip, IconButton, TableCell, TableRow, Tooltip } from '@mui/material'; +import { Delete, Edit } from '@mui/icons-material'; import styles from '../variants.module.scss'; import { IFeatureVariant } from 'interfaces/featureToggle'; @@ -64,6 +58,7 @@ const FeatureVariantListItem = ({ editVariant(variant.name)} + size="large" > @@ -78,6 +73,7 @@ const FeatureVariantListItem = ({ name: variant.name, }); }} + size="large" > diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/useDeleteVariantMarkup.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/useDeleteVariantMarkup.tsx index f6be6f956d..294546285d 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/useDeleteVariantMarkup.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureVariantsList/FeatureVariantsListItem/useDeleteVariantMarkup.tsx @@ -1,4 +1,4 @@ -import { Alert } from '@material-ui/lab'; +import { Alert } from '@mui/material'; import { Dialogue } from 'component/common/Dialogue/Dialogue'; interface IUseDeleteVariantMarkupProps { diff --git a/frontend/src/component/feature/FeatureView/FeatureView.styles.ts b/frontend/src/component/feature/FeatureView/FeatureView.styles.ts index 3b59a9fd91..80e0beb266 100644 --- a/frontend/src/component/feature/FeatureView/FeatureView.styles.ts +++ b/frontend/src/component/feature/FeatureView/FeatureView.styles.ts @@ -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: { borderRadius: '10px', boxShadow: 'none', display: 'flex' }, header: { backgroundColor: '#fff', @@ -16,6 +16,9 @@ export const useStyles = makeStyles(theme => ({ display: 'flex', justifyContent: 'space-between', alignItems: 'center', + [theme.breakpoints.down(500)]: { + flexDirection: 'column', + }, }, separator: { width: '100%', @@ -29,6 +32,10 @@ export const useStyles = makeStyles(theme => ({ textTransform: 'none', width: 'auto', fontSize: '1rem', + padding: '0 !important', + [theme.breakpoints.up('md')]: { + minWidth: 160, + }, }, featureViewHeader: { fontSize: theme.fontSizes.mainHeader, @@ -39,9 +46,4 @@ export const useStyles = makeStyles(theme => ({ statusContainer: { marginLeft: '0.5rem', }, - [theme.breakpoints.down(500)]: { - innerContainer: { - flexDirection: 'column', - }, - }, })); diff --git a/frontend/src/component/feature/FeatureView/FeatureView.tsx b/frontend/src/component/feature/FeatureView/FeatureView.tsx index 476ed3bf85..39585aca34 100644 --- a/frontend/src/component/feature/FeatureView/FeatureView.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureView.tsx @@ -1,6 +1,6 @@ -import { Tab, Tabs, useMediaQuery } from '@material-ui/core'; +import { Tab, Tabs, useMediaQuery } from '@mui/material'; import React, { useState } from 'react'; -import { Archive, FileCopy, Label, WatchLater } from '@material-ui/icons'; +import { Archive, FileCopy, Label, WatchLater } from '@mui/icons-material'; import { Link, Route, useHistory, useParams, Switch } from 'react-router-dom'; import useFeatureApi from 'hooks/api/actions/useFeatureApi/useFeatureApi'; import { useFeature } from 'hooks/api/getters/useFeature/useFeature'; @@ -43,7 +43,7 @@ export const FeatureView = () => { featureId ); - const styles = useStyles(); + const { classes: styles } = useStyles(); const history = useHistory(); const ref = useLoading(loading); @@ -131,7 +131,7 @@ export const FeatureView = () => { />

    -
    +
    { value={activeTab.path} indicatorColor="primary" textColor="primary" - className={styles.tabNavigation} > {renderTabs()} diff --git a/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx b/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx index 5efefd91da..82b39f8c7b 100644 --- a/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx +++ b/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx @@ -1,4 +1,4 @@ -import { Typography } from '@material-ui/core'; +import { Typography } from '@mui/material'; import { IParameter } from 'interfaces/strategy'; import RolloutSlider from '../RolloutSlider/RolloutSlider'; import Select from 'component/common/select'; @@ -30,19 +30,11 @@ const FlexibleStrategy = ({ context, editable = true, }: IFlexibleStrategyProps) => { - const onUpdate = - (field: string) => - ( - e: React.ChangeEvent<{ name?: string; value: unknown }>, - newValue: number - ) => { - updateParameter(field, newValue); - }; + const onUpdate = (field: string) => (newValue: string) => { + updateParameter(field, newValue); + }; - const updateRollout = ( - e: React.ChangeEvent<{}>, - value: number | number[] - ) => { + const updateRollout = (e: Event, value: number | number[]) => { updateParameter('rollout', value.toString()); }; @@ -97,9 +89,7 @@ const FlexibleStrategy = ({ value={stickiness} disabled={!editable} data-testid={FLEXIBLE_STRATEGY_STICKINESS_ID} - onChange={e => - onUpdate('stickiness')(e, e.target.value as number) - } + onChange={e => onUpdate('stickiness')(e.target.value)} />  
    @@ -121,7 +111,7 @@ const FlexibleStrategy = ({ id="groupId-input" value={groupId || ''} disabled={!editable} - onChange={e => onUpdate('groupId')(e, e.target.value)} + onChange={e => onUpdate('groupId')(e.target.value)} data-testid={FLEXIBLE_STRATEGY_GROUP_ID} />
    diff --git a/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.styles.ts b/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.styles.ts index 51225ad6c0..8693a7b480 100644 --- a/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.styles.ts +++ b/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.styles.ts @@ -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 => ({ helpText: { color: 'rgba(0, 0, 0, 0.54)', fontSize: theme.fontSizes.smallerBody, diff --git a/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.tsx b/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.tsx index 145c7b208e..8972020fe0 100644 --- a/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.tsx +++ b/frontend/src/component/feature/StrategyTypes/GeneralStrategy/GeneralStrategy.tsx @@ -1,10 +1,5 @@ import React from 'react'; -import { - FormControlLabel, - Switch, - TextField, - Tooltip, -} from '@material-ui/core'; +import { FormControlLabel, Switch, TextField, Tooltip } from '@mui/material'; import StrategyInputList from '../StrategyInputList/StrategyInputList'; import RolloutSlider from '../RolloutSlider/RolloutSlider'; import { IParameter, IStrategy } from 'interfaces/strategy'; @@ -23,7 +18,7 @@ const GeneralStrategy = ({ updateParameter, editable, }: IGeneralStrategyProps) => { - const styles = useStyles(); + const { classes: styles } = useStyles(); const onChangeTextField = ( field: string, evt: React.ChangeEvent @@ -34,11 +29,7 @@ const GeneralStrategy = ({ updateParameter(field, value); }; - const onChangePercentage = ( - field: string, - evt: React.ChangeEvent<{}>, - newValue: any - ) => { + const onChangePercentage = (field: string, evt: Event, newValue: any) => { evt.preventDefault(); updateParameter(field, newValue); }; diff --git a/frontend/src/component/feature/StrategyTypes/RolloutSlider/RolloutSlider.tsx b/frontend/src/component/feature/StrategyTypes/RolloutSlider/RolloutSlider.tsx index 3ec255a42f..d71d7164b2 100644 --- a/frontend/src/component/feature/StrategyTypes/RolloutSlider/RolloutSlider.tsx +++ b/frontend/src/component/feature/StrategyTypes/RolloutSlider/RolloutSlider.tsx @@ -1,9 +1,9 @@ -import { makeStyles, withStyles } from '@material-ui/core/styles'; -import { Slider, Typography } from '@material-ui/core'; +import { makeStyles, withStyles } from 'tss-react/mui'; +import { Slider, Typography } from '@mui/material'; import { ROLLOUT_SLIDER_ID } from 'utils/testIds'; import React from 'react'; -const StyledSlider = withStyles({ +const StyledSlider = withStyles(Slider, theme => ({ root: { height: 8, }, @@ -12,13 +12,9 @@ const StyledSlider = withStyles({ width: 24, backgroundColor: '#fff', border: '2px solid currentColor', - marginTop: -8, - marginLeft: -12, }, active: {}, - valueLabel: { - left: 'calc(-50% + 4px)', - }, + valueLabel: {}, track: { height: 8, borderRadius: 4, @@ -27,9 +23,9 @@ const StyledSlider = withStyles({ height: 8, borderRadius: 4, }, -})(Slider); +})); -const useStyles = makeStyles(theme => ({ +const useStyles = makeStyles()(theme => ({ slider: { width: '100%', maxWidth: '100%', @@ -67,7 +63,7 @@ interface IRolloutSliderProps { minLabel?: string; maxLabel?: string; value: number; - onChange: (e: React.ChangeEvent<{}>, newValue: number | number[]) => void; + onChange: (e: Event, newValue: number | number[]) => void; disabled?: boolean; } @@ -77,7 +73,7 @@ const RolloutSlider = ({ onChange, disabled = false, }: IRolloutSliderProps) => { - const classes = useStyles(); + const { classes } = useStyles(); const valuetext = (value: number) => `${value}%`; diff --git a/frontend/src/component/feature/StrategyTypes/StrategyInputList/StrategyInputList.tsx b/frontend/src/component/feature/StrategyTypes/StrategyInputList/StrategyInputList.tsx index 3492c782d5..27aa56b41e 100644 --- a/frontend/src/component/feature/StrategyTypes/StrategyInputList/StrategyInputList.tsx +++ b/frontend/src/component/feature/StrategyTypes/StrategyInputList/StrategyInputList.tsx @@ -1,6 +1,6 @@ import React, { ChangeEvent, useState } from 'react'; -import { Button, Chip, TextField, Typography } from '@material-ui/core'; -import { Add } from '@material-ui/icons'; +import { Button, Chip, TextField, Typography } from '@mui/material'; +import { Add } from '@mui/icons-material'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ADD_TO_STRATEGY_INPUT_LIST, STRATEGY_INPUT_LIST } from 'utils/testIds'; import StringTruncator from 'component/common/StringTruncator/StringTruncator'; diff --git a/frontend/src/component/feedback/FeedbackCES/FeedbackCES.styles.ts b/frontend/src/component/feedback/FeedbackCES/FeedbackCES.styles.ts index d8921675f3..fe7670afbc 100644 --- a/frontend/src/component/feedback/FeedbackCES/FeedbackCES.styles.ts +++ b/frontend/src/component/feedback/FeedbackCES/FeedbackCES.styles.ts @@ -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 => ({ overlay: { pointerEvents: 'none', display: 'grid', @@ -18,7 +18,7 @@ export const useStyles = makeStyles(theme => ({ background: 'white', boxShadow: '0 0 1rem rgba(0, 0, 0, 0.25)', borderRadius: '1rem', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '2rem', }, }, diff --git a/frontend/src/component/feedback/FeedbackCES/FeedbackCES.tsx b/frontend/src/component/feedback/FeedbackCES/FeedbackCES.tsx index b3a1eeb237..0410d50892 100644 --- a/frontend/src/component/feedback/FeedbackCES/FeedbackCES.tsx +++ b/frontend/src/component/feedback/FeedbackCES/FeedbackCES.tsx @@ -1,4 +1,4 @@ -import { Modal } from '@material-ui/core'; +import { Modal } from '@mui/material'; import React, { useContext } from 'react'; import { feedbackCESContext, @@ -6,7 +6,7 @@ import { } from 'component/feedback/FeedbackCESContext/FeedbackCESContext'; import { FeedbackCESForm } from 'component/feedback/FeedbackCES/FeedbackCESForm'; import { useStyles } from 'component/feedback/FeedbackCES/FeedbackCES.styles'; -import { CloseOutlined } from '@material-ui/icons'; +import { CloseOutlined } from '@mui/icons-material'; export interface IFeedbackCESProps { state?: IFeedbackCESState; @@ -14,7 +14,7 @@ export interface IFeedbackCESProps { export const FeedbackCES = ({ state }: IFeedbackCESProps) => { const { hideFeedbackCES } = useContext(feedbackCESContext); - const styles = useStyles(); + const { classes: styles } = useStyles(); const closeButton = (