@momo-kits/foundation 0.75.1-beta.9 → 0.75.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/Application/BottomTab/BottomTabBar.tsx +478 -0
  2. package/Application/BottomTab/index.tsx +134 -0
  3. package/Application/Components.tsx +552 -0
  4. package/Application/ModalScreen.tsx +244 -0
  5. package/Application/Navigation.ts +50 -0
  6. package/Application/NavigationContainer.tsx +128 -0
  7. package/Application/Navigator.ts +151 -0
  8. package/Application/StackScreen.tsx +146 -0
  9. package/Application/index.ts +37 -0
  10. package/{Navigation → Application}/types.ts +96 -27
  11. package/Application/utils.tsx +175 -0
  12. package/Assets/DotAnimation.json +256 -0
  13. package/Assets/SpinnerAnimation.json +1027 -0
  14. package/Assets/icon.json +89 -5
  15. package/Assets/icon_bank.json +506 -0
  16. package/Assets/language.json +202 -0
  17. package/Badge/Badge.tsx +56 -0
  18. package/Badge/BadgeDot.tsx +11 -0
  19. package/Badge/BadgeRibbon.tsx +125 -0
  20. package/Badge/Shape.tsx +29 -0
  21. package/Badge/index.tsx +7 -0
  22. package/Badge/styles.ts +58 -0
  23. package/Badge/types.ts +63 -0
  24. package/Button/index.tsx +90 -39
  25. package/Button/styles.ts +19 -0
  26. package/CheckBox/index.tsx +58 -43
  27. package/CheckBox/styles.ts +1 -1
  28. package/CheckBox/types.ts +6 -4
  29. package/Consts/colors+spacing+radius.ts +18 -0
  30. package/Consts/styles.ts +0 -26
  31. package/Consts/theme.ts +5 -1
  32. package/Divider/index.tsx +3 -1
  33. package/Icon/index.tsx +14 -10
  34. package/Icon/types.ts +4 -3
  35. package/IconButton/index.tsx +24 -15
  36. package/Image/index.tsx +63 -45
  37. package/Image/styles.ts +1 -9
  38. package/Image/types.ts +5 -1
  39. package/Input/Input.tsx +227 -115
  40. package/Input/InputDropDown.tsx +132 -0
  41. package/Input/InputMoney.tsx +174 -110
  42. package/Input/InputOTP.tsx +257 -0
  43. package/Input/InputSearch.tsx +160 -130
  44. package/Input/InputTextArea.tsx +149 -121
  45. package/Input/common.tsx +43 -18
  46. package/Input/index.tsx +205 -17
  47. package/Input/styles.ts +44 -7
  48. package/Input/utils.ts +2 -2
  49. package/Layout/Card.tsx +76 -37
  50. package/Layout/FloatingButton.tsx +128 -0
  51. package/Layout/GridSystem.tsx +35 -23
  52. package/Layout/Item.tsx +29 -33
  53. package/Layout/ItemList.tsx +55 -0
  54. package/Layout/ItemSectionList.tsx +39 -0
  55. package/Layout/Screen.tsx +378 -0
  56. package/Layout/Section.tsx +73 -35
  57. package/Layout/index.ts +13 -3
  58. package/Layout/styles.ts +101 -0
  59. package/Layout/types.ts +1 -37
  60. package/Layout/utils.ts +38 -43
  61. package/Loader/DotLoader.tsx +37 -0
  62. package/Loader/Loader.tsx +13 -0
  63. package/Loader/ProgressBar.tsx +44 -0
  64. package/Loader/Spinner.tsx +29 -0
  65. package/Loader/index.tsx +4 -0
  66. package/Loader/styles.ts +10 -0
  67. package/Loader/types.ts +35 -0
  68. package/Loader/utils.ts +25 -0
  69. package/Pagination/Dot.tsx +1 -1
  70. package/Pagination/PaginationDot.tsx +8 -3
  71. package/Pagination/PaginationNumber.tsx +8 -7
  72. package/Pagination/PaginationScroll.tsx +1 -1
  73. package/Pagination/PaginationWhiteDot.tsx +8 -5
  74. package/Pagination/styles.ts +3 -0
  75. package/Pagination/types.ts +2 -0
  76. package/Popup/PopupNotify.tsx +102 -44
  77. package/Popup/PopupPromotion.tsx +63 -22
  78. package/Popup/types.ts +15 -4
  79. package/Radio/index.tsx +35 -21
  80. package/Radio/types.ts +7 -5
  81. package/Skeleton/index.tsx +1 -1
  82. package/Skeleton/types.ts +3 -0
  83. package/Switch/index.tsx +35 -24
  84. package/Switch/types.ts +5 -3
  85. package/Tag/index.tsx +1 -1
  86. package/Text/index.tsx +32 -26
  87. package/Text/styles.ts +38 -0
  88. package/Text/types.ts +25 -13
  89. package/Text/utils.ts +14 -0
  90. package/Title/index.tsx +186 -0
  91. package/Title/styles.ts +79 -0
  92. package/Title/types.ts +20 -0
  93. package/code-scanner.js +143 -0
  94. package/index.ts +17 -3
  95. package/migrate_typo.js +56 -0
  96. package/package.json +44 -39
  97. package/publish.sh +2 -5
  98. package/tsconfig.json +24 -0
  99. package/verify.js +47 -0
  100. package/Assets/header-background.png +0 -0
  101. package/Layout/ScreenContainer.tsx +0 -121
  102. package/Navigation/BottomTab.tsx +0 -39
  103. package/Navigation/Components.tsx +0 -365
  104. package/Navigation/ModalScreen.tsx +0 -226
  105. package/Navigation/Navigation.ts +0 -44
  106. package/Navigation/NavigationButton.tsx +0 -54
  107. package/Navigation/NavigationContainer.tsx +0 -77
  108. package/Navigation/Navigator.ts +0 -82
  109. package/Navigation/Observer.ts +0 -79
  110. package/Navigation/StackScreen.tsx +0 -27
  111. package/Navigation/index.ts +0 -14
  112. package/Navigation/utils.tsx +0 -137
