Skip to content

Commit 67f19cc

Browse files
authored
Typescript/loader screen (#1458)
* index.js -> index.tsx * migrate loader-screen to typescript * LoadingScreen (demo screen) to tsx * added missing exports * removed manual typings + added to generatedTypes
1 parent caabd21 commit 67f19cc

File tree

6 files changed

+57
-55
lines changed

6 files changed

+57
-55
lines changed

generatedTypes/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export {default as PageControl, PageControlProps} from './components/pageControl
8080
export {default as Carousel, CarouselProps, PageControlPosition} from './components/carousel';
8181
export {default as ActionSheet} from './components/actionSheet';
8282
export {default as Wizard, WizardProps, WizardStepProps, WizardStepStates, WizardStepConfig, WizardStepsConfig} from './components/wizard';
83+
export {default as LoaderScreen, LoaderScreenProps} from './components/loaderScreen';
8384

8485
/* All components with manual typings */
8586
export {
@@ -101,7 +102,6 @@ export {
101102
UIComponent,
102103
forwardRef,
103104
AvatarHelper,
104-
LoaderScreen,
105105
StateScreen,
106106
WheelPicker,
107107
WheelPickerProps,

src/components/loaderScreen/index.js renamed to src/components/loaderScreen/index.tsx

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,15 @@
1-
import PropTypes from 'prop-types';
2-
import React from 'react';
1+
import React, {Component} from 'react';
32
import {StyleSheet, ActivityIndicator} from 'react-native';
43
import {Colors, Typography} from '../../style';
54
import {Constants} from '../../helpers';
6-
import {BaseComponent} from '../../commons';
5+
import {asBaseComponent} from '../../commons/new';
76
import View from '../../components/view';
87
import Text from '../../components/text';
8+
import {LoaderScreenProps} from './types';
99

10-
/**
11-
* @description: Component that shows a full screen with an activity indicator
12-
* @example: https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/LoadingScreen.js
13-
*
14-
*/
15-
export default class LoaderScreen extends BaseComponent {
10+
class LoaderScreen extends Component<LoaderScreenProps> {
1611
static displayName = 'LoaderScreen';
1712

18-
static propTypes = {
19-
...ActivityIndicator.propTypes,
20-
/**
21-
* Color of the loading indicator
22-
*/
23-
loaderColor: PropTypes.string,
24-
/**
25-
* Custom loader
26-
*/
27-
customLoader: PropTypes.element,
28-
/**
29-
* Color of the loader background (only when passing 'overlay')
30-
*/
31-
backgroundColor: PropTypes.string,
32-
/**
33-
* loader message
34-
*/
35-
message: PropTypes.string,
36-
/**
37-
* message style
38-
*/
39-
messageStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number, PropTypes.array]),
40-
/**
41-
* Show the screen as an absolute overlay
42-
*/
43-
overlay: PropTypes.bool
44-
/**
45-
* Custom container style
46-
*/
47-
};
48-
4913
render() {
5014
const {
5115
message,
@@ -76,6 +40,9 @@ export default class LoaderScreen extends BaseComponent {
7640
}
7741
}
7842

43+
export {LoaderScreenProps};
44+
export default asBaseComponent<LoaderScreenProps>(LoaderScreen);
45+
7946
const styles = StyleSheet.create({
8047
container: {
8148
flex: 1

src/components/loaderScreen/types.tsx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import {PureComponent} from 'react';
2+
import {ActivityIndicatorProps, TextStyle, ViewStyle} from 'react-native';
3+
4+
export type LoaderScreenProps = ActivityIndicatorProps & {
5+
/**
6+
* Color of the loading indicator
7+
*/
8+
loaderColor?: string;
9+
/**
10+
* Custom loader
11+
*/
12+
customLoader?: React.ReactChild;
13+
/**
14+
* Color of the loader background (only when passing 'overlay')
15+
*/
16+
backgroundColor?: string;
17+
/**
18+
* loader message
19+
*/
20+
message?: string;
21+
/**
22+
* message style
23+
*/
24+
messageStyle?: TextStyle,
25+
/**
26+
* Show the screen as an absolute overlay
27+
*/
28+
overlay?: boolean;
29+
/**
30+
* Custom container style
31+
*/
32+
containerStyle?: ViewStyle;
33+
};
34+
35+
36+
/**
37+
* @description: Component that shows a full screen with an activity indicator
38+
* @example: https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/LoadingScreen.tsx
39+
*/
40+
// @ts-ignore
41+
class FakeLoaderScreenForDocs extends PureComponent<LoaderScreenProps> { // eslint-disable-line
42+
static displayName = 'LoaderScreen';
43+
44+
render() {
45+
return null;
46+
}
47+
}

src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export {default as Slider, SliderProps} from './components/slider';
7878
export {default as GradientSlider, GradientSliderProps} from './components/slider/GradientSlider';
7979
export {default as ColorSliderGroup, ColorSliderGroupProps} from './components/slider/ColorSliderGroup';
8080
export {default as LogService} from './services/LogService';
81+
export {default as LoaderScreen, LoaderScreenProps} from './components/loaderScreen';
8182

8283
//================ Manual typings (all those exports should be removed one day) ==========
8384
export {
@@ -86,5 +87,5 @@ export {
8687
PickerProps, ProgressBar, Stepper,
8788
TagsInput, SharedTransition, Toast, WheelPickerDialog, Assets,
8889
BaseComponent, PureBaseComponent, UIComponent, forwardRef,
89-
LoaderScreen, StateScreen, WheelPicker, WheelPickerProps
90+
StateScreen, WheelPicker, WheelPickerProps
9091
} from '../typings';

typings/components/LoaderScreen.d.ts

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

0 commit comments

Comments
 (0)