Getting scrolling working with the arrow keys
Этот коммит содержится в:
@@ -30,7 +30,7 @@ module.exports = React.createClass({
|
|||||||
icon = <span><i className="mention-img fa fa-users fa-2x"></i></span>;
|
icon = <span><i className="mention-img fa fa-users fa-2x"></i></span>;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className={"mentions-name " + this.state.isFocused} onClick={this.handleClick} onMouseEnter={function(){self.props.handleMouseEnter(self.props.listId)}}>
|
<div className={"mentions-name " + this.state.isFocused} id={this.props.id + "_mentions"} onClick={this.handleClick} onMouseEnter={function(){self.props.handleMouseEnter(self.props.listId)}}>
|
||||||
<div className="pull-left">{icon}</div>
|
<div className="pull-left">{icon}</div>
|
||||||
<div className="pull-left mention-align"><span>@{this.props.username}</span><span className="mention-fullname">{this.props.secondary_text}</span></div>
|
<div className="pull-left mention-align"><span>@{this.props.username}</span><span className="mention-fullname">{this.props.secondary_text}</span></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ module.exports = React.createClass({
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
var tempSelectedMention = -1
|
||||||
|
|
||||||
if (!self.getSelection(self.state.selectedMention)) {
|
if (!self.getSelection(self.state.selectedMention)) {
|
||||||
//self.setState({ selectedMention: 0, selectedUsername: self.refs.mention0.props.username });
|
//self.setState({ selectedMention: 0, selectedUsername: self.refs.mention0.props.username });
|
||||||
//self.refs['mention' + self.state.selectedMention].deselect();
|
//self.refs['mention' + self.state.selectedMention].deselect();
|
||||||
@@ -64,7 +66,7 @@ module.exports = React.createClass({
|
|||||||
self.refs['mention' + self.state.selectedMention].select();
|
self.refs['mention' + self.state.selectedMention].select();
|
||||||
|
|
||||||
//self.checkIfInView($('#'+self.props.id));
|
//self.checkIfInView($('#'+self.props.id));
|
||||||
self.checkIfInView();
|
self.checkIfInView(e.which, tempSelectedMention);
|
||||||
//console.log('#'+self.refs['mention' + self.state.selectedMention].props.id);
|
//console.log('#'+self.refs['mention' + self.state.selectedMention].props.id);
|
||||||
//console.log($('#'+self.refs['mention' + self.state.selectedMention].props.id));
|
//console.log($('#'+self.refs['mention' + self.state.selectedMention].props.id));
|
||||||
//console.log($('#'+self.props.id));
|
//console.log($('#'+self.props.id));
|
||||||
@@ -154,20 +156,43 @@ module.exports = React.createClass({
|
|||||||
isEmpty: function() {
|
isEmpty: function() {
|
||||||
return (!this.refs.mention0);
|
return (!this.refs.mention0);
|
||||||
},
|
},
|
||||||
checkIfInView: function() {
|
checkIfInView: function(keyPressed, ifLoopUp) {
|
||||||
var element = $('#'+this.refs['mention' + this.state.selectedMention].props.id);
|
var element = $('#'+this.refs['mention' + this.state.selectedMention].props.id +"_mentions");
|
||||||
//var top = $('.mentions-box').position().bottom;
|
var offset = element.offset().top - $("#mentionsbox").scrollTop();
|
||||||
//$(".mentions-box").css("bottom", top+303);
|
var direction = keyPressed === 38 ? "up" : "down";
|
||||||
//$("#"+this.props.id).scrollTop($("#"+this.props.id).scrollTop() + $("div.mentions-name.mentions-focused").position().top);
|
console.log("element offset top: " + $(element).offset().top + " box offset top: " + $("#mentionsbox").offset().top);
|
||||||
console.log(element.length);
|
var scrollAmount;
|
||||||
console.log(element + " " + element.offset());
|
if (direction === "up" && ifLoopUp !== -1) {
|
||||||
var offset = element.offset().bottom - $('#'+this.props.id).scrollTop(); //$(this.props.id) ??
|
/*$("#mentionsbox").animate({
|
||||||
if(offset > $('#'+this.props.id).innerHeight){
|
scrollTop: ("#mentionsbox").offset().top
|
||||||
// Not in view so scroll to it
|
}, 50);*/
|
||||||
$('body').animate({scrollTop: offset}, 1000); //$(this.props.id) ??
|
scrollAmount = $("#mentionsbox").offset().top;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
else if (direction === "down" && !this.refs['mention' + this.state.selectedMention].props.listId) {
|
||||||
|
/*$("#mentionsbox").animate({
|
||||||
|
scrollTop: 0
|
||||||
|
}, 50);*/
|
||||||
|
scrollAmount = 0;
|
||||||
|
}
|
||||||
|
else if (direction === "up") {
|
||||||
|
/*$("#mentionsbox").animate({
|
||||||
|
scrollTop: '-=28'
|
||||||
|
}, 50);*/
|
||||||
|
scrollAmount = "-=28";
|
||||||
|
}
|
||||||
|
else if (direction === "down") {
|
||||||
|
/*$("#mentionsbox").animate({
|
||||||
|
scrollTop: '+=28'
|
||||||
|
}, 50);*/
|
||||||
|
scrollAmount = "+=28";
|
||||||
|
}
|
||||||
|
$("#mentionsbox").animate({
|
||||||
|
scrollTop: scrollAmount
|
||||||
|
}, 50);
|
||||||
|
/*$("#mentionsbox").animate({
|
||||||
|
scrollTop: $(element).offset().top - $("#mentionsbox").offset().top
|
||||||
|
//scrollTop: $(element).offset().top - $("#mentionsbox").offset().top
|
||||||
|
}, 50);*/
|
||||||
},
|
},
|
||||||
alreadyMentioned: function(username) {
|
alreadyMentioned: function(username) {
|
||||||
var excludeUsers = this.state.excludeUsers;
|
var excludeUsers = this.state.excludeUsers;
|
||||||
@@ -195,12 +220,14 @@ module.exports = React.createClass({
|
|||||||
all.username = "all";
|
all.username = "all";
|
||||||
all.full_name = "";
|
all.full_name = "";
|
||||||
all.secondary_text = "Notifies everyone in the team";
|
all.secondary_text = "Notifies everyone in the team";
|
||||||
|
all.id = "allmention";
|
||||||
users.push(all);
|
users.push(all);
|
||||||
|
|
||||||
var channel = {};
|
var channel = {};
|
||||||
channel.username = "channel";
|
channel.username = "channel";
|
||||||
channel.full_name = "";
|
channel.full_name = "";
|
||||||
channel.secondary_text = "Notifies everyone in the channel";
|
channel.secondary_text = "Notifies everyone in the channel";
|
||||||
|
channel.id = "channelmention";
|
||||||
users.push(channel);
|
users.push(channel);
|
||||||
|
|
||||||
users.sort(function(a,b) {
|
users.sort(function(a,b) {
|
||||||
@@ -254,7 +281,7 @@ module.exports = React.createClass({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mentions--top" style={style}>
|
<div className="mentions--top" style={style}>
|
||||||
<div ref="mentionlist" className="mentions-box">
|
<div ref="mentionlist" className="mentions-box" id="mentionsbox">
|
||||||
{ mentions }
|
{ mentions }
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user