upgraded some deprecated packages (#2424)

* fix: upgrade deprecated pkg

* fix: reverted linebreak rules

* chore: some of the refactoring is done regarding the performance

---------

Co-authored-by: Chintan Sudani <46838508+techchintan@users.noreply.github.com>
Co-authored-by: palashgdev <palashgdev@gmail.com>
This commit is contained in:
Rajat Dwivedi 2023-03-14 16:55:15 +05:30 committed by GitHub
parent da79f93495
commit c4b052c51e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 117 additions and 83 deletions

View File

@ -1,9 +1,9 @@
import { Button, Dropdown, Menu } from 'antd'; import { Button, Dropdown } from 'antd';
import TimeItems, { import TimeItems, {
timePreferance, timePreferance,
timePreferenceType, timePreferenceType,
} from 'container/NewWidget/RightContainer/timeItems'; } from 'container/NewWidget/RightContainer/timeItems';
import React, { useCallback } from 'react'; import React, { useCallback, useMemo } from 'react';
import { menuItems } from './config'; import { menuItems } from './config';
import { TextContainer } from './styles'; import { TextContainer } from './styles';
@ -22,13 +22,18 @@ function TimePreference({
[setSelectedTime], [setSelectedTime],
); );
const menu = useMemo(
() => ({
items: menuItems,
onClick: timeMenuItemOnChangeHandler,
}),
[timeMenuItemOnChangeHandler],
);
return ( return (
<TextContainer noButtonMargin> <TextContainer noButtonMargin>
<Dropdown <Dropdown menu={menu} />
overlay={<Menu onClick={timeMenuItemOnChangeHandler} items={menuItems} />}
>
<Button>{selectedTime.name}</Button> <Button>{selectedTime.name}</Button>
</Dropdown>
</TextContainer> </TextContainer>
); );
} }

View File

@ -1,17 +0,0 @@
import { Menu } from 'antd';
import styled from 'styled-components';
export const MenuDropdown = styled(Menu)`
&&& {
.ant-dropdown,
.ant-dropdown-menu,
.ant-dropdown-menu-item {
padding: 0px;
}
.ant-menu-item {
height: 1.75rem;
display: flex;
align-items: center;
}
}
`;

View File

