Skip to content

Commit f439a16

Browse files
authored
TextField - test new features and presets (#3125)
* TextField - add clear button * demo * adding 'topTrailingAccessory' prop and fix assets * replacing icon * fix validationIcon with no validation massage * fix topmargin * revert * fix master merge * Delete demo/src/assets/Assets.ts remove Demo/Assets * add preset * add icons * adding size * add testIDs * remove console * pr comments fixes * fix testID * TextField - test new features (helperText, validationIcon, clearButton) * add ClearButton container testID * Test with presets
1 parent 44c9f52 commit f439a16

File tree

3 files changed

+526
-345
lines changed

3 files changed

+526
-345
lines changed

src/components/textField/ClearButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const ClearButton = ({testID, onClear, onChangeText}: Pick<TextFieldProps, 'onCl
5050

5151
return (
5252
//@ts-expect-error should be fixed in version 3.5 (https://github.com/software-mansion/react-native-reanimated/pull/4881)
53-
<View reanimated style={style}>
53+
<View reanimated style={style} testID={`${testID}.container`}>
5454
<Button
5555
link
5656
iconSource={Assets.icons.xFlat}

src/components/textField/TextField.driver.new.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import _ from 'lodash';
2+
import {StyleSheet} from 'react-native';
23
import {fireEvent} from '@testing-library/react-native';
34
import {useComponentDriver, ComponentProps} from '../../testkit/new/Component.driver';
4-
import {TextDriver} from '../text/Text.driver.new';
55
import {usePressableDriver} from '../../testkit/new/usePressable.driver';
6+
import {TextDriver} from '../text/Text.driver.new';
7+
import {ImageDriver} from '../image/Image.driver.new';
8+
import {ButtonDriver} from '../button/Button.driver.new';
9+
import {ViewDriver} from '../view/View.driver.new';
610

711
export const TextFieldDriver = (props: ComponentProps) => {
812
const driver = usePressableDriver(useComponentDriver(props));
@@ -23,6 +27,22 @@ export const TextFieldDriver = (props: ComponentProps) => {
2327
renderTree: props.renderTree,
2428
testID: `${props.testID}.charCounter`
2529
});
30+
const helperTextDriver = TextDriver({
31+
renderTree: props.renderTree,
32+
testID: `${props.testID}.helperText`
33+
});
34+
const validationIconDriver = ImageDriver({
35+
renderTree: props.renderTree,
36+
testID: `${props.testID}.validationMessage.icon`
37+
});
38+
const clearButtonDriver = ButtonDriver({
39+
renderTree: props.renderTree,
40+
testID: `${props.testID}.clearButton`
41+
});
42+
const clearButtonContainerDriver = ViewDriver({
43+
renderTree: props.renderTree,
44+
testID: `${props.testID}.clearButton.container`
45+
});
2646

2747
const getValue = (): string | undefined => {
2848
return driver.getElement().props.value ?? driver.getElement().props.defaultValue;
@@ -79,6 +99,24 @@ export const TextFieldDriver = (props: ComponentProps) => {
7999
return charCounterDriver;
80100
};
81101

102+
const getHelperText = () => {
103+
return helperTextDriver;
104+
};
105+
106+
const getValidationIcon = () => {
107+
return validationIconDriver;
108+
};
109+
110+
const getClearButton = () => {
111+
const visible = (): boolean => {
112+
const transform = StyleSheet.flatten(clearButtonContainerDriver.getStyle()).transform;
113+
const translate = StyleSheet.flatten(transform);
114+
const translateX = translate.translateX;
115+
return translateX === 0;
116+
};
117+
return {...clearButtonDriver, visible};
118+
};
119+
82120
return {
83121
...driver,
84122
getValue,
@@ -89,6 +127,9 @@ export const TextFieldDriver = (props: ComponentProps) => {
89127
getPlaceholder,
90128
getLabel,
91129
getValidationMessage,
92-
getCharCounter
130+
getCharCounter,
131+
getHelperText,
132+
getValidationIcon,
133+
getClearButton
93134
};
94135
};

0 commit comments

Comments
 (0)