1
- import { EuiButton , EuiButtonIcon , EuiFlexGroup , EuiFlexItem , EuiIcon , EuiText , EuiToolTip } from '@elastic/eui'
1
+ import { EuiButton , EuiButtonIcon , EuiFieldText , EuiFlexGroup , EuiFlexItem , EuiIcon , EuiText , EuiToolTip } from '@elastic/eui'
2
2
import cx from 'classnames'
3
- import React , { useContext } from 'react'
3
+ import React , { useContext , useState } from 'react'
4
4
import { useDispatch , useSelector } from 'react-redux'
5
5
import { useParams } from 'react-router-dom'
6
6
import { Theme } from 'uiSrc/constants'
7
7
import { ThemeContext } from 'uiSrc/contexts/themeContext'
8
- import { PUB_SUB_DEFAULT_CHANNEL } from 'uiSrc/pages/pub-sub/PubSubPage'
9
8
import { clearPubSubMessages , pubSubSelector , toggleSubscribeTriggerPubSub } from 'uiSrc/slices/pubsub/pubsub'
10
9
import { sendEventTelemetry , TelemetryEvent } from 'uiSrc/telemetry'
11
10
@@ -25,8 +24,10 @@ const SubscriptionPanel = () => {
25
24
26
25
const { instanceId = '' } = useParams < { instanceId : string } > ( )
27
26
27
+ const [ channels , setChannels ] = useState ( '' )
28
+
28
29
const toggleSubscribe = ( ) => {
29
- dispatch ( toggleSubscribeTriggerPubSub ( [ PUB_SUB_DEFAULT_CHANNEL ] ) )
30
+ dispatch ( toggleSubscribeTriggerPubSub ( channels ) )
30
31
}
31
32
32
33
const onClickClear = ( ) => {
@@ -70,21 +71,17 @@ const SubscriptionPanel = () => {
70
71
</ EuiFlexItem >
71
72
< EuiFlexItem grow = { false } >
72
73
< EuiFlexGroup alignItems = "center" gutterSize = "none" responsive = { false } >
73
- { ! ! messages . length && (
74
- < EuiFlexItem grow = { false } style = { { marginRight : 12 } } >
75
- < EuiToolTip
76
- content = "Clear Messages"
77
- anchorClassName = { cx ( 'inline-flex' ) }
78
- >
79
- < EuiButtonIcon
80
- iconType = "eraser"
81
- onClick = { onClickClear }
82
- aria-label = "clear pub sub"
83
- data-testid = "clear-pubsub-btn"
84
- />
85
- </ EuiToolTip >
86
- </ EuiFlexItem >
87
- ) }
74
+ < EuiFlexItem grow = { false } className = { styles . channels } >
75
+ < EuiFieldText
76
+ value = { channels }
77
+ disabled = { isSubscribed }
78
+ className = { styles . channels }
79
+ onChange = { ( e ) => setChannels ( e . target . value ) }
80
+ placeholder = "Enter Channel to Subscribe"
81
+ aria-label = "channel names for filtering"
82
+ data-testid = "channels-input"
83
+ />
84
+ </ EuiFlexItem >
88
85
< EuiFlexItem grow = { false } >
89
86
< EuiButton
90
87
fill = { ! isSubscribed }
@@ -100,6 +97,21 @@ const SubscriptionPanel = () => {
100
97
{ isSubscribed ? 'Unsubscribe' : 'Subscribe' }
101
98
</ EuiButton >
102
99
</ EuiFlexItem >
100
+ { ! ! messages . length && (
101
+ < EuiFlexItem grow = { false } style = { { marginLeft : 8 } } >
102
+ < EuiToolTip
103
+ content = "Clear Messages"
104
+ anchorClassName = { cx ( 'inline-flex' ) }
105
+ >
106
+ < EuiButtonIcon
107
+ iconType = "eraser"
108
+ onClick = { onClickClear }
109
+ aria-label = "clear pub sub"
110
+ data-testid = "clear-pubsub-btn"
111
+ />
112
+ </ EuiToolTip >
113
+ </ EuiFlexItem >
114
+ ) }
103
115
</ EuiFlexGroup >
104
116
</ EuiFlexItem >
105
117
</ EuiFlexGroup >
0 commit comments