UNPKG

wangeditor

Version:

wangEditor - 轻量级 web 富文本编辑器,配置方便,使用简单,开源免费

74 lines (61 loc) 1.73 kB
/** * @description Menu class 父类 * @author wangfupeng */ import { DomElement } from '../../utils/dom-core' import Editor from '../../editor/index' import Panel from './Panel' export interface MenuActive { /** * 修改菜单激活状态,菜单是否高亮 */ tryChangeActive(): void } class Menu { public key: string | undefined public $elem: DomElement public editor: Editor private _active: boolean // 菜单是否处于激活状态,如选中一段加粗文字时,bold 菜单要被激活(即高亮显示) constructor($elem: DomElement, editor: Editor) { this.$elem = $elem this.editor = editor this._active = false // 绑定菜单点击事件 $elem.on('click', (e: Event) => { Panel.hideCurAllPanels() // 隐藏当前的所有 Panel // 触发菜单点击的钩子 editor.txt.eventHooks.menuClickEvents.forEach(fn => fn()) e.stopPropagation() if (editor.selection.getRange() == null) { return } this.clickHandler(e) }) } /** * 菜单点击事件,子类可重写 * @param e event */ protected clickHandler(e: Event): void {} /** * 激活菜单,高亮显示 */ protected active(): void { this._active = true this.$elem.addClass('w-e-active') } /** * 取消激活,不再高亮显示 */ protected unActive(): void { this._active = false this.$elem.removeClass('w-e-active') } /** * 是否处于激活状态 */ public get isActive() { return this._active } } export default Menu