Skip to content

Commit 1f5e565

Browse files
authored
Infra/textfield complete migration (#2806)
* Move text field from incubator to components folder * Fix usages and imports * Fix TS
1 parent e7ecdd2 commit 1f5e565

37 files changed

+391
-1428
lines changed

demo/src/screens/SettingsScreen.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ class SettingsScreen extends Component {
8080
value={defaultScreen?.value}
8181
label={'Default Screen'}
8282
onChange={this.setDefaultScreen}
83-
migrateTextField
8483
>
8584
{_.map(filteredScreens, screen => (
8685
<Picker.Item key={screen.value} value={screen.value} label={screen.label}/>

demo/src/screens/componentScreens/DateTimePickerScreen.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,12 @@ export default class DateTimePickerScreen extends Component<{}, State> {
6262
<View padding-page>
6363
<Text text40>Date Time Picker</Text>
6464
<DateTimePicker
65-
migrateTextField
6665
containerStyle={{marginVertical: 20}}
6766
label={'Date'}
6867
placeholder={'Select a date'}
6968
// value={new Date('October 13, 2014')}
7069
/>
7170
<DateTimePicker
72-
migrateTextField
7371
mode={'time'}
7472
label={'Time'}
7573
placeholder={'Select time'}
@@ -80,14 +78,12 @@ export default class DateTimePickerScreen extends Component<{}, State> {
8078
Disabled
8179
</Text>
8280
<DateTimePicker
83-
migrateTextField
8481
containerStyle={{marginBottom: 20}}
8582
editable={false}
8683
label={'Date'}
8784
placeholder={'Select a date'}
8885
/>
8986
<DateTimePicker
90-
migrateTextField
9187
editable={false}
9288
mode={'time'}
9389
label={'Time'}
@@ -108,7 +104,6 @@ export default class DateTimePickerScreen extends Component<{}, State> {
108104
</View>
109105
</View>
110106
<DateTimePicker
111-
migrateTextField
112107
containerStyle={{marginVertical: 20}}
113108
renderInput={this.renderCustomInput}
114109
mode={mode}

demo/src/screens/componentScreens/TextFieldScreen.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export default class TextFieldScreen extends Component {
5959
<Text h3 blue50 marginV-s4>
6060
Default
6161
</Text>
62+
{/* @ts-expect-error */}
6263
<TextField ref={this.input} label="Name" placeholder="Enter full name"/>
6364

6465
<Text h3 blue50 marginV-s4>
@@ -88,6 +89,7 @@ export default class TextFieldScreen extends Component {
8889
</Text>
8990

9091
<TextField
92+
// @ts-expect-error
9193
ref={this.input2}
9294
placeholder="Enter search term"
9395
text70
@@ -97,6 +99,7 @@ export default class TextFieldScreen extends Component {
9799
/>
98100

99101
<TextField
102+
// @ts-expect-error
100103
ref={this.input2}
101104
placeholder="Enter URL"
102105
floatingPlaceholder
@@ -111,6 +114,7 @@ export default class TextFieldScreen extends Component {
111114
/>
112115

113116
<TextField
117+
// @ts-expect-error
114118
ref={this.input2}
115119
placeholder="Enter weight"
116120
text70
@@ -162,6 +166,7 @@ export default class TextFieldScreen extends Component {
162166

163167
<View row top marginT-s4>
164168
<TextField
169+
// @ts-expect-error
165170
ref={this.inputWithValidation}
166171
placeholder="Enter full name"
167172
validate="required"

src/components/chipsInput/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {StyleSheet, NativeSyntheticEvent, TextInputKeyPressEventData} from 'reac
33
import {isUndefined, map} from 'lodash';
44
import {Constants} from '../../commons/new';
55
import {useCombinedRefs} from '../../hooks';
6-
import TextField, {TextFieldProps} from '../../incubator/TextField';
6+
import TextField, {TextFieldProps} from '../textField';
77
import Chip, {ChipProps} from '../chip';
88

99
const removeIcon = require('./assets/xSmall.png');

src/components/dateTimePicker/index.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@ import {useDidUpdate} from '../../hooks';
1414
import {Colors} from '../../style';
1515
import Assets from '../../assets';
1616
import {Constants, asBaseComponent, BaseComponentInjectedProps} from '../../commons/new';
17-
import TextField from '../textField/TextFieldMigrator';
17+
import TextField, {TextFieldProps, TextFieldMethods} from '../textField';
1818
import {DialogProps} from '../dialog';
1919
import View from '../view';
2020
import Button from '../button';
2121
import ExpandableOverlay, {ExpandableOverlayMethods, RenderCustomOverlayProps} from '../../incubator/expandableOverlay';
22-
import type {TextFieldProps, TextFieldMethods} from '../../incubator/TextField';
2322
import useOldApi, {OldApiProps} from './useOldApi';
2423

2524
export type DateTimePickerMode = 'date' | 'time';
@@ -91,10 +90,6 @@ export type DateTimePickerProps = OldApiProps & Omit<TextFieldProps, 'value' | '
9190
* The component testID
9291
*/
9392
testID?: string;
94-
/**
95-
* Should migrate to the new TextField implementation
96-
*/
97-
migrateTextField?: boolean;
9893
};
9994

10095
type DateTimePickerPropsInternal = DateTimePickerProps & BaseComponentInjectedProps;
@@ -131,7 +126,6 @@ const DateTimePicker = forwardRef((props: DateTimePickerPropsInternal, ref: Forw
131126
dialogProps,
132127
headerStyle,
133128
testID,
134-
migrateTextField = true,
135129
...others
136130
} = props;
137131

@@ -315,11 +309,8 @@ const DateTimePicker = forwardRef((props: DateTimePickerPropsInternal, ref: Forw
315309
{...others}
316310
// @ts-expect-error
317311
ref={textField}
318-
migrate={migrateTextField}
319312
testID={testID}
320313
editable={editable}
321-
// @ts-expect-error should be remove after completing TextField migration
322-
expandable={migrateTextField ? undefined : !!others.renderExpandableInput}
323314
value={getStringValue()}
324315
/>
325316
)}

src/components/numberInput/NumberInput.driver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {NumberInputProps} from './index';
22
import {ComponentDriver, ComponentDriverArgs} from '../../testkit/Component.driver';
3-
import {TextFieldDriver} from '../../incubator/TextField/TextField.driver';
3+
import {TextFieldDriver} from '../textField/TextField.driver';
44

55
export class NumberInputDriver extends ComponentDriver<NumberInputProps> {
66
private readonly maskedInputDriver: TextFieldDriver;

src/components/numberInput/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {StyleSheet, StyleProp, ViewStyle, TextStyle} from 'react-native';
44
import {useDidUpdate, useThemeProps} from '../../hooks';
55
import {Colors} from '../../style';
66
import MaskedInput from '../maskedInput/new';
7-
import TextField, {TextFieldProps, TextFieldRef} from '../../incubator/TextField';
7+
import TextField, {TextFieldProps, TextFieldRef} from '../textField';
88
import View from '../view';
99
import Text from '../text';
1010
import {parseInput, generateOptions, getInitialNumber, Options, NumberInputData} from './Presenter';

src/components/picker/helpers/useImperativePickerHandle.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {useImperativeHandle, useRef} from 'react';
22
import {ExpandableOverlayMethods} from '../../../incubator/expandableOverlay';
3-
import {TextFieldMethods} from '../../../incubator/TextField';
3+
import {TextFieldMethods} from '../../textField';
44

55
const useImperativePickerHandle = (ref: React.Ref<any>,
66
expandableRef: React.MutableRefObject<ExpandableOverlayMethods | null>) => {

src/components/picker/index.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ import {Typography} from 'style';
1111
import {useThemeProps} from 'hooks';
1212
import {Constants} from '../../commons/new';
1313
import ExpandableOverlay, {ExpandableOverlayProps, ExpandableOverlayMethods} from '../../incubator/expandableOverlay';
14-
// @ts-expect-error
15-
import {TextField} from '../inputs';
16-
import TextFieldMigrator from '../textField/TextFieldMigrator';
14+
import TextField from '../textField';
1715
import Icon from '../icon';
1816
import View from '../view';
1917
import Text from '../text';
@@ -87,7 +85,6 @@ const Picker = React.forwardRef((props: PickerProps, ref) => {
8785
useSafeArea,
8886
// TODO: Remove migrate props and migrate code
8987
migrate = true,
90-
migrateTextField = true,
9188
accessibilityLabel,
9289
accessibilityHint,
9390
items: propItems,
@@ -301,9 +298,7 @@ const Picker = React.forwardRef((props: PickerProps, ref) => {
301298
// @ts-expect-error - hopefully will be solved after the picker migration ends
302299
renderPicker(value, label)
303300
) : (
304-
<TextFieldMigrator
305-
migrate={migrateTextField}
306-
// customWarning="RNUILib Picker component's internal TextField will soon be replaced with a new implementation, in order to start the migration - please pass to Picker the 'migrateTextField' prop"
301+
<TextField
307302
// @ts-expect-error
308303
ref={pickerRef}
309304
// {...textInputProps}
@@ -321,7 +316,7 @@ const Picker = React.forwardRef((props: PickerProps, ref) => {
321316
// topBarProps={undefined}
322317
>
323318
{renderPickerInnerInput()}
324-
</TextFieldMigrator>
319+
</TextField>
325320
)}
326321
</ExpandableOverlay>
327322
</PickerContext.Provider>
@@ -331,7 +326,6 @@ const Picker = React.forwardRef((props: PickerProps, ref) => {
331326
// @ts-expect-error
332327
Picker.Item = PickerItem;
333328
Picker.defaultProps = {
334-
...TextField.defaultProps,
335329
mode: PickerModes.SINGLE
336330
};
337331
Picker.displayName = 'Picker';

src/components/picker/types.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {ExpandableOverlayProps, ExpandableOverlayMethods} from '../../incubator/
44
import {ModalTopBarProps} from '../modal/TopBar';
55
// TODO: Replace with new TextField Props after migration to new TextField has completed
66
// import {TextFieldProps} from '../../../typings/components/Inputs';
7-
import {TextFieldMethods, TextFieldProps as NewTextFieldProps} from '../../incubator/TextField';
7+
import {TextFieldMethods, TextFieldProps as NewTextFieldProps} from '../textField';
88
import {TouchableOpacityProps} from '../touchableOpacity';
99

1010
// Note: enum values are uppercase due to legacy
@@ -54,10 +54,6 @@ export type PickerBaseProps = Omit<NewTextFieldProps, 'value' | 'onChange'> & {
5454
* Temporary prop required for migration to Picker's new API
5555
*/
5656
migrate?: boolean;
57-
/**
58-
* Temporary prop required for inner text field migration
59-
*/
60-
migrateTextField?: boolean;
6157
/**
6258
* Pass for different field type UI (form, filter or settings)
6359
*/

src/incubator/TextField/CharCounter.tsx renamed to src/components/textField/CharCounter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, {useContext} from 'react';
22
import {StyleSheet} from 'react-native';
33
import _ from 'lodash';
4-
import Text from '../../components/text';
4+
import Text from '../text';
55
import FieldContext from './FieldContext';
66
import {CharCounterProps} from './types';
77

src/incubator/TextField/FloatingPlaceholder.tsx renamed to src/components/textField/FloatingPlaceholder.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {FloatingPlaceholderProps, ValidationMessagePosition} from './types';
55
import {getColorByState, shouldPlaceholderFloat} from './Presenter';
66
import {Colors} from '../../style';
77
import {Constants} from '../../commons/new';
8-
import View from '../../components/view';
9-
import Text from '../../components/text';
8+
import View from '../view';
9+
import Text from '../text';
1010
import FieldContext from './FieldContext';
1111

1212
const FLOATING_PLACEHOLDER_SCALE = 0.875;

src/incubator/TextField/Label.tsx renamed to src/components/textField/Label.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, {useContext, useMemo} from 'react';
22
import {StyleSheet} from 'react-native';
33
import {Colors} from '../../style';
4-
import Text from '../../components/text';
4+
import Text from '../text';
55
import {ColorType, LabelProps, ValidationMessagePosition} from './types';
66
import {getColorByState} from './Presenter';
77
import FieldContext from './FieldContext';

src/incubator/TextField/Presenter.ts renamed to src/components/textField/Presenter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import _ from 'lodash';
2-
import {Colors} from './../../style';
2+
import {Colors} from '../../style';
33
import {ColorType, Validator, FieldContextType, FloatingPlaceholderProps} from './types';
44
// TODO: Fix this import after moving all TextField types to a single file after we move to the new docs
55
import {TextFieldProps} from './index';

src/incubator/TextField/TextField.driver.ts renamed to src/components/textField/TextField.driver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import _ from 'lodash';
22
import {TextFieldProps} from './types';
33
import {ComponentDriver, ComponentDriverArgs} from '../../testkit/Component.driver';
4-
import {TextDriver} from '../../components/text/Text.driver';
4+
import {TextDriver} from '../text/Text.driver';
55

66

77
export class TextFieldDriver extends ComponentDriver<TextFieldProps> {

src/components/textField/TextFieldMigrator.tsx

Lines changed: 0 additions & 80 deletions
This file was deleted.

src/incubator/TextField/ValidationMessage.tsx renamed to src/components/textField/ValidationMessage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, {useContext, useMemo} from 'react';
22
import {StyleSheet} from 'react-native';
3-
import Text from '../../components/text';
3+
import Text from '../text';
44
import FieldContext from './FieldContext';
55
import {getRelevantValidationMessage} from './Presenter';
66
import {ValidationMessageProps} from './types';

0 commit comments

Comments
 (0)