diff --git a/app/assets/javascripts/select-kit/mixins/plugin-api.js b/app/assets/javascripts/select-kit/mixins/plugin-api.js index 22f446dca6b..50b05977f54 100644 --- a/app/assets/javascripts/select-kit/mixins/plugin-api.js +++ b/app/assets/javascripts/select-kit/mixins/plugin-api.js @@ -32,10 +32,16 @@ function onChange(pluginApiIdentifiers, mutationFunction) { export function applyContentPluginApiCallbacks(content, component) { makeArray(component.pluginApiIdentifiers).forEach(key => { (_prependContentCallbacks[key] || []).forEach(c => { - content = makeArray(c(component, content)).concat(content); + const prependedContent = c(component, content); + if (prependedContent) { + content = makeArray(prependedContent).concat(content); + } }); (_appendContentCallbacks[key] || []).forEach(c => { - content = content.concat(makeArray(c(component, content))); + const appendedContent = c(component, content); + if (appendedContent) { + content = content.concat(makeArray(appendedContent)); + } }); }); diff --git a/test/javascripts/components/select-kit/api-test.js b/test/javascripts/components/select-kit/api-test.js index db17590ede3..68414809b45 100644 --- a/test/javascripts/components/select-kit/api-test.js +++ b/test/javascripts/components/select-kit/api-test.js @@ -36,14 +36,18 @@ componentTest("modifySelectKit(identifier).appendContent", { name: "Alpaca" }; }); + api.modifySelectKit("combo-box").appendContent(() => {}); }); }, async test(assert) { await this.comboBox.expand(); - const row = this.comboBox.rowByIndex(3); - assert.ok(row.exists()); - assert.equal(row.value(), "alpaca"); + + assert.equal(this.comboBox.rows().length, 4); + + const appendedRow = this.comboBox.rowByIndex(3); + assert.ok(appendedRow.exists()); + assert.equal(appendedRow.value(), "alpaca"); await this.comboBox.collapse(); @@ -67,16 +71,18 @@ componentTest("modifySelectKit(identifier).prependContent", { name: "Alpaca" }; }); + api.modifySelectKit("combo-box").prependContent(() => {}); }); }, - afterEach() {}, - async test(assert) { await this.comboBox.expand(); - const row = this.comboBox.rowByIndex(0); - assert.ok(row.exists()); - assert.equal(row.value(), "alpaca"); + + assert.equal(this.comboBox.rows().length, 4); + + const prependedRow = this.comboBox.rowByIndex(0); + assert.ok(prependedRow.exists()); + assert.equal(prependedRow.value(), "alpaca"); await this.comboBox.collapse();