 
   onClick = (e) ->
     e.preventDefault()
-    e.stopPropagation()
     Meteor.call 'messageUpdate', messageID,
       format: e.target.getAttribute 'data-format'
-    dropdownToggle e
-
-  <div className="btn-group">
-    <button className="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" tabIndex={tabindex}>
+
+  <Dropdown className="btn-group">
+    <Dropdown.Toggle variant="default" tabIndex={tabindex}>
       {"#{capitalize format} "}
       <span className="caret"/>
-    </button>
-    <ul className="dropdown-menu" role="menu">
+    </Dropdown.Toggle>
+    <Dropdown.Menu>
       {for f in availableFormats
-        <li key={f} className="editorFormat #{if format == f then 'active' else ''}" onClick={onClick}>
-          <a href="#" data-format={f}>{capitalize f}</a>
+        <li key={f} className="editorFormat #{if format == f then 'active' else ''}">
+          <Dropdown.Item href="#" data-format={f} onClick={onClick}>
+            {capitalize f}
+          </Dropdown.Item>
         </li>
       }
-    </ul>
-  </div>
+    </Dropdown.Menu>
+  </Dropdown>
 FormatSelector.displayName = 'FormatSelector'
 
 # Still needed for Settings

  , [message._id]
  ref = useRef()
  messageBodyRef = useRef()

  ## Support dragging rendered attachment like dragging message itself
  messageFileRef = useRef()

    , idle
  onTagRemove = (e) ->
    e.preventDefault()
    tag = e.currentTarget.getAttribute 'data-tag'
    if tag of message.tags
      Meteor.call 'messageUpdate', message._id,
