Browse Source

[bugfix] inserting return appends line break at cursor position

B Thibault 8 years ago
parent
commit
fe640119ec
2 changed files with 7 additions and 3 deletions
  1. 4 1
      cli/msgInput.js
  2. 3 2
      srv/public/mimouchat.min.js

+ 4 - 1
cli/msgInput.js

@@ -251,8 +251,11 @@ function initMsgInput() {
         } else if (e.keyCode === ENTER_KEY) {
         } else if (e.keyCode === ENTER_KEY) {
             e.preventDefault();
             e.preventDefault();
             if (e.shiftKey || e.altKey || e.ctrlKey) {
             if (e.shiftKey || e.altKey || e.ctrlKey) {
-                this.value += '\n';
+                var selectionEnd = this.selectionEnd,
+                    selectionStart = this.selectionStart;
+                this.value = this.value.substr(0, selectionStart) +'\n' +this.value.substr(selectionEnd);
                 updateInputRowCount(this);
                 updateInputRowCount(this);
+                this.selectionStart = this.selectionEnd = selectionStart +1;
             } else {
             } else {
                 onMsgFormSubmit();
                 onMsgFormSubmit();
             }
             }

+ 3 - 2
srv/public/mimouchat.min.js

@@ -40,8 +40,9 @@ h-f-1),k){var n=k[g].getName();n.length>=b.length&&n.substr(0,b.length)===b&&d.p
 za:k,ma:"custom"}))}d.length&&(c.dataset.cursor=JSON.stringify([f,h]))}}if(!d.length&&"/"===e[0]){g=e.indexOf(" ");f=-1!==g;g=-1===g?e.length:g;b=e.substr(0,g);f?(a=ab.Wa(b))&&d.push(a):(d=ab.ob(b),c.dataset.cursor=JSON.stringify([0,a.selectionEnd]));a=O?O.h.data:{};for(var l in a)e=a[l],(!f&&e.name.substr(0,g)===b||f&&e.name===b)&&d.push(e);d.sort(function(a,b){return a.V.localeCompare(b.V)||a.name.localeCompare(b.name)})}c.textContent="";if(d.length){l=document.createDocumentFragment();g=0;for(a=
 za:k,ma:"custom"}))}d.length&&(c.dataset.cursor=JSON.stringify([f,h]))}}if(!d.length&&"/"===e[0]){g=e.indexOf(" ");f=-1!==g;g=-1===g?e.length:g;b=e.substr(0,g);f?(a=ab.Wa(b))&&d.push(a):(d=ab.ob(b),c.dataset.cursor=JSON.stringify([0,a.selectionEnd]));a=O?O.h.data:{};for(var l in a)e=a[l],(!f&&e.name.substr(0,g)===b||f&&e.name===b)&&d.push(e);d.sort(function(a,b){return a.V.localeCompare(b.V)||a.name.localeCompare(b.name)})}c.textContent="";if(d.length){l=document.createDocumentFragment();g=0;for(a=
 d.length;g<a;g++)if(e=d[g],e instanceof ga){if(!m){var m=!0;l.appendChild(Wa(J.la))}b=document.createElement("span");b.className="chat-command-userIcon";b.style.backgroundImage='url("'+qa(e)+'")';l.appendChild(Xa("@"+e.getName(),b))}else e instanceof v?(m||(m=!0,l.appendChild(Wa(J.l))),l.appendChild(Xa("#"+e.name))):e.za?(m!==e.ma&&(m=e.ma,l.appendChild(Wa(e.ma))),l.appendChild(Xa(e.name,e.za))):(m!==e.V&&(m=e.V,l.appendChild(Wa(e.V))),l.appendChild(Xa(e)));c.appendChild(l)}}
 d.length;g<a;g++)if(e=d[g],e instanceof ga){if(!m){var m=!0;l.appendChild(Wa(J.la))}b=document.createElement("span");b.className="chat-command-userIcon";b.style.backgroundImage='url("'+qa(e)+'")';l.appendChild(Xa("@"+e.getName(),b))}else e instanceof v?(m||(m=!0,l.appendChild(Wa(J.l))),l.appendChild(Xa("#"+e.name))):e.za?(m!==e.ma&&(m=e.ma,l.appendChild(Wa(e.ma))),l.appendChild(Xa(e.name,e.za))):(m!==e.V&&(m=e.V,l.appendChild(Wa(e.V))),l.appendChild(Xa(e)));c.appendChild(l)}}
 function bb(a){if(Q)return N(new K("PUT","api/msg?room="+P.id+"&ts="+Q.id+"&text="+encodeURIComponent(a))),!0;if("/"===a[0]){var b=a.indexOf(" "),c=a.substr(0,-1===b?void 0:b);a=-1===b?"":a.substr(b);var b=O,d=ab.Wa(c);return d?(d.exec(b,P,a.trim()),!0):b&&(c=b.h.data[c])?(N(new K("POST","api/cmd?room="+P.id+"&cmd="+encodeURIComponent(c.name.substr(1))+"&args="+encodeURIComponent(a.trim()))),!0):!1}cb(P,a,R);return!0}function S(){document.getElementById("msgInput").focus()}
 function bb(a){if(Q)return N(new K("PUT","api/msg?room="+P.id+"&ts="+Q.id+"&text="+encodeURIComponent(a))),!0;if("/"===a[0]){var b=a.indexOf(" "),c=a.substr(0,-1===b?void 0:b);a=-1===b?"":a.substr(b);var b=O,d=ab.Wa(c);return d?(d.exec(b,P,a.trim()),!0):b&&(c=b.h.data[c])?(N(new K("POST","api/cmd?room="+P.id+"&cmd="+encodeURIComponent(c.name.substr(1))+"&args="+encodeURIComponent(a.trim()))),!0):!1}cb(P,a,R);return!0}function S(){document.getElementById("msgInput").focus()}
