Skip to content

Commit 9be3668

Browse files
committed
Allow messages scrolling within edit box.
1 parent fc965f6 commit 9be3668

File tree

1 file changed

+15
-0
lines changed
  • src/components/TextInputFocusable

1 file changed

+15
-0
lines changed

src/components/TextInputFocusable/index.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ class TextInputFocusable extends React.Component {
123123
this.dragNDropListener = this.dragNDropListener.bind(this);
124124
this.handlePaste = this.handlePaste.bind(this);
125125
this.handlePastedHTML = this.handlePastedHTML.bind(this);
126+
this.handleWheel = this.handleWheel.bind(this);
126127
}
127128

128129
componentDidMount() {
@@ -146,6 +147,7 @@ class TextInputFocusable extends React.Component {
146147
document.addEventListener('dragleave', this.dragNDropListener);
147148
document.addEventListener('drop', this.dragNDropListener);
148149
this.textInput.addEventListener('paste', this.handlePaste);
150+
this.textInput.addEventListener('wheel', this.handleWheel);
149151
}
150152
}
151153

@@ -173,6 +175,7 @@ class TextInputFocusable extends React.Component {
173175
document.removeEventListener('dragleave', this.dragNDropListener);
174176
document.removeEventListener('drop', this.dragNDropListener);
175177
this.textInput.removeEventListener('paste', this.handlePaste);
178+
this.textInput.removeEventListener('wheel', this.handleWheel);
176179
}
177180
}
178181

@@ -322,6 +325,18 @@ class TextInputFocusable extends React.Component {
322325
}
323326
}
324327

328+
/**
329+
* Manually scrolls the text input, then prevents the event from being passed up to the parent.
330+
* @param {Object} event native Event
331+
*/
332+
handleWheel(event) {
333+
if (event.target === document.activeElement) {
334+
this.textInput.scrollTop += event.deltaY;
335+
event.preventDefault();
336+
event.stopPropagation();
337+
}
338+
}
339+
325340
/**
326341
* Check the current scrollHeight of the textarea (minus any padding) and
327342
* divide by line height to get the total number of rows for the textarea.

0 commit comments

Comments
 (0)