Skip to content

Commit 66a9696

Browse files
committed
chore: modernized packages
1 parent 3a5f5a6 commit 66a9696

File tree

9 files changed

+5813
-3772
lines changed

9 files changed

+5813
-3772
lines changed

__tests__/CountryPicker.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import React from 'react'
22

3-
import { create } from 'react-test-renderer'
3+
import TestRenderer from 'react-test-renderer';
44

55
import CountryPicker from '../src/'
66

77
it('CountryPicker can be created', () => {
8-
const picker = create(
8+
const picker = TestRenderer.create(
99
<CountryPicker countryCode={'US'} onSelect={() => {}} />,
1010
)
1111
expect(picker).toBeDefined()

package.json

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -45,41 +45,45 @@
4545
},
4646
"homepage": "http://xcarpentier.github.io/react-native-country-picker-modal",
4747
"dependencies": {
48-
"@callstack/react-theme-provider": "3.0.3",
49-
"fuse.js": "3.4.5",
50-
"node-emoji": "1.10.0",
51-
"prop-types": "15.7.2",
52-
"react-async-hook": "3.6.1"
48+
"@callstack/react-theme-provider": "^3.0.8",
49+
"fuse.js": "^6.6.2",
50+
"node-emoji": "^1.11.0",
51+
"prop-types": "^15.8.1",
52+
"react-async-hook": "^4.0.0"
5353
},
5454
"devDependencies": {
55-
"@types/jest": "24.0.17",
56-
"@types/node-emoji": "1.8.1",
57-
"@types/prop-types": "15.7.3",
58-
"@types/react": "16.9.4",
59-
"@types/react-native": "0.60.17",
60-
"@types/react-test-renderer": "16.9.1",
61-
"babel-cli": "6.14.0",
62-
"babel-eslint": "6.1.2",
63-
"babel-jest": "24.9.0",
64-
"babel-preset-expo": "^7.0.0",
65-
"expo": "^35.0.0",
66-
"gh-pages": "2.1.1",
55+
"@babel/core": "^7.19.1",
56+
"@types/jest": "^29.0.3",
57+
"@types/node-emoji": "^1.8.2",
58+
"@types/prop-types": "^15.7.5",
59+
"@types/react": "^17.0.39",
60+
"@types/react-native": "^0.70.3",
61+
"@types/react-test-renderer": "^18.0.0",
62+
"babel-cli": "^6.26.0",
63+
"babel-eslint": "^10.1.0",
64+
"babel-jest": "^29.0.3",
65+
"babel-preset-expo": "^9.2.0",
66+
"expo": "^46.0.10",
67+
"gh-pages": "^4.0.0",
6768
"husky": "^3.0.0",
68-
"jest-expo": "^35.0.0",
69-
"json": "^9.0.6",
70-
"prettier": "1.18.0",
71-
"react": "16.8.3",
72-
"react-dom": "16.8.3",
73-
"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
74-
"react-native-web": "^0.13.18",
75-
"react-test-renderer": "16.8.3",
76-
"tslint": "5.12.0",
77-
"tslint-config-prettier": "1.17.0",
78-
"typescript": "3.4.5",
79-
"world-countries": "2.1.0"
69+
"jest": "^29.0.3",
70+
"jest-environment-jsdom": "^29.0.3",
71+
"jest-expo": "^46.0.1",
72+
"json": "^11.0.0",
73+
"prettier": "^2.7.1",
74+
"react": "^18.0.0",
75+
"react-dom": "^18.0.0",
76+
"react-native": "^0.69.5",
77+
"react-native-web": "^0.18.9",
78+
"react-test-renderer": "^18.0.0",
79+
"tslint": "^6.1.3",
80+
"tslint-config-prettier": "^1.18.0",
81+
"typescript": "^4.8.3",
82+
"world-countries": "^4.0.0"
8083
},
8184
"jest": {
8285
"preset": "react-native",
86+
"testEnvironment": "jsdom",
8387
"moduleFileExtensions": [
8488
"js",
8589
"jsx",
@@ -104,6 +108,8 @@
104108
}
105109
},
106110
"resolutions": {
111+
"@types/react": "17.0.14",
112+
"@types/react-dom": "17.0.14",
107113
"mem": "^4.0.0"
108114
}
109115
}

src/CloseButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,4 @@ export default Platform.select({
101101
ios: CloseButtonIOS,
102102
android: CloseButtonAndroid,
103103
web: CloseButtonIOS
104-
})
104+
}) as (props: CloseButtonProps) => JSX.Element

