From 0b6a64ef9310b6896f4b5c58cc674fbb67104527 Mon Sep 17 00:00:00 2001
From: Tom Chen <developer@tomchentw.com>
Date: Tue, 24 Nov 2015 17:22:52 +0800
Subject: [PATCH] feat(TCMention): add extra className map for trigger

---
 src/index.js | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/index.js b/src/index.js
index 414683e..80a48cf 100644
--- a/src/index.js
+++ b/src/index.js
@@ -52,6 +52,10 @@ export const TCMention = MediumEditor.Extension.extend({
      */
     extraActivePanelClassName: ``,
 
+    extraTriggerClassNameMap: {},
+
+    extraActiveTriggerClassNameMap: {},
+
     /* tagName: [string]
      *
      * Element tag name that would indicate that this mention. It will have
@@ -171,6 +175,9 @@ export const TCMention = MediumEditor.Extension.extend({
         }
         if (this.activeMentionAt) {
             this.activeMentionAt.classList.remove(this.activeTriggerClassName);
+            if (this.extraActiveTriggerClassName) {
+                this.activeMentionAt.classList.remove(this.extraActiveTriggerClassName);
+            }
         }
         if (this.activeMentionAt) {
             // http://stackoverflow.com/a/27004526/1458162
@@ -227,6 +234,9 @@ export const TCMention = MediumEditor.Extension.extend({
         this.trigger = this.word.slice(0, 1);
         this.triggerClassName = this.triggerClassNameMap[this.trigger];
         this.activeTriggerClassName = this.activeTriggerClassNameMap[this.trigger];
+        //
+        this.extraTriggerClassName = this.extraTriggerClassNameMap[this.trigger];
+        this.extraActiveTriggerClassName = this.extraActiveTriggerClassNameMap[this.trigger];
     },
 
     showPanel () {
@@ -261,6 +271,9 @@ export const TCMention = MediumEditor.Extension.extend({
             // TODO: Not sure why, but using <span> tag doens't work here
             const element = this.document.createElement(this.tagName);
             element.classList.add(this.triggerClassName);
+            if (this.extraTriggerClassName) {
+                element.classList.add(this.extraTriggerClassName);
+            }
             this.activeMentionAt = element;
             //
             range.surroundContents(element);
@@ -269,6 +282,9 @@ export const TCMention = MediumEditor.Extension.extend({
         }
         MediumEditor.selection.select(this.document, this.activeMentionAt.firstChild, this.word.length);
         this.activeMentionAt.classList.add(this.activeTriggerClassName);
+        if (this.extraActiveTriggerClassName) {
+            this.activeMentionAt.classList.add(this.extraActiveTriggerClassName);
+        }
     },
 
     positionPanel () {