Skip to content

Commit c195387

Browse files
xcqwanSTRML
authored andcommitted
feat: add transformScale to fix resizable under parent css-style transform: scale(0.x) (#115)
1 parent 4ef15ea commit c195387

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

lib/Resizable.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ export type Props = {
3636
onResizeStart?: ?(e: SyntheticEvent<>, data: ResizeCallbackData) => any,
3737
onResize?: ?(e: SyntheticEvent<>, data: ResizeCallbackData) => any,
3838
draggableOpts?: ?Object,
39-
resizeHandles: ResizeHandle[]
39+
resizeHandles: ResizeHandle[],
40+
transformScale: number,
4041
};
4142

4243
export default class Resizable extends React.Component<Props, State> {
@@ -73,6 +74,7 @@ export default class Resizable extends React.Component<Props, State> {
7374
// 'se' - Southeast handle (bottom-right)
7475
// 'ne' - Northeast handle (top-center)
7576
resizeHandles: PropTypes.arrayOf(PropTypes.oneOf(['s', 'w', 'e', 'n', 'sw', 'nw', 'se', 'ne'])),
77+
transformScale: PropTypes.number,
7678

7779
// If true, will only allow width/height to move in lockstep
7880
lockAspectRatio: PropTypes.bool,
@@ -103,7 +105,8 @@ export default class Resizable extends React.Component<Props, State> {
103105
axis: 'both',
104106
minConstraints: [20, 20],
105107
maxConstraints: [Infinity, Infinity],
106-
resizeHandles: ['se']
108+
resizeHandles: ['se'],
109+
transformScale: 1
107110
};
108111

109112
state: State = {
@@ -172,6 +175,8 @@ export default class Resizable extends React.Component<Props, State> {
172175
*/
173176
resizeHandler(handlerName: string, axis: ResizeHandle): Function {
174177
return (e: SyntheticEvent<> | MouseEvent, {node, deltaX, deltaY}: DragCallbackData) => {
178+
deltaX /= this.props.transformScale
179+
deltaY /= this.props.transformScale
175180

176181
// Axis restrictions
177182
const canDragX = (this.props.axis === 'both' || this.props.axis === 'x') && ['n', 's'].indexOf(axis) === -1;
@@ -232,7 +237,7 @@ export default class Resizable extends React.Component<Props, State> {
232237
// eslint-disable-next-line no-unused-vars
233238
const {children, draggableOpts, width, height, handleSize,
234239
lockAspectRatio, axis, minConstraints, maxConstraints, onResize,
235-
onResizeStop, onResizeStart, resizeHandles, ...p} = this.props;
240+
onResizeStop, onResizeStart, resizeHandles, transformScale, ...p} = this.props;
236241

237242
const className = p.className ?
238243
`${p.className} react-resizable`:

0 commit comments

Comments
 (0)