DEV: do not append/prepend if callback returns nothing (#9778)

DEV: do not append/prepend if callback returns nothing (#9778)

diff --git a/app/assets/javascripts/select-kit/mixins/plugin-api.js b/app/assets/javascripts/select-kit/mixins/plugin-api.js
index 22f446d..50b0597 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 db17590..6841480 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();
 

GitHub sha: 42e5a5bb

1 Like

This commit appears in #9778 which was merged by jjaffeux.