DEV: Convert components/admin-user-field-item to native class (#28174)

This was the last classic class in the `admin/` section 🎉
This commit is contained in:
David Taylor 2024-07-31 19:06:59 +01:00 committed by GitHub
parent 633a19fcc0
commit 5388f0a48f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,6 +3,7 @@ import { action } from "@ember/object";
import { schedule } from "@ember/runloop"; import { schedule } from "@ember/runloop";
import { service } from "@ember/service"; import { service } from "@ember/service";
import { isEmpty } from "@ember/utils"; import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
import { Promise } from "rsvp"; import { Promise } from "rsvp";
import { popupAjaxError } from "discourse/lib/ajax-error"; import { popupAjaxError } from "discourse/lib/ajax-error";
import { i18n, propertyEqual } from "discourse/lib/computed"; import { i18n, propertyEqual } from "discourse/lib/computed";
@ -11,39 +12,41 @@ import discourseComputed from "discourse-common/utils/decorators";
import I18n from "discourse-i18n"; import I18n from "discourse-i18n";
import UserField from "admin/models/user-field"; import UserField from "admin/models/user-field";
export default Component.extend(bufferedProperty("userField"), { @tagName("")
adminCustomUserFields: service(), export default class AdminUserFieldItem extends Component.extend(
dialog: service(), bufferedProperty("userField")
) {
@service adminCustomUserFields;
@service dialog;
tagName: "", isEditing = false;
isEditing: false,
cantMoveUp: propertyEqual("userField", "firstField"), @propertyEqual("userField", "firstField") cantMoveUp;
cantMoveDown: propertyEqual("userField", "lastField"), @propertyEqual("userField", "lastField") cantMoveDown;
userFieldsDescription: i18n("admin.user_fields.description"), @i18n("admin.user_fields.description") userFieldsDescription;
@discourseComputed("buffered.field_type") @discourseComputed("buffered.field_type")
bufferedFieldType(fieldType) { bufferedFieldType(fieldType) {
return UserField.fieldTypeById(fieldType); return UserField.fieldTypeById(fieldType);
}, }
didInsertElement() { didInsertElement() {
this._super(...arguments); super.didInsertElement(...arguments);
this._focusName(); this._focusName();
}, }
_focusName() { _focusName() {
schedule("afterRender", () => { schedule("afterRender", () => {
document.querySelector(".user-field-name")?.focus(); document.querySelector(".user-field-name")?.focus();
}); });
}, }
@discourseComputed("userField.field_type") @discourseComputed("userField.field_type")
fieldName(fieldType) { fieldName(fieldType) {
return UserField.fieldTypeById(fieldType)?.name; return UserField.fieldTypeById(fieldType)?.name;
}, }
@discourseComputed( @discourseComputed(
"userField.{editable,show_on_profile,show_on_user_card,searchable}" "userField.{editable,show_on_profile,show_on_user_card,searchable}"
@ -64,18 +67,18 @@ export default Component.extend(bufferedProperty("userField"), {
} }
return ret.join(", "); return ret.join(", ");
}, }
@discourseComputed("buffered.requirement") @discourseComputed("buffered.requirement")
editableDisabled(requirement) { editableDisabled(requirement) {
return requirement === "for_all_users"; return requirement === "for_all_users";
}, }
@action @action
changeRequirementType(requirement) { changeRequirementType(requirement) {
this.buffered.set("requirement", requirement); this.buffered.set("requirement", requirement);
this.buffered.set("editable", requirement === "for_all_users"); this.buffered.set("editable", requirement === "for_all_users");
}, }
async _confirmChanges() { async _confirmChanges() {
return new Promise((resolve) => { return new Promise((resolve) => {
@ -85,7 +88,7 @@ export default Component.extend(bufferedProperty("userField"), {
didConfirm: () => resolve(true), didConfirm: () => resolve(true),
}); });
}); });
}, }
@action @action
async save() { async save() {
@ -123,13 +126,13 @@ export default Component.extend(bufferedProperty("userField"), {
this.commitBuffer(); this.commitBuffer();
}) })
.catch(popupAjaxError); .catch(popupAjaxError);
}, }
@action @action
edit() { edit() {
this.set("isEditing", true); this.set("isEditing", true);
this._focusName(); this._focusName();
}, }
@action @action
cancel() { cancel() {
@ -139,5 +142,5 @@ export default Component.extend(bufferedProperty("userField"), {
this.rollbackBuffer(); this.rollbackBuffer();
this.set("isEditing", false); this.set("isEditing", false);
} }
}, }
}); }