]> BookStack Code Mirror - bookstack/blobdiff - resources/js/wysiwyg/ui/framework/buttons.ts
Lexical: Fixed issues with recent changes
[bookstack] / resources / js / wysiwyg / ui / framework / buttons.ts
index 0e1cab0f569a7d64a96c7b18669dd6985ae8c514..e12348e814be1cd6df53118663f324ce736849d6 100644 (file)
@@ -15,7 +15,7 @@ export interface EditorButtonDefinition extends EditorBasicButtonDefinition {
      * This can return false to indicate that the completion of the action should
      * NOT be communicated to parent UI elements, which is what occurs by default.
      */
-    action: (context: EditorUiContext, button: EditorButton) => void|false;
+    action: (context: EditorUiContext, button: EditorButton) => void|false|Promise<void|boolean>;
     isActive: (selection: BaseSelection|null, context: EditorUiContext) => boolean;
     isDisabled?: (selection: BaseSelection|null, context: EditorUiContext) => boolean;
     setup?: (context: EditorUiContext, button: EditorButton) => void;
@@ -84,7 +84,13 @@ export class EditorButton extends EditorUiElement {
 
     protected onClick() {
         const result = this.definition.action(this.getContext(), this);
-        if (result !== false) {
+        if (result instanceof Promise) {
+            result.then(result => {
+                if (result === false) {
+                    this.emitEvent('button-action');
+                }
+            });
+        } else if (result !== false) {
             this.emitEvent('button-action');
         }
     }