BookStackApp/BookStack

View on GitHub
resources/js/wysiwyg/ui/framework/blocks/button-with-menu.ts

Summary

Maintainability
A
55 mins
Test Coverage
import {EditorContainerUiElement, EditorUiElement} from "../core";
import {el} from "../../../utils/dom";
import {EditorButton} from "../buttons";
import {EditorDropdownButton} from "./dropdown-button";
import caretDownIcon from "@icons/caret-down-large.svg";

export class EditorButtonWithMenu extends EditorContainerUiElement {
    protected button: EditorButton;
    protected dropdownButton: EditorDropdownButton;

    constructor(button: EditorButton, menuItems: EditorUiElement[]) {
        super([button]);

        this.button = button;
        this.dropdownButton = new EditorDropdownButton({
            button: {label: 'Menu', icon: caretDownIcon},
            showOnHover: false,
            direction: 'vertical',
        }, menuItems);
        this.addChildren(this.dropdownButton);
    }

    buildDOM(): HTMLElement {
        return el('div', {
            class: 'editor-button-with-menu-container',
        }, [
            this.button.getDOMElement(),
            this.dropdownButton.getDOMElement()
        ]);
    }
}