diff --git a/src/membrane-keypad-element.ts b/src/membrane-keypad-element.ts index 68a8899..fe278be 100644 --- a/src/membrane-keypad-element.ts +++ b/src/membrane-keypad-element.ts @@ -2,6 +2,10 @@ import { customElement, html, LitElement, property, svg } from 'lit-element'; const SPACE_KEY = 32; +function isNumeric(text: string) { + return !isNaN(parseFloat(text)); +} + @customElement('wokwi-membrane-keypad') export class MembraneKeypadElement extends LitElement { @property() threeColumns = false; @@ -9,15 +13,21 @@ export class MembraneKeypadElement extends LitElement { private pressedKeys = new Set(); renderKey(text: string, x: number, y: number) { + const keyClass = isNumeric(text) ? 'blue-key' : 'red-key'; + return svg` { + this.up(text, e); + }} @mousedown=${() => this.down(text)} @mouseup=${() => this.up(text)} @touchstart=${() => this.down(text)} @touchend=${() => this.up(text)} - @keydown=${(e: KeyboardEvent) => e.keyCode === SPACE_KEY && this.down(text)} - @keyup=${(e: KeyboardEvent) => e.keyCode === SPACE_KEY && this.up(text)} + @keydown=${(e: KeyboardEvent) => e.keyCode === SPACE_KEY && this.down(text, e)} + @keyup=${(e: KeyboardEvent) => e.keyCode === SPACE_KEY && this.up(text, e)} > ${text} @@ -26,13 +36,13 @@ export class MembraneKeypadElement extends LitElement { render() { const fourColumns = !this.threeColumns; - const columnWidth = 14.647; + const columnWidth = 15; const width = fourColumns ? 70.336 : 70.336 - columnWidth; return html`