diff --git a/frontend/CHANGELOG.md b/frontend/CHANGELOG.md index 5c4b0b8f72..29a55824cf 100644 --- a/frontend/CHANGELOG.md +++ b/frontend/CHANGELOG.md @@ -16,7 +16,6 @@ The latest version of this document is always available in # 4.0.0-alpha.7 - feat: add support for demo sign-in - # 4.0.0-alpha.5 - fix: require ADMIN role to manage users - fix: add permissions for tag-types and project diff --git a/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.jsx b/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.jsx index f132576cfd..d980f0b658 100644 --- a/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.jsx +++ b/frontend/src/component/addons/AddonList/ConfiguredAddons/ConfiguredAddons.jsx @@ -9,12 +9,21 @@ import { ListItemText, } from '@material-ui/core'; import ConditionallyRender from '../../../common/ConditionallyRender/ConditionallyRender'; -import { DELETE_ADDON, UPDATE_ADDON } from '../../../AccessProvider/permissions'; +import { + DELETE_ADDON, + UPDATE_ADDON, +} from '../../../AccessProvider/permissions'; import { Link } from 'react-router-dom'; import PageContent from '../../../common/PageContent/PageContent'; import PropTypes from 'prop-types'; -const ConfiguredAddons = ({ addons, hasAccess, removeAddon, getIcon, toggleAddon }) => { +const ConfiguredAddons = ({ + addons, + hasAccess, + removeAddon, + getIcon, + toggleAddon, +}) => { const onRemoveAddon = addon => () => removeAddon(addon); const renderAddon = addon => ( @@ -25,7 +34,13 @@ const ConfiguredAddons = ({ addons, hasAccess, removeAddon, getIcon, toggleAddon + {addon.provider} } @@ -42,17 +57,27 @@ const ConfiguredAddons = ({ addons, hasAccess, removeAddon, getIcon, toggleAddon show={ toggleAddon(addon)} > - {addon.enabled ? 'visibility' : 'visibility_off'} + + {addon.enabled + ? 'visibility' + : 'visibility_off'} + } /> + delete } diff --git a/frontend/src/component/feature/FeatureToggleList/FeatureToggleList.jsx b/frontend/src/component/feature/FeatureToggleList/FeatureToggleList.jsx index 444ed6810f..3acf5bca66 100644 --- a/frontend/src/component/feature/FeatureToggleList/FeatureToggleList.jsx +++ b/frontend/src/component/feature/FeatureToggleList/FeatureToggleList.jsx @@ -135,7 +135,6 @@ const FeatureToggleList = ({ } /> - add @@ -154,10 +158,15 @@ const FeatureToggleList = ({ } @@ -57,7 +77,10 @@ const StrategiesList = ({ const strategyLink = ({ name, deprecated }) => ( {name} - (Deprecated)} /> + (Deprecated)} + /> ); @@ -126,20 +149,30 @@ const StrategiesList = ({ }} > - extension + extension - + - + )); return ( - }> + + } + > 0} diff --git a/frontend/src/component/strategies/StrategiesList/styles.js b/frontend/src/component/strategies/StrategiesList/styles.js index 48e55a53c0..e28856b0d0 100644 --- a/frontend/src/component/strategies/StrategiesList/styles.js +++ b/frontend/src/component/strategies/StrategiesList/styles.js @@ -3,6 +3,10 @@ import { makeStyles } from '@material-ui/styles'; export const useStyles = makeStyles(theme => ({ listItem: { padding: '0', + ['& a']: { + textDecoration: 'none', + color: 'inherit', + }, }, deprecated: { '& a': { diff --git a/frontend/src/component/strategies/__tests__/__snapshots__/list-component-test.jsx.snap b/frontend/src/component/strategies/__tests__/__snapshots__/list-component-test.jsx.snap index e9eb84dc82..fe6c0f5c80 100644 --- a/frontend/src/component/strategies/__tests__/__snapshots__/list-component-test.jsx.snap +++ b/frontend/src/component/strategies/__tests__/__snapshots__/list-component-test.jsx.snap @@ -40,6 +40,11 @@ exports[`renders correctly with one strategy 1`] = ` extension @@ -183,6 +188,11 @@ exports[`renders correctly with one strategy without permissions 1`] = ` extension diff --git a/frontend/src/component/tag-types/TagType.module.scss b/frontend/src/component/tag-types/TagType.module.scss index 055a7bf575..a04d180a6d 100644 --- a/frontend/src/component/tag-types/TagType.module.scss +++ b/frontend/src/component/tag-types/TagType.module.scss @@ -31,6 +31,11 @@ padding: 0; } +.tagListItem * > a { + text-decoration: none; + color: inherit; +} + .tagTypeContainer { max-width: 350px; } diff --git a/frontend/src/component/user/NewUser/NewUser.styles.ts b/frontend/src/component/user/NewUser/NewUser.styles.ts index 9b9f1d8c56..67c4152ed2 100644 --- a/frontend/src/component/user/NewUser/NewUser.styles.ts +++ b/frontend/src/component/user/NewUser/NewUser.styles.ts @@ -1,4 +1,4 @@ -import { makeStyles } from '@material-ui/styles'; +import { makeStyles } from '@material-ui/core/styles'; export const useStyles = makeStyles(theme => ({ container: { @@ -25,5 +25,8 @@ export const useStyles = makeStyles(theme => ({ }, emailField: { minWidth: '300px', + [theme.breakpoints.down('xs')]: { + minWidth: '100%', + }, }, })); diff --git a/frontend/src/component/user/StandaloneBanner/StandaloneBanner.styles.ts b/frontend/src/component/user/StandaloneBanner/StandaloneBanner.styles.ts index ec44c01a72..2bfd4cc876 100644 --- a/frontend/src/component/user/StandaloneBanner/StandaloneBanner.styles.ts +++ b/frontend/src/component/user/StandaloneBanner/StandaloneBanner.styles.ts @@ -1,4 +1,4 @@ -import { makeStyles } from '@material-ui/styles'; +import { makeStyles } from '@material-ui/core/styles'; export const useStyles = makeStyles(theme => ({ title: { @@ -11,12 +11,21 @@ export const useStyles = makeStyles(theme => ({ padding: '4rem 2rem', color: '#fff', position: 'relative', + [theme.breakpoints.down('sm')]: { + padding: '3rem 2rem', + }, + [theme.breakpoints.down('xs')]: { + padding: '3rem 1rem', + }, }, switchesContainer: { position: 'fixed', bottom: '40px', display: 'flex', flexDirection: 'column', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, switchIcon: { height: '180px', @@ -25,25 +34,40 @@ export const useStyles = makeStyles(theme => ({ position: 'absolute', bottom: '-54px', left: '100px', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, bottomRightStar: { position: 'absolute', bottom: '-100px', left: '200px', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, midRightStar: { position: 'absolute', bottom: '-80px', left: '300px', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, midLeftStar: { position: 'absolute', top: '10px', left: '150px', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, midLeftStarTwo: { position: 'absolute', top: '25px', left: '350px', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, }, })); diff --git a/frontend/src/component/user/UserProfile/EditProfile/EditProfile.styles.ts b/frontend/src/component/user/UserProfile/EditProfile/EditProfile.styles.ts index 33c8cbccb6..36c094961f 100644 --- a/frontend/src/component/user/UserProfile/EditProfile/EditProfile.styles.ts +++ b/frontend/src/component/user/UserProfile/EditProfile/EditProfile.styles.ts @@ -11,6 +11,9 @@ export const useStyles = makeStyles(theme => ({ width: '100%', }, }, + editProfileTitle: { + fontWeight: 'bold', + }, button: { width: '150px', marginTop: '1.15rem', diff --git a/frontend/src/component/user/UserProfile/EditProfile/EditProfile.tsx b/frontend/src/component/user/UserProfile/EditProfile/EditProfile.tsx index c3462eb2ca..02937afc7c 100644 --- a/frontend/src/component/user/UserProfile/EditProfile/EditProfile.tsx +++ b/frontend/src/component/user/UserProfile/EditProfile/EditProfile.tsx @@ -86,7 +86,7 @@ const EditProfile = ({
Update password diff --git a/frontend/src/component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker.tsx b/frontend/src/component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker.tsx index 82fb61fab7..3d6ec94f9d 100644 --- a/frontend/src/component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker.tsx +++ b/frontend/src/component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker.tsx @@ -47,6 +47,7 @@ const PasswordChecker = ({ password, callback }: IPasswordCheckerProps) => { }, [password]); const checkPassword = useCallback(async () => { + if (password.length < 3) return; try { const res = await makeValidatePassReq(); if (res.status === BAD_REQUEST) { @@ -63,7 +64,7 @@ const PasswordChecker = ({ password, callback }: IPasswordCheckerProps) => { // ResetPasswordForm handles errors related to submitting the form. console.log(e); } - }, [makeValidatePassReq, callback]); + }, [makeValidatePassReq, callback, password]); useEffect(() => { checkPassword(); diff --git a/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.styles.ts b/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.styles.ts index 78e96e5304..9a31b49c48 100644 --- a/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.styles.ts +++ b/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.styles.ts @@ -1,11 +1,36 @@ -import { makeStyles } from '@material-ui/styles'; +import { makeStyles } from '@material-ui/core/styles'; export const useStyles = makeStyles(theme => ({ container: { display: 'flex', + [theme.breakpoints.down('sm')]: { + flexDirection: 'column', + }, + overflow: 'hidden', + }, + leftContainer: { + width: '40%', + minHeight: '100vh', + [theme.breakpoints.down('sm')]: { + width: '100%', + minHeight: 'auto', + }, + }, + bannerSubtitle: { + [theme.breakpoints.down('sm')]: { + maxWidth: '300px', + }, + }, + rightContainer: { + width: '60%', + minHeight: '100vh', + position: 'relative', + [theme.breakpoints.down('sm')]: { + width: '100%', + position: 'static', + minHeight: 'auto', + }, }, - leftContainer: { width: '40%', minHeight: '100vh' }, - rightContainer: { width: '60%', minHeight: '100vh', position: 'relative' }, menu: { position: 'absolute', right: '20px', @@ -14,6 +39,11 @@ export const useStyles = makeStyles(theme => ({ textDecoration: 'none', color: '#000', }, + [theme.breakpoints.down('sm')]: { + '& a': { + color: '#fff', + }, + }, }, title: { fontWeight: 'bold', @@ -22,5 +52,11 @@ export const useStyles = makeStyles(theme => ({ }, innerRightContainer: { padding: '4rem 3rem', + [theme.breakpoints.down('sm')]: { + padding: '2rem 2rem', + }, + [theme.breakpoints.down('xs')]: { + padding: '2rem 1rem', + }, }, })); diff --git a/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.tsx b/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.tsx index 14938b8300..e65d8de7c2 100644 --- a/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.tsx +++ b/frontend/src/component/user/common/StandaloneLayout/StandaloneLayout.tsx @@ -5,7 +5,7 @@ import { Typography } from '@material-ui/core'; import { useStyles } from './StandaloneLayout.styles'; import ConditionallyRender from '../../../common/ConditionallyRender'; -import { Link } from 'react-router-dom'; +import { Link, useLocation } from 'react-router-dom'; interface IStandaloneLayout { BannerComponent?: JSX.Element; @@ -18,11 +18,12 @@ const StandaloneLayout: FC = ({ BannerComponent, }) => { const styles = useStyles(); + const location = useLocation(); let banner = ( - - Committed to creating new ways of developing. + + Committed to creating new ways of developing software. ); @@ -31,12 +32,14 @@ const StandaloneLayout: FC = ({ banner = BannerComponent; } + const isLoginpage = location.pathname.includes('login'); + return (
{banner}
Login diff --git a/frontend/src/store/settings/index.js b/frontend/src/store/settings/index.js index d6a5077444..52a1d01644 100644 --- a/frontend/src/store/settings/index.js +++ b/frontend/src/store/settings/index.js @@ -9,7 +9,7 @@ const localStorage = window.localStorage || { const basePath = location ? location.pathname : '/'; const SETTINGS = `${basePath}:settings`; -const DEFAULT = fromJS({}); +const DEFAULT = fromJS({ location: {} }); function getInitState() { try { diff --git a/frontend/src/themes/main-theme.js b/frontend/src/themes/main-theme.js index f822d5842a..6a214fbe14 100644 --- a/frontend/src/themes/main-theme.js +++ b/frontend/src/themes/main-theme.js @@ -8,9 +8,9 @@ const theme = createMuiTheme({ dark: '#34515e', }, secondary: { - main: '#00695c', - light: '#439889', - dark: '#003d33', + main: '#0b5644', + light: '#40836f', + dark: '#002c1d', }, neutral: { main: '#18243e',