1
- import { EuiButton , EuiFlexGroup , EuiFlexItem , EuiIcon , EuiText } from '@elastic/eui'
1
+ import { EuiButton , EuiButtonIcon , EuiFlexGroup , EuiFlexItem , EuiIcon , EuiText , EuiToolTip } from '@elastic/eui'
2
+ import cx from 'classnames'
2
3
import React , { useContext } from 'react'
3
4
import { useDispatch , useSelector } from 'react-redux'
4
5
import { Theme } from 'uiSrc/constants'
5
6
import { ThemeContext } from 'uiSrc/contexts/themeContext'
6
7
import { PUB_SUB_DEFAULT_CHANNEL } from 'uiSrc/pages/pubSub/PubSubPage'
7
- import { pubSubSelector , toggleSubscribeTriggerPubSub } from 'uiSrc/slices/pubsub/pubsub'
8
+ import { clearPubSubMessages , pubSubSelector , toggleSubscribeTriggerPubSub } from 'uiSrc/slices/pubsub/pubsub'
8
9
9
10
import { ReactComponent as UserInCircle } from 'uiSrc/assets/img/icons/user_in_circle.svg'
10
11
import SubscribedIconDark from 'uiSrc/assets/img/pub-sub/subscribed.svg'
@@ -15,7 +16,7 @@ import NotSubscribedIconLight from 'uiSrc/assets/img/pub-sub/not-subscribed-lt.s
15
16
import styles from './styles.module.scss'
16
17
17
18
const SubscriptionPanel = ( ) => {
18
- const { isSubscribed, loading, count } = useSelector ( pubSubSelector )
19
+ const { messages , isSubscribed, loading, count } = useSelector ( pubSubSelector )
19
20
20
21
const dispatch = useDispatch ( )
21
22
const { theme } = useContext ( ThemeContext )
@@ -24,6 +25,10 @@ const SubscriptionPanel = () => {
24
25
dispatch ( toggleSubscribeTriggerPubSub ( [ PUB_SUB_DEFAULT_CHANNEL ] ) )
25
26
}
26
27
28
+ const onClickClear = ( ) => {
29
+ dispatch ( clearPubSubMessages ( ) )
30
+ }
31
+
27
32
const subscribedIcon = theme === Theme . Dark ? SubscribedIconDark : SubscribedIconLight
28
33
const notSubscribedIcon = theme === Theme . Dark ? NotSubscribedIconDark : NotSubscribedIconLight
29
34
@@ -53,19 +58,38 @@ const SubscriptionPanel = () => {
53
58
54
59
</ EuiFlexItem >
55
60
< EuiFlexItem grow = { false } >
56
- < EuiButton
57
- fill = { ! isSubscribed }
58
- size = "s"
59
- color = "secondary"
60
- className = { styles . buttonSubscribe }
61
- type = "submit"
62
- onClick = { toggleSubscribe }
63
- iconType = { isSubscribed ? 'minusInCircle' : UserInCircle }
64
- data-testid = "btn-submit"
65
- disabled = { loading }
66
- >
67
- { isSubscribed ? 'Unsubscribe' : 'Subscribe' }
68
- </ EuiButton >
61
+ < EuiFlexGroup alignItems = "center" gutterSize = "none" responsive = { false } >
62
+ { ! ! messages . length && (
63
+ < EuiFlexItem grow = { false } style = { { marginRight : 12 } } >
64
+ < EuiToolTip
65
+ content = "Clear Messages"
66
+ anchorClassName = { cx ( 'inline-flex' ) }
67
+ >
68
+ < EuiButtonIcon
69
+ iconType = "eraser"
70
+ onClick = { onClickClear }
71
+ aria-label = "clear pub sub"
72
+ data-testid = "clear-pubsub-btn"
73
+ />
74
+ </ EuiToolTip >
75
+ </ EuiFlexItem >
76
+ ) }
77
+ < EuiFlexItem grow = { false } >
78
+ < EuiButton
79
+ fill = { ! isSubscribed }
80
+ size = "s"
81
+ color = "secondary"
82
+ className = { styles . buttonSubscribe }
83
+ type = "submit"
84
+ onClick = { toggleSubscribe }
85
+ iconType = { isSubscribed ? 'minusInCircle' : UserInCircle }
86
+ data-testid = "btn-submit"
87
+ disabled = { loading }
88
+ >
89
+ { isSubscribed ? 'Unsubscribe' : 'Subscribe' }
90
+ </ EuiButton >
91
+ </ EuiFlexItem >
92
+ </ EuiFlexGroup >
69
93
</ EuiFlexItem >
70
94
</ EuiFlexGroup >
71
95
)
0 commit comments