4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
6
7
- import { getDefaultHoverDelegate } from '../../../../../base/browser/ui/hover/hoverDelegateFactory.js' ;
8
7
import { Disposable } from '../../../../../base/common/lifecycle.js' ;
9
8
import { IHoverService } from '../../../../../platform/hover/browser/hover.js' ;
10
9
import { IChatAgentCommand } from '../../common/chatAgents.js' ;
11
10
import { chatSubcommandLeader } from '../../common/chatParserTypes.js' ;
12
11
import { IChatRendererContent } from '../../common/chatViewModel.js' ;
13
12
import { ChatTreeItem } from '../chat.js' ;
14
13
import { IChatContentPart } from './chatContentParts.js' ;
15
- import { renderIcon } from '../../../../../base/browser/ui/iconLabel/iconLabels.js' ;
16
14
import { Codicon } from '../../../../../base/common/codicons.js' ;
17
- import { addDisposableListener } from '../../../../../base/browser/dom.js' ;
18
15
import { localize } from '../../../../../nls.js' ;
16
+ import { Button } from '../../../../../base/browser/ui/button/button.js' ;
17
+ import { generateUuid } from '../../../../../base/common/uuid.js' ;
19
18
20
19
21
20
export class ChatAgentCommandContentPart extends Disposable implements IChatContentPart {
@@ -28,15 +27,23 @@ export class ChatAgentCommandContentPart extends Disposable implements IChatCont
28
27
@IHoverService private readonly _hoverService : IHoverService ,
29
28
) {
30
29
super ( ) ;
31
- this . _store . add ( this . _hoverService . setupManagedHover ( getDefaultHoverDelegate ( 'element' ) , this . domNode , localize ( 'rerun' , "Detected command. Select to rerun without {0}{1}" , chatSubcommandLeader , cmd . name ) ) ) ;
32
30
this . domNode . classList . add ( 'chat-agent-command' ) ;
33
- this . domNode . innerText = chatSubcommandLeader + cmd . name ;
34
31
this . domNode . setAttribute ( 'aria-label' , cmd . name ) ;
35
32
this . domNode . setAttribute ( 'role' , 'button' ) ;
36
33
37
- this . domNode . appendChild ( renderIcon ( Codicon . close ) ) ;
34
+ const groupId = generateUuid ( ) ;
38
35
39
- this . _store . add ( addDisposableListener ( this . domNode , 'click' , onClick ) ) ;
36
+ const commandSpan = document . createElement ( 'span' ) ;
37
+ this . domNode . appendChild ( commandSpan ) ;
38
+ commandSpan . innerText = chatSubcommandLeader + cmd . name ;
39
+ this . _store . add ( this . _hoverService . setupDelayedHover ( commandSpan , { content : cmd . description , appearance : { showPointer : true } } , { groupId } ) ) ;
40
+
41
+ const rerun = localize ( 'rerun' , "Rerun without {0}{1}" , chatSubcommandLeader , cmd . name ) ;
42
+ const btn = new Button ( this . domNode , { ariaLabel : rerun } ) ;
43
+ btn . icon = Codicon . close ;
44
+ btn . onDidClick ( ( ) => onClick ( ) ) ;
45
+ this . _store . add ( btn ) ;
46
+ this . _store . add ( this . _hoverService . setupDelayedHover ( btn . element , { content : rerun , appearance : { showPointer : true } } , { groupId } ) ) ;
40
47
}
41
48
42
49
hasSameContent ( other : IChatRendererContent , followingContent : IChatRendererContent [ ] , element : ChatTreeItem ) : boolean {
0 commit comments