-function db(){function a(a){for(var b=1,c=0,d=a.value.length;c<d;c++)"\n"===a.value[c]&&b++;a.rows=Math.min(5,b)}var b=0,c=document.getElementById("msgInput");c.addEventListener("input",function(){if(P){var c=Date.now();b+3E3<c&&(O.self.M||P instanceof u)&&(N(new K("POST","api/typing?room="+P.id)),b=c);Ya(this);a(this)}});c.addEventListener("keydown",function(b){if(9===b.keyCode)return b.preventDefault(),!1;if(13===b.keyCode)return b.preventDefault(),b.shiftKey||b.altKey||b.ctrlKey?(this.value+="\n",
-a(this)):eb(),!1});document.getElementById("slashList").addEventListener("click",function(a){if(P){var b=a.target;if(a=this.dataset.cursor)for(a=JSON.parse(a);b&&b!==this;){if(b.dataset.input){var c=document.getElementById("msgInput"),b=b.dataset.input;c.value.length<=a[1]&&(b+=" ");c.value=c.value.substr(0,a[0])+b+c.value.substr(a[1]);c.selectionStart=c.selectionEnd=a[0]+b.length;Ya(c);c.focus();break}b=b.parentElement}}})};var fb=[],gb=0;
+function db(){function a(a){for(var b=1,c=0,d=a.value.length;c<d;c++)"\n"===a.value[c]&&b++;a.rows=Math.min(5,b)}var b=0,c=document.getElementById("msgInput");c.addEventListener("input",function(){if(P){var c=Date.now();b+3E3<c&&(O.self.M||P instanceof u)&&(N(new K("POST","api/typing?room="+P.id)),b=c);Ya(this);a(this)}});c.addEventListener("keydown",function(b){if(9===b.keyCode)return b.preventDefault(),!1;if(13===b.keyCode)return b.preventDefault(),b.shiftKey||b.altKey||b.ctrlKey?(b=this.selectionStart,
+this.value=this.value.substr(0,b)+"\n"+this.value.substr(this.selectionEnd),a(this),this.selectionStart=this.selectionEnd=b+1):eb(),!1});document.getElementById("slashList").addEventListener("click",function(a){if(P){var b=a.target;if(a=this.dataset.cursor)for(a=JSON.parse(a);b&&b!==this;){if(b.dataset.input){var c=document.getElementById("msgInput"),b=b.dataset.input;c.value.length<=a[1]&&(b+=" ");c.value=c.value.substr(0,a[0])+b+c.value.substr(a[1]);c.selectionStart=c.selectionEnd=a[0]+b.length;
+Ya(c);c.focus();break}b=b.parentElement}}})};var fb=[],gb=0;
 function hb(){var a=document.createDocumentFragment(),b=xa(function(a){return!a.fa&&!1!==a.ba}),c=[],d=[],e=[],f=[],h={};b.sort(function(a,b){if(a[0]!==b[0])return a[0]-b[0];var c=D(C.context,a),d=D(C.context,b);a=c.l[a];b=d.l[b];return a.name===b.name?(h[a.id]=J.ya(c.a.name,a.name),h[b.id]=J.ya(d.a.name,b.name),c.a.name.localeCompare(d.a.name)):a.name.localeCompare(b.name)});b.forEach(function(a){a=wa(a);if(a instanceof u){var b;if(b=!a.a.Ta){var k=h[a.id];b=document.createElement("li");var p=document.createElement("a");
 function hb(){var a=document.createDocumentFragment(),b=xa(function(a){return!a.fa&&!1!==a.ba}),c=[],d=[],e=[],f=[],h={};b.sort(function(a,b){if(a[0]!==b[0])return a[0]-b[0];var c=D(C.context,a),d=D(C.context,b);a=c.l[a];b=d.l[b];return a.name===b.name?(h[a.id]=J.ya(c.a.name,a.name),h[b.id]=J.ya(d.a.name,b.name),c.a.name.localeCompare(d.a.name)):a.name.localeCompare(b.name)});b.forEach(function(a){a=wa(a);if(a instanceof u){var b;if(b=!a.a.Ta){var k=h[a.id];b=document.createElement("li");var p=document.createElement("a");
 b.id="room_"+a.id;p.href="#"+a.id;b.className="chat-context-room chat-ims presence-indicator";p.textContent=k||a.a.getName();b.appendChild(ib());b.appendChild(p);a.a.M||b.classList.add("presence-away");P===a&&b.classList.add("selected");a.I!==a.C&&void 0!==a.I&&(b.classList.add("unread"),b.classList.add("unreadHi"));b=k=b}b&&(a.A?c.push(k):f.push(k))}else if(k=h[a.id],b=document.createElement("li"),p=document.createElement("a"),b.id="room_"+a.id,p.href="#"+a.id,a.h?(b.className="chat-context-room chat-group",
 b.id="room_"+a.id;p.href="#"+a.id;b.className="chat-context-room chat-ims presence-indicator";p.textContent=k||a.a.getName();b.appendChild(ib());b.appendChild(p);a.a.M||b.classList.add("presence-away");P===a&&b.classList.add("selected");a.I!==a.C&&void 0!==a.I&&(b.classList.add("unread"),b.classList.add("unreadHi"));b=k=b}b&&(a.A?c.push(k):f.push(k))}else if(k=h[a.id],b=document.createElement("li"),p=document.createElement("a"),b.id="room_"+a.id,p.href="#"+a.id,a.h?(b.className="chat-context-room chat-group",
 b.dataset.count=Object.keys(a.i||{}).length):b.className="chat-context-room chat-channel",P===a&&b.classList.add("selected"),p.textContent=k||a.name,b.appendChild(ib()),b.appendChild(p),a.I!==a.C&&void 0!==a.I&&(b.classList.add("unread"),0<=T.indexOf(a)&&b.classList.add("unreadHi")),k=b)a.A?c.push(k):a.h?e.push(k):d.push(k)});c.length&&a.appendChild(jb(J.A));c.forEach(function(b){a.appendChild(b)});d.length&&a.appendChild(jb(J.l));d.forEach(function(b){a.appendChild(b)});e.forEach(function(b){a.appendChild(b)});
 b.dataset.count=Object.keys(a.i||{}).length):b.className="chat-context-room chat-channel",P===a&&b.classList.add("selected"),p.textContent=k||a.name,b.appendChild(ib()),b.appendChild(p),a.I!==a.C&&void 0!==a.I&&(b.classList.add("unread"),0<=T.indexOf(a)&&b.classList.add("unreadHi")),k=b)a.A?c.push(k):a.h?e.push(k):d.push(k)});c.length&&a.appendChild(jb(J.A));c.forEach(function(b){a.appendChild(b)});d.length&&a.appendChild(jb(J.l));d.forEach(function(b){a.appendChild(b)});e.forEach(function(b){a.appendChild(b)});