1 | import React from 'react';
|
2 |
|
3 | const LABEL_TEXT = 'Add an optional message';
|
4 | const MAXIMUM_CHARACTERS = 300;
|
5 |
|
6 | function characters (maximum, current) {
|
7 | const remaining = maximum - current;
|
8 | const limitedClass = remaining <= 10 ? ' email-article__message-characters--limited' : '';
|
9 | const remainingClasses = `email-article__message-characters${limitedClass}`
|
10 | return (
|
11 | <span className={remainingClasses}>
|
12 | {remaining} character{remaining !== 1 ? 's' : ''} remaining
|
13 | </span>
|
14 | )
|
15 | }
|
16 |
|
17 | function img (image) {
|
18 | return image ? (<img className="email-article__message-image" src={image} />) : null;
|
19 | }
|
20 |
|
21 | export default ({customMessage, messageText, image, onMessageTyping, messageLength}) => {
|
22 | if (customMessage) {
|
23 | return (
|
24 | <div className="email-article__message">
|
25 | <label className="email-article__message-label">{LABEL_TEXT}
|
26 | {characters(MAXIMUM_CHARACTERS, messageLength)}
|
27 | </label>
|
28 | {img(image)}
|
29 | <textarea
|
30 | className="o-forms-textarea email-article__message-textarea"
|
31 | type="text"
|
32 | inputMode="latin-prose"
|
33 | maxLength={MAXIMUM_CHARACTERS}
|
34 | placeholder="Enter your message"
|
35 | rows="7"
|
36 | value={messageText}
|
37 | onChange={event => onMessageTyping(event.target.value)}></textarea>
|
38 | </div>
|
39 | )
|
40 | }
|
41 | }
|
42 |
|
\ | No newline at end of file |