feat(core): use contain strict optimizing performance (#8553)

This commit is contained in:
EYHN
2024-10-21 06:42:07 +00:00
parent a25bb0d80f
commit 42b3e069f9
9 changed files with 17 additions and 17 deletions

View File

@@ -34,7 +34,7 @@ export const root = style({
}, },
'&[data-open="true"][data-handle-position="left"][data-is-floating="true"]': '&[data-open="true"][data-handle-position="left"][data-is-floating="true"]':
{ {
transform: `translateX(-${panelWidthVar})`, transform: `translateX(calc(${panelWidthVar} * -1))`,
}, },
'&[data-enable-animation="true"]': { '&[data-enable-animation="true"]': {
transition: `margin-left ${animationTimeout}, margin-right ${animationTimeout}, transform ${animationTimeout}, background ${animationTimeout}`, transition: `margin-left ${animationTimeout}, margin-right ${animationTimeout}, transform ${animationTimeout}, background ${animationTimeout}`,
@@ -46,6 +46,12 @@ export const root = style({
}, },
}); });
export const content = style({
contain: 'strict',
width: '100%',
height: '100%',
});
export const panelContent = style({ export const panelContent = style({
position: 'relative', position: 'relative',
height: '100%', height: '100%',

View File

@@ -169,7 +169,9 @@ export const ResizePanel = forwardRef<HTMLDivElement, ResizePanelProps>(
data-handle-position={resizeHandlePos} data-handle-position={resizeHandlePos}
data-enable-animation={enableAnimation && !resizing} data-enable-animation={enableAnimation && !resizing}
> >
<div className={styles.content}>
{!(status === 'exited' && unmountOnExit !== false) && children} {!(status === 'exited' && unmountOnExit !== false) && children}
</div>
<ResizeHandle <ResizeHandle
resizeHandlePos={resizeHandlePos} resizeHandlePos={resizeHandlePos}
resizeHandleOffset={resizeHandleOffset} resizeHandleOffset={resizeHandleOffset}

View File

@@ -6,6 +6,7 @@ export const root = style({
height: '54px', height: '54px',
// 42 + 12 // 42 + 12
flexShrink: 0, flexShrink: 0,
contain: 'strict',
width: '100%', width: '100%',
alignItems: 'stretch', alignItems: 'stretch',
transition: 'background-color 0.2s, opacity 0.2s', transition: 'background-color 0.2s, opacity 0.2s',

View File

@@ -8,6 +8,7 @@ export const root = style({
flexShrink: 0, flexShrink: 0,
width: '100%', width: '100%',
alignItems: 'stretch', alignItems: 'stretch',
contain: 'strict',
transition: 'background-color 0.2s, opacity 0.2s', transition: 'background-color 0.2s, opacity 0.2s',
':hover': { ':hover': {
backgroundColor: cssVar('hoverColor'), backgroundColor: cssVar('hoverColor'),

View File

@@ -46,6 +46,7 @@ export const header = style({
alignItems: 'center', alignItems: 'center',
padding: '0px 16px 0px 6px', padding: '0px 16px 0px 6px',
height: '28px', height: '28px',
contain: 'strict',
background: cssVar('backgroundPrimaryColor'), background: cssVar('backgroundPrimaryColor'),
':hover': { ':hover': {
background: cssVar('hoverColorFilled'), background: cssVar('hoverColorFilled'),

View File

@@ -7,6 +7,7 @@ export const root = style({
// 42 + 12 // 42 + 12
flexShrink: 0, flexShrink: 0,
width: '100%', width: '100%',
contain: 'strict',
alignItems: 'stretch', alignItems: 'stretch',
transition: 'background-color 0.2s, opacity 0.2s', transition: 'background-color 0.2s, opacity 0.2s',
':hover': { ':hover': {

View File

@@ -20,6 +20,7 @@ export const header = style({
flexShrink: 0, flexShrink: 0,
background: cssVar('backgroundPrimaryColor'), background: cssVar('backgroundPrimaryColor'),
padding: '0 16px', padding: '0 16px',
contain: 'strict',
'@media': { '@media': {
print: { print: {
display: 'none', display: 'none',
@@ -31,6 +32,7 @@ export const viewBodyContainer = style({
display: 'flex', display: 'flex',
flex: 1, flex: 1,
overflow: 'hidden', overflow: 'hidden',
contain: 'strict',
}); });
export const leftSidebarButton = style({ export const leftSidebarButton = style({

View File

@@ -57,7 +57,7 @@ test('Drag resizer can resize sidebar', async ({ page }) => {
}); });
await page.mouse.up(); await page.mouse.up();
const boundingBox = await page.getByTestId('app-sidebar').boundingBox(); const boundingBox = await page.getByTestId('app-sidebar').boundingBox();
expect(boundingBox?.width).toBe(399); expect(Math.floor(boundingBox?.width ?? 0)).toBe(399);
}); });
test('Sidebar in between sm & md breakpoint', async ({ page }) => { test('Sidebar in between sm & md breakpoint', async ({ page }) => {

View File

@@ -1,14 +0,0 @@
import { test } from '@affine-test/kit/playwright';
import { openHomePage } from '@affine-test/kit/utils/load-page';
import { waitForEditorLoad } from '@affine-test/kit/utils/page-logic';
import { expect } from '@playwright/test';
test('Create subpage', async ({ page }) => {
await openHomePage(page);
await waitForEditorLoad(page);
await page
.locator('[data-testid=app-sidebar-arrow-button-collapse][data-show=true]')
.click();
const sliderBarArea = page.getByTestId('sliderBar-inner');
await expect(sliderBarArea).not.toBeInViewport();
});