FIX: Input fields not displaying when adding a object to empty setting (#26509)

Why this change?

Prior to this change, the input fields were not displaying when adding
an object to a objects typed theme setting which has a default value of
`[]`. This is because the `fields` getter was not being recomputed.
This commit is contained in:
Alan Guo Xiang Tan 2024-04-04 15:27:48 +08:00 committed by GitHub
parent a440e15291
commit 339893812b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 33 additions and 2 deletions

View File

@ -144,8 +144,9 @@ export default class SchemaThemeSettingNewEditor extends Component {
get fields() {
const list = [];
const activeObject = this.activeData[this.activeIndex];
if (this.activeData.length !== 0) {
if (activeObject) {
for (const [name, spec] of Object.entries(this.activeSchema.properties)) {
if (spec.type === "objects") {
continue;
@ -154,7 +155,7 @@ export default class SchemaThemeSettingNewEditor extends Component {
list.push({
name,
spec,
value: this.activeData[this.activeIndex][name],
value: activeObject[name],
description: this.fieldDescription(name),
label: this.fieldLabel(name),
});

View File

@ -1143,6 +1143,36 @@ module(
assert.dom(inputFields.fields.text.inputElement).hasValue("Talk to us");
});
test("adding an object to the root list of objects which is empty by default", async function (assert) {
const setting = ThemeSettings.create({
setting: "objects_setting",
objects_schema: {
name: "something",
properties: {
name: {
type: "string",
},
},
},
value: [],
});
await render(<template>
<AdminSchemaThemeSettingEditor @themeId="1" @setting={{setting}} />
</template>);
assert.dom(TOP_LEVEL_ADD_BTN).hasText("something");
await click(TOP_LEVEL_ADD_BTN);
const tree = new TreeFromDOM();
assert.dom(tree.nodes[0].textElement).hasText("something 1");
const inputFields = new InputFieldsFromDOM();
assert.dom(inputFields.fields.name.labelElement).hasText("name");
});
test("adding an object to the root list of objects", async function (assert) {
const setting = schemaAndData(1);