/* @flow */ 'use strict'; import React, { Component, KeyboardEvent } from 'react'; type State = { pin: string; } export default class Pin extends Component { state: State; constructor(props: any) { super(props); this.state = { pin: '', } } onPinAdd = (input: number): void => { let pin: string = this.state.pin; if (pin.length < 9) { pin += input; this.setState({ pin: pin }); } } onPinBackspace = (): void => { this.setState({ pin: this.state.pin.substring(0, this.state.pin.length - 1), }); } keyboardHandler(event: KeyboardEvent): void { const { onPinAdd, onPinBackspace, 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(): any { 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

); } }