242 | {this.props.showNumericRow ?
243 |
244 | {numbers.map(button =>
245 | ,
251 | )}
252 | }
255 | onClick={this.handleBackspaceClick}
256 | />
257 |
: null}
258 |
259 | {keys.map((row, i) =>
260 |
261 | {keys.length === i + 1 && this.props.showShift &&
262 | }
265 | onClick={this.handleShiftClick}
266 | />
267 | }
268 | {row.map((button, ii) => {
269 | switch (button.toLowerCase()) {
270 | case '*bs':
271 | return (
272 | }
275 | onClick={this.handleBackspaceClick}
276 | key={`b${ii}`}
277 | />
278 | );
279 |
280 | case '*sh':
281 | return (
282 | }
285 | onClick={this.handleShiftClick}
286 | key={`b${ii}`}
287 | />
288 | );
289 |
290 | default:
291 | return (
292 |
298 | );
299 | }
300 | }
301 | )}
302 |
303 | {keys.length === i + 1 && this.props.showSymbols &&
304 |
309 | }
310 |
,
311 | )}
312 |
313 |
314 | {typeof secondaryKeyboard !== 'undefined' ?
315 | }
317 | onClick={this.handleLanguageClick}
318 | />
319 | : null}
320 | {inputNode.dataset.type === 'email' ?
321 |
325 | : null}
326 | {this.props.isDraggable !== false ?
327 | }
329 | classes="keyboard-draggable-button"
330 | onClick={this.handleDragKeyClick}
331 | />
332 | : null}
333 | {this.props.showSpacebar ?
334 |
339 | : null}
340 | {inputNode.dataset.type === 'email' ?
341 |
345 | : null}
346 | {this.props.showSubmit ?
347 |
352 | : null}
353 |
354 |
355 |