style: add text overflow style for collections (#3292)

Co-authored-by: Alex Yang <himself65@outlook.com>
This commit is contained in:
JimmFly
2023-07-21 11:48:22 +08:00
committed by GitHub
parent 9f105b5806
commit cff741e9ba
7 changed files with 93 additions and 36 deletions

View File

@@ -1,3 +1,4 @@
import { Tooltip } from '@affine/component';
import { EditCollectionModel } from '@affine/component/page-list';
import type { PropertiesMeta } from '@affine/env/filter';
import type { GetPageInfoById } from '@affine/env/page-info';
@@ -102,9 +103,21 @@ export const CollectionBar = ({
width: 20,
}}
/>
<div style={{ marginRight: 10 }}>
{setting.currentCollection.name}
</div>
<Tooltip
content={setting.currentCollection.name}
pointerEnterDelay={1500}
>
<div
style={{
marginRight: 10,
maxWidth: 200,
overflow: 'hidden',
textOverflow: 'ellipsis',
}}
>
{setting.currentCollection.name}
</div>
</Tooltip>
{actions.map(action => {
return (
<div

View File

@@ -1,4 +1,4 @@
import { style } from '@vanilla-extract/css';
import { globalStyle, style } from '@vanilla-extract/css';
export const menuTitleStyle = style({
marginLeft: '12px',
@@ -20,6 +20,8 @@ export const viewButton = style({
padding: '4px 8px',
fontSize: 'var(--affine-font-xs)',
background: 'var(--affine-white)',
maxWidth: '200px',
overflow: 'hidden',
color: 'var(--affine-text-secondary-color)',
border: '1px solid var(--affine-border-color)',
transition: 'margin-left 0.2s ease-in-out',
@@ -28,6 +30,20 @@ export const viewButton = style({
background: 'var(--affine-hover-color)',
},
marginRight: '20px',
'@media': {
'(max-width: 1200px)': {
maxWidth: '100px',
},
'(max-width: 900px)': {
maxWidth: '150px',
marginRight: '10px',
},
},
});
globalStyle(`${viewButton} > span`, {
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
});
export const viewMenu = style({});
export const viewOption = style({

View File

@@ -16,7 +16,7 @@ import { useAtom } from 'jotai';
import type { MouseEvent, ReactNode } from 'react';
import { useCallback, useMemo, useState } from 'react';
import { Button, MenuItem } from '../../..';
import { Button, MenuItem, Tooltip } from '../../..';
import Menu from '../../../ui/menu/menu';
import { appSidebarOpenAtom } from '../../app-sidebar';
import { CreateFilterMenu } from '../filter/vars';
@@ -80,39 +80,53 @@ const CollectionOption = ({
key={collection.id}
className={styles.viewMenu}
>
<div
style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
}}
<Tooltip
content={collection.name}
placement="right"
pointerEnterDelay={1500}
>
<div>{collection.name}</div>
<div
style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
}}
>
{actions.map((v, i) => {
const onClick = (e: MouseEvent<HTMLDivElement>) => {
e.stopPropagation();
v.click();
};
return (
<div
data-testid={`collection-select-option-${v.name}`}
key={i}
onClick={onClick}
style={{ marginLeft: i === 0 ? 28 : undefined }}
className={clsx(styles.viewOption, v.className)}
>
{v.icon}
</div>
);
})}
<div
style={{
maxWidth: '150px',
overflow: 'hidden',
textOverflow: 'ellipsis',
}}
>
{collection.name}
</div>
<div
style={{
display: 'flex',
alignItems: 'center',
}}
>
{actions.map((v, i) => {
const onClick = (e: MouseEvent<HTMLDivElement>) => {
e.stopPropagation();
v.click();
};
return (
<div
data-testid={`collection-select-option-${v.name}`}
key={i}
onClick={onClick}
style={{ marginLeft: i === 0 ? 28 : undefined }}
className={clsx(styles.viewOption, v.className)}
>
{v.icon}
</div>
);
})}
</div>
</div>
</div>
</Tooltip>
</MenuItem>
);
};
@@ -155,7 +169,6 @@ export const CollectionList = ({
[styles.filterButtonCollapse]: !open,
})}
style={{
marginLeft: 4,
display: 'flex',
alignItems: 'center',
}}
@@ -199,7 +212,12 @@ export const CollectionList = ({
hoverColor="var(--affine-icon-color)"
data-testid="collection-select"
>
{setting.currentCollection.name}
<Tooltip
content={setting.currentCollection.name}
pointerEnterDelay={1500}
>
<>{setting.currentCollection.name}</>
</Tooltip>
</Button>
</Menu>
)}

View File

@@ -22,7 +22,7 @@ export const Popper = ({
defaultVisible = false,
visible: propsVisible,
trigger = 'hover',
pointerEnterDelay = 100,
pointerEnterDelay = 500,
pointerLeaveDelay = 100,
onVisibleChange,
popoverStyle,

View File

@@ -15,6 +15,7 @@ const StyledTooltip = styled(StyledPopperContainer)(() => {
fontSize: 'var(--affine-font-sm)',
borderRadius: '8px',
marginBottom: '12px',
overflowWrap: 'break-word',
};
});