diff --git a/.eslintrc.js b/.eslintrc.js index 35a4a333f8a..4909a24fe79 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -79,6 +79,7 @@ module.exports = { }, ], curly: 'error', + 'react/display-name': 'error', }, }, { diff --git a/__mocks__/react-native-safe-area-context.js b/__mocks__/react-native-safe-area-context.js index 4b4af7841c2..b31ed670b81 100644 --- a/__mocks__/react-native-safe-area-context.js +++ b/__mocks__/react-native-safe-area-context.js @@ -20,13 +20,18 @@ function withSafeAreaInsets(WrappedComponent) { /> ); } - return forwardRef((props, ref) => ( + + const WithSafeAreaInsetsWithRef = forwardRef((props, ref) => ( )); + + WithSafeAreaInsetsWithRef.displayName = 'WithSafeAreaInsetsWithRef'; + + return WithSafeAreaInsetsWithRef; } const SafeAreaView = View; diff --git a/package-lock.json b/package-lock.json index fb7c3a3b7c6..f7ce98fdf11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -193,7 +193,7 @@ "electron-builder": "24.6.4", "eslint": "^7.6.0", "eslint-config-airbnb-typescript": "^17.1.0", - "eslint-config-expensify": "^2.0.39", + "eslint-config-expensify": "^2.0.42", "eslint-config-prettier": "^8.8.0", "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsdoc": "^46.2.6", @@ -28375,9 +28375,9 @@ } }, "node_modules/eslint-config-expensify": { - "version": "2.0.39", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.39.tgz", - "integrity": "sha512-DIxR3k99ZIDPE2NK+WLLRWpoDq06gTXdY8XZg9Etd1UqZ7fXm/Yz3/QkTxu7CH7UaXbCH3P4PTo023ULQGKOSw==", + "version": "2.0.42", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.42.tgz", + "integrity": "sha512-TNwbfIGjOp4EjT6HKEpp10mr6dkBNCNMTeMmpuQyS0Nqv1tRGJltoU3GFmUHJywrLkEmu21iC0NNMmoJ1XzmLg==", "dev": true, "dependencies": { "@lwc/eslint-plugin-lwc": "^0.11.0", @@ -73609,9 +73609,9 @@ } }, "eslint-config-expensify": { - "version": "2.0.39", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.39.tgz", - "integrity": "sha512-DIxR3k99ZIDPE2NK+WLLRWpoDq06gTXdY8XZg9Etd1UqZ7fXm/Yz3/QkTxu7CH7UaXbCH3P4PTo023ULQGKOSw==", + "version": "2.0.42", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.42.tgz", + "integrity": "sha512-TNwbfIGjOp4EjT6HKEpp10mr6dkBNCNMTeMmpuQyS0Nqv1tRGJltoU3GFmUHJywrLkEmu21iC0NNMmoJ1XzmLg==", "dev": true, "requires": { "@lwc/eslint-plugin-lwc": "^0.11.0", diff --git a/package.json b/package.json index 8421b9508b1..18886571cef 100644 --- a/package.json +++ b/package.json @@ -240,7 +240,7 @@ "electron-builder": "24.6.4", "eslint": "^7.6.0", "eslint-config-airbnb-typescript": "^17.1.0", - "eslint-config-expensify": "^2.0.39", + "eslint-config-expensify": "^2.0.42", "eslint-config-prettier": "^8.8.0", "eslint-plugin-jest": "^24.1.0", "eslint-plugin-jsdoc": "^46.2.6", diff --git a/src/components/AddressSearch/index.js b/src/components/AddressSearch/index.js index 3e676b811c1..b84e67df634 100644 --- a/src/components/AddressSearch/index.js +++ b/src/components/AddressSearch/index.js @@ -499,15 +499,14 @@ AddressSearch.propTypes = propTypes; AddressSearch.defaultProps = defaultProps; AddressSearch.displayName = 'AddressSearch'; -export default compose( - withNetwork(), - withLocalize, -)( - React.forwardRef((props, ref) => ( - - )), -); +const AddressSearchWithRef = React.forwardRef((props, ref) => ( + +)); + +AddressSearchWithRef.displayName = 'AddressSearchWithRef'; + +export default compose(withNetwork(), withLocalize)(AddressSearchWithRef); diff --git a/src/components/AmountTextInput.js b/src/components/AmountTextInput.js index cc2e1e1e872..d110fe39cd6 100644 --- a/src/components/AmountTextInput.js +++ b/src/components/AmountTextInput.js @@ -64,10 +64,14 @@ AmountTextInput.propTypes = propTypes; AmountTextInput.defaultProps = defaultProps; AmountTextInput.displayName = 'AmountTextInput'; -export default React.forwardRef((props, ref) => ( +const AmountTextInputWithRef = React.forwardRef((props, ref) => ( )); + +AmountTextInputWithRef.displayName = 'AmountTextInputWithRef'; + +export default AmountTextInputWithRef; diff --git a/src/components/Attachments/AttachmentCarousel/Pager/index.js b/src/components/Attachments/AttachmentCarousel/Pager/index.js index d10a5abad6b..e5feaedf63b 100644 --- a/src/components/Attachments/AttachmentCarousel/Pager/index.js +++ b/src/components/Attachments/AttachmentCarousel/Pager/index.js @@ -171,10 +171,14 @@ function AttachmentCarouselPager({ AttachmentCarouselPager.propTypes = pagerPropTypes; AttachmentCarouselPager.defaultProps = pagerDefaultProps; -export default React.forwardRef((props, ref) => ( +const AttachmentCarouselPagerWithRef = React.forwardRef((props, ref) => ( )); + +AttachmentCarouselPagerWithRef.displayName = 'AttachmentCarouselPagerWithRef'; + +export default AttachmentCarouselPagerWithRef; diff --git a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.js b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.js index 40e08d87690..7ba1e51bcdd 100644 --- a/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.js +++ b/src/components/AutoCompleteSuggestions/BaseAutoCompleteSuggestions.js @@ -110,10 +110,14 @@ function BaseAutoCompleteSuggestions(props) { BaseAutoCompleteSuggestions.propTypes = propTypes; BaseAutoCompleteSuggestions.displayName = 'BaseAutoCompleteSuggestions'; -export default React.forwardRef((props, ref) => ( +const BaseAutoCompleteSuggestionsWithRef = React.forwardRef((props, ref) => ( )); + +BaseAutoCompleteSuggestionsWithRef.displayName = 'BaseAutoCompleteSuggestionsWithRef'; + +export default BaseAutoCompleteSuggestionsWithRef; diff --git a/src/components/BaseMiniContextMenuItem.js b/src/components/BaseMiniContextMenuItem.js index ffbc5ee76d9..cf7ff4d95b0 100644 --- a/src/components/BaseMiniContextMenuItem.js +++ b/src/components/BaseMiniContextMenuItem.js @@ -90,10 +90,14 @@ BaseMiniContextMenuItem.propTypes = propTypes; BaseMiniContextMenuItem.defaultProps = defaultProps; BaseMiniContextMenuItem.displayName = 'BaseMiniContextMenuItem'; -export default React.forwardRef((props, ref) => ( +const BaseMiniContextMenuItemWithRef = React.forwardRef((props, ref) => ( )); + +BaseMiniContextMenuItemWithRef.displayName = 'BaseMiniContextMenuItemWithRef'; + +export default BaseMiniContextMenuItemWithRef; diff --git a/src/components/CheckboxWithLabel.js b/src/components/CheckboxWithLabel.js index 63c067c9323..5c45475c9e9 100644 --- a/src/components/CheckboxWithLabel.js +++ b/src/components/CheckboxWithLabel.js @@ -130,10 +130,14 @@ CheckboxWithLabel.propTypes = propTypes; CheckboxWithLabel.defaultProps = defaultProps; CheckboxWithLabel.displayName = 'CheckboxWithLabel'; -export default React.forwardRef((props, ref) => ( +const CheckboxWithLabelWithRef = React.forwardRef((props, ref) => ( )); + +CheckboxWithLabelWithRef.displayName = 'CheckboxWithLabelWithRef'; + +export default CheckboxWithLabelWithRef; diff --git a/src/components/Composer/index.android.js b/src/components/Composer/index.android.js index 1132efa9e50..d5013e9340e 100644 --- a/src/components/Composer/index.android.js +++ b/src/components/Composer/index.android.js @@ -131,10 +131,14 @@ function Composer({shouldClear, onClear, isDisabled, maxLines, forwardedRef, isC Composer.propTypes = propTypes; Composer.defaultProps = defaultProps; -export default React.forwardRef((props, ref) => ( +const ComposerWithRef = React.forwardRef((props, ref) => ( )); + +ComposerWithRef.displayName = 'ComposerWithRef'; + +export default ComposerWithRef; diff --git a/src/components/Composer/index.ios.js b/src/components/Composer/index.ios.js index 0b2c93f6639..d073ad8287f 100644 --- a/src/components/Composer/index.ios.js +++ b/src/components/Composer/index.ios.js @@ -132,10 +132,14 @@ function Composer({shouldClear, onClear, isDisabled, maxLines, forwardedRef, isC Composer.propTypes = propTypes; Composer.defaultProps = defaultProps; -export default React.forwardRef((props, ref) => ( +const ComposerWithRef = React.forwardRef((props, ref) => ( )); + +ComposerWithRef.displayName = 'ComposerWithRef'; + +export default ComposerWithRef; diff --git a/src/components/Composer/index.js b/src/components/Composer/index.js index ad7a84cc182..3e692171843 100755 --- a/src/components/Composer/index.js +++ b/src/components/Composer/index.js @@ -489,16 +489,14 @@ function Composer({ Composer.propTypes = propTypes; Composer.defaultProps = defaultProps; -export default compose( - withLocalize, - withWindowDimensions, - withNavigation, -)( - React.forwardRef((props, ref) => ( - - )), -); +const ComposerWithRef = React.forwardRef((props, ref) => ( + +)); + +ComposerWithRef.displayName = 'ComposerWithRef'; + +export default compose(withLocalize, withWindowDimensions, withNavigation)(ComposerWithRef); diff --git a/src/components/ContextMenuItem.js b/src/components/ContextMenuItem.js index 4c740caea78..010e971784c 100644 --- a/src/components/ContextMenuItem.js +++ b/src/components/ContextMenuItem.js @@ -109,10 +109,14 @@ ContextMenuItem.propTypes = propTypes; ContextMenuItem.defaultProps = defaultProps; ContextMenuItem.displayName = 'ContextMenuItem'; -export default forwardRef((props, ref) => ( +const ContextMenuItemWithRef = forwardRef((props, ref) => ( )); + +ContextMenuItemWithRef.displayName = 'ContextMenuItemWithRef'; + +export default ContextMenuItemWithRef; diff --git a/src/components/CountrySelector.js b/src/components/CountrySelector.js index 2788f3cea8e..3dac127b196 100644 --- a/src/components/CountrySelector.js +++ b/src/components/CountrySelector.js @@ -68,10 +68,14 @@ CountrySelector.propTypes = propTypes; CountrySelector.defaultProps = defaultProps; CountrySelector.displayName = 'CountrySelector'; -export default React.forwardRef((props, ref) => ( +const CountrySelectorWithRef = React.forwardRef((props, ref) => ( )); + +CountrySelectorWithRef.displayName = 'CountrySelectorWithRef'; + +export default CountrySelectorWithRef; diff --git a/src/components/DatePicker/index.ios.js b/src/components/DatePicker/index.ios.js index ef40aecb6f8..ea53492b34a 100644 --- a/src/components/DatePicker/index.ios.js +++ b/src/components/DatePicker/index.ios.js @@ -138,10 +138,14 @@ DatePicker.displayName = 'DatePicker'; * locale. Otherwise the spinner would be present in the system locale and it would be weird if it happens * that the modal buttons are in one locale (app) while the (spinner) month names are another (system) */ -export default React.forwardRef((props, ref) => ( +const DatePickerWithRef = React.forwardRef((props, ref) => ( )); + +DatePickerWithRef.displayName = 'DatePickerWithRef'; + +export default DatePickerWithRef; diff --git a/src/components/DatePicker/index.js b/src/components/DatePicker/index.js index d14886fd1c5..163f120b8b9 100644 --- a/src/components/DatePicker/index.js +++ b/src/components/DatePicker/index.js @@ -77,10 +77,14 @@ DatePicker.displayName = 'DatePicker'; DatePicker.propTypes = propTypes; DatePicker.defaultProps = defaultProps; -export default React.forwardRef((props, ref) => ( +const DatePickerWithRef = React.forwardRef((props, ref) => ( )); + +DatePickerWithRef.displayName = 'DatePickerWithRef'; + +export default DatePickerWithRef; diff --git a/src/components/EmojiPicker/EmojiPickerButtonDropdown.js b/src/components/EmojiPicker/EmojiPickerButtonDropdown.js index 0dc967d257d..a1a22d8c50d 100644 --- a/src/components/EmojiPicker/EmojiPickerButtonDropdown.js +++ b/src/components/EmojiPicker/EmojiPickerButtonDropdown.js @@ -76,12 +76,15 @@ function EmojiPickerButtonDropdown(props) { EmojiPickerButtonDropdown.propTypes = propTypes; EmojiPickerButtonDropdown.defaultProps = defaultProps; EmojiPickerButtonDropdown.displayName = 'EmojiPickerButtonDropdown'; -export default withLocalize( - React.forwardRef((props, ref) => ( - - )), -); + +const EmojiPickerButtonDropdownWithRef = React.forwardRef((props, ref) => ( + +)); + +EmojiPickerButtonDropdownWithRef.displayName = 'EmojiPickerButtonDropdownWithRef'; + +export default withLocalize(EmojiPickerButtonDropdownWithRef); diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.js b/src/components/EmojiPicker/EmojiPickerMenu/index.js index aea3b0f5b98..48daa983b5b 100755 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.js +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.js @@ -526,6 +526,16 @@ function EmojiPickerMenu(props) { EmojiPickerMenu.propTypes = propTypes; EmojiPickerMenu.defaultProps = defaultProps; +const EmojiPickerMenuWithRef = React.forwardRef((props, ref) => ( + +)); + +EmojiPickerMenuWithRef.displayName = 'EmojiPickerMenuWithRef'; + export default compose( withLocalize, withOnyx({ @@ -536,12 +546,4 @@ export default compose( key: ONYXKEYS.FREQUENTLY_USED_EMOJIS, }, }), -)( - React.forwardRef((props, ref) => ( - - )), -); +)(EmojiPickerMenuWithRef); diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js index fe8c3e275ad..b54b67294d4 100644 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js @@ -201,6 +201,16 @@ EmojiPickerMenu.displayName = 'EmojiPickerMenu'; EmojiPickerMenu.propTypes = propTypes; EmojiPickerMenu.defaultProps = defaultProps; +const EmojiPickerMenuWithRef = React.forwardRef((props, ref) => ( + +)); + +EmojiPickerMenuWithRef.displayName = 'EmojiPickerMenuWithRef'; + export default compose( withLocalize, withOnyx({ @@ -211,12 +221,4 @@ export default compose( key: ONYXKEYS.FREQUENTLY_USED_EMOJIS, }, }), -)( - React.forwardRef((props, ref) => ( - - )), -); +)(EmojiPickerMenuWithRef); diff --git a/src/components/FlatList/index.android.js b/src/components/FlatList/index.android.js index 8763488cf18..d047124da91 100644 --- a/src/components/FlatList/index.android.js +++ b/src/components/FlatList/index.android.js @@ -65,10 +65,14 @@ function CustomFlatList(props) { CustomFlatList.propTypes = propTypes; CustomFlatList.defaultProps = defaultProps; -export default forwardRef((props, ref) => ( +const CustomFlatListWithRef = forwardRef((props, ref) => ( )); + +CustomFlatListWithRef.displayName = 'CustomFlatListWithRef'; + +export default CustomFlatListWithRef; diff --git a/src/components/FloatingActionButton.js b/src/components/FloatingActionButton.js index ef97cd1822a..947acf801f1 100644 --- a/src/components/FloatingActionButton.js +++ b/src/components/FloatingActionButton.js @@ -118,10 +118,14 @@ FloatingActionButton.defaultProps = defaultProps; const FloatingActionButtonWithLocalize = withLocalize(FloatingActionButton); -export default React.forwardRef((props, ref) => ( +const FloatingActionButtonWithLocalizeWithRef = React.forwardRef((props, ref) => ( )); + +FloatingActionButtonWithLocalizeWithRef.displayName = 'FloatingActionButtonWithLocalizeWithRef'; + +export default FloatingActionButtonWithLocalizeWithRef; diff --git a/src/components/Form/InputWrapper.js b/src/components/Form/InputWrapper.js index 43064b5a669..8a87bc2f5a5 100644 --- a/src/components/Form/InputWrapper.js +++ b/src/components/Form/InputWrapper.js @@ -25,10 +25,14 @@ InputWrapper.propTypes = propTypes; InputWrapper.defaultProps = defaultProps; InputWrapper.displayName = 'InputWrapper'; -export default forwardRef((props, ref) => ( +const InputWrapperWithRef = forwardRef((props, ref) => ( )); + +InputWrapperWithRef.displayName = 'InputWrapperWithRef'; + +export default InputWrapperWithRef; diff --git a/src/components/FormScrollView.js b/src/components/FormScrollView.js index aa84bfefcc2..b52c8d00c51 100644 --- a/src/components/FormScrollView.js +++ b/src/components/FormScrollView.js @@ -8,7 +8,7 @@ const propTypes = { children: PropTypes.node.isRequired, }; -const FormScrollView = React.forwardRef((props, ref) => ( +const FormScrollViewWithRef = React.forwardRef((props, ref) => ( ( )); -FormScrollView.propTypes = propTypes; -export default FormScrollView; +FormScrollViewWithRef.displayName = 'FormScrollViewWithRef'; +FormScrollViewWithRef.propTypes = propTypes; +export default FormScrollViewWithRef; diff --git a/src/components/FormSubmit/index.js b/src/components/FormSubmit/index.js index 7f76f77fe54..343f23bc108 100644 --- a/src/components/FormSubmit/index.js +++ b/src/components/FormSubmit/index.js @@ -75,10 +75,14 @@ function FormSubmit({innerRef, children, onSubmit, style}) { FormSubmit.propTypes = formSubmitPropTypes.propTypes; FormSubmit.defaultProps = formSubmitPropTypes.defaultProps; -export default React.forwardRef((props, ref) => ( +const FormSubmitWithRef = React.forwardRef((props, ref) => ( )); + +FormSubmitWithRef.displayName = 'FormSubmitWithRef'; + +export default FormSubmitWithRef; diff --git a/src/components/InvertedFlatList/BaseInvertedFlatList.js b/src/components/InvertedFlatList/BaseInvertedFlatList.js index 92543dbf719..baee08eae4c 100644 --- a/src/components/InvertedFlatList/BaseInvertedFlatList.js +++ b/src/components/InvertedFlatList/BaseInvertedFlatList.js @@ -145,10 +145,14 @@ BaseInvertedFlatList.propTypes = propTypes; BaseInvertedFlatList.defaultProps = defaultProps; BaseInvertedFlatList.displayName = 'BaseInvertedFlatList'; -export default forwardRef((props, ref) => ( +const BaseInvertedFlatListWithRef = forwardRef((props, ref) => ( )); + +BaseInvertedFlatListWithRef.displayName = 'BaseInvertedFlatListWithRef'; + +export default BaseInvertedFlatListWithRef; diff --git a/src/components/InvertedFlatList/index.js b/src/components/InvertedFlatList/index.js index 564db6296c9..d328ca93575 100644 --- a/src/components/InvertedFlatList/index.js +++ b/src/components/InvertedFlatList/index.js @@ -131,10 +131,14 @@ InvertedFlatList.defaultProps = { onScroll: () => {}, }; -export default forwardRef((props, ref) => ( +const InvertedFlatListWithRef = forwardRef((props, ref) => ( )); + +InvertedFlatListWithRef.displayName = 'InvertedFlatListWithRef'; + +export default InvertedFlatListWithRef; diff --git a/src/components/InvertedFlatList/index.native.js b/src/components/InvertedFlatList/index.native.js index ece86032d80..8473b602d45 100644 --- a/src/components/InvertedFlatList/index.native.js +++ b/src/components/InvertedFlatList/index.native.js @@ -2,7 +2,7 @@ import React, {forwardRef} from 'react'; import BaseInvertedFlatList from './BaseInvertedFlatList'; import CellRendererComponent from './CellRendererComponent'; -export default forwardRef((props, ref) => ( +const BaseInvertedFlatListWithRef = forwardRef((props, ref) => ( ( removeClippedSubviews={false} /> )); + +BaseInvertedFlatListWithRef.displayName = 'BaseInvertedFlatListWithRef'; + +export default BaseInvertedFlatListWithRef; diff --git a/src/components/MagicCodeInput.js b/src/components/MagicCodeInput.js index 3a9cc684519..8b68d37d9c7 100644 --- a/src/components/MagicCodeInput.js +++ b/src/components/MagicCodeInput.js @@ -356,12 +356,14 @@ function MagicCodeInput(props) { MagicCodeInput.propTypes = propTypes; MagicCodeInput.defaultProps = defaultProps; -export default withNetwork()( - forwardRef((props, ref) => ( - - )), -); +const MagicCodeInputWithRef = forwardRef((props, ref) => ( + +)); + +MagicCodeInputWithRef.displayName = 'MagicCodeInputWithRef'; + +export default withNetwork()(MagicCodeInputWithRef); diff --git a/src/components/MenuItemWithTopDescription.js b/src/components/MenuItemWithTopDescription.js index ee51d2f41cc..94f44a1869b 100644 --- a/src/components/MenuItemWithTopDescription.js +++ b/src/components/MenuItemWithTopDescription.js @@ -19,10 +19,14 @@ function MenuItemWithTopDescription(props) { MenuItemWithTopDescription.propTypes = propTypes; MenuItemWithTopDescription.displayName = 'MenuItemWithTopDescription'; -export default React.forwardRef((props, ref) => ( +const MenuItemWithTopDescriptionWithRef = React.forwardRef((props, ref) => ( )); + +MenuItemWithTopDescriptionWithRef.displayName = 'MenuItemWithTopDescriptionWithRef'; + +export default MenuItemWithTopDescriptionWithRef; diff --git a/src/components/Modal/BaseModal.js b/src/components/Modal/BaseModal.js index 051c4ba3f80..d1a906efc95 100644 --- a/src/components/Modal/BaseModal.js +++ b/src/components/Modal/BaseModal.js @@ -219,10 +219,14 @@ BaseModal.propTypes = propTypes; BaseModal.defaultProps = defaultProps; BaseModal.displayName = 'BaseModal'; -export default forwardRef((props, ref) => ( +const BaseModalWithRef = forwardRef((props, ref) => ( )); + +BaseModalWithRef.displayName = 'BaseModalWithRef'; + +export default BaseModalWithRef; diff --git a/src/components/OptionsList/index.js b/src/components/OptionsList/index.js index 2164b479df9..017d9c23d9a 100644 --- a/src/components/OptionsList/index.js +++ b/src/components/OptionsList/index.js @@ -54,12 +54,14 @@ OptionsList.displayName = 'OptionsList'; OptionsList.propTypes = propTypes; OptionsList.defaultProps = defaultProps; -export default withWindowDimensions( - forwardRef((props, ref) => ( - - )), -); +const OptionsListWithRef = forwardRef((props, ref) => ( + +)); + +OptionsListWithRef.displayName = 'OptionsListWithRef'; + +export default withWindowDimensions(OptionsListWithRef); diff --git a/src/components/Picker/BasePicker.js b/src/components/Picker/BasePicker.js index 697dfc509d2..c69adec097c 100644 --- a/src/components/Picker/BasePicker.js +++ b/src/components/Picker/BasePicker.js @@ -283,7 +283,7 @@ BasePicker.propTypes = propTypes; BasePicker.defaultProps = defaultProps; BasePicker.displayName = 'BasePicker'; -export default React.forwardRef((props, ref) => ( +const BasePickerWithRef = React.forwardRef((props, ref) => ( ( key={props.inputID} /> )); + +BasePickerWithRef.displayName = 'BasePickerWithRef'; + +export default BasePickerWithRef; diff --git a/src/components/Picker/index.js b/src/components/Picker/index.js index d0a6a491188..8e49a42e893 100644 --- a/src/components/Picker/index.js +++ b/src/components/Picker/index.js @@ -13,7 +13,7 @@ const additionalPickerEvents = (onMouseDown, onChange) => ({ }, }); -export default forwardRef((props, ref) => ( +const BasePickerWithRef = forwardRef((props, ref) => ( ( additionalPickerEvents={additionalPickerEvents} /> )); + +BasePickerWithRef.displayName = 'BasePickerWithRef'; + +export default BasePickerWithRef; diff --git a/src/components/Picker/index.native.js b/src/components/Picker/index.native.js index 4032e79b6d1..f441609fd4d 100644 --- a/src/components/Picker/index.native.js +++ b/src/components/Picker/index.native.js @@ -1,10 +1,14 @@ import React, {forwardRef} from 'react'; import BasePicker from './BasePicker'; -export default forwardRef((props, ref) => ( +const BasePickerWithRef = forwardRef((props, ref) => ( )); + +BasePickerWithRef.displayName = 'BasePickerWithRef'; + +export default BasePickerWithRef; diff --git a/src/components/Pressable/GenericPressable/index.js b/src/components/Pressable/GenericPressable/index.js index 774ac3ac509..8247d0c3567 100644 --- a/src/components/Pressable/GenericPressable/index.js +++ b/src/components/Pressable/GenericPressable/index.js @@ -21,5 +21,6 @@ const WebGenericPressable = forwardRef((props, ref) => ( WebGenericPressable.propTypes = GenericPressablePropTypes.pressablePropTypes; WebGenericPressable.defaultProps = GenericPressablePropTypes.defaultProps; +WebGenericPressable.displayName = 'WebGenericPressable'; export default WebGenericPressable; diff --git a/src/components/Pressable/GenericPressable/index.native.js b/src/components/Pressable/GenericPressable/index.native.js index 3de74eda35d..14a2c2bcbf8 100644 --- a/src/components/Pressable/GenericPressable/index.native.js +++ b/src/components/Pressable/GenericPressable/index.native.js @@ -15,5 +15,6 @@ const NativeGenericPressable = forwardRef((props, ref) => ( NativeGenericPressable.propTypes = GenericPressablePropTypes.pressablePropTypes; NativeGenericPressable.defaultProps = GenericPressablePropTypes.defaultProps; +NativeGenericPressable.displayName = 'WebGenericPressable'; export default NativeGenericPressable; diff --git a/src/components/Pressable/PressableWithDelayToggle.js b/src/components/Pressable/PressableWithDelayToggle.js index b55770a6319..c56ab49382b 100644 --- a/src/components/Pressable/PressableWithDelayToggle.js +++ b/src/components/Pressable/PressableWithDelayToggle.js @@ -141,10 +141,14 @@ function PressableWithDelayToggle(props) { PressableWithDelayToggle.propTypes = propTypes; PressableWithDelayToggle.defaultProps = defaultProps; -export default React.forwardRef((props, ref) => ( +const PressableWithDelayToggleWithRef = React.forwardRef((props, ref) => ( )); + +PressableWithDelayToggleWithRef.displayName = 'PressableWithDelayToggleWithRef'; + +export default PressableWithDelayToggleWithRef; diff --git a/src/components/PressableWithSecondaryInteraction/index.js b/src/components/PressableWithSecondaryInteraction/index.js index d84a3f282e9..7eb6f7ca376 100644 --- a/src/components/PressableWithSecondaryInteraction/index.js +++ b/src/components/PressableWithSecondaryInteraction/index.js @@ -117,10 +117,14 @@ PressableWithSecondaryInteraction.propTypes = pressableWithSecondaryInteractionP PressableWithSecondaryInteraction.defaultProps = pressableWithSecondaryInteractionPropTypes.defaultProps; PressableWithSecondaryInteraction.displayName = 'PressableWithSecondaryInteraction'; -export default forwardRef((props, ref) => ( +const PressableWithSecondaryInteractionWithRef = forwardRef((props, ref) => ( )); + +PressableWithSecondaryInteractionWithRef.displayName = 'PressableWithSecondaryInteractionWithRef'; + +export default PressableWithSecondaryInteractionWithRef; diff --git a/src/components/PressableWithSecondaryInteraction/index.native.js b/src/components/PressableWithSecondaryInteraction/index.native.js index 0ca668bb423..1b6690ad2f3 100644 --- a/src/components/PressableWithSecondaryInteraction/index.native.js +++ b/src/components/PressableWithSecondaryInteraction/index.native.js @@ -38,10 +38,14 @@ PressableWithSecondaryInteraction.propTypes = pressableWithSecondaryInteractionP PressableWithSecondaryInteraction.defaultProps = pressableWithSecondaryInteractionPropTypes.defaultProps; PressableWithSecondaryInteraction.displayName = 'PressableWithSecondaryInteraction'; -export default forwardRef((props, ref) => ( +const PressableWithSecondaryInteractionWithRef = forwardRef((props, ref) => ( )); + +PressableWithSecondaryInteractionWithRef.displayName = 'PressableWithSecondaryInteractionWithRef'; + +export default PressableWithSecondaryInteractionWithRef; diff --git a/src/components/QRShare/getQrCodeDownloadFileName.js b/src/components/QRShare/getQrCodeDownloadFileName.js index cc3b38d4234..c1e73a1794f 100644 --- a/src/components/QRShare/getQrCodeDownloadFileName.js +++ b/src/components/QRShare/getQrCodeDownloadFileName.js @@ -1,4 +1,3 @@ -// eslint-disable-next-line rulesdir/display-name-property const getQrCodeDownloadFileName = (title) => `${title}-ShareCode.png`; export default getQrCodeDownloadFileName; diff --git a/src/components/RNTextInput.js b/src/components/RNTextInput.js index 5a790cde91d..30815376ca8 100644 --- a/src/components/RNTextInput.js +++ b/src/components/RNTextInput.js @@ -38,10 +38,14 @@ RNTextInput.propTypes = propTypes; RNTextInput.defaultProps = defaultProps; RNTextInput.displayName = 'RNTextInput'; -export default React.forwardRef((props, ref) => ( +const RNTextInputWithRef = React.forwardRef((props, ref) => ( )); + +RNTextInputWithRef.displayName = 'RNTextInputWithRef'; + +export default RNTextInputWithRef; diff --git a/src/components/Reactions/EmojiReactionBubble.js b/src/components/Reactions/EmojiReactionBubble.js index 818bc8f3330..3e40216bd87 100644 --- a/src/components/Reactions/EmojiReactionBubble.js +++ b/src/components/Reactions/EmojiReactionBubble.js @@ -96,12 +96,14 @@ EmojiReactionBubble.propTypes = propTypes; EmojiReactionBubble.defaultProps = defaultProps; EmojiReactionBubble.displayName = 'EmojiReactionBubble'; -export default withWindowDimensions( - React.forwardRef((props, ref) => ( - - )), -); +const EmojiReactionBubbleWithRef = React.forwardRef((props, ref) => ( + +)); + +EmojiReactionBubbleWithRef.displayName = 'EmojiReactionBubbleWithRef'; + +export default withWindowDimensions(EmojiReactionBubbleWithRef); diff --git a/src/components/RoomNameInput/index.js b/src/components/RoomNameInput/index.js index 37d131108e9..ec9bf7a090a 100644 --- a/src/components/RoomNameInput/index.js +++ b/src/components/RoomNameInput/index.js @@ -71,10 +71,14 @@ RoomNameInput.propTypes = roomNameInputPropTypes.propTypes; RoomNameInput.defaultProps = roomNameInputPropTypes.defaultProps; RoomNameInput.displayName = 'RoomNameInput'; -export default React.forwardRef((props, ref) => ( +const RoomNameInputWithRef = React.forwardRef((props, ref) => ( )); + +RoomNameInputWithRef.displayName = 'RoomNameInputWithRef'; + +export default RoomNameInputWithRef; diff --git a/src/components/RoomNameInput/index.native.js b/src/components/RoomNameInput/index.native.js index 78500a8f0be..9e83a673982 100644 --- a/src/components/RoomNameInput/index.native.js +++ b/src/components/RoomNameInput/index.native.js @@ -53,10 +53,14 @@ RoomNameInput.propTypes = roomNameInputPropTypes.propTypes; RoomNameInput.defaultProps = roomNameInputPropTypes.defaultProps; RoomNameInput.displayName = 'RoomNameInput'; -export default React.forwardRef((props, ref) => ( +const RoomNameInputWithRef = React.forwardRef((props, ref) => ( )); + +RoomNameInputWithRef.displayName = 'RoomNameInputWithRef'; + +export default RoomNameInputWithRef; diff --git a/src/components/ScrollViewWithContext.js b/src/components/ScrollViewWithContext.js index 1d183e25076..01018601a78 100644 --- a/src/components/ScrollViewWithContext.js +++ b/src/components/ScrollViewWithContext.js @@ -51,11 +51,15 @@ function ScrollViewWithContext({onScroll, scrollEventThrottle, children, innerRe ScrollViewWithContext.propTypes = propTypes; ScrollViewWithContext.displayName = 'ScrollViewWithContext'; -export default React.forwardRef((props, ref) => ( +const ScrollViewWithContextWithRef = React.forwardRef((props, ref) => ( )); + +ScrollViewWithContextWithRef.displayName = 'ScrollViewWithContextWithRef'; + +export default ScrollViewWithContextWithRef; export {ScrollContext}; diff --git a/src/components/SectionList/index.android.js b/src/components/SectionList/index.android.js index 7fc74277a28..d214e1748bf 100644 --- a/src/components/SectionList/index.android.js +++ b/src/components/SectionList/index.android.js @@ -1,7 +1,7 @@ import React, {forwardRef} from 'react'; import {SectionList} from 'react-native'; -export default forwardRef((props, ref) => ( +const SectionListWithRef = forwardRef((props, ref) => ( ( removeClippedSubviews /> )); + +SectionListWithRef.displayName = 'SectionListWithRef'; + +export default SectionListWithRef; diff --git a/src/components/StatePicker/index.js b/src/components/StatePicker/index.js index f7f894af2a0..586abc26f70 100644 --- a/src/components/StatePicker/index.js +++ b/src/components/StatePicker/index.js @@ -88,10 +88,14 @@ StatePicker.propTypes = propTypes; StatePicker.defaultProps = defaultProps; StatePicker.displayName = 'StatePicker'; -export default React.forwardRef((props, ref) => ( +const StatePickerWithRef = React.forwardRef((props, ref) => ( )); + +StatePickerWithRef.displayName = 'StatePickerWithRef'; + +export default StatePickerWithRef; diff --git a/src/components/TextInput/index.js b/src/components/TextInput/index.js index 6cefe04e71a..010121282a4 100644 --- a/src/components/TextInput/index.js +++ b/src/components/TextInput/index.js @@ -73,10 +73,14 @@ TextInput.displayName = 'TextInput'; TextInput.propTypes = baseTextInputPropTypes.propTypes; TextInput.defaultProps = baseTextInputPropTypes.defaultProps; -export default React.forwardRef((props, ref) => ( +const TextInputWithRef = React.forwardRef((props, ref) => ( )); + +TextInputWithRef.displayName = 'TextInputWithRef'; + +export default TextInputWithRef; diff --git a/src/components/TextInputWithCurrencySymbol/BaseTextInputWithCurrencySymbol.js b/src/components/TextInputWithCurrencySymbol/BaseTextInputWithCurrencySymbol.js index 6dd1aacb0b0..ac0f4ccbe14 100644 --- a/src/components/TextInputWithCurrencySymbol/BaseTextInputWithCurrencySymbol.js +++ b/src/components/TextInputWithCurrencySymbol/BaseTextInputWithCurrencySymbol.js @@ -63,10 +63,14 @@ BaseTextInputWithCurrencySymbol.propTypes = textInputWithCurrencySymbolPropTypes BaseTextInputWithCurrencySymbol.defaultProps = textInputWithCurrencySymbolPropTypes.defaultProps; BaseTextInputWithCurrencySymbol.displayName = 'BaseTextInputWithCurrencySymbol'; -export default React.forwardRef((props, ref) => ( +const BaseTextInputWithCurrencySymbolWithRef = React.forwardRef((props, ref) => ( )); + +BaseTextInputWithCurrencySymbolWithRef.displayName = 'BaseTextInputWithCurrencySymbolWithRef'; + +export default BaseTextInputWithCurrencySymbolWithRef; diff --git a/src/components/TextInputWithCurrencySymbol/index.android.js b/src/components/TextInputWithCurrencySymbol/index.android.js index e597566d6ff..57b3c96136e 100644 --- a/src/components/TextInputWithCurrencySymbol/index.android.js +++ b/src/components/TextInputWithCurrencySymbol/index.android.js @@ -30,10 +30,14 @@ TextInputWithCurrencySymbol.propTypes = textInputWithCurrencySymbolPropTypes.pro TextInputWithCurrencySymbol.defaultProps = textInputWithCurrencySymbolPropTypes.defaultProps; TextInputWithCurrencySymbol.displayName = 'TextInputWithCurrencySymbol'; -export default React.forwardRef((props, ref) => ( +const TextInputWithCurrencySymbolWithRef = React.forwardRef((props, ref) => ( )); + +TextInputWithCurrencySymbolWithRef.displayName = 'TextInputWithCurrencySymbolWithRef'; + +export default TextInputWithCurrencySymbolWithRef; diff --git a/src/components/TextInputWithCurrencySymbol/index.js b/src/components/TextInputWithCurrencySymbol/index.js index f70134a2e0e..2102882a74a 100644 --- a/src/components/TextInputWithCurrencySymbol/index.js +++ b/src/components/TextInputWithCurrencySymbol/index.js @@ -17,10 +17,14 @@ TextInputWithCurrencySymbol.propTypes = textInputWithCurrencySymbolPropTypes.pro TextInputWithCurrencySymbol.defaultProps = textInputWithCurrencySymbolPropTypes.defaultProps; TextInputWithCurrencySymbol.displayName = 'TextInputWithCurrencySymbol'; -export default React.forwardRef((props, ref) => ( +const TextInputWithCurrencySymbolWithRef = React.forwardRef((props, ref) => ( )); + +TextInputWithCurrencySymbolWithRef.displayName = 'TextInputWithCurrencySymbolWithRef'; + +export default TextInputWithCurrencySymbolWithRef; diff --git a/src/components/TextLink.js b/src/components/TextLink.js index 233aaf50644..3f7b7ff729c 100644 --- a/src/components/TextLink.js +++ b/src/components/TextLink.js @@ -84,10 +84,15 @@ function TextLink(props) { TextLink.defaultProps = defaultProps; TextLink.propTypes = propTypes; TextLink.displayName = 'TextLink'; -export default React.forwardRef((props, ref) => ( + +const TextLinkWithRef = React.forwardRef((props, ref) => ( )); + +TextLinkWithRef.displayName = 'TextLinkWithRef'; + +export default TextLinkWithRef; diff --git a/src/components/ValuePicker/index.js b/src/components/ValuePicker/index.js index 161fbbfadb8..ce248baf707 100644 --- a/src/components/ValuePicker/index.js +++ b/src/components/ValuePicker/index.js @@ -93,10 +93,14 @@ ValuePicker.propTypes = propTypes; ValuePicker.defaultProps = defaultProps; ValuePicker.displayName = 'ValuePicker'; -export default React.forwardRef((props, ref) => ( +const ValuePickerWithRef = React.forwardRef((props, ref) => ( )); + +ValuePickerWithRef.displayName = 'ValuePickerWithRef'; + +export default ValuePickerWithRef; diff --git a/src/components/withAnimatedRef.js b/src/components/withAnimatedRef.js index 71ef130b9ce..bb04c6a599d 100644 --- a/src/components/withAnimatedRef.js +++ b/src/components/withAnimatedRef.js @@ -23,11 +23,15 @@ export default function withAnimatedRef(WrappedComponent) { forwardedRef: undefined, }; - return React.forwardRef((props, ref) => ( + const WithAnimatedRefWithRef = React.forwardRef((props, ref) => ( )); + + WithAnimatedRefWithRef.displayName = 'WithAnimatedRefWithRef'; + + return WithAnimatedRefWithRef; } diff --git a/src/components/withNavigationFallback.js b/src/components/withNavigationFallback.js index e82946c9e04..413d0734507 100644 --- a/src/components/withNavigationFallback.js +++ b/src/components/withNavigationFallback.js @@ -33,11 +33,15 @@ export default function (WrappedComponent) { forwardedRef: undefined, }; - return forwardRef((props, ref) => ( + const WithNavigationFallbackWithRef = forwardRef((props, ref) => ( )); + + WithNavigationFallbackWithRef.displayName = `WithNavigationFallbackWithRef`; + + return WithNavigationFallbackWithRef; } diff --git a/src/components/withTheme.js b/src/components/withTheme.js index 99de2a2c7fc..753a75d2c35 100644 --- a/src/components/withTheme.js +++ b/src/components/withTheme.js @@ -28,13 +28,18 @@ export default function withTheme(WrappedComponent) { WithTheme.defaultProps = { forwardedRef: () => {}, }; - return React.forwardRef((props, ref) => ( + + const WithThemeWithRef = React.forwardRef((props, ref) => ( )); + + WithThemeWithRef.displayName = `WithThemeWithRef`; + + return WithThemeWithRef; } export {withThemePropTypes}; diff --git a/src/components/withThemeStyles.js b/src/components/withThemeStyles.js index 0320fcb7180..63356e20d99 100644 --- a/src/components/withThemeStyles.js +++ b/src/components/withThemeStyles.js @@ -28,13 +28,18 @@ export default function withThemeStyles(WrappedComponent) { WithThemeStyles.defaultProps = { forwardedRef: () => {}, }; - return React.forwardRef((props, ref) => ( + + const WithThemeStylesWithRef = React.forwardRef((props, ref) => ( )); + + WithThemeStylesWithRef.displayName = `WithThemeStylesWithRef`; + + return WithThemeStylesWithRef; } export {withThemeStylesPropTypes}; diff --git a/src/components/withToggleVisibilityView.js b/src/components/withToggleVisibilityView.js index eef5135d02b..c168b49ced2 100644 --- a/src/components/withToggleVisibilityView.js +++ b/src/components/withToggleVisibilityView.js @@ -35,13 +35,18 @@ export default function (WrappedComponent) { forwardedRef: undefined, isVisible: false, }; - return React.forwardRef((props, ref) => ( + + const WithToggleVisibilityViewWithRef = React.forwardRef((props, ref) => ( )); + + WithToggleVisibilityViewWithRef.displayName = `WithToggleVisibilityViewWithRef`; + + return WithToggleVisibilityViewWithRef; } export {toggleVisibilityViewPropTypes}; diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js index cfc8f815e4f..088da657a69 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js @@ -18,17 +18,24 @@ const defaultSubRouteOptions = { */ function createModalStackNavigator(screens) { const ModalStackNavigator = createStackNavigator(); - return () => ( - - {_.map(screens, (getComponent, name) => ( - - ))} - - ); + + function ModalStack() { + return ( + + {_.map(screens, (getComponent, name) => ( + + ))} + + ); + } + + ModalStack.displayName = 'ModalStack'; + + return ModalStack; } const MoneyRequestModalStackNavigator = createModalStackNavigator({ diff --git a/src/pages/AddPersonalBankAccountPage.js b/src/pages/AddPersonalBankAccountPage.js index cb53623caa8..3e7b2ef214e 100644 --- a/src/pages/AddPersonalBankAccountPage.js +++ b/src/pages/AddPersonalBankAccountPage.js @@ -136,6 +136,7 @@ function AddPersonalBankAccountPage({personalBankAccount, plaidData}) { AddPersonalBankAccountPage.displayName = 'AddPersonalBankAccountPage'; AddPersonalBankAccountPage.propTypes = propTypes; AddPersonalBankAccountPage.defaultProps = defaultProps; +AddPersonalBankAccountPage.displayName = 'AddPersonalBankAccountPage'; export default withOnyx({ personalBankAccount: { diff --git a/src/pages/ReimbursementAccount/ReimbursementAccountPage.js b/src/pages/ReimbursementAccount/ReimbursementAccountPage.js index 398a6a7c6c9..2b3127f3116 100644 --- a/src/pages/ReimbursementAccount/ReimbursementAccountPage.js +++ b/src/pages/ReimbursementAccount/ReimbursementAccountPage.js @@ -534,6 +534,7 @@ class ReimbursementAccountPage extends React.Component { ReimbursementAccountPage.propTypes = propTypes; ReimbursementAccountPage.defaultProps = defaultProps; +ReimbursementAccountPage.displayName = 'ReimbursementAccountPage'; export default compose( withNetwork(), diff --git a/src/pages/ReimbursementAccount/RequestorOnfidoStep.js b/src/pages/ReimbursementAccount/RequestorOnfidoStep.js index 474698c1e2b..86cf7ae71aa 100644 --- a/src/pages/ReimbursementAccount/RequestorOnfidoStep.js +++ b/src/pages/ReimbursementAccount/RequestorOnfidoStep.js @@ -83,6 +83,7 @@ function RequestorOnfidoStep({onBackButtonPress, reimbursementAccount, onfidoTok RequestorOnfidoStep.displayName = 'RequestorOnfidoStep'; RequestorOnfidoStep.propTypes = propTypes; RequestorOnfidoStep.defaultProps = defaultProps; +RequestorOnfidoStep.displayName = 'RequestorOnfidoStep'; export default withOnyx({ onfidoToken: { diff --git a/src/pages/SearchPage.js b/src/pages/SearchPage.js index 272fb30de85..c671e7b1a09 100755 --- a/src/pages/SearchPage.js +++ b/src/pages/SearchPage.js @@ -219,6 +219,7 @@ class SearchPage extends Component { SearchPage.propTypes = propTypes; SearchPage.defaultProps = defaultProps; +SearchPage.displayName = 'SearchPage'; export default compose( withLocalize, diff --git a/src/pages/ShareCodePage.js b/src/pages/ShareCodePage.js index e6d36ebc707..f3b68309404 100644 --- a/src/pages/ShareCodePage.js +++ b/src/pages/ShareCodePage.js @@ -122,5 +122,6 @@ class ShareCodePage extends React.Component { ShareCodePage.propTypes = propTypes; ShareCodePage.defaultProps = defaultProps; +ShareCodePage.displayName = 'ShareCodePage'; export default compose(withEnvironment, withLocalize, withCurrentUserPersonalDetails)(ShareCodePage); diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js index 101c3ac0417..fcb49277ef5 100644 --- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js +++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js @@ -595,6 +595,16 @@ ComposerWithSuggestions.propTypes = propTypes; ComposerWithSuggestions.defaultProps = defaultProps; ComposerWithSuggestions.displayName = 'ComposerWithSuggestions'; +const ComposerWithSuggestionsWithRef = React.forwardRef((props, ref) => ( + +)); + +ComposerWithSuggestionsWithRef.displayName = 'ComposerWithSuggestionsWithRef'; + export default compose( withKeyboardState, withOnyx({ @@ -620,12 +630,4 @@ export default compose( initWithStoredValues: false, }, }), -)( - React.forwardRef((props, ref) => ( - - )), -); +)(ComposerWithSuggestionsWithRef); diff --git a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js index 857b7d5e52c..d18b6fc2892 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js +++ b/src/pages/home/report/ReportActionCompose/SuggestionEmoji.js @@ -248,6 +248,8 @@ const SuggestionEmojiWithRef = React.forwardRef((props, ref) => ( /> )); +SuggestionEmojiWithRef.displayName = 'SuggestionEmojiWithRef'; + export default withOnyx({ preferredSkinTone: { key: ONYXKEYS.PREFERRED_EMOJI_SKIN_TONE, diff --git a/src/pages/home/report/ReportActionCompose/SuggestionMention.js b/src/pages/home/report/ReportActionCompose/SuggestionMention.js index 59221f57fd4..67d6ac0632e 100644 --- a/src/pages/home/report/ReportActionCompose/SuggestionMention.js +++ b/src/pages/home/report/ReportActionCompose/SuggestionMention.js @@ -306,16 +306,18 @@ SuggestionMention.propTypes = propTypes; SuggestionMention.defaultProps = defaultProps; SuggestionMention.displayName = 'SuggestionMention'; +const SuggestionMentionWithRef = React.forwardRef((props, ref) => ( + +)); + +SuggestionMentionWithRef.displayName = 'SuggestionMentionWithRef'; + export default withOnyx({ personalDetails: { key: ONYXKEYS.PERSONAL_DETAILS_LIST, }, -})( - React.forwardRef((props, ref) => ( - - )), -); +})(SuggestionMentionWithRef); diff --git a/src/pages/home/report/ReportActionCompose/Suggestions.js b/src/pages/home/report/ReportActionCompose/Suggestions.js index 74e9e79471e..5365aefe13e 100644 --- a/src/pages/home/report/ReportActionCompose/Suggestions.js +++ b/src/pages/home/report/ReportActionCompose/Suggestions.js @@ -128,10 +128,14 @@ Suggestions.propTypes = propTypes; Suggestions.defaultProps = defaultProps; Suggestions.displayName = 'Suggestions'; -export default React.forwardRef((props, ref) => ( +const SuggestionsWithRef = React.forwardRef((props, ref) => ( )); + +SuggestionsWithRef.displayName = 'SuggestionsWithRef'; + +export default SuggestionsWithRef; diff --git a/src/pages/home/report/ReportActionItemMessageEdit.js b/src/pages/home/report/ReportActionItemMessageEdit.js index 1d0f918de4f..99223183ce1 100644 --- a/src/pages/home/report/ReportActionItemMessageEdit.js +++ b/src/pages/home/report/ReportActionItemMessageEdit.js @@ -472,10 +472,14 @@ ReportActionItemMessageEdit.propTypes = propTypes; ReportActionItemMessageEdit.defaultProps = defaultProps; ReportActionItemMessageEdit.displayName = 'ReportActionItemMessageEdit'; -export default React.forwardRef((props, ref) => ( +const ReportActionItemMessageEditWithRef = React.forwardRef((props, ref) => ( )); + +ReportActionItemMessageEditWithRef.displayName = 'ReportActionItemMessageEditWithRef'; + +export default ReportActionItemMessageEditWithRef; diff --git a/src/pages/home/report/withReportAndReportActionOrNotFound.js b/src/pages/home/report/withReportAndReportActionOrNotFound.js index 47f499423d2..a14293e71c6 100644 --- a/src/pages/home/report/withReportAndReportActionOrNotFound.js +++ b/src/pages/home/report/withReportAndReportActionOrNotFound.js @@ -130,7 +130,7 @@ export default function (WrappedComponent) { WithReportAndReportActionOrNotFound.displayName = `withReportAndReportActionOrNotFound(${getComponentDisplayName(WrappedComponent)})`; // eslint-disable-next-line rulesdir/no-negated-variables - const withReportAndReportActionOrNotFound = React.forwardRef((props, ref) => ( + const WithReportAndReportActionOrNotFoundWithRef = React.forwardRef((props, ref) => ( )); + WithReportAndReportActionOrNotFoundWithRef.displayName = 'WithReportAndReportActionOrNotFoundWithRef'; + return compose( withWindowDimensions, withOnyx({ @@ -161,5 +163,5 @@ export default function (WrappedComponent) { canEvict: false, }, }), - )(withReportAndReportActionOrNotFound); + )(WithReportAndReportActionOrNotFoundWithRef); } diff --git a/src/pages/home/report/withReportOrNotFound.js b/src/pages/home/report/withReportOrNotFound.js index 891e2e2418c..43f3caa645e 100644 --- a/src/pages/home/report/withReportOrNotFound.js +++ b/src/pages/home/report/withReportOrNotFound.js @@ -99,7 +99,7 @@ export default function (shouldRequireReportID = true) { WithReportOrNotFound.displayName = `withReportOrNotFound(${getComponentDisplayName(WrappedComponent)})`; // eslint-disable-next-line rulesdir/no-negated-variables - const withReportOrNotFound = React.forwardRef((props, ref) => ( + const WithReportOrNotFoundWithRef = React.forwardRef((props, ref) => ( )); + WithReportOrNotFoundWithRef.displayName = 'WithReportOrNotFoundWithRef'; + return withOnyx({ report: { key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT}${route.params.reportID}`, @@ -120,6 +122,6 @@ export default function (shouldRequireReportID = true) { policies: { key: ONYXKEYS.COLLECTION.POLICY, }, - })(withReportOrNotFound); + })(WithReportOrNotFoundWithRef); }; } diff --git a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.js b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.js index 02f1856c7bf..340e7a0ed6a 100644 --- a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.js +++ b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.js @@ -257,6 +257,16 @@ FloatingActionButtonAndPopover.propTypes = propTypes; FloatingActionButtonAndPopover.defaultProps = defaultProps; FloatingActionButtonAndPopover.displayName = 'FloatingActionButtonAndPopover'; +const FloatingActionButtonAndPopoverWithRef = forwardRef((props, ref) => ( + +)); + +FloatingActionButtonAndPopoverWithRef.displayName = 'FloatingActionButtonAndPopoverWithRef'; + export default compose( withLocalize, withNavigation, @@ -277,12 +287,4 @@ export default compose( key: ONYXKEYS.DEMO_INFO, }, }), -)( - forwardRef((props, ref) => ( - - )), -); +)(FloatingActionButtonAndPopoverWithRef); diff --git a/src/pages/iou/ReceiptSelector/NavigationAwareCamera.js b/src/pages/iou/ReceiptSelector/NavigationAwareCamera.js index e9cb8100397..2b4ef44dfd8 100644 --- a/src/pages/iou/ReceiptSelector/NavigationAwareCamera.js +++ b/src/pages/iou/ReceiptSelector/NavigationAwareCamera.js @@ -72,4 +72,14 @@ NavigationAwareCamera.propTypes = propTypes; NavigationAwareCamera.displayName = 'NavigationAwareCamera'; NavigationAwareCamera.defaultProps = defaultProps; -export default NavigationAwareCamera; +const NavigationAwareCameraWithRef = React.forwardRef((props, ref) => ( + +)); + +NavigationAwareCameraWithRef.displayName = 'NavigationAwareCameraWithRef'; + +export default NavigationAwareCameraWithRef; diff --git a/src/pages/iou/ReceiptSelector/NavigationAwareCamera.native.js b/src/pages/iou/ReceiptSelector/NavigationAwareCamera.native.js index 8faec1cbbe3..271c802635f 100644 --- a/src/pages/iou/ReceiptSelector/NavigationAwareCamera.native.js +++ b/src/pages/iou/ReceiptSelector/NavigationAwareCamera.native.js @@ -80,4 +80,14 @@ const NavigationAwareCamera = React.forwardRef(({cameraTabIndex, isInTabNavigato NavigationAwareCamera.propTypes = propTypes; NavigationAwareCamera.displayName = 'NavigationAwareCamera'; -export default NavigationAwareCamera; +const NavigationAwareCameraWithRef = React.forwardRef((props, ref) => ( + +)); + +NavigationAwareCameraWithRef.displayName = 'NavigationAwareCameraWithRef'; + +export default NavigationAwareCameraWithRef; diff --git a/src/pages/iou/steps/MoneyRequestAmountForm.js b/src/pages/iou/steps/MoneyRequestAmountForm.js index d84c4d9e3cd..55e76727e50 100644 --- a/src/pages/iou/steps/MoneyRequestAmountForm.js +++ b/src/pages/iou/steps/MoneyRequestAmountForm.js @@ -299,10 +299,14 @@ MoneyRequestAmountForm.propTypes = propTypes; MoneyRequestAmountForm.defaultProps = defaultProps; MoneyRequestAmountForm.displayName = 'MoneyRequestAmountForm'; -export default React.forwardRef((props, ref) => ( +const MoneyRequestAmountFormWithRef = React.forwardRef((props, ref) => ( )); + +MoneyRequestAmountFormWithRef.displayName = 'MoneyRequestAmountFormWithRef'; + +export default MoneyRequestAmountFormWithRef; diff --git a/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js b/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js index 9f1e5a41699..7e88ebe7db4 100755 --- a/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js +++ b/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js @@ -283,6 +283,16 @@ MoneyRequestParticipantsSelector.propTypes = propTypes; MoneyRequestParticipantsSelector.defaultProps = defaultProps; MoneyRequestParticipantsSelector.displayName = 'MoneyRequestParticipantsSelector'; +const MoneyRequestParticipantsSelectorWithRef = React.forwardRef((props, ref) => ( + +)); + +MoneyRequestParticipantsSelectorWithRef.displayName = 'MoneyRequestParticipantsSelectorWithRef'; + export default compose( withLocalize, withOnyx({ @@ -296,12 +306,4 @@ export default compose( key: ONYXKEYS.BETAS, }, }), -)( - React.forwardRef((props, ref) => ( - - )), -); +)(MoneyRequestParticipantsSelectorWithRef); diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js index 7e8baba5a9c..1c9abcf535f 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js @@ -335,6 +335,7 @@ class ContactMethodDetailsPage extends Component { ContactMethodDetailsPage.propTypes = propTypes; ContactMethodDetailsPage.defaultProps = defaultProps; +ContactMethodDetailsPage.displayName = 'ContactMethodDetailsPage'; export default compose( withLocalize, diff --git a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/BaseTwoFactorAuthForm.js b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/BaseTwoFactorAuthForm.js index 4c0bf81210b..ea51bbc71cf 100644 --- a/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/BaseTwoFactorAuthForm.js +++ b/src/pages/settings/Security/TwoFactorAuth/TwoFactorAuthForm/BaseTwoFactorAuthForm.js @@ -103,17 +103,19 @@ function BaseTwoFactorAuthForm(props) { BaseTwoFactorAuthForm.propTypes = propTypes; BaseTwoFactorAuthForm.defaultProps = defaultProps; +const BaseTwoFactorAuthFormWithRef = forwardRef((props, ref) => ( + +)); + +BaseTwoFactorAuthFormWithRef.displayName = 'BaseTwoFactorAuthFormWithRef'; + export default compose( withLocalize, withOnyx({ account: {key: ONYXKEYS.ACCOUNT}, }), -)( - forwardRef((props, ref) => ( - - )), -); +)(BaseTwoFactorAuthFormWithRef); diff --git a/src/pages/signin/LoginForm/BaseLoginForm.js b/src/pages/signin/LoginForm/BaseLoginForm.js index 6270e6982e6..ab548619b63 100644 --- a/src/pages/signin/LoginForm/BaseLoginForm.js +++ b/src/pages/signin/LoginForm/BaseLoginForm.js @@ -285,6 +285,16 @@ LoginForm.propTypes = propTypes; LoginForm.defaultProps = defaultProps; LoginForm.displayName = 'LoginForm'; +const LoginFormWithRef = forwardRef((props, ref) => ( + +)); + +LoginFormWithRef.displayName = 'LoginFormWithRef'; + export default compose( withNavigationFocus, withOnyx({ @@ -295,12 +305,4 @@ export default compose( withLocalize, withToggleVisibilityView, withNetwork(), -)( - forwardRef((props, ref) => ( - - )), -); +)(LoginFormWithRef); diff --git a/src/pages/signin/SignInPageLayout/index.js b/src/pages/signin/SignInPageLayout/index.js index fdc88b6ede9..21a768aac3b 100644 --- a/src/pages/signin/SignInPageLayout/index.js +++ b/src/pages/signin/SignInPageLayout/index.js @@ -185,16 +185,14 @@ SignInPageLayout.propTypes = propTypes; SignInPageLayout.displayName = 'SignInPageLayout'; SignInPageLayout.defaultProps = defaultProps; -export default compose( - withWindowDimensions, - withSafeAreaInsets, - withLocalize, -)( - forwardRef((props, ref) => ( - - )), -); +const SignInPageLayoutWithRef = forwardRef((props, ref) => ( + +)); + +SignInPageLayoutWithRef.displayName = 'SignInPageLayoutWithRef'; + +export default compose(withWindowDimensions, withSafeAreaInsets, withLocalize)(SignInPageLayoutWithRef); diff --git a/src/pages/workspace/WorkspaceInviteMessagePage.js b/src/pages/workspace/WorkspaceInviteMessagePage.js index 5e7efadd377..1f032ab514d 100644 --- a/src/pages/workspace/WorkspaceInviteMessagePage.js +++ b/src/pages/workspace/WorkspaceInviteMessagePage.js @@ -239,6 +239,7 @@ class WorkspaceInviteMessagePage extends React.Component { WorkspaceInviteMessagePage.propTypes = propTypes; WorkspaceInviteMessagePage.defaultProps = defaultProps; +WorkspaceInviteMessagePage.displayName = 'WorkspaceInviteMessagePage'; export default compose( withLocalize, diff --git a/src/pages/workspace/withPolicy.js b/src/pages/workspace/withPolicy.js index 6ca0ca67fce..19c24c7dad3 100644 --- a/src/pages/workspace/withPolicy.js +++ b/src/pages/workspace/withPolicy.js @@ -105,7 +105,7 @@ export default function (WrappedComponent) { WithPolicy.propTypes = propTypes; WithPolicy.defaultProps = defaultProps; WithPolicy.displayName = `withPolicy(${getComponentDisplayName(WrappedComponent)})`; - const withPolicy = React.forwardRef((props, ref) => ( + const WithPolicyWithRef = React.forwardRef((props, ref) => ( )); + WithPolicyWithRef.displayName = 'WithPolicyWithRef'; + return withOnyx({ policy: { key: (props) => `${ONYXKEYS.COLLECTION.POLICY}${getPolicyIDFromRoute(props.route)}`, @@ -126,7 +128,7 @@ export default function (WrappedComponent) { policyMembersDraft: { key: (props) => `${ONYXKEYS.COLLECTION.POLICY_MEMBERS_DRAFTS}${getPolicyIDFromRoute(props.route)}`, }, - })(withPolicy); + })(WithPolicyWithRef); } export {policyPropTypes, policyDefaultProps}; diff --git a/src/pages/workspace/withPolicyAndFullscreenLoading.js b/src/pages/workspace/withPolicyAndFullscreenLoading.js index 8265169434a..60522cbfbf0 100644 --- a/src/pages/workspace/withPolicyAndFullscreenLoading.js +++ b/src/pages/workspace/withPolicyAndFullscreenLoading.js @@ -46,7 +46,7 @@ export default function (WrappedComponent) { WithPolicyAndFullscreenLoading.defaultProps = defaultProps; WithPolicyAndFullscreenLoading.displayName = `WithPolicyAndFullscreenLoading(${getComponentDisplayName(WrappedComponent)})`; - const withPolicyAndFullscreenLoading = React.forwardRef((props, ref) => ( + const WithPolicyAndFullscreenLoadingWithRef = React.forwardRef((props, ref) => ( )); + WithPolicyAndFullscreenLoadingWithRef.displayName = 'WithPolicyAndFullscreenLoadingWithRef'; + return compose( withPolicy, withOnyx({ @@ -61,5 +63,5 @@ export default function (WrappedComponent) { key: ONYXKEYS.IS_LOADING_REPORT_DATA, }, }), - )(withPolicyAndFullscreenLoading); + )(WithPolicyAndFullscreenLoadingWithRef); } diff --git a/tests/perf-test/ReportActionsList.perf-test.js b/tests/perf-test/ReportActionsList.perf-test.js index 4d83cc43563..dcd40dd1e03 100644 --- a/tests/perf-test/ReportActionsList.perf-test.js +++ b/tests/perf-test/ReportActionsList.perf-test.js @@ -20,13 +20,21 @@ jest.setTimeout(60000); const mockedNavigate = jest.fn(); -jest.mock('../../src/components/withNavigationFocus', () => (Component) => (props) => ( - -)); +jest.mock('../../src/components/withNavigationFocus', () => (Component) => { + function WithNavigationFocus(props) { + return ( + + ); + } + + WithNavigationFocus.displayName = 'WithNavigationFocus'; + + return WithNavigationFocus; +}); jest.mock('@react-navigation/native', () => { const actualNav = jest.requireActual('@react-navigation/native'); diff --git a/tests/perf-test/SelectionList.perf-test.js b/tests/perf-test/SelectionList.perf-test.js index cdf9492e0ff..e78970a0401 100644 --- a/tests/perf-test/SelectionList.perf-test.js +++ b/tests/perf-test/SelectionList.perf-test.js @@ -13,13 +13,19 @@ jest.mock('../../src/hooks/useLocalize', () => })), ); -jest.mock('../../src/components/withLocalize', () => (Component) => (props) => ( - ''} - /> -)); +jest.mock('../../src/components/withLocalize', () => (Component) => { + function WrappedComponent(props) { + return ( + ''} + /> + ); + } + WrappedComponent.displayName = `WrappedComponent`; + return WrappedComponent; +}); jest.mock('../../src/hooks/useNetwork', () => jest.fn(() => ({ @@ -27,13 +33,19 @@ jest.mock('../../src/hooks/useNetwork', () => })), ); -jest.mock('../../src/components/withKeyboardState', () => (Component) => (props) => ( - -)); +jest.mock('../../src/components/withKeyboardState', () => (Component) => { + function WrappedComponent(props) { + return ( + + ); + } + WrappedComponent.displayName = `WrappedComponent`; + return WrappedComponent; +}); jest.mock('@react-navigation/native', () => ({ useFocusEffect: () => {}, diff --git a/tests/unit/CalendarPickerTest.js b/tests/unit/CalendarPickerTest.js index 512a86a25e1..3b3b123cd94 100644 --- a/tests/unit/CalendarPickerTest.js +++ b/tests/unit/CalendarPickerTest.js @@ -18,14 +18,20 @@ jest.mock('@react-navigation/native', () => ({ createNavigationContainerRef: jest.fn(), })); -jest.mock('../../src/components/withLocalize', () => (Component) => (props) => ( - ''} - preferredLocale="en" - /> -)); +jest.mock('../../src/components/withLocalize', () => (Component) => { + function WrappedComponent(props) { + return ( + ''} + preferredLocale="en" + /> + ); + } + WrappedComponent.displayName = `WrappedComponent`; + return WrappedComponent; +}); jest.mock('../../src/hooks/useLocalize', () => jest.fn(() => ({