Skip to content

Commit 5964ae9

Browse files
johannthbjornj12
authored andcommitted
Add keyboardDismissMode, keyboardShouldPersistTaps, showsHorizontalScrollIndicator, showsHorizontalScrollIndicator to sectionList
1 parent 32a6f6e commit 5964ae9

File tree

3 files changed

+103
-13
lines changed

3 files changed

+103
-13
lines changed

lib/js/src/components/sectionList.js

Lines changed: 45 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/sectionList.re

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ let renderAccessoryView =
136136
section: jsSectionToSection(jsRenderAccessory##section),
137137
});
138138

139+
[@bs.deriving jsConverter]
140+
type keyboardDismissMode = [ | `none | `interactive | `onDrag];
141+
142+
[@bs.deriving jsConverter]
143+
type keyboardShouldPersistTaps = [ | `always | `never | `handled];
144+
139145
let make:
140146
(
141147
~sections: sections('item),
@@ -161,6 +167,10 @@ let make:
161167
~renderSectionHeader: renderAccessoryView('item)=?,
162168
~renderSectionFooter: renderAccessoryView('item)=?,
163169
~stickySectionHeadersEnabled: bool=?,
170+
~keyboardDismissMode: keyboardDismissMode=?,
171+
~keyboardShouldPersistTaps: keyboardShouldPersistTaps=?,
172+
~showsHorizontalScrollIndicator: bool=?,
173+
~showsVerticalScrollIndicator: bool=?,
164174
array(ReasonReact.reactElement)
165175
) =>
166176
ReasonReact.component(
@@ -187,6 +197,10 @@ let make:
187197
~renderSectionHeader=?,
188198
~renderSectionFooter=?,
189199
~stickySectionHeadersEnabled=?,
200+
~keyboardDismissMode=?,
201+
~keyboardShouldPersistTaps=?,
202+
~showsHorizontalScrollIndicator=?,
203+
~showsVerticalScrollIndicator=?,
190204
_children,
191205
) =>
192206
ReasonReact.wrapJsForReason(
@@ -214,10 +228,28 @@ let make:
214228
"renderSectionHeader": fromOption(renderSectionHeader),
215229
"renderSectionFooter": fromOption(renderSectionFooter),
216230
"stickySectionHeadersEnabled":
217-
fromOption(
231+
from_opt(
218232
UtilsRN.optBoolToOptJsBoolean(stickySectionHeadersEnabled),
219233
),
234+
"keyboardDismissMode":
235+
from_opt(
236+
keyboardDismissMode
237+
|> UtilsRN.option_map(keyboardDismissModeToJs),
238+
),
239+
"keyboardShouldPersistTaps":
240+
from_opt(
241+
keyboardShouldPersistTaps
242+
|> UtilsRN.option_map(keyboardShouldPersistTapsToJs),
243+
),
244+
"showsHorizontalScrollIndicator":
245+
from_opt(
246+
UtilsRN.optBoolToOptJsBoolean(showsHorizontalScrollIndicator),
247+
),
248+
"showsVerticalScrollIndicator":
249+
from_opt(
250+
UtilsRN.optBoolToOptJsBoolean(showsVerticalScrollIndicator),
251+
),
220252
}
221253
),
222254
_children,
223-
);
255+
);

src/components/sectionList.rei

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@ type renderBag('item) = {
22
item: 'item,
33
index: int,
44
section: section('item),
5-
separators: {. "highlight": unit => unit, "unhighlight": unit => unit}
5+
separators: {
6+
.
7+
"highlight": unit => unit,
8+
"unhighlight": unit => unit,
9+
},
610
}
711
and section('item) = {
812
data: array('item),
913
key: option(string),
10-
renderItem: option((renderBag('item) => ReasonReact.reactElement))
14+
renderItem: option(renderBag('item) => ReasonReact.reactElement),
1115
};
1216

1317
let section:
@@ -25,7 +29,7 @@ type separatorProps('item) = {
2529
leadingSection: option(section('item)),
2630
section: section('item),
2731
trailingItem: option('item),
28-
trailingSection: option(section('item))
32+
trailingSection: option(section('item)),
2933
};
3034

3135
type sections('item);
@@ -34,27 +38,30 @@ let sections: array(section('item)) => sections('item);
3438

3539
type renderItem('item);
3640

37-
let renderItem: (renderBag('item) => ReasonReact.reactElement) => renderItem('item);
41+
let renderItem:
42+
(renderBag('item) => ReasonReact.reactElement) => renderItem('item);
3843

3944
type separatorComponent('item);
4045

4146
let separatorComponent:
42-
(separatorProps('item) => ReasonReact.reactElement) => separatorComponent('item);
47+
(separatorProps('item) => ReasonReact.reactElement) =>
48+
separatorComponent('item);
4349

4450
type renderAccessory('item) = {section: section('item)};
4551

4652
type renderAccessoryView('item);
4753

4854
let renderAccessoryView:
49-
(renderAccessory('item) => ReasonReact.reactElement) => renderAccessoryView('item);
55+
(renderAccessory('item) => ReasonReact.reactElement) =>
56+
renderAccessoryView('item);
5057

5158
type viewToken('item) = {
5259
.
5360
"index": Js.undefined(int),
5461
"isViewable": Js.boolean,
5562
"item": 'item,
5663
"key": string,
57-
"section": section('item)
64+
"section": section('item),
5865
};
5966

6067
let make:
@@ -74,14 +81,22 @@ let make:
7481
~onViewableItemsChanged: {
7582
.
7683
"changed": array(viewToken('item)),
77-
"viewableItems": array(viewToken('item))
84+
"viewableItems": array(viewToken('item)),
7885
}
7986
=?,
8087
~onRefresh: unit => unit=?,
8188
~refreshing: bool=?,
8289
~renderSectionHeader: renderAccessoryView('item)=?,
8390
~renderSectionFooter: renderAccessoryView('item)=?,
8491
~stickySectionHeadersEnabled: bool=?,
92+
~keyboardDismissMode: [ | `none | `interactive | `onDrag]=?,
93+
~keyboardShouldPersistTaps: [ | `always | `never | `handled]=?,
94+
~showsHorizontalScrollIndicator: bool=?,
95+
~showsVerticalScrollIndicator: bool=?,
8596
array(ReasonReact.reactElement)
8697
) =>
87-
ReasonReact.component(ReasonReact.stateless, ReasonReact.noRetainedProps, unit);
98+
ReasonReact.component(
99+
ReasonReact.stateless,
100+
ReasonReact.noRetainedProps,
101+
unit,
102+
);

0 commit comments

Comments
 (0)