Includes: * Import `computed` helpers * Import `@ember/application` * Import `isBlank` from `@ember/utils` * Import `A` from `@ember/array` * Import `EmberArray` from `@ember/array` * Import `ArrayProxy` from `@ember/array/proxy` * Import `warn` from `@ember/debug` * Import `EmberObject` from `@ember/object` * Import `Application` from `@ember/application` * Import `EmberRouter` from `@ember/routing/router` * Import `isPresent` from `@ember/utils` * Import `computed` from `@ember/object` * Import `guidFor` from `@ember/object` * Import `isArray` from `@ember/array` * Import `TextField` from `@ember/component` * Import `TextArea` from `@ember/component` * Import `Promise` from `rsvp` * Import `Evented` from `@ember/object/evented` * Replace deprecated `ember-addons/ember-computed-decorators` imports
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
import { TextField } from "@ember/component";
|
|
import discourseComputed from "discourse-common/utils/decorators";
|
|
import { siteDir, isRTL, isLTR } from "discourse/lib/text-direction";
|
|
|
|
export default TextField.extend({
|
|
attributeBindings: [
|
|
"autocorrect",
|
|
"autocapitalize",
|
|
"autofocus",
|
|
"maxLength",
|
|
"dir"
|
|
],
|
|
|
|
@discourseComputed
|
|
dir() {
|
|
if (this.siteSettings.support_mixed_text_direction) {
|
|
let val = this.value;
|
|
if (val) {
|
|
return isRTL(val) ? "rtl" : "ltr";
|
|
} else {
|
|
return siteDir();
|
|
}
|
|
}
|
|
},
|
|
|
|
keyUp(event) {
|
|
this._super(event);
|
|
|
|
if (this.siteSettings.support_mixed_text_direction) {
|
|
let val = this.value;
|
|
if (isRTL(val)) {
|
|
this.set("dir", "rtl");
|
|
} else if (isLTR(val)) {
|
|
this.set("dir", "ltr");
|
|
} else {
|
|
this.set("dir", siteDir());
|
|
}
|
|
}
|
|
},
|
|
|
|
@discourseComputed("placeholderKey")
|
|
placeholder: {
|
|
get() {
|
|
if (this._placeholder) return this._placeholder;
|
|
return this.placeholderKey ? I18n.t(this.placeholderKey) : "";
|
|
},
|
|
set(value) {
|
|
return (this._placeholder = value);
|
|
}
|
|
}
|
|
});
|