@@ -1,4 +1,10 @@
1
- import React, {FC, useContext, useRef, useState} from 'react';
1
+ import React, {
2
+ forwardRef,
3
+ useContext,
4
+ useImperativeHandle,
5
+ useRef,
6
+ useState,
7
+ } from 'react';
2
8
  import {
3
9
  NativeSyntheticEvent,
4
10
  TextInput,
@@ -6,156 +12,180 @@ import {
6
12
  TouchableOpacity,
7
13
  View,
8
14
  } from 'react-native';
9
- import {InputSearchProps} from './index';
10
- import {ApplicationContext} from '../Navigation';
11
- import styles from './styles';
15
+ import {ApplicationContext, ComponentContext} from '../Application';
12
16
  import {Icon} from '../Icon';
13
17
  import {Text} from '../Text';
18
+ import {InputSearchProps} from './index';
19
+ import styles from './styles';
14
20
  import {checkTyping} from './utils';
15
21
 
16
- const InputSearch: FC<InputSearchProps> = ({
17
- placeholder,
18
- onFocus,
19
- onBlur,
20
- iconColor,
21
- value,
22
- onChangeText,
23
- icon,
24
- buttonText = 'Hủy',
25
- showButtonText = true,
26
- showBorder = true,
27
- style,
28
- defaultValue,
29
- ...props
30
- }) => {
31
- const {theme} = useContext(ApplicationContext);
32
- const [focused, setFocused] = useState(false);
33
- const [haveValue, setHaveValue] = useState(!!value || !!defaultValue);
34
- const inputRef = useRef<any>(null);
35
- let iconTintColor = iconColor;
22
+ const InputSearch = forwardRef(
23
+ (
24
+ {
25
+ placeholder,
26
+ onFocus,
27
+ onBlur,
28
+ iconColor,
29
+ value,
30
+ onChangeText,
31
+ icon,
32
+ buttonText = 'Hủy',
33
+ showButtonText = true,
34
+ style,
35
+ defaultValue,
36
+ onPressButtonText,
37
+ params,
38
+ hasColorBG = false,
39
+ accessibilityLabel,
40
+ ...props
41
+ }: InputSearchProps,
42
+ ref,
43
+ ) => {
44
+ const {theme} = useContext(ApplicationContext);
45
+ const [focused, setFocused] = useState(false);
46
+ const [haveValue, setHaveValue] = useState(!!value || !!defaultValue);
47
+ const inputRef = useRef<TextInput | null>(null);
36
48
 
37
- const _onFocus = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
38
- setFocused(true);
39
- onFocus?.(e);
40
- };
49
+ const _onFocus = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
50
+ setFocused(true);
51
+ onFocus?.(e);
52
+ };
41
53
 
42
- const _onBlur = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
43
- setFocused(false);
44
- onBlur?.(e);
45
- };
54
+ const _onBlur = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
55
+ setFocused(false);
56
+ onBlur?.(e);
57
+ };
46
58
 
