UNPKG

@scidian/osui

Version:

Lightweight JavaScript UI library.

48 lines (36 loc) 1.33 kB
import { Div } from '../core/Div.js'; class MenuShortcut extends Div { constructor(text = undefined) { super(); this.setClass('osui-menu-shortcut'); if (text) this.setShortcutText(text); } setShortcutText(text) { if (!text) return this; this.text = text; // Remove previous characters this.clearContents(); // Insert new shorcut as series of centered same-spaced divs for each character for (let i = 0; i < text.length; i++) { let letter = new Div().setClass('osui-menu-shortcut-character'); // Put lowercase letters together let subString = text[i]; while (i + 1 < text.length && text[i+1] === text[i+1].toLowerCase()) { subString += text[i+1]; i++; } // Keep single characters monospaced, allow words to have nice spacing if (subString.length === 1) { letter.setWidth('1em'); } else { letter.setStyle('paddingLeft', '0.15em'); letter.setStyle('paddingRight', '0.15em'); } // Add letter(s) letter.dom.textContent = subString; this.add(letter); } return this; } } export { MenuShortcut };