Skip to content

Commit 22982f8

Browse files
authored
feat(FR-1539): add keyboard shortcut and tooltip to notification button (#4378)
1 parent fa6252f commit 22982f8

File tree

1 file changed

+47
-16
lines changed

1 file changed

+47
-16
lines changed

react/src/components/BAINotificationButton.tsx

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import {
55
import ReverseThemeProvider from './ReverseThemeProvider';
66
import WEBUINotificationDrawer from './WEBUINotificationDrawer';
77
import { BellOutlined } from '@ant-design/icons';
8-
import { Badge, Button, Typography } from 'antd';
8+
import { Badge, Button, Tooltip, Typography } from 'antd';
99
import type { ButtonProps } from 'antd';
10+
import { t } from 'i18next';
1011
import { atom, useAtom } from 'jotai';
1112
import _ from 'lodash';
1213
import React, { useEffect } from 'react';
14+
import useKeyboardShortcut from 'src/hooks/useKeyboardShortcut';
1315

1416
export const isOpenDrawerState = atom(false);
1517

@@ -28,6 +30,18 @@ const BAINotificationButton: React.FC<ButtonProps> = ({ ...props }) => {
2830
};
2931
}, [upsertNotification]);
3032

33+
useKeyboardShortcut(
34+
(event) => {
35+
if (event.key === ']') {
36+
event.preventDefault();
37+
setIsOpenDrawer((v) => !v);
38+
}
39+
},
40+
{
41+
skipShortcutOnMetaKey: true,
42+
},
43+
);
44+
3145
const hasRunningBackgroundTask = _.some(notifications, (n) => {
3246
return n.backgroundTask?.status === 'pending';
3347
});
@@ -36,22 +50,39 @@ const BAINotificationButton: React.FC<ButtonProps> = ({ ...props }) => {
3650
return (
3751
<>
3852
<ReverseThemeProvider>
39-
<Button
40-
icon={
41-
<ReverseThemeProvider>
42-
<Badge color="red" dot={hasRunningBackgroundTask}>
43-
<ReverseThemeProvider>
44-
<Typography.Text>
45-
<BellOutlined />
46-
</Typography.Text>
47-
</ReverseThemeProvider>
48-
</Badge>
49-
</ReverseThemeProvider>
53+
<Tooltip
54+
title={
55+
<>
56+
{t('notification.Notifications')}
57+
<Typography.Text
58+
keyboard
59+
style={{
60+
color: 'inherit',
61+
}}
62+
>
63+
]
64+
</Typography.Text>
65+
</>
5066
}
51-
type="text"
52-
onClick={() => setIsOpenDrawer((v) => !v)}
53-
{...props}
54-
/>
67+
placement="left"
68+
>
69+
<Button
70+
icon={
71+
<ReverseThemeProvider>
72+
<Badge color="red" dot={hasRunningBackgroundTask}>
73+
<ReverseThemeProvider>
74+
<Typography.Text>
75+
<BellOutlined />
76+
</Typography.Text>
77+
</ReverseThemeProvider>
78+
</Badge>
79+
</ReverseThemeProvider>
80+
}
81+
type="text"
82+
onClick={() => setIsOpenDrawer((v) => !v)}
83+
{...props}
84+
/>
85+
</Tooltip>
5586
</ReverseThemeProvider>
5687
<WEBUINotificationDrawer
5788
open={isOpenDrawer}

0 commit comments

Comments
 (0)