47
- const onClearText = () => {
48
- inputRef?.current?.clear();
49
- _onChangeText('');
50
- };
59
+ const onClearText = () => {
60
+ inputRef?.current?.clear();
61
+ _onChangeText('');
62
+ };
51
63
 
52
- const _onChangeText = (text: string) => {
53
- checkTyping(text, haveValue, setHaveValue);
54
- onChangeText?.(text);
55
- };
64
+ const _onChangeText = (text: string) => {
65
+ checkTyping(text, haveValue, setHaveValue);
66
+ onChangeText?.(text);
67
+ };
56
68
 
57
- const getBorderColor = () => {
58
- let borderColor = showBorder
59
- ? theme.colors.border.default
60
- : theme.colors.background.surface;
69
+ useImperativeHandle(ref, () => {
70
+ return {
71
+ clear: onClearText,
72
+ focus: () => inputRef.current?.focus(),
73
+ blur: () => inputRef.current?.blur(),
74
+ setText: (text: string) => _onChangeText(text),
75
+ };
76
+ });
77
+
78
+ const renderInputView = () => {
79
+ return (
80
+ <TextInput
81
+ {...props}
82
+ accessibilityLabel={accessibilityLabel}
83
+ textAlignVertical="center"
84
+ ref={inputRef}
85
+ style={[
86
+ styles.searchInput,
87
+ {
88
+ color: theme.colors.text.default,
89
+ },
90
+ ]}
91
+ value={value}
92
+ onChangeText={_onChangeText}
93
+ onFocus={_onFocus}
94
+ onBlur={_onBlur}
95
+ placeholder={placeholder}
96
+ selectionColor={theme.colors.primary}
97
+ placeholderTextColor={theme.colors.text.hint}
98
+ />
99
+ );
100
+ };
101
+
102
+ const renderIconView = () => {
103
+ return (
104
+ <View
105
+ style={{
106
+ flexDirection: 'row',
107
+ }}>
108
+ {focused && haveValue && (
109
+ <TouchableOpacity style={styles.iconWrapper} onPress={onClearText}>
110
+ <Icon
111
+ source="24_navigation_close_circle_full"
112
+ size={16}
113
+ color={theme.colors.text.hint}
114
+ />
115
+ </TouchableOpacity>
116
+ )}
117
+ {!!icon && (
118
+ <View style={{flexDirection: 'row'}}>
119
+ <View
120
+ style={[
121
+ styles.divider,
122
+ {
123
+ backgroundColor: theme.colors.primary,
124
+ },
125
+ ]}
126
+ />
127
+ <Icon
128
+ color={iconColor}
129
+ source={icon}
130
+ style={styles.iconSearchInput}
131
+ />
132
+ </View>
133
+ )}
134
+ </View>
135
+ );
136
+ };
137
+
138
+ let inputState = 'empty';
61
139
 
62
140
  if (focused) {
63
- borderColor = theme.colors.primary;
141
+ inputState = 'focus';
64
142
  }
65
143
 
66
- return {borderColor};
67
- };
68
-
69
- const renderInputView = () => {
70
- let textColor = theme.colors.text.default;
71
- let placeholderColor = theme.colors.text.hint;
144
+ if (value && value?.length > 0) {
145
+ inputState = 'filled';
146
+ }
72
147
 
73
- return (
74
- <TextInput
75
- {...props}
76
- textAlignVertical="top"
77
- ref={inputRef}
78
- style={[
79
- styles.searchInput,
80
- {
81
- color: textColor,
82
- },
83
- ]}
84
- value={value}
85
- onChangeText={_onChangeText}
86
- onFocus={_onFocus}
87
- onBlur={_onBlur}
88
- placeholder={placeholder}
89
- selectionColor={theme.colors.primary}
90
- placeholderTextColor={placeholderColor}
91
- />
92
- );
93
- };
148
+ const backgroundColor = hasColorBG
149
+ ? theme.colors.background.default
150
+ : theme.colors.background.surface;
94
151
 
