/* @flow */ import React, { Component } from 'react'; import type { Props } from './index'; type State = { pin: string; } export default class Pin extends Component { keyboardHandler: (event: KeyboardEvent) => void; state: State; constructor(props: Props) { super(props); this.state = { pin: '', }; } onPinAdd = (input: number): void => { let pin: string = this.state.pin; if (pin.length < 9) { pin += input; this.setState({ pin, }); } } onPinBackspace = (): void => { this.setState({ pin: this.state.pin.substring(0, this.state.pin.length - 1), }); } keyboardHandler(event: KeyboardEvent): void { const { onPinSubmit } = this.props.modalActions; const { pin } = this.state; event.preventDefault(); switch (event.keyCode) { case 13: // enter, onPinSubmit(pin); break; // backspace case 8: this.onPinBackspace(); break; // numeric and numpad case 49: case 97: this.onPinAdd(1); break; case 50: case 98: this.onPinAdd(2); break; case 51: case 99: this.onPinAdd(3); break; case 52: case 100: this.onPinAdd(4); break; case 53: case 101: this.onPinAdd(5); break; case 54: case 102: this.onPinAdd(6); break; case 55: case 103: this.onPinAdd(7); break; case 56: case 104: this.onPinAdd(8); break; case 57: case 105: this.onPinAdd(9); break; } } componentWillMount(): void { this.keyboardHandler = this.keyboardHandler.bind(this); window.addEventListener('keydown', this.keyboardHandler, false); } componentWillUnmount(): void { window.removeEventListener('keydown', this.keyboardHandler, false); } render() { if (!this.props.modal.opened) return null; const { onPinSubmit } = this.props.modalActions; const { device } = this.props.modal; const { pin } = this.state; return (
{/* */}

Enter { device.label } PIN

The PIN layout is displayed on your TREZOR.

Not sure how PIN works? Learn more

); } }