X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/5f07f31c9fc21c4f82b757eb2e78027ff3ad6337..HEAD:/resources/js/wysiwyg/ui/framework/blocks/dropdown-button.ts diff --git a/resources/js/wysiwyg/ui/framework/blocks/dropdown-button.ts b/resources/js/wysiwyg/ui/framework/blocks/dropdown-button.ts index d7f02d573..45cb74dd4 100644 --- a/resources/js/wysiwyg/ui/framework/blocks/dropdown-button.ts +++ b/resources/js/wysiwyg/ui/framework/blocks/dropdown-button.ts @@ -1,4 +1,3 @@ -import {handleDropdown} from "../helpers/dropdowns"; import {EditorContainerUiElement, EditorUiElement} from "../core"; import {EditorBasicButtonDefinition, EditorButton} from "../buttons"; import {el} from "../../../utils/dom"; @@ -8,6 +7,7 @@ export type EditorDropdownButtonOptions = { showOnHover?: boolean; direction?: 'vertical'|'horizontal'; showAside?: boolean; + hideOnAction?: boolean; button: EditorBasicButtonDefinition|EditorButton; }; @@ -15,6 +15,7 @@ const defaultOptions: EditorDropdownButtonOptions = { showOnHover: false, direction: 'horizontal', showAside: undefined, + hideOnAction: true, button: {label: 'Menu'}, } @@ -40,7 +41,7 @@ export class EditorDropdownButton extends EditorContainerUiElement { }, isActive: () => { return this.open; - } + }, }); } @@ -65,7 +66,7 @@ export class EditorDropdownButton extends EditorContainerUiElement { class: 'editor-dropdown-menu-container', }, [button, menu]); - handleDropdown({toggle: button, menu : menu, + this.getContext().manager.dropdowns.handle({toggle: button, menu : menu, showOnHover: this.options.showOnHover, showAside: typeof this.options.showAside === 'boolean' ? this.options.showAside : (this.options.direction === 'vertical'), onOpen : () => { @@ -76,6 +77,12 @@ export class EditorDropdownButton extends EditorContainerUiElement { this.getContext().manager.triggerStateUpdateForElement(this.button); }}); + if (this.options.hideOnAction) { + this.onEvent('button-action', () => { + this.getContext().manager.dropdowns.closeAll(); + }, wrapper); + } + return wrapper; } } \ No newline at end of file