95
- const renderIconView = () => {
96
152
  return (
97
- <View
98
- style={{
99
- flexDirection: 'row',
153
+ <ComponentContext.Provider
154
+ value={{
155
+ componentName: 'InputSearch',
156
+ params,
157
+ state: inputState,
158
+ componentId: accessibilityLabel,
100
159
  }}>
101
- {focused && haveValue && (
102
- <TouchableOpacity style={styles.iconWrapper} onPress={onClearText}>
160
+ <View style={[style, styles.searchInputContainer]}>
161
+ <View
162
+ style={[
163
+ styles.searchInputWrapper,
164
+ {
165
+ backgroundColor,
166
+ },
167
+ ]}>
103
168
  <Icon
104
- source="24_navigation_close_circle_full"
105
- size={16}
169
+ source={'navigation_search'}
170
+ size={24}
106
171
  color={theme.colors.text.hint}
107
172
  />
108
- </TouchableOpacity>
109
- )}
110
- {!!icon && (
111
- <View style={{flexDirection: 'row'}}>
112
- <View
113
- style={[
114
- styles.divider,
115
- {
116
- backgroundColor: theme.colors.primary,
117
- },
118
- ]}
119
- />
120
- <Icon
121
- color={iconTintColor}
122
- source={icon}
123
- style={styles.iconSearchInput}
124
- />
173
+ {renderInputView()}
174
+ {renderIconView()}
125
175
  </View>
126
- )}
127
- </View>
176
+ {showButtonText && (
177
+ <TouchableOpacity onPress={onPressButtonText}>
178
+ <Text
179
+ typography={'action_default_bold'}
180
+ style={styles.textButton}>
181
+ {buttonText}
182
+ </Text>
183
+ </TouchableOpacity>
184
+ )}
185
+ </View>
186
+ </ComponentContext.Provider>
128
187
  );
129
- };
130
- return (
131
- <View
132
- style={[style, styles.searchInputContainer]}
133
- accessibilityLabel={`InputSearch`}>
134
- <View
135
- style={[
136
- getBorderColor(),
137
- styles.searchInputWrapper,
138
- {
139
- backgroundColor: theme.colors.background.surface,
140
- },
141
- ]}>
142
- <Icon
143
- source={'navigation_search'}
144
- size={24}
145
- color={theme.colors.text.hint}
146
- />
147
- {renderInputView()}
148
- {renderIconView()}
149
- </View>
150
- {showButtonText && (
151
- <TouchableOpacity>
152
- <Text typography={'action_default'} style={styles.textButton}>
153
- {buttonText}
154
- </Text>
155
- </TouchableOpacity>
156
- )}
157
- </View>
158
- );
159
- };
188
+ },
189
+ );
160
190
 
161
191
  export default InputSearch;
