Skip to content

Commit 1a18469

Browse files
authored
fix: type resize callback sizes (#628)
* fix: type resize callback sizes * docs: explain resize callback sizes * docs: remove unrelated table formatting * docs: document resize callback sizes
1 parent 5bb1cc6 commit 1a18469

6 files changed

Lines changed: 19 additions & 11 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Then open `http://localhost:8000`.
8585
| placement | `left` \| `right` \| `top` \| `bottom` | `right` | Drawer placement. |
8686
| prefixCls | string | `rc-drawer` | Class name prefix. |
8787
| push | boolean \| `{ distance?: number \| string }` | - | Push parent drawers when nested. |
88-
| resizable | boolean \| `{ onResize?: (size: number) => void; onResizeStart?: () => void; onResizeEnd?: () => void }` | false | Enable resizing and optional resize callbacks. |
88+
| resizable | boolean \| `{ onResize?: (size: number) => void; onResizeStart?: (size: number) => void; onResizeEnd?: (size: number) => void }` | false | Enable resizing and optional resize callbacks. |
8989
| rootClassName | string | - | Class name for the root wrapper. |
9090
| rootStyle | CSSProperties | - | Style for the root wrapper. |
9191
| size | number \| string | `378` for left/right | Drawer size. Controls width for left/right and height for top/bottom placement. |

docs/demo/resizable.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ nav:
55
path: /resizable
66
---
77

8+
Drag an edge to resize the drawer. `onResizeStart`, `onResize`, and `onResizeEnd` each receive the current size in pixels.
9+
810
<code src="../examples/resizable.tsx"></code>

docs/examples/resizable.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export default () => {
1212
const [placement, setPlacement] = React.useState<Placement>('right');
1313
const [width, setWidth] = React.useState(320);
1414
const [height, setHeight] = React.useState(240);
15+
const [resizeStatus, setResizeStatus] = React.useState('Ready to resize');
1516

1617
const buttons = [
1718
{ placement: 'left' as Placement, label: 'Left Drawer' },
@@ -40,6 +41,9 @@ export default () => {
4041
</button>
4142
))}
4243
</div>
44+
<div style={{ marginBottom: 16 }}>
45+
Current size: {isHorizontal ? width : height}px. {resizeStatus}
46+
</div>
4347
<Drawer
4448
width={isHorizontal ? width : undefined}
4549
height={!isHorizontal ? height : undefined}
@@ -55,11 +59,11 @@ export default () => {
5559
setHeight(size);
5660
}
5761
},
58-
onResizeStart: () => {
59-
console.log('onResizeStart');
62+
onResizeStart: size => {
63+
setResizeStatus(`Resize started at ${size}px`);
6064
},
61-
onResizeEnd: () => {
62-
console.log('onResizeEnd');
65+
onResizeEnd: size => {
66+
setResizeStatus(`Resize ended at ${size}px`);
6367
},
6468
}}
6569
{...motionProps}

src/Drawer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ export interface DrawerProps
4646
| boolean
4747
| {
4848
onResize?: (size: number) => void;
49-
onResizeStart?: () => void;
50-
onResizeEnd?: () => void;
49+
onResizeStart?: (size: number) => void;
50+
onResizeEnd?: (size: number) => void;
5151
};
5252
focusTriggerAfterClose?: boolean;
5353
}

src/DrawerPopup.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ export interface DrawerPopupProps
8282
| boolean
8383
| {
8484
onResize?: (size: number) => void;
85-
onResizeStart?: () => void;
86-
onResizeEnd?: () => void;
85+
onResizeStart?: (size: number) => void;
86+
onResizeEnd?: (size: number) => void;
8787
};
8888
}
8989

tests/index.spec.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,8 @@ describe('rc-drawer-menu', () => {
445445

446446
it('should support resizable horizontal', () => {
447447
const onResize = jest.fn();
448-
const onResizeStart = jest.fn();
449-
const onResizeEnd = jest.fn();
448+
const onResizeStart = jest.fn((_size: number) => {});
449+
const onResizeEnd = jest.fn((_size: number) => {});
450450

451451
const { unmount } = render(
452452
<div
@@ -516,13 +516,15 @@ describe('rc-drawer-menu', () => {
516516

517517
// onResizeStart should be called when mouse down
518518
expect(onResizeStart).toHaveBeenCalledTimes(1);
519+
expect(onResizeStart).toHaveBeenCalledWith(200);
519520
expect(onResizeEnd).not.toHaveBeenCalled();
520521

521522
fireEvent.mouseMove(document, { clientX: 300, clientY: 0 });
522523
fireEvent.mouseUp(document, { clientX: 300, clientY: 0 });
523524

524525
// onResizeEnd should be called when mouse up
525526
expect(onResizeEnd).toHaveBeenCalledTimes(1);
527+
expect(onResizeEnd).toHaveBeenCalledWith(200);
526528

527529
expect(onResize).toHaveBeenCalledWith(100);
528530

0 commit comments

Comments
 (0)