Skip to content

Commit d30d38c

Browse files
committed
Add collapsable example
1 parent 51e0a07 commit d30d38c

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

Example/App.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import BlurToolbar from './BlurToolbar'
77
import Imperative from './Imperative'
88
import Test from './Test'
99
import Sections from './Sections'
10+
import Collapsable from './Collapsable';
1011

1112
const SCREENS = {
1213
map: {
@@ -29,6 +30,10 @@ const SCREENS = {
2930
screen: Sections,
3031
title: 'SectionList',
3132
},
33+
collapsable: {
34+
screen: Collapsable,
35+
title: 'Collapsable Header',
36+
},
3237
}
3338

3439
class MainScreen extends React.Component {

Example/Collapsable.js

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import React from 'react'
2+
import { StyleSheet, Text, View } from 'react-native'
3+
import BottomSheet from 'reanimated-bottom-sheet'
4+
import Animated from 'react-native-reanimated'
5+
const { block, set, greaterThan, lessThan, Value, or, cond, add, sub, and, not, } = Animated;
6+
7+
const Lorem = () => (
8+
<View style={{ backgroundColor: 'green' }}>
9+
<Text>
10+
At vero eos et accusamus et iusto odio dignissimos ducimus qui
11+
blanditiis praesentium voluptatum deleniti atque corrupti quos
12+
dolores et quas molestias excepturi sint occaecati cupiditate non
13+
provident, similique sunt in culpa qui officia deserunt mollitia
14+
animi, id est laborum et dolorum fuga. Et harum quidem rerum
15+
facilis est et expedita distinctio. Nam libero tempore, cum soluta
16+
nobis est eligendi optio cumque nihil impedit quo minus id quod
17+
maxime placeat facere possimus, omnis voluptas assumenda est,
18+
omnis dolor repellendus. Temporibus autem quibusdam et aut
19+
officiis debitis aut rerum necessitatibus saepe eveniet ut et
20+
voluptates repudiandae sint et molestiae non recusandae. Itaque
21+
earum rerum hic tenetur a sapiente delectus, ut aut reiciendis
22+
voluptatibus maiores alias consequatur aut perferendis doloribus
23+
asperiores repellat. At vero eos et accusamus et iusto odio
24+
dignissimos ducimus qui blanditiis praesentium voluptatum deleniti
25+
atque corrupti quos dolores et quas molestias excepturi sint
26+
occaecati cupiditate non provident, similique sunt in culpa qui
27+
officia deserunt mollitia animi, id est laborum et dolorum fuga.
28+
Et harum quidem rerum facilis est et expedita distinctio. Nam
29+
libero tempore, cum soluta nobis est eligendi optio cumque nihil
30+
impedit quo minus id quod maxime placeat facere possimus, omnis
31+
voluptas assumenda est, omnis dolor repellendus. Temporibus autem
32+
quibusdam et aut officiis debitis aut rerum necessitatibus saepe
33+
eveniet ut et voluptates repudiandae sint et molestiae non
34+
recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut
35+
aut reiciendis voluptatibus maiores alias consequatur aut
36+
perferendis doloribus asperiores repellat.
37+
</Text>
38+
</View>
39+
)
40+
export default class Example extends React.Component {
41+
trans = new Value(0)
42+
untraversedPos = new Value(0)
43+
prevTrans= new Value(0)
44+
headerPos = block([
45+
cond(lessThan(this.untraversedPos, sub(this.trans, 100)), set(this.untraversedPos, sub(this.trans, 100))),
46+
cond(greaterThan(this.untraversedPos, this.trans), set(this.untraversedPos, this.trans)),
47+
set(this.prevTrans, this.trans),
48+
this.untraversedPos
49+
])
50+
renderHeader = name => (
51+
<View
52+
style={{
53+
width: '100%',
54+
backgroundColor: 'blue',
55+
height: 100,
56+
borderWidth: 2,
57+
}}>
58+
<Text>{name}</Text>
59+
</View>
60+
)
61+
62+
renderInner = () => (
63+
<View>
64+
<Animated.View
65+
style={{
66+
zIndex: 1,
67+
transform: [
68+
{
69+
translateY: this.headerPos
70+
},
71+
],
72+
}}>
73+
{this.renderHeader('one')}
74+
</Animated.View>
75+
<Lorem/>
76+
<Lorem/>
77+
</View>
78+
);
79+
80+
render() {
81+
return (
82+
<View style={styles.container}>
83+
<BottomSheet
84+
contentPosition={this.trans}
85+
snapPoints = {[100, 400]}
86+
renderContent = {this.renderInner}
87+
/>
88+
</View>
89+
)
90+
}
91+
}
92+
93+
const IMAGE_SIZE = 200
94+
95+
const styles = StyleSheet.create({
96+
container: {
97+
flex: 1,
98+
backgroundColor: 'red',
99+
},
100+
box: {
101+
width: IMAGE_SIZE,
102+
height: IMAGE_SIZE,
103+
},
104+
})

0 commit comments

Comments
 (0)