@@ -171,10 +171,20 @@ and headerParams = {
171171 back : backOptions ,
172172}
173173
174+ type screenEventData = {closing : bool }
175+
176+ type listeners = {
177+ ... Core .eventListeners ,
178+ transitionStart ?: navigationEvent <screenEventData > => unit ,
179+ transitionEnd ?: navigationEvent <screenEventData > => unit ,
180+ gestureCancel ?: navigationEvent <unit > => unit ,
181+ }
182+
174183type navigatorProps = {
175184 id ?: string ,
176185 initialRouteName ?: string ,
177186 screenOptions ?: screenOptionsParams => options ,
187+ screenListeners ?: screenOptionsParams => listeners ,
178188 layout ?: layoutNavigatorParams => React .element ,
179189 children ?: React .element ,
180190}
@@ -183,6 +193,7 @@ type screenProps<'params> = {
183193 name : string ,
184194 navigationKey ?: string ,
185195 options ?: screenOptionsParams => options ,
196+ listeners ?: screenOptionsParams => listeners ,
186197 initialParams ?: 'params ,
187198 getId ?: getIdOptions => option <string >,
188199 component ?: React .component <screenProps >,
@@ -228,8 +239,6 @@ module Make = (): NavigatorModule => {
228239 }
229240}
230241
231- type screenEventData = {closing : int }
232-
233242module Navigation = {
234243 @send
235244 external setOptions : (navigation , options ) => unit = "setOptions"
@@ -255,6 +264,7 @@ module Navigation = {
255264 [
256265 | #transitionStart (navigationEvent <screenEventData > => unit )
257266 | #transitionEnd (navigationEvent <screenEventData > => unit )
267+ | #gestureCancel (navigationEvent <unit > => unit )
258268 ],
259269 ) => unsubscribe = "addListener"
260270}
0 commit comments