DEV: Replace jquery.putCursorAtEnd (#9390)
This commit is contained in:
parent
3b7ba8ec99
commit
c3593dd9e2
|
@ -30,7 +30,8 @@ import {
|
||||||
clipboardData,
|
clipboardData,
|
||||||
safariHacksDisabled,
|
safariHacksDisabled,
|
||||||
caretPosition,
|
caretPosition,
|
||||||
inCodeBlock
|
inCodeBlock,
|
||||||
|
putCursorAtEnd
|
||||||
} from "discourse/lib/utilities";
|
} from "discourse/lib/utilities";
|
||||||
import {
|
import {
|
||||||
validateUploadedFiles,
|
validateUploadedFiles,
|
||||||
|
@ -123,7 +124,7 @@ export default Component.extend({
|
||||||
@observes("focusTarget")
|
@observes("focusTarget")
|
||||||
setFocus() {
|
setFocus() {
|
||||||
if (this.focusTarget === "editor") {
|
if (this.focusTarget === "editor") {
|
||||||
$(this.element.querySelector("textarea")).putCursorAtEnd();
|
putCursorAtEnd(this.element.querySelector("textarea"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -213,7 +214,7 @@ export default Component.extend({
|
||||||
!this.get("composer.canEditTitle") &&
|
!this.get("composer.canEditTitle") &&
|
||||||
(!this.capabilities.isIOS || safariHacksDisabled())
|
(!this.capabilities.isIOS || safariHacksDisabled())
|
||||||
) {
|
) {
|
||||||
$(this.element.querySelector(".d-editor-input")).putCursorAtEnd();
|
putCursorAtEnd(this.element.querySelector(".d-editor-input"));
|
||||||
}
|
}
|
||||||
|
|
||||||
this._bindUploadTarget();
|
this._bindUploadTarget();
|
||||||
|
|
|
@ -5,9 +5,9 @@ import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
||||||
import { load } from "pretty-text/oneboxer";
|
import { load } from "pretty-text/oneboxer";
|
||||||
import { lookupCache } from "pretty-text/oneboxer-cache";
|
import { lookupCache } from "pretty-text/oneboxer-cache";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import afterTransition from "discourse/lib/after-transition";
|
|
||||||
import ENV from "discourse-common/config/environment";
|
import ENV from "discourse-common/config/environment";
|
||||||
import EmberObject from "@ember/object";
|
import EmberObject from "@ember/object";
|
||||||
|
import { putCursorAtEnd } from "discourse/lib/utilities";
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
classNames: ["title-input"],
|
classNames: ["title-input"],
|
||||||
|
@ -17,11 +17,7 @@ export default Component.extend({
|
||||||
didInsertElement() {
|
didInsertElement() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
if (this.focusTarget === "title") {
|
if (this.focusTarget === "title") {
|
||||||
const $input = $(this.element.querySelector("input"));
|
putCursorAtEnd(this.element.querySelector("input"));
|
||||||
|
|
||||||
afterTransition($(this.element).closest("#reply-control"), () => {
|
|
||||||
$input.putCursorAtEnd();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.get("composer.titleLength") > 0) {
|
if (this.get("composer.titleLength") > 0) {
|
||||||
|
@ -136,14 +132,14 @@ export default Component.extend({
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.set("composer.loading", false);
|
this.set("composer.loading", false);
|
||||||
schedule("afterRender", () => {
|
schedule("afterRender", () => {
|
||||||
$(this.element.querySelector("input")).putCursorAtEnd();
|
putCursorAtEnd(this.element.querySelector("input"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this._updatePost(loadOnebox);
|
this._updatePost(loadOnebox);
|
||||||
this.set("composer.loading", false);
|
this.set("composer.loading", false);
|
||||||
schedule("afterRender", () => {
|
schedule("afterRender", () => {
|
||||||
$(this.element.querySelector("input")).putCursorAtEnd();
|
putCursorAtEnd(this.element.querySelector("input"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { schedule } from "@ember/runloop";
|
import { schedule } from "@ember/runloop";
|
||||||
import Component from "@ember/component";
|
import Component from "@ember/component";
|
||||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
||||||
|
import { putCursorAtEnd } from "discourse/lib/utilities";
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
showSelector: true,
|
showSelector: true,
|
||||||
|
@ -11,7 +12,7 @@ export default Component.extend({
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
if (this.focusTarget === "usernames") {
|
if (this.focusTarget === "usernames") {
|
||||||
$(this.element.querySelector("input")).putCursorAtEnd();
|
putCursorAtEnd(this.element.querySelector("input"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -444,5 +444,11 @@ export function inCodeBlock(text, pos) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function putCursorAtEnd(element) {
|
||||||
|
element.focus();
|
||||||
|
const len = element.value.length;
|
||||||
|
element.setSelectionRange(len, len);
|
||||||
|
}
|
||||||
|
|
||||||
// This prevents a mini racer crash
|
// This prevents a mini racer crash
|
||||||
export default {};
|
export default {};
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
//= require jquery.cookie.js
|
//= require jquery.cookie.js
|
||||||
//= require jquery.fileupload.js
|
//= require jquery.fileupload.js
|
||||||
//= require jquery.iframe-transport.js
|
//= require jquery.iframe-transport.js
|
||||||
//= require jquery.putcursoratend.js
|
|
||||||
//= require jquery.tagsinput.js
|
//= require jquery.tagsinput.js
|
||||||
//= require jquery.sortable.js
|
//= require jquery.sortable.js
|
||||||
//= require lodash.js
|
//= require lodash.js
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
// jQuery plugin: PutCursorAtEnd 1.0
|
|
||||||
// http://plugins.jquery.com/project/PutCursorAtEnd
|
|
||||||
// by teedyay
|
|
||||||
//
|
|
||||||
// Puts the cursor at the end of a textbox/ textarea
|
|
||||||
|
|
||||||
// codesnippet: 691e18b1-f4f9-41b4-8fe8-bc8ee51b48d4
|
|
||||||
(function($)
|
|
||||||
{
|
|
||||||
jQuery.fn.putCursorAtEnd = function()
|
|
||||||
{
|
|
||||||
return this.each(function()
|
|
||||||
{
|
|
||||||
$(this).focus()
|
|
||||||
|
|
||||||
// If this function exists...
|
|
||||||
if (this.setSelectionRange)
|
|
||||||
{
|
|
||||||
// ... then use it
|
|
||||||
// (Doesn't work in IE)
|
|
||||||
|
|
||||||
// Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh.
|
|
||||||
var len = $(this).val().length * 2;
|
|
||||||
this.setSelectionRange(len, len);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// ... otherwise replace the contents with itself
|
|
||||||
// (Doesn't work in Google Chrome)
|
|
||||||
$(this).val($(this).val());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scroll to the bottom, in case we're in a tall textarea
|
|
||||||
// (Necessary for Firefox and Google Chrome)
|
|
||||||
this.scrollTop = 999999;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
})(jQuery);
|
|
Loading…
Reference in New Issue