@@ -1,4 +1,10 @@
1
- import React, {FC, useContext, useRef, useState} from 'react';
1
+ import React, {
2
+ forwardRef,
3
+ useContext,
4
+ useImperativeHandle,
5
+ useRef,
6
+ useState,
7
+ } from 'react';
2
8
  import {
3
9
  NativeSyntheticEvent,
4
10
  TextInput,
@@ -6,9 +12,9 @@ import {
6
12
  TouchableOpacity,
7
13
  View,
8
14
  } from 'react-native';
9
- import styles from './styles';
15
+ import {ApplicationContext} from '../Application';
16
+ import {Icon} from '../Icon';
10
17
  import {Text} from '../Text';
11
- import {ApplicationContext} from '../Navigation';
12
18
  import {
13
19
  DEFAULT_HEIGHT,
14
20
  ErrorView,
@@ -17,136 +23,158 @@ import {
17
23
  MAX_LENGTH,
18
24
  } from './common';
19
25
  import {InputTextAreaProps} from './index';
20
- import {Icon} from '../Icon';
26
+ import styles from './styles';
21
27
 
22
- const InputTextArea: FC<InputTextAreaProps> = props => {
23
- const {theme} = useContext(ApplicationContext);
24
- const {
25
- errorMessage,
26
- onChangeText,
27
- floatingIconColor,
28
- floatingIcon,
29
- floatingValue,
30
- onFocus,
31
- onBlur,
32
- disabled,
33
- value,
34
- defaultValue,
35
- height,
36
- placeholder,
37
- maxLength,
38
- required,
39
- } = props;
28
+ const InputTextArea = forwardRef(
29
+ (
30
+ {
31
+ errorMessage,
32
+ onChangeText,
33
+ floatingIconColor,
34
+ floatingIcon,
35
+ floatingValue,
36
+ onFocus,
37
+ onBlur,
38
+ disabled = false,
39
+ value,
40
+ defaultValue,
41
+ height,
42
+ placeholder,
43
+ maxLength = MAX_LENGTH,
44
+ required,
45
+ errorSpacing,
46
+ style,
47
+ accessibilityLabel,
48
+ hintText,
49
+ ...props
50
+ }: InputTextAreaProps,
51
+ ref,
52
+ ) => {
53
+ const {theme} = useContext(ApplicationContext);
54
+ const [focused, setFocused] = useState(false);
55
+ const [inputValue, setInputValue] = useState(defaultValue ?? '');
56
+ const inputRef = useRef<TextInput | null>(null);
40
57
 
41
- const [focused, setFocused] = useState(false);
42
- const [inputValue, setInputValue] = useState(defaultValue ?? '');
43
- const inputRef = useRef<any>(null);
58
+ const onClearText = () => {
59
+ inputRef?.current?.clear();
60
+ _onChangeText('');
61
+ };
44
62
 
45
- const onClearText = () => {
46
- inputRef?.current?.clear();
47
- _onChangeText('');
48
- };
63
+ const _onChangeText = (text: string) => {
64
+ onChangeText?.(text);
65
+ setInputValue(text);
66
+ };
49
67
 
50
- const _onChangeText = (text: string) => {
51
- onChangeText?.(text);
52
- setInputValue(text);
53
- };
68
+ const _onFocus = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
69
+ setFocused(true);
70
+ onFocus?.(e);
71
+ };
54
72
 
55
- const _onFocus = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
56
- setFocused(true);
57
- onFocus?.(e);
58
- };
73
+ const _onBlur = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
74
+ setFocused(false);
75
+ onBlur?.(e);
76
+ };
59
77
 
60
- const _onBlur = (e: NativeSyntheticEvent<TextInputFocusEventData>) => {
61
- setFocused(false);
62
- onBlur?.(e);
63
- };
78
+ useImperativeHandle(ref, () => {
79
+ return {
80
+ clear: onClearText,
81
+ focus: () => inputRef.current?.focus(),
82
+ blur: () => inputRef.current?.blur(),
83
+ setText: (text: string) => _onChangeText(text),
84
+ };
85
+ });
64
86
 
65
- const renderCountingView = () => {
66
- return (
67
- <View style={styles.countingView}>
68
- <Text color={theme.colors.text.hint} typography={'description_xs'}>
69
- {`${inputValue.length}/${maxLength}`}
70
- </Text>
71
- </View>
72
- );
73
- };
74
- const renderInputView = () => {
75
- const disabledColor = theme.colors.text.disable;
76
- let textColor = theme.colors.text.default;
77
- let placeholderColor = theme.colors.text.hint;
87
+ const renderCountingView = () => {
88
+ return (
89
+ <View style={styles.countingView}>
90
+ <Text
91
+ color={theme.colors.text.hint}
92
+ typography={'description_xs_regular'}>
93
+ {`${inputValue.length}/${maxLength}`}
94
+ </Text>
95
+ </View>
96
+ );
97
+ };
98
+ const renderInputView = () => {
99
+ const disabledColor = theme.colors.text.disable;
100
+ let textColor = theme.colors.text.default;
101
+ let placeholderColor = theme.colors.text.hint;
78
102
 
79
- if (disabled) {
80
- textColor = disabledColor;
81
- placeholderColor = disabledColor;
82
- }
103
+ if (disabled) {
104
+ textColor = disabledColor;
105
+ placeholderColor = disabledColor;
106
+ }
83
107
 
84
- return (
85
- <View
86
- style={[
87
- getBorderColor(focused, errorMessage, disabled),
88
- styles.textAreaWrapper,
89
- {
90
- height: height || DEFAULT_HEIGHT,
91
- backgroundColor: theme.colors.background.surface,
92
- },
93
- ]}>
94
- <FloatingView
95
- floatingValue={floatingValue}
96
- floatingIconColor={floatingIconColor}
97
- disabled={disabled}
98
- floatingIcon={floatingIcon}
99
- required={required}
100
- />
101
- <View style={styles.rowArea}>
102
- <View style={styles.textAreaView}>
103
- <TextInput
104
- ref={inputRef}
105
- editable={!disabled}
106
- textAlignVertical="top"
107
- style={[
108
- styles.textArea,
109
- {
110
- color: textColor,
111
- },
112
- ]}
113
- maxLength={maxLength}
114
- textBreakStrategy="highQuality"
115
- multiline={true}
116
- value={value}
117
- onChangeText={_onChangeText}
118
- onFocus={_onFocus}
119
- onBlur={_onBlur}
120
- placeholder={placeholder}
121
- selectionColor={theme.colors.primary}
122
- placeholderTextColor={placeholderColor}
123
- />
124
- </View>
125
- {focused && inputValue.length > 0 && (
126
- <TouchableOpacity style={styles.iconWrapper} onPress={onClearText}>
127
- <Icon
128
- source="24_navigation_close_circle_full"
129
- size={16}
130
- color={theme.colors.text.hint}
108
+ return (
109
+ <View
110
+ style={[
111
+ styles.textAreaWrapper,
112
+ {
113
+ height: height || DEFAULT_HEIGHT,
114
+ backgroundColor: theme.colors.background.surface,
115
+ },
116
+ getBorderColor(theme, focused, errorMessage, disabled),
117
+ ]}>
118
+ <FloatingView
119
+ floatingValue={floatingValue}
120
+ floatingIconColor={floatingIconColor}
121
+ disabled={disabled}
122
+ floatingIcon={floatingIcon}
123
+ required={required}
124
+ />
125
+ <View style={styles.rowArea}>
126
+ <View style={styles.textAreaView}>
127
+ <TextInput
128
+ {...props}
129
+ ref={inputRef}
130
+ editable={!disabled}
131
+ textAlignVertical="top"
132
+ style={[
133
+ styles.textArea,
134
+ {
135
+ color: textColor,
136
+ },
137
+ ]}
138
+ maxLength={maxLength}
139
+ textBreakStrategy="highQuality"
140
+ multiline={true}
141
+ value={value}
142
+ onChangeText={_onChangeText}
143
+ onFocus={_onFocus}
144
+ onBlur={_onBlur}
145
+ placeholder={placeholder}
146
+ selectionColor={theme.colors.primary}
147
+ placeholderTextColor={placeholderColor}
131
148
  />
132
- </TouchableOpacity>
133
- )}
149
+ </View>
150
+ {focused && inputValue.length > 0 && (
151
+ <TouchableOpacity
152
+ style={styles.iconWrapper}
153
+ onPress={onClearText}>
154
+ <Icon
155
+ source="24_navigation_close_circle_full"
156
+ size={16}
157
+ color={theme.colors.text.hint}
158
+ />
159
+ </TouchableOpacity>
160
+ )}
161
+ </View>
162
+ {renderCountingView()}
134
163
  </View>
135
- {renderCountingView()}
164
+ );
165
+ };
166
+
167
+ return (
168
+ <View style={[style, styles.wrapper]}>
169
+ {renderInputView()}
170
+ <ErrorView
171
+ errorMessage={errorMessage}
172
+ errorSpacing={errorSpacing}
173
+ hintText={hintText}
174
+ />
136
175
  </View>
137
176
  );
138
- };
139
-
140
- return (
141
- <View style={styles.wrapper} accessibilityLabel={`InputTextArea`}>
142
- {renderInputView()}
143
- <ErrorView errorMessage={errorMessage} />
144
- </View>
145
- );
146
- };
147
-
148
- InputTextArea.defaultProps = {
149
- maxLength: MAX_LENGTH,
150
- };
177
+ },
178
+ );
151
179
 
152
180
  export default InputTextArea;