Skip to content

Commit 4a71c34

Browse files
authored
fix: Resizer grabbable size option now applied correctly (#33)
Additionally: * build: Switched back to styled-components because v5 is very fast * fix: Reversed collapsing applied to wrong panels
1 parent bc3dfe8 commit 4a71c34

File tree

8 files changed

+64
-44
lines changed

8 files changed

+64
-44
lines changed

package-lock.json

Lines changed: 46 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@
5050
"trailingComma": "es5"
5151
},
5252
"dependencies": {
53-
"@emotion/core": "^10.0.28",
54-
"@emotion/styled": "^10.0.27",
55-
"@material-ui/core": "^4.10.2"
53+
"@material-ui/core": "^4.10.2",
54+
"styled-components": "^5.1.1"
5655
},
5756
"devDependencies": {
5857
"@babel/core": "^7.10.2",
@@ -66,6 +65,7 @@
6665
"@storybook/theming": "^5.3.19",
6766
"@types/react": "^16.9.36",
6867
"@types/react-dom": "^16.9.8",
68+
"@types/styled-components": "^5.1.0",
6969
"babel-loader": "^8.1.0",
7070
"husky": "^4.2.5",
7171
"react": "^16.13.1",

src/components/Pane.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import * as React from 'react';
22
import { SplitType } from './SplitPane';
3-
import styled from '@emotion/styled';
4-
import { css } from '@emotion/core';
53
import { useMergeClasses } from '../hooks/useMergeClasses';
64
import { useEffect, useMemo, useRef, useState } from 'react';
5+
import styled, { css } from 'styled-components';
76

87
const DEFAULT_COLLAPSE_TRANSITION_TIMEOUT = 500;
98
const verticalCss = css`

src/components/Resizer/helpers.tsx

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import styled from '@emotion/styled';
2-
import { css } from '@emotion/core';
1+
import styled, { css } from 'styled-components';
32

43
type OrientationProps = {
54
$isVertical: boolean;
@@ -19,27 +18,20 @@ export const ButtonWrapper = styled.div<OrientationProps>`
1918
`;
2019

2120
interface ButtonContainerProps extends OrientationProps {
22-
grabberSize: string | null;
23-
isLtr: boolean;
21+
$grabberSize: string | null;
22+
$isLtr: boolean;
2423
}
2524
export const ButtonContainer = styled.div<ButtonContainerProps>`
25+
z-index: 3;
2626
position: absolute;
27-
${props => (props.$isVertical ? topBottomCss : leftRightCss)}
28-
${props => (props.$isVertical ? 'width: 5rem' : 'height: 5rem')};
29-
transform: ${props =>
30-
props.$isVertical
31-
? `translateX(${props.isLtr ? '-' : ''}50%) ${
32-
props.grabberSize ? `translateX(calc(${props.grabberSize} / 2))` : ''
33-
}`
34-
: `translateY(${props.isLtr ? '-' : ''}50%) ${
35-
props.grabberSize ? `translateY(calc(${props.grabberSize} / 2))` : ''
36-
}`};
27+
overflow: initial;
3728
display: flex;
3829
flex-direction: column;
3930
align-items: center;
40-
overflow: hidden;
41-
z-index: 3;
4231
justify-content: center;
32+
33+
${props => `${props.$isVertical ? 'width' : 'height'}: ${props.$grabberSize}`};
34+
${props => (props.$isVertical ? topBottomCss : leftRightCss)}
4335
`;
4436

4537
interface GrabberProps extends OrientationProps {

src/components/Resizer/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from './helpers';
1111
import { useMergeClasses } from '../../hooks/useMergeClasses';
1212
import { CollapseOptions, ResizerOptions } from '../SplitPane';
13-
import styled from '@emotion/styled';
13+
import styled from 'styled-components';
1414
import { useTransition } from './hooks/useTransition';
1515

1616
const ButtonPositionOffset = styled.div`
@@ -103,7 +103,7 @@ export const Resizer = ({
103103
);
104104
const isTransition = collapseOptions?.buttonTransition !== 'none';
105105
const collapseButton = collapseOptions ? (
106-
<ButtonContainer $isVertical={isVertical} grabberSize={grabberSizeWithUnit} isLtr={isLtr}>
106+
<ButtonContainer $isVertical={isVertical} $grabberSize={grabberSizeWithUnit} $isLtr={isLtr}>
107107
<ButtonPositionOffset style={{ flexBasis: preButtonFlex }} />
108108
<Transition
109109
in={isTransition ? isHovered : true}

src/components/SplitPane/helpers.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
2-
import styled from '@emotion/styled';
3-
import { css } from '@emotion/core';
2+
import styled, { css } from 'styled-components';
43
import { CollapseOptions, SplitType } from '.';
54
import { Nullable } from '../../types/utilities';
65

src/components/SplitPane/hooks/callbacks/useCollapseSize.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function useCollapseSize({
2727
moveSizes({ sizes, index, offset, minSizes, collapsedIndices, collapsedSize });
2828
moveCollapsedSiblings({
2929
offset,
30-
index: idx,
30+
index,
3131
isReversed,
3232
collapsedIndices,
3333
minSizes,

stories/Collapse.stories.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ storiesOf('Collapsable Panes', module)
6262
const collapseDirection = select('Direction', { left: 'left', right: 'right' }, 'left');
6363
const minSizes = object('Minimum Sizes', [50, 50, 50, 50]);
6464
const collapseTransition = number('Collapse Transition Speed (ms)', 500);
65+
const grabberSize = number('Grabber Size (px)', 10, { min: 1, max: 100, range: true });
6566
const buttonTransition = select(
6667
'Button Transition',
6768
{
@@ -87,7 +88,7 @@ storiesOf('Collapsable Panes', module)
8788
}}
8889
minSizes={minSizes}
8990
resizerOptions={{
90-
grabberSize: '1rem',
91+
grabberSize,
9192
}}
9293
hooks={{
9394
onCollapse: action(`collapsedSizes`),

0 commit comments

Comments
 (0)