mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-27 13:49:10 +02:00
refactor: port some things to TS (#833)
* refactor: remove unused securityLogger * refactor: port commonStyles to TS * refactor: port testIds to TS * refactor: move app.css into themes * refactor: use absolute import paths * refactor: port LayoutPicker to TS * refactor: port routes to TS * refactor: port ScrollTop to TS * refactor: update unused/missing ScrollTop exceptions * refactor: remove unused route flags field * refactor: change constants ext to TS * refactor: remove unused testData file * refactor: port styles to TS * refactor: wait before typing in auth spec
This commit is contained in:
parent
391f1818f1
commit
f309553a5f
@ -22,6 +22,7 @@ describe('auth', () => {
|
||||
expect(req.body.password).to.equal('unleash4all');
|
||||
}).as('passwordLogin');
|
||||
|
||||
cy.wait(1000);
|
||||
cy.get('[data-test="LOGIN_EMAIL_ID"]').type('admin');
|
||||
cy.get('[data-test="LOGIN_PASSWORD_ID"]').type('unleash4all');
|
||||
cy.get("[data-test='LOGIN_BUTTON']").click();
|
||||
|
@ -1,6 +1,6 @@
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { FeedbackNPS } from 'component/feedback/FeedbackNPS/FeedbackNPS';
|
||||
import LayoutPicker from 'component/layout/LayoutPicker/LayoutPicker';
|
||||
import { LayoutPicker } from 'component/layout/LayoutPicker/LayoutPicker';
|
||||
import Loader from 'component/common/Loader/Loader';
|
||||
import NotFound from 'component/common/NotFound/NotFound';
|
||||
import ProtectedRoute from 'component/common/ProtectedRoute/ProtectedRoute';
|
||||
|
@ -1,67 +0,0 @@
|
||||
export const testProjects = [
|
||||
{ id: 'default', inital: true, name: 'Default' },
|
||||
{ id: 'myProject', inital: false, name: 'MyProject' },
|
||||
];
|
||||
|
||||
export const testFeatures = [
|
||||
{
|
||||
name: 'one',
|
||||
description: '1234',
|
||||
type: 'permission',
|
||||
project: 'default',
|
||||
enabled: false,
|
||||
stale: false,
|
||||
strategies: [],
|
||||
variants: [],
|
||||
createdAt: '2021-02-01T04:12:36.878Z',
|
||||
lastSeenAt: '2021-02-21T19:34:21.830Z',
|
||||
},
|
||||
{
|
||||
name: 'two',
|
||||
description: '',
|
||||
type: 'release',
|
||||
project: 'default',
|
||||
enabled: false,
|
||||
stale: false,
|
||||
strategies: [],
|
||||
variants: [],
|
||||
createdAt: '2021-02-22T16:05:39.717Z',
|
||||
lastSeenAt: '2021-02-22T19:37:58.189Z',
|
||||
},
|
||||
{
|
||||
name: 'three',
|
||||
description: 'asdasds',
|
||||
type: 'experiment',
|
||||
project: 'default',
|
||||
enabled: true,
|
||||
stale: false,
|
||||
strategies: [],
|
||||
variants: [],
|
||||
createdAt: '2021-02-06T18:38:18.133Z',
|
||||
lastSeenAt: '2021-02-21T19:34:21.830Z',
|
||||
},
|
||||
{
|
||||
name: 'four',
|
||||
description: '',
|
||||
type: 'experiment',
|
||||
project: 'myProject',
|
||||
enabled: true,
|
||||
stale: false,
|
||||
strategies: [],
|
||||
variants: [],
|
||||
createdAt: '2021-02-14T02:42:34.515Z',
|
||||
lastSeenAt: '2021-02-21T19:34:21.830Z',
|
||||
},
|
||||
{
|
||||
name: 'five',
|
||||
description: '',
|
||||
type: 'release',
|
||||
project: 'myProject',
|
||||
enabled: true,
|
||||
stale: false,
|
||||
strategies: [],
|
||||
variants: [],
|
||||
createdAt: '2021-02-16T15:26:11.474Z',
|
||||
lastSeenAt: '2021-02-21T19:34:21.830Z',
|
||||
},
|
||||
];
|
@ -10,7 +10,7 @@ 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/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
const useStyles = makeStyles(theme => ({
|
||||
nameInput: {
|
||||
|
@ -27,7 +27,7 @@ import { useStyles } from './ApiTokenList.styles';
|
||||
import Secret from './secret';
|
||||
import { Delete, FileCopy } from '@material-ui/icons';
|
||||
import Dialogue from 'component/common/Dialogue';
|
||||
import { CREATE_API_TOKEN_BUTTON } from 'testIds';
|
||||
import { CREATE_API_TOKEN_BUTTON } from 'utils/testIds';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
import copy from 'copy-to-clipboard';
|
||||
import { useLocationSettings } from 'hooks/useLocationSettings';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Typography } from '@material-ui/core';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import Dialogue from 'component/common/Dialogue';
|
||||
import { UserToken } from './UserToken/UserToken';
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Typography } from '@material-ui/core';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import Dialogue from 'component/common/Dialogue';
|
||||
import UserInviteLink from './UserInviteLink/UserInviteLink';
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { trim } from 'component/common/util';
|
||||
import { modalStyles } from 'component/admin/users/util';
|
||||
import Dialogue from 'component/common/Dialogue/Dialogue';
|
||||
import PasswordChecker from 'component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher/PasswordMatcher';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
|
@ -5,7 +5,7 @@ import { REMOVE_USER_ERROR } from 'hooks/api/actions/useAdminUsersApi/useAdminUs
|
||||
import { Alert } from '@material-ui/lab';
|
||||
import useLoading from 'hooks/useLoading';
|
||||
import { Avatar, Typography } from '@material-ui/core';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { IUser } from 'interfaces/user';
|
||||
|
||||
interface IDeleteUserProps {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ChangeEvent, useState } from 'react';
|
||||
import { Grid, TextField } from '@material-ui/core';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import icons from 'component/application/iconNames';
|
||||
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
||||
import useApplicationsApi from 'hooks/api/actions/useApplicationsApi/useApplicationsApi';
|
||||
|
@ -1,10 +1,18 @@
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
interface IConditionallyRenderProps {
|
||||
condition: boolean;
|
||||
show: TargetElement;
|
||||
elseShow?: TargetElement;
|
||||
}
|
||||
|
||||
type TargetElement = JSX.Element | JSX.Element[] | RenderFunc | null;
|
||||
type TargetElement =
|
||||
| JSX.Element
|
||||
| JSX.Element[]
|
||||
| RenderFunc
|
||||
| ReactNode
|
||||
| null;
|
||||
|
||||
type RenderFunc = () => JSX.Element;
|
||||
|
||||
const ConditionallyRender = ({
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Checkbox, FormControlLabel } from '@material-ui/core';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
} from '@material-ui/core';
|
||||
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
|
||||
// Parent component
|
||||
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
|
||||
import ConditionallyRender from '../ConditionallyRender/ConditionallyRender';
|
||||
import { useStyles } from './Dialogue.styles';
|
||||
import { DIALOGUE_CONFIRM_ID } from 'testIds';
|
||||
import { DIALOGUE_CONFIRM_ID } from 'utils/testIds';
|
||||
|
||||
interface IDialogue {
|
||||
primaryButtonText?: string;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
container: {
|
||||
@ -10,6 +10,7 @@ export const useStyles = makeStyles(theme => ({
|
||||
wing: {
|
||||
width: '80px',
|
||||
height: '3px',
|
||||
// @ts-expect-error
|
||||
backgroundColor: theme.palette.division.main,
|
||||
borderRadius: theme.borders.radius.main,
|
||||
},
|
@ -1,5 +1,5 @@
|
||||
import { Typography } from '@material-ui/core';
|
||||
import { useStyles } from './DividerText.styles';
|
||||
import { useStyles } from 'component/common/DividerText/DividerText.styles';
|
||||
|
||||
interface IDividerTextProps {
|
||||
text: string;
|
||||
|
@ -10,7 +10,7 @@ import useToast from 'hooks/useToast';
|
||||
import React, { useState } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { ReactComponent as MobileGuidanceBG } from 'assets/img/mobileGuidanceBg.svg';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
|
||||
interface ICreateProps {
|
||||
title: string;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core';
|
||||
import { SELECT_ITEM_ID } from 'testIds';
|
||||
import { SELECT_ITEM_ID } from 'utils/testIds';
|
||||
import { KeyboardArrowDownOutlined } from '@material-ui/icons';
|
||||
|
||||
export interface ISelectOption {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
headerTitleContainer: {
|
@ -1,5 +1,5 @@
|
||||
import { InputLabelProps, InputProps, TextField } from '@material-ui/core';
|
||||
import { INPUT_ERROR_TEXT } from 'testIds';
|
||||
import { INPUT_ERROR_TEXT } from 'utils/testIds';
|
||||
import { useStyles } from './Input.styles';
|
||||
import React from 'react';
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
emptyStateListItem: {
|
||||
// @ts-expect-error
|
||||
border: `2px dashed ${theme.palette.borders.main}`,
|
||||
padding: '0.8rem',
|
||||
textAlign: 'center',
|
@ -1,7 +1,7 @@
|
||||
import { ListItem } from '@material-ui/core';
|
||||
import { Link } from 'react-router-dom';
|
||||
import ConditionallyRender from '../ConditionallyRender';
|
||||
import { useStyles } from './ListPlaceholder.styles';
|
||||
import { useStyles } from 'component/common/ListPlaceholder/ListPlaceholder.styles';
|
||||
|
||||
interface IListPlaceholderProps {
|
||||
text: string;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
headerContainer: {
|
21
frontend/src/component/common/ScrollTop/ScrollTop.tsx
Normal file
21
frontend/src/component/common/ScrollTop/ScrollTop.tsx
Normal file
@ -0,0 +1,21 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
|
||||
export const ScrollTop = (): null => {
|
||||
const { pathname } = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
if (!noScrollPaths.some(noScroll => pathname.includes(noScroll))) {
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
}, [pathname]);
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
const noScrollPaths = [
|
||||
'/admin/api',
|
||||
'/admin/users',
|
||||
'/admin/auth',
|
||||
'/admin/roles',
|
||||
];
|
@ -3,7 +3,7 @@ import classnames from 'classnames';
|
||||
import { debounce } from 'debounce';
|
||||
import { InputBase, Chip } from '@material-ui/core';
|
||||
import SearchIcon from '@material-ui/icons/Search';
|
||||
import { useStyles } from './styles';
|
||||
import { useStyles } from 'component/common/SearchField/styles';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
|
||||
interface ISearchFieldProps {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
container: {
|
||||
@ -10,6 +10,7 @@ export const useStyles = makeStyles(theme => ({
|
||||
search: {
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
// @ts-expect-error
|
||||
backgroundColor: theme.palette.searchField.main,
|
||||
borderRadius: '25px',
|
||||
padding: '0.25rem 0.5rem',
|
@ -2,7 +2,7 @@ import { ReactNode } from 'react';
|
||||
import { Modal, Backdrop } from '@material-ui/core';
|
||||
import Fade from '@material-ui/core/Fade';
|
||||
import { useStyles } from 'component/common/SidebarModal/SidebarModal.styles';
|
||||
import { SIDEBAR_MODAL_ID } from 'testIds';
|
||||
import { SIDEBAR_MODAL_ID } from 'utils/testIds';
|
||||
|
||||
interface ISidebarModalProps {
|
||||
open: boolean;
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
tabNav: {
|
||||
// @ts-expect-error
|
||||
backgroundColor: theme.palette.tabs.main,
|
||||
},
|
||||
}));
|
@ -1,6 +1,6 @@
|
||||
import { Portal } from '@material-ui/core';
|
||||
import { useContext, useEffect } from 'react';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import UIContext from 'contexts/UIContext';
|
||||
import { useStyles } from './ToastRenderer.styles';
|
||||
import AnimateOnMount from '../AnimateOnMount/AnimateOnMount';
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core';
|
||||
import { SELECT_ITEM_ID } from 'testIds';
|
||||
import { SELECT_ITEM_ID } from 'utils/testIds';
|
||||
|
||||
export interface ISelectOption {
|
||||
key: string;
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles({
|
||||
listItem: {
|
||||
padding: 0,
|
||||
['& a']: {
|
||||
'& a': {
|
||||
textDecoration: 'none',
|
||||
color: 'inherit',
|
||||
},
|
@ -9,7 +9,7 @@ import { CREATE_FEATURE } from 'component/providers/AccessProvider/permissions';
|
||||
import { useContext } from 'react';
|
||||
import { CreateButton } from 'component/common/CreateButton/CreateButton';
|
||||
import UIContext from 'contexts/UIContext';
|
||||
import { CF_CREATE_BTN_ID } from 'testIds';
|
||||
import { CF_CREATE_BTN_ID } from 'utils/testIds';
|
||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||
|
||||
const CreateFeature = () => {
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
} from '@material-ui/core';
|
||||
import { useStyles } from './FeatureForm.styles';
|
||||
import FeatureTypeSelect from '../FeatureView/FeatureSettings/FeatureSettingsMetadata/FeatureTypeSelect/FeatureTypeSelect';
|
||||
import { CF_DESC_ID, CF_NAME_ID, CF_TYPE_ID } from 'testIds';
|
||||
import { CF_DESC_ID, CF_NAME_ID, CF_TYPE_ID } from 'utils/testIds';
|
||||
import useFeatureTypes from 'hooks/api/getters/useFeatureTypes/useFeatureTypes';
|
||||
import { KeyboardArrowDownOutlined } from '@material-ui/icons';
|
||||
import { projectFilterGenerator } from 'utils/projectFilterGenerator';
|
||||
|
@ -14,7 +14,7 @@ import { formatFeaturePath } from '../FeatureStrategyEdit/FeatureStrategyEdit';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { STRATEGY_FORM_SUBMIT_ID } from 'testIds';
|
||||
import { STRATEGY_FORM_SUBMIT_ID } from 'utils/testIds';
|
||||
import { useConstraintsValidation } from 'hooks/api/getters/useConstraintsValidation/useConstraintsValidation';
|
||||
import AccessContext from 'contexts/AccessContext';
|
||||
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
|
||||
|
@ -9,7 +9,7 @@ import { Alert } from '@material-ui/lab';
|
||||
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
|
||||
import { DELETE_FEATURE_STRATEGY } from 'component/providers/AccessProvider/permissions';
|
||||
import { useFeature } from 'hooks/api/getters/useFeature/useFeature';
|
||||
import { STRATEGY_FORM_REMOVE_ID } from 'testIds';
|
||||
import { STRATEGY_FORM_REMOVE_ID } from 'utils/testIds';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
|
||||
import { Delete } from '@material-ui/icons';
|
||||
|
@ -17,7 +17,7 @@ import AccessContext from 'contexts/AccessContext';
|
||||
import { useStyles } from './styles';
|
||||
import ListPlaceholder from 'component/common/ListPlaceholder/ListPlaceholder';
|
||||
import { getCreateTogglePath } from 'utils/routePathHelpers';
|
||||
import { NAVIGATE_TO_CREATE_FEATURE } from 'testIds';
|
||||
import { NAVIGATE_TO_CREATE_FEATURE } from 'utils/testIds';
|
||||
import { resolveFilteredProjectId } from 'hooks/useFeaturesFilter';
|
||||
|
||||
const FeatureToggleList = ({
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles({
|
||||
actions: {
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
listItem: {
|
||||
@ -11,15 +11,16 @@ export const useStyles = makeStyles(theme => ({
|
||||
listItemMetric: {
|
||||
width: '40px',
|
||||
marginRight: '0.25rem',
|
||||
flexShrink: '0',
|
||||
flexShrink: 0,
|
||||
},
|
||||
listItemType: {
|
||||
width: '40px',
|
||||
textAlign: 'center',
|
||||
marginRight: '0',
|
||||
flexShrink: '0',
|
||||
flexShrink: 0,
|
||||
},
|
||||
listItemSvg: {
|
||||
// @ts-expect-error
|
||||
fill: theme.palette.icons.lightGrey,
|
||||
},
|
||||
listItemLink: {
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
actionsContainer: {
|
||||
@ -25,6 +25,7 @@ export const useStyles = makeStyles(theme => ({
|
||||
},
|
||||
},
|
||||
emptyStateListItem: {
|
||||
// @ts-expect-error
|
||||
border: `2px dashed ${theme.palette.borders.main}`,
|
||||
padding: '0.8rem',
|
||||
textAlign: 'center',
|
@ -25,7 +25,7 @@ import FeatureOverviewEnvironmentBody from './FeatureOverviewEnvironmentBody/Fea
|
||||
import FeatureOverviewEnvironmentFooter from './FeatureOverviewEnvironmentFooter/FeatureOverviewEnvironmentFooter';
|
||||
import FeatureOverviewEnvironmentMetrics from './FeatureOverviewEnvironmentMetrics/FeatureOverviewEnvironmentMetrics';
|
||||
import { FeatureStrategyMenu } from 'component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu';
|
||||
import { FEATURE_ENVIRONMENT_ACCORDION } from 'testIds';
|
||||
import { FEATURE_ENVIRONMENT_ACCORDION } from 'utils/testIds';
|
||||
|
||||
interface IStrategyIconObject {
|
||||
count: number;
|
||||
|
@ -11,7 +11,7 @@ import { Info } from '@material-ui/icons';
|
||||
import { weightTypes } from './enums';
|
||||
import { OverrideConfig } from './OverrideConfig/OverrideConfig';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import Dialogue from 'component/common/Dialogue';
|
||||
import { modalStyles, trim } from 'component/common/util';
|
||||
import PermissionSwitch from 'component/common/PermissionSwitch/PermissionSwitch';
|
||||
|
@ -2,10 +2,10 @@ import classnames from 'classnames';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Grid, IconButton, TextField } from '@material-ui/core';
|
||||
import { Delete } from '@material-ui/icons';
|
||||
import { useStyles } from './OverrideConfig.styles.js';
|
||||
import { useStyles } from './OverrideConfig.styles';
|
||||
import { Autocomplete } from '@material-ui/lab';
|
||||
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import InputListField from 'component/common/InputListField.jsx';
|
||||
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
contextFieldSelect: {
|
@ -6,9 +6,9 @@ import { Delete } from '@material-ui/icons';
|
||||
|
||||
import InputListField from 'component/common/InputListField';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender/ConditionallyRender';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { useStyles } from './StrategyConstraintInputField.styles';
|
||||
import { CONSTRAINT_AUTOCOMPLETE_ID } from 'testIds';
|
||||
import { CONSTRAINT_AUTOCOMPLETE_ID } from 'utils/testIds';
|
||||
import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
|
||||
|
||||
const constraintOperators = [
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles({
|
||||
contextField: {
|
@ -1,7 +1,7 @@
|
||||
import { Button, Tooltip, Typography } from '@material-ui/core';
|
||||
import { Info } from '@material-ui/icons';
|
||||
import { IConstraint } from 'interfaces/strategy';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||
import { C } from 'component/common/flags';
|
||||
import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext';
|
||||
|
@ -9,7 +9,7 @@ import Input from 'component/common/Input/Input';
|
||||
import {
|
||||
FLEXIBLE_STRATEGY_GROUP_ID,
|
||||
FLEXIBLE_STRATEGY_STICKINESS_ID,
|
||||
} from 'testIds';
|
||||
} from 'utils/testIds';
|
||||
|
||||
const builtInStickinessOptions = [
|
||||
{ key: 'default', label: 'default' },
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { makeStyles, withStyles } from '@material-ui/core/styles';
|
||||
import { Slider, Typography } from '@material-ui/core';
|
||||
import { ROLLOUT_SLIDER_ID } from 'testIds';
|
||||
import { ROLLOUT_SLIDER_ID } from 'utils/testIds';
|
||||
import React from 'react';
|
||||
|
||||
const StyledSlider = withStyles({
|
||||
|
@ -2,7 +2,7 @@ import React, { ChangeEvent, useState } from 'react';
|
||||
import { Button, Chip, TextField, Typography } from '@material-ui/core';
|
||||
import { Add } from '@material-ui/icons';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { ADD_TO_STRATEGY_INPUT_LIST, STRATEGY_INPUT_LIST } from 'testIds';
|
||||
import { ADD_TO_STRATEGY_INPUT_LIST, STRATEGY_INPUT_LIST } from 'utils/testIds';
|
||||
|
||||
interface IStrategyInputList {
|
||||
name: string;
|
||||
|
@ -3,10 +3,10 @@ import { Button, IconButton } from '@material-ui/core';
|
||||
import classnames from 'classnames';
|
||||
import CloseIcon from '@material-ui/icons/Close';
|
||||
import { ReactComponent as Logo } from 'assets/icons/logoPlain.svg';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useStyles } from 'component/feedback/FeedbackNPS/FeedbackNPS.styles';
|
||||
import AnimateOnMount from 'component/common/AnimateOnMount/AnimateOnMount';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import UIContext from 'contexts/UIContext';
|
||||
import {
|
||||
PNPS_FEEDBACK_ID,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles({
|
||||
eventLogHeader: {
|
@ -1,13 +1,16 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
blue: {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.edited,
|
||||
},
|
||||
negative: {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.diffSub,
|
||||
},
|
||||
positive: {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.diffAdd,
|
||||
},
|
||||
}));
|
@ -1,9 +1,10 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
historyItem: {
|
||||
padding: '5px',
|
||||
'&:nth-child(odd)': {
|
||||
// @ts-expect-error
|
||||
backgroundColor: theme.palette.code.background,
|
||||
},
|
||||
},
|
@ -4,7 +4,7 @@ import EventJson from './EventJson/EventJson';
|
||||
import PageContent from 'component/common/PageContent/PageContent';
|
||||
import HeaderTitle from 'component/common/HeaderTitle';
|
||||
import EventCard from './EventCard/EventCard';
|
||||
import { useStyles } from './EventLog.styles.js';
|
||||
import { useStyles } from './EventLog.styles';
|
||||
import { formatDateYMDHMS } from 'utils/formatDate';
|
||||
|
||||
const EventLog = ({
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
eventEntry: {
|
||||
@ -13,15 +13,19 @@ export const useStyles = makeStyles(theme => ({
|
||||
whiteSpace: 'pre',
|
||||
fontFamily: 'monospace',
|
||||
lineHeight: '100%',
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.main,
|
||||
},
|
||||
'& code > .diff-N': {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.diffAdd,
|
||||
},
|
||||
'& code > .diff-D': {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.diffSub,
|
||||
},
|
||||
'& code > .diff-A, .diff-E': {
|
||||
// @ts-expect-error
|
||||
color: theme.palette.code.diffNeutral,
|
||||
},
|
||||
'& dl': {
|
@ -1,49 +0,0 @@
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { matchPath } from 'react-router';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { MainLayout } from '../MainLayout/MainLayout';
|
||||
|
||||
const LayoutPicker = ({ children }) => {
|
||||
const location = useLocation();
|
||||
const standalonePages = () => {
|
||||
const { pathname } = location;
|
||||
const isLoginPage = matchPath(pathname, { path: '/login' });
|
||||
const isNewUserPage = matchPath(pathname, {
|
||||
path: '/new-user',
|
||||
});
|
||||
const isChangePasswordPage = matchPath(pathname, {
|
||||
path: '/reset-password',
|
||||
});
|
||||
const isResetPasswordSuccessPage = matchPath(pathname, {
|
||||
path: '/reset-password-success',
|
||||
});
|
||||
const isForgottenPasswordPage = matchPath(pathname, {
|
||||
path: '/forgotten-password',
|
||||
});
|
||||
const isSplashPage = matchPath(pathname, {
|
||||
path: '/splash/:id',
|
||||
});
|
||||
|
||||
const is404 = matchPath(pathname, { path: '/404' });
|
||||
|
||||
return (
|
||||
isLoginPage ||
|
||||
isNewUserPage ||
|
||||
isChangePasswordPage ||
|
||||
isResetPasswordSuccessPage ||
|
||||
isForgottenPasswordPage ||
|
||||
isSplashPage ||
|
||||
is404
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<ConditionallyRender
|
||||
condition={standalonePages()}
|
||||
show={children}
|
||||
elseShow={<MainLayout location={location}>{children}</MainLayout>}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default LayoutPicker;
|
61
frontend/src/component/layout/LayoutPicker/LayoutPicker.tsx
Normal file
61
frontend/src/component/layout/LayoutPicker/LayoutPicker.tsx
Normal file
@ -0,0 +1,61 @@
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { matchPath } from 'react-router';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { MainLayout } from '../MainLayout/MainLayout';
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
interface ILayoutPickerProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export const LayoutPicker = ({ children }: ILayoutPickerProps) => {
|
||||
const { pathname } = useLocation();
|
||||
|
||||
return (
|
||||
<ConditionallyRender
|
||||
condition={isStandalonePage(pathname)}
|
||||
show={children}
|
||||
elseShow={<MainLayout>{children}</MainLayout>}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
const isStandalonePage = (pathname: string): boolean => {
|
||||
const isLoginPage = matchPath(pathname, {
|
||||
path: '/login',
|
||||
});
|
||||
|
||||
const isNewUserPage = matchPath(pathname, {
|
||||
path: '/new-user',
|
||||
});
|
||||
|
||||
const isChangePasswordPage = matchPath(pathname, {
|
||||
path: '/reset-password',
|
||||
});
|
||||
|
||||
const isResetPasswordSuccessPage = matchPath(pathname, {
|
||||
path: '/reset-password-success',
|
||||
});
|
||||
|
||||
const isForgottenPasswordPage = matchPath(pathname, {
|
||||
path: '/forgotten-password',
|
||||
});
|
||||
|
||||
const isSplashPage = matchPath(pathname, {
|
||||
path: '/splash/:id',
|
||||
});
|
||||
|
||||
const is404 = matchPath(pathname, {
|
||||
path: '/404',
|
||||
});
|
||||
|
||||
return Boolean(
|
||||
isLoginPage ||
|
||||
isNewUserPage ||
|
||||
isChangePasswordPage ||
|
||||
isResetPasswordSuccessPage ||
|
||||
isForgottenPasswordPage ||
|
||||
isSplashPage ||
|
||||
is404
|
||||
);
|
||||
};
|
@ -1,7 +1,8 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
footer: {
|
||||
// @ts-expect-error
|
||||
background: theme.palette.footer.background,
|
||||
padding: '2rem 4rem',
|
||||
width: '100%',
|
||||
@ -17,6 +18,7 @@ export const useStyles = makeStyles(theme => ({
|
||||
margin: 0,
|
||||
'& a': {
|
||||
textDecoration: 'none',
|
||||
// @ts-expect-error
|
||||
color: theme.palette.footer.main,
|
||||
},
|
||||
},
|
@ -13,11 +13,11 @@ import { ReactComponent as UnleashLogo } from 'assets/img/logoDarkWithText.svg';
|
||||
|
||||
import { useStyles } from './Header.styles';
|
||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { ADMIN } from 'component/providers/AccessProvider/permissions';
|
||||
import { IPermission } from 'interfaces/user';
|
||||
import NavigationMenu from './NavigationMenu/NavigationMenu';
|
||||
import { getRoutes } from '../routes';
|
||||
import { getRoutes } from 'component/menu/routes';
|
||||
import { KeyboardArrowDown } from '@material-ui/icons';
|
||||
import { filterByFlags } from 'component/common/util';
|
||||
import { useAuthPermissions } from 'hooks/api/getters/useAuth/useAuthPermissions';
|
||||
|
@ -51,7 +51,6 @@ Array [
|
||||
},
|
||||
Object {
|
||||
"component": [Function],
|
||||
"flags": "E",
|
||||
"menu": Object {},
|
||||
"parent": "/projects",
|
||||
"path": "/projects/:projectId/features/:featureId",
|
||||
|
@ -10,7 +10,7 @@ import AdminInvoice from 'component/admin/invoice/InvoiceAdminPage';
|
||||
import AdminUsers from 'component/admin/users/UsersAdmin';
|
||||
import { AuthSettings } from 'component/admin/auth/AuthSettings';
|
||||
import Login from 'component/user/Login/Login';
|
||||
import { C, E, EEA, P, RE, SE } from 'component/common/flags';
|
||||
import { C, EEA, P, RE, SE } from 'component/common/flags';
|
||||
import { NewUser } from 'component/user/NewUser/NewUser';
|
||||
import ResetPassword from 'component/user/ResetPassword/ResetPassword';
|
||||
import ForgottenPassword from 'component/user/ForgottenPassword/ForgottenPassword';
|
||||
@ -50,8 +50,26 @@ import { CreateUnleashContextPage } from 'component/context/CreateUnleashContext
|
||||
import { CreateSegment } from 'component/segments/CreateSegment/CreateSegment';
|
||||
import { EditSegment } from 'component/segments/EditSegment/EditSegment';
|
||||
import { SegmentsList } from 'component/segments/SegmentList/SegmentList';
|
||||
import { FunctionComponent } from 'react';
|
||||
|
||||
export const routes = [
|
||||
interface Route {
|
||||
path: string;
|
||||
title: string;
|
||||
type: string;
|
||||
layout?: string;
|
||||
parent?: string;
|
||||
flag?: string;
|
||||
hidden?: Boolean;
|
||||
component: FunctionComponent;
|
||||
|
||||
menu: {
|
||||
mobile?: boolean;
|
||||
advanced?: boolean;
|
||||
adminSettings?: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export const routes: Route[] = [
|
||||
// Splash
|
||||
{
|
||||
path: '/splash/:splashId',
|
||||
@ -108,7 +126,6 @@ export const routes = [
|
||||
title: 'FeatureView',
|
||||
component: FeatureView,
|
||||
type: 'protected',
|
||||
flags: E,
|
||||
menu: {},
|
||||
},
|
||||
{
|
||||
@ -516,7 +533,8 @@ export const routes = [
|
||||
},
|
||||
];
|
||||
|
||||
export const getRoute = path => routes.find(route => route.path === path);
|
||||
export const getRoute = (path: string) =>
|
||||
routes.find(route => route.path === path);
|
||||
|
||||
export const baseRoutes = routes.filter(route => !route.hidden);
|
||||
|
@ -4,7 +4,7 @@ import ArrowForwardIcon from '@material-ui/icons/ArrowForward';
|
||||
import classnames from 'classnames';
|
||||
import { Edit, ExpandMore } from '@material-ui/icons';
|
||||
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||
import PercentageCircle from 'component/common/PercentageCircle/PercentageCircle';
|
||||
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
|
||||
|
@ -21,7 +21,7 @@ import PermissionSwitch from 'component/common/PermissionSwitch/PermissionSwitch
|
||||
import { IProjectEnvironment } from 'interfaces/environments';
|
||||
import { getEnabledEnvs } from './helpers';
|
||||
import StringTruncator from 'component/common/StringTruncator/StringTruncator';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
|
||||
interface ProjectEnvironmentListProps {
|
||||
projectId: string;
|
||||
|
@ -1,33 +0,0 @@
|
||||
import { Component } from 'react';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
class ScrollToTop extends Component {
|
||||
static propTypes = {
|
||||
location: PropTypes.object.isRequired,
|
||||
};
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
if (this.props.location.pathname !== prevProps.location.pathname) {
|
||||
if (
|
||||
this.props.location.pathname.includes('/features/metrics') ||
|
||||
this.props.location.pathname.includes('/features/variants') ||
|
||||
this.props.location.pathname.includes('/features/strategies') ||
|
||||
this.props.location.pathname.includes('/logs') ||
|
||||
this.props.location.pathname.includes('/admin/api') ||
|
||||
this.props.location.pathname.includes('/admin/users') ||
|
||||
this.props.location.pathname.includes('/admin/auth')
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
return this.props.children;
|
||||
}
|
||||
}
|
||||
|
||||
export default withRouter(ScrollToTop);
|
@ -7,7 +7,7 @@ import {
|
||||
FiberManualRecordOutlined,
|
||||
} from '@material-ui/icons';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { CLOSE_SPLASH } from 'testIds';
|
||||
import { CLOSE_SPLASH } from 'utils/testIds';
|
||||
|
||||
interface ISplashPageEnvironmentsContentProps {
|
||||
components: React.ReactNode[];
|
||||
|
@ -28,7 +28,7 @@ import HeaderTitle from 'component/common/HeaderTitle';
|
||||
import { useStyles } from './StrategiesList.styles';
|
||||
import AccessContext from 'contexts/AccessContext';
|
||||
import Dialogue from 'component/common/Dialogue';
|
||||
import { ADD_NEW_STRATEGY_ID } from 'testIds';
|
||||
import { ADD_NEW_STRATEGY_ID } from 'utils/testIds';
|
||||
import PermissionIconButton from 'component/common/PermissionIconButton/PermissionIconButton';
|
||||
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
|
||||
import { formatStrategyName } from 'utils/strategyNames';
|
||||
|
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
||||
import { Button, TextField } from '@material-ui/core';
|
||||
import styles from './DemoAuth.module.scss';
|
||||
import { ReactComponent as Logo } from 'assets/img/logo.svg';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID } from 'testIds';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID } from 'utils/testIds';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { useAuthApi } from 'hooks/api/actions/useAuthApi/useAuthApi';
|
||||
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
|
||||
|
@ -3,9 +3,9 @@ import { AlertTitle, Alert } from '@material-ui/lab';
|
||||
import classnames from 'classnames';
|
||||
import { SyntheticEvent, useState } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import useLoading from 'hooks/useLoading';
|
||||
import { FORGOTTEN_PASSWORD_FIELD } from 'testIds';
|
||||
import { FORGOTTEN_PASSWORD_FIELD } from 'utils/testIds';
|
||||
import { formatApiPath } from 'utils/formatPath';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import DividerText from 'component/common/DividerText/DividerText';
|
||||
|
@ -3,7 +3,7 @@ import classnames from 'classnames';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, Grid, TextField, Typography } from '@material-ui/core';
|
||||
import { useHistory } from 'react-router';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { useStyles } from './HostedAuth.styles';
|
||||
import useQueryParams from 'hooks/useQueryParams';
|
||||
import AuthOptions from '../common/AuthOptions/AuthOptions';
|
||||
@ -12,7 +12,7 @@ import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import PasswordField from 'component/common/PasswordField/PasswordField';
|
||||
import { useAuthApi } from 'hooks/api/actions/useAuthApi/useAuthApi';
|
||||
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID, LOGIN_PASSWORD_ID } from 'testIds';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID, LOGIN_PASSWORD_ID } from 'utils/testIds';
|
||||
|
||||
const HostedAuth = ({ authDetails, redirect }) => {
|
||||
const commonStyles = useCommonStyles();
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
loginContainer: {
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
login: {
|
||||
@ -27,7 +27,9 @@ export const useStyles = makeStyles(theme => ({
|
||||
},
|
||||
},
|
||||
gradient: {
|
||||
// @ts-expect-error
|
||||
background: `linear-gradient(${theme.palette.login.gradient.top}, ${theme.palette.login.gradient.bottom})`,
|
||||
// @ts-expect-error
|
||||
color: theme.palette.login.main,
|
||||
},
|
||||
title: {
|
@ -1,5 +1,5 @@
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useStyles } from './Login.styles';
|
||||
import { useStyles } from 'component/user/Login/Login.styles';
|
||||
import useQueryParams from 'hooks/useQueryParams';
|
||||
import ResetPasswordSuccess from '../common/ResetPasswordSuccess/ResetPasswordSuccess';
|
||||
import StandaloneLayout from '../common/StandaloneLayout/StandaloneLayout';
|
||||
|
@ -4,13 +4,13 @@ import PropTypes from 'prop-types';
|
||||
import { Button, TextField } from '@material-ui/core';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { useHistory } from 'react-router';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { useStyles } from './PasswordAuth.styles';
|
||||
import useQueryParams from 'hooks/useQueryParams';
|
||||
import AuthOptions from '../common/AuthOptions/AuthOptions';
|
||||
import DividerText from 'component/common/DividerText/DividerText';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID, LOGIN_PASSWORD_ID } from 'testIds';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID, LOGIN_PASSWORD_ID } from 'utils/testIds';
|
||||
import PasswordField from 'component/common/PasswordField/PasswordField';
|
||||
import { useAuthApi } from 'hooks/api/actions/useAuthApi/useAuthApi';
|
||||
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
loginContainer: {
|
@ -5,7 +5,7 @@ import styles from './SimpleAuth.module.scss';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { useAuthApi } from 'hooks/api/actions/useAuthApi/useAuthApi';
|
||||
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID } from 'testIds';
|
||||
import { LOGIN_BUTTON, LOGIN_EMAIL_ID } from 'utils/testIds';
|
||||
import useToast from 'hooks/useToast';
|
||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||
|
||||
|
@ -2,7 +2,7 @@ import React, { SyntheticEvent, useState } from 'react';
|
||||
import { Button, Typography } from '@material-ui/core';
|
||||
import classnames from 'classnames';
|
||||
import { useStyles } from './EditProfile.styles';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import PasswordChecker from 'component/user/common/ResetPasswordForm/PasswordChecker/PasswordChecker';
|
||||
import PasswordMatcher from 'component/user/common/ResetPasswordForm/PasswordMatcher/PasswordMatcher';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles({
|
||||
userProfileMenu: {
|
@ -2,12 +2,12 @@ import React, { useEffect, useState } from 'react';
|
||||
import classnames from 'classnames';
|
||||
import { Avatar, Button, ClickAwayListener } from '@material-ui/core';
|
||||
import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';
|
||||
import { useStyles } from './UserProfile.styles';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useStyles } from 'component/user/UserProfile/UserProfile.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import UserProfileContent from './UserProfileContent/UserProfileContent';
|
||||
import { IUser } from 'interfaces/user';
|
||||
import { ILocationSettings } from 'hooks/useLocationSettings';
|
||||
import { HEADER_USER_AVATAR } from 'testIds';
|
||||
import { HEADER_USER_AVATAR } from 'utils/testIds';
|
||||
|
||||
interface IUserProfileProps {
|
||||
profile: IUser;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { makeStyles } from '@material-ui/styles';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
export const useStyles = makeStyles(theme => ({
|
||||
profile: {
|
@ -10,8 +10,8 @@ import {
|
||||
Typography,
|
||||
} from '@material-ui/core';
|
||||
import classnames from 'classnames';
|
||||
import { useStyles } from './UserProfileContent.styles';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useStyles } from 'component/user/UserProfile/UserProfileContent/UserProfileContent.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { Alert } from '@material-ui/lab';
|
||||
import EditProfile from '../EditProfile/EditProfile';
|
||||
import legacyStyles from '../../user.module.scss';
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { Button } from '@material-ui/core';
|
||||
import classnames from 'classnames';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { ReactComponent as GoogleSvg } from 'assets/icons/google.svg';
|
||||
import LockRounded from '@material-ui/icons/LockRounded';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import { IAuthOptions } from 'hooks/api/getters/useAuth/useAuthEndpoint';
|
||||
import { SSO_LOGIN_BUTTON } from 'testIds';
|
||||
import { SSO_LOGIN_BUTTON } from 'utils/testIds';
|
||||
|
||||
interface IAuthOptionProps {
|
||||
options?: IAuthOptions[];
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Button, Typography } from '@material-ui/core';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { INVALID_TOKEN_BUTTON } from 'testIds';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { INVALID_TOKEN_BUTTON } from 'utils/testIds';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import classnames from 'classnames';
|
||||
|
||||
const InvalidToken = () => {
|
||||
|
@ -9,7 +9,7 @@ import React, {
|
||||
useState,
|
||||
} from 'react';
|
||||
import { useHistory } from 'react-router';
|
||||
import { useCommonStyles } from 'common.styles';
|
||||
import { useCommonStyles } from 'themes/commonStyles';
|
||||
import { OK } from 'constants/statusCodes';
|
||||
import ConditionallyRender from 'component/common/ConditionallyRender';
|
||||
import ResetPasswordError from '../ResetPasswordError/ResetPasswordError';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import 'whatwg-fetch';
|
||||
import './app.css';
|
||||
import 'themes/app.css';
|
||||
|
||||
import ReactDOM from 'react-dom';
|
||||
import { Route, BrowserRouter as Router } from 'react-router-dom';
|
||||
@ -8,12 +8,12 @@ import { DndProvider } from 'react-dnd';
|
||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||
import { StylesProvider } from '@material-ui/core/styles';
|
||||
import mainTheme from 'themes/mainTheme';
|
||||
import { App } from './component/App';
|
||||
import ScrollToTop from 'component/scrollToTop';
|
||||
import AccessProvider from './component/providers/AccessProvider/AccessProvider';
|
||||
import { App } from 'component/App';
|
||||
import { ScrollTop } from 'component/common/ScrollTop/ScrollTop';
|
||||
import AccessProvider from 'component/providers/AccessProvider/AccessProvider';
|
||||
import { getBasePath } from 'utils/formatPath';
|
||||
import UIProvider from './component/providers/UIProvider/UIProvider';
|
||||
import { FeedbackCESProvider } from 'component/feedback/FeedbackCESContext/FeedbackCESProvider';
|
||||
import UIProvider from 'component/providers/UIProvider/UIProvider';
|
||||
|
||||
ReactDOM.render(
|
||||
<DndProvider backend={HTML5Backend}>
|
||||
@ -24,9 +24,8 @@ ReactDOM.render(
|
||||
<StylesProvider injectFirst>
|
||||
<FeedbackCESProvider>
|
||||
<CssBaseline />
|
||||
<ScrollToTop>
|
||||
<Route path="/" component={App} />
|
||||
</ScrollToTop>
|
||||
<ScrollTop />
|
||||
<Route path="/" component={App} />
|
||||
</FeedbackCESProvider>
|
||||
</StylesProvider>
|
||||
</ThemeProvider>
|
||||
|
@ -1,9 +0,0 @@
|
||||
export const writeWarning = () => {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(
|
||||
`%cThis is a warning!
|
||||
Please do not use any JavaScript using copy/paste
|
||||
from elsewhere on the web or any person.`,
|
||||
'color:white;font-size: 1.8em;background:red'
|
||||
);
|
||||
};
|
Loading…
Reference in New Issue
Block a user