@ -13,7 +13,6 @@ import { ConfigProps } from 'types/api/dynamicConfigs/getDynamicConfigs';
import AppReducer from 'types/reducer/app'; import AppReducer from 'types/reducer/app';
import HelpToolTip from './Config'; import HelpToolTip from './Config';
import { MenuDropdown } from './Config/styles';
function DynamicConfigDropdown({ function DynamicConfigDropdown({
frontendId, frontendId,
@ -34,13 +33,15 @@ function DynamicConfigDropdown({
setIsHelpDropDownOpen(!isHelpDropDownOpen); setIsHelpDropDownOpen(!isHelpDropDownOpen);
}; };
const menuItems = useMemo( const menu = useMemo(
() => [ () => ({
items: [
{ {
key: '1', key: '1',
label: <HelpToolTip config={config as ConfigProps} />, label: <HelpToolTip config={config as ConfigProps} />,
}, },
], ],
}),
[config], [config],
); );
@ -53,10 +54,10 @@ function DynamicConfigDropdown({
return ( return (
<Dropdown <Dropdown
onVisibleChange={onToggleHandler} onOpenChange={onToggleHandler}
trigger={['click']} trigger={['click']}
overlay={<MenuDropdown items={menuItems} />} menu={menu}
visible={isHelpDropDownOpen} open={isHelpDropDownOpen}
> >
<Space align="center"> <Space align="center">
<Icon <Icon

View File

@ -1,16 +1,21 @@
import { Avatar, Typography } from 'antd'; import { Avatar, Typography } from 'antd';
import ROUTES from 'constants/routes'; import ROUTES from 'constants/routes';
import history from 'lib/history'; import history from 'lib/history';
import React from 'react'; import React, { useCallback } from 'react';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { AppState } from 'store/reducers'; import { AppState } from 'store/reducers';
import AppReducer from 'types/reducer/app'; import AppReducer from 'types/reducer/app';
import { AvatarContainer, ManageAccountLink, Wrapper } from '../styles'; import { AvatarContainer, ManageAccountLink, Wrapper } from '../styles';
function SignedInAS(): JSX.Element { function SignedIn({ onToggle }: SignedInProps): JSX.Element {
const { user } = useSelector<AppState, AppReducer>((state) => state.app); const { user } = useSelector<AppState, AppReducer>((state) => state.app);
const onManageAccountClick = useCallback(() => {
onToggle();
history.push(ROUTES.MY_SETTINGS);
}, [onToggle]);
if (!user) { if (!user) {
return <div />; return <div />;
} }
@ -30,11 +35,7 @@ function SignedInAS(): JSX.Element {
<Typography>{email}</Typography> <Typography>{email}</Typography>
</div> </div>
</AvatarContainer> </AvatarContainer>
<ManageAccountLink <ManageAccountLink onClick={onManageAccountClick}>
onClick={(): void => {
history.push(ROUTES.MY_SETTINGS);
}}
>
Manage Account Manage Account
</ManageAccountLink> </ManageAccountLink>
</Wrapper> </Wrapper>
@ -42,4 +43,8 @@ function SignedInAS(): JSX.Element {
); );
} }
export default SignedInAS; interface SignedInProps {
onToggle: VoidFunction;
}
export default SignedIn;

View File

@ -3,12 +3,19 @@ import {
CaretUpFilled, CaretUpFilled,
LogoutOutlined, LogoutOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { Divider, Dropdown, Menu, Space, Typography } from 'antd'; import type { MenuProps } from 'antd';
import { Divider, Dropdown, Space, Typography } from 'antd';
import { Logout } from 'api/utils'; import { Logout } from 'api/utils';
import ROUTES from 'constants/routes'; import ROUTES from 'constants/routes';
import Config from 'container/ConfigDropdown'; import Config from 'container/ConfigDropdown';
import { useIsDarkMode, useThemeMode } from 'hooks/useDarkMode'; import { useIsDarkMode, useThemeMode } from 'hooks/useDarkMode';
import React, { Dispatch, SetStateAction, useCallback, useState } from 'react'; import React, {
Dispatch,
SetStateAction,
useCallback,
useMemo,
useState,
} from 'react';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import { NavLink } from 'react-router-dom'; import { NavLink } from 'react-router-dom';
import { AppState } from 'store/reducers'; import { AppState } from 'store/reducers';
@ -16,7 +23,7 @@ import AppReducer from 'types/reducer/app';
import CurrentOrganization from './CurrentOrganization'; import CurrentOrganization from './CurrentOrganization';
import ManageLicense from './ManageLicense'; import ManageLicense from './ManageLicense';
import SignedInAS from './SignedInAs'; import SignedIn from './SignedIn';
import { import {
AvatarWrapper, AvatarWrapper,
Container, Container,
@ -43,10 +50,23 @@ function HeaderContainer(): JSX.Element {
[], [],
); );
const menu = ( const onLogoutKeyDown = useCallback(
<Menu style={{ padding: '1rem' }}> (e: React.KeyboardEvent<HTMLDivElement>) => {
<Menu.ItemGroup> if (e.key === 'Enter' || e.key === 'Space') {
<SignedInAS /> Logout();
}
},
[],
);
const menu: MenuProps = useMemo(
() => ({
items: [
{
key: 'main-menu',
label: (
<div>
<SignedIn onToggle={onToggleHandler(setIsUserDropDownOpen)} />
<Divider /> <Divider />
<CurrentOrganization onToggle={onToggleHandler(setIsUserDropDownOpen)} /> <CurrentOrganization onToggle={onToggleHandler(setIsUserDropDownOpen)} />
<Divider /> <Divider />
@ -56,19 +76,19 @@ function HeaderContainer(): JSX.Element {
<LogoutOutlined /> <LogoutOutlined />
<div <div
tabIndex={0} tabIndex={0}
onKeyDown={(e): void => { onKeyDown={onLogoutKeyDown}
if (e.key === 'Enter' || e.key === 'Space') {
Logout();
}
}}
role="button" role="button"
onClick={Logout} onClick={Logout}
> >
<Typography.Link>Logout</Typography.Link> <Typography.Link>Logout</Typography.Link>
</div> </div>
</LogoutContainer> </LogoutContainer>
</Menu.ItemGroup> </div>
</Menu> ),
},
],
}),
[onToggleHandler, onLogoutKeyDown],
); );
return ( return (
@ -98,10 +118,10 @@ function HeaderContainer(): JSX.Element {
/> />
<Dropdown <Dropdown
onVisibleChange={onToggleHandler(setIsUserDropDownOpen)} onOpenChange={onToggleHandler(setIsUserDropDownOpen)}
trigger={['click']} trigger={['click']}
overlay={menu} menu={menu}
visible={isUserDropDownOpen} open={isUserDropDownOpen}
> >
<Space> <Space>
<AvatarWrapper shape="circle">{user?.name[0]}</AvatarWrapper> <AvatarWrapper shape="circle">{user?.name[0]}</AvatarWrapper>

View File

@ -1,5 +1,12 @@
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import { Card, Dropdown, Menu, Row, TableColumnProps, Typography } from 'antd'; import {
Card,
Dropdown,
MenuProps,
Row,
TableColumnProps,
Typography,
} from 'antd';
import { ItemType } from 'antd/es/menu/hooks/useItems'; import { ItemType } from 'antd/es/menu/hooks/useItems';
import createDashboard from 'api/dashboard/create'; import createDashboard from 'api/dashboard/create';
import { AxiosError } from 'axios'; import { AxiosError } from 'axios';
@ -47,10 +54,12 @@ function ListOfAllDashboard(): JSX.Element {
); );
const { t } = useTranslation('dashboard'); const { t } = useTranslation('dashboard');
const [ const [
isImportJSONModalVisible, isImportJSONModalVisible,
setIsImportJSONModalVisible, setIsImportJSONModalVisible,
] = useState<boolean>(false); ] = useState<boolean>(false);
const [uploadedGrafana, setUploadedGrafana] = useState<boolean>(false); const [uploadedGrafana, setUploadedGrafana] = useState<boolean>(false);
const [filteredDashboards, setFilteredDashboards] = useState<Dashboard[]>(); const [filteredDashboards, setFilteredDashboards] = useState<Dashboard[]>();
@ -58,6 +67,7 @@ function ListOfAllDashboard(): JSX.Element {
useEffect(() => { useEffect(() => {
setFilteredDashboards(dashboards); setFilteredDashboards(dashboards);
}, [dashboards]); }, [dashboards]);
const [newDashboardState, setNewDashboardState] = useState({ const [newDashboardState, setNewDashboardState] = useState({
loading: false, loading: false,
error: false, error: false,
@ -215,7 +225,12 @@ function ListOfAllDashboard(): JSX.Element {
return menuItems; return menuItems;
}, [createNewDashboard, loading, onNewDashboardHandler, t]); }, [createNewDashboard, loading, onNewDashboardHandler, t]);
const menuItems = getMenuItems(); const menu: MenuProps = useMemo(
() => ({
items: getMenuItems(),
}),
[getMenuItems],
);
const GetHeader = useMemo( const GetHeader = useMemo(
() => ( () => (
@ -230,7 +245,7 @@ function ListOfAllDashboard(): JSX.Element {
}} }}
/> />
{newDashboard && ( {newDashboard && (
<Dropdown trigger={['click']} overlay={<Menu items={menuItems} />}> <Dropdown trigger={['click']} menu={menu}>
<NewDashboardButton <NewDashboardButton
icon={<PlusOutlined />} icon={<PlusOutlined />}
type="primary" type="primary"
@ -249,7 +264,7 @@ function ListOfAllDashboard(): JSX.Element {
newDashboard, newDashboard,
newDashboardState.error, newDashboardState.error,
newDashboardState.loading, newDashboardState.loading,
menuItems, menu,
], ],
); );

View File

@ -173,6 +173,13 @@ function SearchFilter({
globalTime.minTime, globalTime.minTime,
]); ]);
const onPopOverChange = useCallback(
(isVisible: boolean) => {
onDropDownToggleHandler(isVisible)();
},
[onDropDownToggleHandler],
);
return ( return (
<Container> <Container>
<Popover <Popover
@ -189,11 +196,9 @@ function SearchFilter({
overlayInnerStyle={{ overlayInnerStyle={{
width: `${searchRef?.current?.input?.offsetWidth || 0}px`, width: `${searchRef?.current?.input?.offsetWidth || 0}px`,
}} }}
visible={showDropDown} open={showDropDown}
destroyTooltipOnHide destroyTooltipOnHide
onVisibleChange={(value): void => { onOpenChange={onPopOverChange}
onDropDownToggleHandler(value)();
}}
> >
<Input.Search <Input.Search
ref={searchRef} ref={searchRef}