UNPKG

1.22 kBJavaScriptView Raw
1import React from 'react';
2
3const LABEL_TEXT = 'Add an optional message';
4const MAXIMUM_CHARACTERS = 300;
5
6function 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
17function img (image) {
18 return image ? (<img className="email-article__message-image" src={image} />) : null;
19}
20
21export 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