12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import {FocusElement} from 'tui-lib/ui/primitives'
- import * as ansi from 'tui-lib/util/ansi'
- import telc from 'tui-lib/util/telchars'
- export default class Button extends FocusElement {
- // A button.
- constructor(text) {
- super()
- this.text = text
- this.cursorX = null
- this.cursorY = null
- }
- fixLayout() {
- this.w = ansi.measureColumns(this.text)
- this.h = 1
- }
- drawTo(writable) {
- if (this.isSelected) {
- writable.write(ansi.invert())
- }
- writable.write(ansi.moveCursor(this.absTop, this.absLeft))
- writable.write(this.text)
- writable.write(ansi.resetAttributes())
- super.drawTo(writable)
- }
- keyPressed(keyBuf) {
- if (telc.isSelect(keyBuf)) {
- this.emit('pressed')
- }
- }
- clicked(button) {
- if (button === 'left') {
- if (this.isSelected) {
- this.emit('pressed')
- } else {
- this.root.select(this)
- }
- }
- }
- }
|