src/CountryList.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,12 @@ export const CountryList = (props: CountryListProps) => {
215215
}, [filterFocus])
216216

217217
const initialNumToRender = Math.round(height / (itemHeight || 1))
218+
219+
const searchResult = search(filter, data) as Country[]
220+
218221
return (
219222
<View style={[styles.container, { backgroundColor }]}>
220223
<FlatList
221-
onScrollToIndexFailed
222224
ref={flatListRef}
223225
testID='list-countries'
224226
keyboardShouldPersistTaps='handled'
@@ -237,13 +239,13 @@ export const CountryList = (props: CountryListProps) => {
237239
onSelect,
238240
})}
239241
{...{
240-
data: search(filter, data),
242+
data: searchResult,
241243
keyExtractor,
242244
onScrollToIndexFailed,
243245
ItemSeparatorComponent,
244246
initialNumToRender,
245247
}}
246-
{...flatListProps}
248+
{...flatListProps}
247249
/>
248250
{withAlphaFilter && (
249251
<ScrollView

src/CountryPicker.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import {
88
ImageStyle,
99
} from 'react-native'
1010
import { CountryModal } from './CountryModal'
11-
import { HeaderModal } from './HeaderModal'
11+
import { HeaderModal, HeaderModalProps } from './HeaderModal'
1212
import { Country, CountryCode, FlagType, Region, Subregion } from './types'
1313
import { CountryFilter, CountryFilterProps } from './CountryFilter'
14-
import { FlagButton } from './FlagButton'
14+
import { FlagButton, FlagButtonProps } from './FlagButton'
1515
import { useContext } from './CountryContext'
1616
import { CountryList } from './CountryList'
1717

@@ -22,17 +22,21 @@ interface State {
2222
filterFocus?: boolean
2323
}
2424

25+
interface RenderFlagButtonProps extends FlagButtonProps { renderFlagButton?(props: FlagButtonProps): ReactNode }
26+
2527
const renderFlagButton = (
26-
props: FlagButton['props'] & CountryPickerProps['renderFlagButton'],
28+
props: RenderFlagButtonProps,
2729
): ReactNode =>
2830
props.renderFlagButton ? (
2931
props.renderFlagButton(props)
3032
) : (
3133
<FlagButton {...props} />
3234
)
3335

36+
interface RenderFilterProps extends CountryFilterProps { renderCountryFilter?(props: CountryFilterProps): ReactNode }
37+
3438
const renderFilter = (
35-
props: CountryFilter['props'] & CountryPickerProps['renderCountryFilter'],
39+
props: RenderFilterProps
3640
): ReactNode =>
3741
props.renderCountryFilter ? (
3842
props.renderCountryFilter(props)
@@ -70,8 +74,8 @@ interface CountryPickerProps {
7074
closeButtonImage?: ImageSourcePropType
7175
closeButtonStyle?: StyleProp<ViewStyle>
7276
closeButtonImageStyle?: StyleProp<ImageStyle>
73-
renderFlagButton?(props: FlagButton['props']): ReactNode
74-
renderCountryFilter?(props: CountryFilter['props']): ReactNode
77+
renderFlagButton?(props: FlagButtonProps): ReactNode
78+
renderCountryFilter?(props: CountryFilterProps): ReactNode
7579
onSelect(country: Country): void
7680
onOpen?(): void
7781
onClose?(): void
@@ -161,7 +165,7 @@ export const CountryPicker = (props: CountryPickerProps) => {
161165
renderFlagButton: renderButton,
162166
onOpen,
163167
containerButtonStyle,
164-
placeholder,
168+
placeholder: placeholder || 'Select Country',
165169
}
166170

167171
useEffect(() => {
@@ -199,7 +203,7 @@ export const CountryPicker = (props: CountryPickerProps) => {
199203
closeButtonStyle,
200204
withCloseButton,
201205
}}
202-
renderFilter={(props: CountryFilter['props']) =>
206+
renderFilter={(props: HeaderModalProps) =>
203207
renderFilter({
204208
...props,
205209
allowFontScaling,

src/CountryService.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,19 @@ export const loadDataAsync = ((data: DataCountry) => (
3535
.then((response: Response) => response.json())
3636
.then((remoteData: any) => {
3737
data.imageCountries = remoteData
38-
resolve(data.imageCountries)
38+
resolve(data.imageCountries!)
3939
})
4040
.catch(reject)
4141
} else {
42-
resolve(data.imageCountries)
42+
resolve(data.imageCountries!)
4343
}
4444
break
4545
default:
4646
if (!data.emojiCountries) {
4747
data.emojiCountries = require('./assets/data/countries-emoji.json')
48-
resolve(data.emojiCountries)
48+
resolve(data.emojiCountries!)
4949
} else {
50-
resolve(data.emojiCountries)
50+
resolve(data.emojiCountries!)
5151
}
5252
break
5353
}
@@ -140,26 +140,28 @@ export const getCountriesAsync = async (
140140

141141
const countries = newCountryCodeList.filter(isCountryPresent(countriesRaw))
142142
.map((cca2: CountryCode) => ({
143+
// @ts-ignore
143144
cca2,
144145
...{
145146
...countriesRaw[cca2],
146147
name:
147-
(countriesRaw[cca2].name as TranslationLanguageCodeMap)[
148-
translation
149-
] ||
150-
(countriesRaw[cca2].name as TranslationLanguageCodeMap)['common'],
148+
(countriesRaw[cca2].name as TranslationLanguageCodeMap)[
149+
translation
150+
] ||
151+
(countriesRaw[cca2].name as TranslationLanguageCodeMap)['common'],
151152
},
152153
}))
153154
.filter(isRegion(region))
154155
.filter(isSubregion(subregion))
155156
.filter(isIncluded(countryCodes))
156157
.filter(isExcluded(excludeCountries))
157-
158+
158159
return countries
159160

160161
} else {
161162
const countries = CountryCodeList.filter(isCountryPresent(countriesRaw))
162163
.map((cca2: CountryCode) => ({
164+
// @ts-ignore
163165
cca2,
164166
...{
165167
...countriesRaw[cca2],
@@ -195,7 +197,7 @@ let fuse: Fuse<Country>
195197
export const search = (
196198
filter: string = '',
197199
data: Country[] = [],
198-
options: Fuse.FuseOptions<any> = DEFAULT_FUSE_OPTION,
200+
options: Fuse.IFuseOptions<any> = DEFAULT_FUSE_OPTION,
199201
) => {
200202
if (data.length === 0) {
201203
return []

src/HeaderModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const styles = StyleSheet.create({
1616
}
1717
})
1818

19-
interface HeaderModalProps {
19+
export interface HeaderModalProps {
2020
withFilter?: boolean
2121
withCloseButton?: boolean
2222
closeButtonImage?: ImageSourcePropType

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"noFallthroughCasesInSwitch": true,
3030
"strictPropertyInitialization": false,
3131
"lib": ["dom", "esnext"],
32-
"typeRoots": ["./node_modules/@types", "./@types"]
32+
"typeRoots": ["./node_modules/@types", "./@types"],
33+
"types": []
3334
},
3435
"exclude": ["node_modules"]
3536
}

0 commit comments

Comments
 (0)