|
1 | 1 | import {Fragment, useEffect, useState} from 'react';
|
2 | 2 |
|
3 | 3 | import {ChevronDown} from '@gravity-ui/icons';
|
4 |
| -import { |
5 |
| - ActionTooltip, |
6 |
| - Button, |
7 |
| - HelpMark, |
8 |
| - Hotkey, |
9 |
| - Icon, |
10 |
| - Menu, |
11 |
| - Popover, |
12 |
| - Popup, |
13 |
| -} from '@gravity-ui/uikit'; |
| 4 | +import {HelpMark, Hotkey, Icon, Menu, Popover, Popup} from '@gravity-ui/uikit'; |
14 | 5 |
|
15 | 6 | import {cn} from '../classname';
|
16 | 7 | import {i18n} from '../i18n/common';
|
17 | 8 | import {isFunction} from '../lodash';
|
18 | 9 | import {useBooleanState, useElementState} from '../react-utils/hooks';
|
19 | 10 |
|
20 | 11 | import {PreviewTooltip} from './PreviewTooltip';
|
21 |
| -import {ToolbarTooltipDelay} from './const'; |
| 12 | +import {ToolbarButtonView} from './ToolbarButton'; |
22 | 13 | import type {
|
23 | 14 | ToolbarBaseProps,
|
24 | 15 | ToolbarButtonPopupData,
|
@@ -70,42 +61,21 @@ export function ToolbarListButton<E>({
|
70 | 61 | buttonContent.push(<Icon key={3} data={ChevronDown} size={16} />);
|
71 | 62 | }
|
72 | 63 |
|
73 |
| - const titleText: string = isFunction(title) ? title() : title; |
74 |
| - |
75 | 64 | return (
|
76 | 65 | <>
|
77 |
| - <Popover |
78 |
| - className={b('action-disabled-popover')} |
79 |
| - content={ |
80 |
| - <div className={b('action-disabled-tooltip')}> |
81 |
| - {i18n('toolbar_action_disabled')} |
82 |
| - </div> |
83 |
| - } |
84 |
| - placement={'bottom'} |
85 |
| - disabled={!everyDisabled} |
| 66 | + <ToolbarButtonView |
| 67 | + ref={setAnchorElement} |
| 68 | + active={someActive} |
| 69 | + enabled={!everyDisabled} |
| 70 | + title={title} |
| 71 | + className={b({arrow: withArrow}, [className])} |
| 72 | + onClick={() => { |
| 73 | + if (popupItem) setPopupItem(undefined); |
| 74 | + else toggleOpen(); |
| 75 | + }} |
86 | 76 | >
|
87 |
| - <ActionTooltip |
88 |
| - title={titleText} |
89 |
| - disabled={Boolean(popupItem) || popupOpen} |
90 |
| - openDelay={ToolbarTooltipDelay.Open} |
91 |
| - closeDelay={ToolbarTooltipDelay.Close} |
92 |
| - > |
93 |
| - <Button |
94 |
| - size="m" |
95 |
| - ref={setAnchorElement} |
96 |
| - view={someActive || popupOpen ? 'normal' : 'flat'} |
97 |
| - selected={someActive} |
98 |
| - disabled={everyDisabled} |
99 |
| - className={b({arrow: withArrow}, [className])} |
100 |
| - onClick={() => { |
101 |
| - if (popupItem) setPopupItem(undefined); |
102 |
| - else toggleOpen(); |
103 |
| - }} |
104 |
| - > |
105 |
| - {buttonContent} |
106 |
| - </Button> |
107 |
| - </ActionTooltip> |
108 |
| - </Popover> |
| 77 | + {buttonContent} |
| 78 | + </ToolbarButtonView> |
109 | 79 | <Popup anchorElement={anchorElement} open={popupOpen} onOpenChange={hide}>
|
110 | 80 | <Menu size="l" className={b('menu')}>
|
111 | 81 | {data
|
|
0 commit comments