@@ -2,9 +2,9 @@ open ReactNative
22
33module Header = {
44 type headerTitleProps = {
5- allowFontScaling : option < bool > ,
6- tintColor : option < Color .t > ,
7- style : option < Style .t > ,
5+ allowFontScaling ?: bool ,
6+ tintColor ?: Color .t ,
7+ style ?: Style .t ,
88 children : string ,
99 }
1010
@@ -15,63 +15,133 @@ module Header = {
1515
1616 type displayMode = [#default | #generic | #minimal ]
1717
18- type headerLeftProps = {
19- tintColor : option <Color .t >,
20- pressColor : option <Color .t >,
21- pressOpacity : option <float >,
22- displayMode : option <displayMode >,
18+ type headerButtonCommonProps = {
19+ tintColor ?: Color .t ,
20+ pressColor ?: Color .t ,
21+ pressOpacity ?: float ,
2322 }
2423
2524 type headerRightProps = {
26- tintColor : option <Color .t >,
27- pressColor : option <Color .t >,
28- pressOpacity : option <float >,
25+ ... headerButtonCommonProps ,
26+ canGoBack ?: bool ,
27+ }
28+ type headerLeftProps = {
29+ ... headerRightProps ,
30+ displayMode ?: displayMode ,
31+ href ?: string ,
2932 }
3033
31- type headerBackgroundOptions = {style : option < Style .t > }
34+ type headerBackgroundOptions = {style ?: Style .t }
3235
3336 type headerTitleAlign = [#left | #center ]
3437
35- @react.component @module ("@react-navigation/elements" )
36- external make : (
37- ~title : string = ?,
38- ~headerTitle : headerTitle = ?,
39- ~headerTitleAlign : headerTitleAlign = ?,
40- ~headerTitleAllowFontScaling : bool = ?,
41- ~headerTitleStyle : Style .t = ?,
42- ~headerTitleContainerStyle : Style .t = ?,
43- ~headerLeft : headerLeftProps => React .element = ?,
44- ~headerLeftLabelVisible : bool = ?,
45- ~headerLeftContainerStyle : Style .t = ?,
46- ~headerRight : headerRightProps => React .element = ?,
47- ~headerRightContainerStyle : Style .t = ?,
48- ~headerPressColor : Color .t = ?,
49- ~headerPressOpacity : float = ?,
50- ~headerTintColor : Color .t = ?,
51- ~headerBackground : headerBackgroundOptions => React .element = ?,
52- ~headerBackgroundContainerStyle : Style .t = ?,
53- ~headerTransparent : bool = ?,
54- ~headerStyle : Style .t = ?,
55- ~headerShadowVisible : bool = ?,
56- ~headerStatusBarHeight : Style .size = ?,
57- ) => React .element = "Header"
38+ type inputType = [
39+ | #text
40+ | #phone
41+ | #number
42+ | #email
43+ ]
44+
45+ type headerSearchBarOptions = {
46+ ref ?: TextInputElement .ref ,
47+ autoCapitalize ?: TextInput .autoCapitalize ,
48+ autoFocus ?: bool ,
49+ cancelButtonText ?: string ,
50+ inputType ?: inputType ,
51+ onBlur ?: Event .targetEvent => unit ,
52+ onChangeText ?: string => unit ,
53+ onClose ?: unit => unit ,
54+ onFocus ?: Event .targetEvent => unit ,
55+ placeholder ?: string ,
56+ }
57+
58+ type headerOptions = {
59+ headerTitle ?: headerTitle ,
60+ headerTitleAlign ?: headerTitleAlign ,
61+ headerTitleAllowFontScaling ?: bool ,
62+ headerTitleStyle ?: Style .t ,
63+ headerTitleContainerStyle ?: Style .t ,
64+ headerLeft ?: headerLeftProps => React .element ,
65+ headerLeftContainerStyle ?: Style .t ,
66+ headerRight ?: headerRightProps => React .element ,
67+ headerRightContainerStyle ?: Style .t ,
68+ headerSearchBarOptions ?: headerSearchBarOptions ,
69+ headerPressColor ?: Color .t ,
70+ headerPressOpacity ?: float ,
71+ headerTintColor ?: Color .t ,
72+ headerBackground ?: headerBackgroundOptions => React .element ,
73+ headerBackgroundContainerStyle ?: Style .t ,
74+ headerTransparent ?: bool ,
75+ headerStyle ?: Style .t ,
76+ headerShadowVisible ?: bool ,
77+ headerStatusBarHeight ?: Style .size ,
78+ }
79+
80+ type backProp = {
81+ title ?: string ,
82+ href ?: string ,
83+ }
84+
85+ type props = {
86+ ... headerOptions ,
87+ backProp ?: backProp ,
88+ modal ?: bool ,
89+ layout ?: Core .layout ,
90+ title : string ,
91+ }
92+
93+ @module ("@react-navigation/elements" )
94+ external make : React .component <props > = "Header"
5895}
5996
6097module HeaderBackground = {
61- @react.component @module ("@react-navigation/elements" )
62- external make : (
63- // actually all RN view props
64- ~children : React .element = ?,
65- ) => React .element = "HeaderBackground"
98+ @module ("@react-navigation/elements" )
99+ external make : React .component <View .props > = "HeaderBackground"
100+ }
101+
102+ module HeaderTitle = {
103+ @module ("@react-navigation/elements" )
104+ external make : React .component <Text .props > = "HeaderTitle"
105+ }
106+
107+ module HeaderButton = {
108+ type headerButtonProps = {
109+ ... Header .headerButtonCommonProps ,
110+ onPress ?: unit => unit ,
111+ href ?: string ,
112+ disabled ?: bool ,
113+ accessibilityLabel ?: string ,
114+ testID ?: string ,
115+ style ?: Style .t ,
116+ }
117+
118+ type props = {
119+ ... headerButtonProps ,
120+ children : React .element ,
121+ }
122+
123+ @module ("@react-navigation/elements" )
124+ external make : React .component <props > = "HeaderTitle"
66125}
67126
68127module HeaderBackButton = {
69- @react.component @module ("@react-navigation/elements" )
70- external make : (
71- ~displayMode : Header .displayMode = ?,
72- ~tintColor : Color .t = ?,
73- ~onPress : unit => unit ,
74- ) => React .element = "HeaderBackButton"
128+ type backImageProps = {tintColor ?: Color .t }
129+
130+ type props = {
131+ ... HeaderButton .headerButtonProps ,
132+ backImage ?: backImageProps => React .element ,
133+ label ?: string ,
134+ truncatedLabel ?: string ,
135+ displayMode ?: Header .displayMode ,
136+ labelStyle ?: Style .t ,
137+ allowFontScaling ?: bool ,
138+ onLabelLayout ?: Event .layoutEvent => unit ,
139+ screenLayout ?: Core .layout ,
140+ titleLayout ?: Core .layout ,
141+ }
142+
143+ @module ("@react-navigation/elements" )
144+ external make : React .component <props > = "HeaderBackButton"
75145}
76146
77147@module ("@react-navigation/elements" )
0 commit comments