FIX: improves tag-list setting (#9574)

FIX: improves tag-list setting (#9574)

  • Prevents setting to display an empty tag
  • Updates dropdown when selecting/removing tag
diff --git a/app/assets/javascripts/admin/components/site-settings/tag-list.js b/app/assets/javascripts/admin/components/site-settings/tag-list.js
index c8a8e0a..011c734 100644
--- a/app/assets/javascripts/admin/components/site-settings/tag-list.js
+++ b/app/assets/javascripts/admin/components/site-settings/tag-list.js
@@ -1,15 +1,17 @@
 import discourseComputed from "discourse-common/utils/decorators";
 import Component from "@ember/component";
+import { action } from "@ember/object";
 
 export default Component.extend({
   @discourseComputed("value")
   selectedTags: {
     get(value) {
-      return value.split("|");
-    },
-    set(value) {
-      this.set("value", value.join("|"));
-      return value;
+      return value.split("|").filter(Boolean);
     }
+  },
+
+  @action
+  changeSelectedTags(tags) {
+    this.set("value", tags.join("|"));
   }
 });
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
index f7519e7..7efd742 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
@@ -1,3 +1,9 @@
-{{tag-chooser tags=selectedTags allowCreate=false}}
+{{tag-chooser
+  tags=selectedTags
+  onChange=(action "changeSelectedTags")
+  options=(hash
+    allowAny=false
+  )
+}}
 <div class="desc">{{html-safe setting.description}}</div>
 {{setting-validation-message message=validationMessage}}
diff --git a/app/assets/javascripts/select-kit/components/tag-chooser.js b/app/assets/javascripts/select-kit/components/tag-chooser.js
index 65e7597..5cf4a83 100644
--- a/app/assets/javascripts/select-kit/components/tag-chooser.js
+++ b/app/assets/javascripts/select-kit/components/tag-chooser.js
@@ -66,8 +66,12 @@ export default MultiSelectComponent.extend(TagsMixin, {
   }),
 
   actions: {
-    onChange(value) {
-      this.set("tags", value);
+    onChange(value, items) {
+      if (this.attrs.onChange) {
+        this.attrs.onChange(value, items);
+      } else {
+        this.set("tags", value);
+      }
     }
   },
 

GitHub sha: a8308e73

This commit appears in #9574 which was approved by eviltrout. It was merged by jjaffeux.