[MM-58442] Migrate tooltips of 'components/drafts/panel/panel_header' to WithTooltip (#27197)
Этот коммит содержится в:
@@ -137,31 +137,20 @@ exports[`components/drafts/panel/panel_header should show sync icon when draft i
|
|||||||
<div
|
<div
|
||||||
className="PanelHeader__sync-icon"
|
className="PanelHeader__sync-icon"
|
||||||
>
|
>
|
||||||
<OverlayTrigger
|
<WithTooltip
|
||||||
defaultOverlayShown={false}
|
|
||||||
delayShow={400}
|
|
||||||
overlay={
|
|
||||||
<Tooltip
|
|
||||||
id="drafts-sync-tooltip"
|
id="drafts-sync-tooltip"
|
||||||
>
|
placement="top"
|
||||||
|
title={
|
||||||
<Memo(MemoizedFormattedMessage)
|
<Memo(MemoizedFormattedMessage)
|
||||||
defaultMessage="Updated from another device"
|
defaultMessage="Updated from another device"
|
||||||
id="drafts.info.sync"
|
id="drafts.info.sync"
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
|
||||||
}
|
|
||||||
placement="top"
|
|
||||||
trigger={
|
|
||||||
Array [
|
|
||||||
"hover",
|
|
||||||
"focus",
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<SyncIcon
|
<SyncIcon
|
||||||
size={18}
|
size={18}
|
||||||
/>
|
/>
|
||||||
</OverlayTrigger>
|
</WithTooltip>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className="PanelHeader__timestamp"
|
className="PanelHeader__timestamp"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import {shallow} from 'enzyme';
|
import {shallow} from 'enzyme';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import OverlayTrigger from 'components/overlay_trigger';
|
import WithTooltip from 'components/with_tooltip';
|
||||||
|
|
||||||
import PanelHeader from './panel_header';
|
import PanelHeader from './panel_header';
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ describe('components/drafts/panel/panel_header', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(wrapper.find('div.PanelHeader__actions').hasClass('PanelHeader__actions show')).toBe(false);
|
expect(wrapper.find('div.PanelHeader__actions').hasClass('PanelHeader__actions show')).toBe(false);
|
||||||
expect(wrapper.find(OverlayTrigger).exists()).toBe(false);
|
expect(wrapper.find(WithTooltip).exists()).toBe(false);
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ describe('components/drafts/panel/panel_header', () => {
|
|||||||
/>,
|
/>,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(wrapper.find(OverlayTrigger).exists()).toBe(true);
|
expect(wrapper.find(WithTooltip).exists()).toBe(true);
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,9 @@ import {FormattedMessage} from 'react-intl';
|
|||||||
|
|
||||||
import {SyncIcon} from '@mattermost/compass-icons/components';
|
import {SyncIcon} from '@mattermost/compass-icons/components';
|
||||||
|
|
||||||
import OverlayTrigger from 'components/overlay_trigger';
|
|
||||||
import Timestamp from 'components/timestamp';
|
import Timestamp from 'components/timestamp';
|
||||||
import Tooltip from 'components/tooltip';
|
|
||||||
import Tag from 'components/widgets/tag/tag';
|
import Tag from 'components/widgets/tag/tag';
|
||||||
|
import WithTooltip from 'components/with_tooltip';
|
||||||
import Constants from 'utils/constants';
|
|
||||||
|
|
||||||
import './panel_header.scss';
|
import './panel_header.scss';
|
||||||
|
|
||||||
@@ -21,15 +18,7 @@ const TIMESTAMP_PROPS: Partial<ComponentProps<typeof Timestamp>> = {
|
|||||||
day: 'numeric',
|
day: 'numeric',
|
||||||
useSemanticOutput: false,
|
useSemanticOutput: false,
|
||||||
useTime: false,
|
useTime: false,
|
||||||
units: [
|
units: ['now', 'minute', 'hour', 'day', 'week', 'month', 'year'],
|
||||||
'now',
|
|
||||||
'minute',
|
|
||||||
'hour',
|
|
||||||
'day',
|
|
||||||
'week',
|
|
||||||
'month',
|
|
||||||
'year',
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -38,46 +27,33 @@ type Props = {
|
|||||||
timestamp: number;
|
timestamp: number;
|
||||||
remote: boolean;
|
remote: boolean;
|
||||||
title: React.ReactNode;
|
title: React.ReactNode;
|
||||||
}
|
};
|
||||||
|
|
||||||
function PanelHeader({
|
|
||||||
actions,
|
|
||||||
hover,
|
|
||||||
timestamp,
|
|
||||||
remote,
|
|
||||||
title,
|
|
||||||
}: Props) {
|
|
||||||
const syncTooltip = (
|
|
||||||
<Tooltip id='drafts-sync-tooltip'>
|
|
||||||
<FormattedMessage
|
|
||||||
id='drafts.info.sync'
|
|
||||||
defaultMessage='Updated from another device'
|
|
||||||
/>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
|
|
||||||
|
function PanelHeader({actions, hover, timestamp, remote, title}: Props) {
|
||||||
return (
|
return (
|
||||||
<header className='PanelHeader'>
|
<header className='PanelHeader'>
|
||||||
<div className='PanelHeader__left'>
|
<div className='PanelHeader__left'>{title}</div>
|
||||||
{title}
|
|
||||||
</div>
|
|
||||||
<div className='PanelHeader__right'>
|
<div className='PanelHeader__right'>
|
||||||
<div className={cn('PanelHeader__actions', {show: hover})}>
|
<div className={cn('PanelHeader__actions', {show: hover})}>
|
||||||
{actions}
|
{actions}
|
||||||
</div>
|
</div>
|
||||||
<div className={cn('PanelHeader__info', {hide: hover})}>
|
<div className={cn('PanelHeader__info', {hide: hover})}>
|
||||||
{remote && <div className='PanelHeader__sync-icon'>
|
{remote && (
|
||||||
<OverlayTrigger
|
<div className='PanelHeader__sync-icon'>
|
||||||
trigger={Constants.OVERLAY_DEFAULT_TRIGGER}
|
<WithTooltip
|
||||||
delayShow={Constants.OVERLAY_TIME_DELAY}
|
id='drafts-sync-tooltip'
|
||||||
placement='top'
|
placement='top'
|
||||||
overlay={syncTooltip}
|
title={
|
||||||
>
|
<FormattedMessage
|
||||||
<SyncIcon
|
id='drafts.info.sync'
|
||||||
size={18}
|
defaultMessage='Updated from another device'
|
||||||
/>
|
/>
|
||||||
</OverlayTrigger>
|
}
|
||||||
</div>}
|
>
|
||||||
|
<SyncIcon size={18}/>
|
||||||
|
</WithTooltip>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
<div className='PanelHeader__timestamp'>
|
<div className='PanelHeader__timestamp'>
|
||||||
{Boolean(timestamp) && (
|
{Boolean(timestamp) && (
|
||||||
<Timestamp
|
<Timestamp
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user