UNPKG

vditor

Version:

♏ 易于使用的 Markdown 编辑器,为适配不同的应用场景而生

36 lines (30 loc) 1.6 kB
import {setContentTheme} from "../ui/setContentTheme"; import {getEventName} from "../util/compatibility"; import {MenuItem} from "./MenuItem"; import {hidePanel, toggleSubMenu} from "./setToolbar"; export class ContentTheme extends MenuItem { public element: HTMLElement; constructor(vditor: IVditor, menuItem: IMenuItem) { super(vditor, menuItem); const actionBtn = this.element.children[0] as HTMLElement; const panelElement = document.createElement("div"); panelElement.className = `vditor-hint${menuItem.level === 2 ? "" : " vditor-panel--arrow"}`; let innerHTML = ""; Object.keys(vditor.options.preview.theme.list).forEach((key) => { innerHTML += `<button data-type="${key}">${vditor.options.preview.theme.list[key]}</button>`; }); panelElement.innerHTML = `<div style="overflow: auto;max-height:${window.innerHeight / 2}px">${innerHTML}</div>`; panelElement.addEventListener(getEventName(), (event: MouseEvent & { target: HTMLElement }) => { if (event.target.tagName === "BUTTON") { hidePanel(vditor, ["subToolbar"]); vditor.options.preview.theme.current = event.target.getAttribute("data-type"); setContentTheme(vditor.options.preview.theme.current, vditor.options.preview.theme.path); event.preventDefault(); event.stopPropagation(); } }); this.element.appendChild(panelElement); toggleSubMenu(vditor, panelElement, actionBtn, menuItem.level); } }