@r0b0t3d/react-native-collapsible 1.3.5-beta.5 → 1.3.5-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/header/CollapsibleHeaderContainer.js +6 -4
- package/lib/commonjs/components/header/CollapsibleHeaderContainer.js.map +1 -1
- package/lib/commonjs/components/scrollable/CollapsibleFlatList.js +5 -1
- package/lib/commonjs/components/scrollable/CollapsibleFlatList.js.map +1 -1
- package/lib/commonjs/components/scrollable/CollapsibleScrollView.js +5 -1
- package/lib/commonjs/components/scrollable/CollapsibleScrollView.js.map +1 -1
- package/lib/commonjs/components/scrollable/CollapsibleSectionList.js +129 -0
- package/lib/commonjs/components/scrollable/CollapsibleSectionList.js.map +1 -0
- package/lib/commonjs/components/scrollable/useAnimatedScroll.js +5 -3
- package/lib/commonjs/components/scrollable/useAnimatedScroll.js.map +1 -1
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/withCollapsibleContext.js +4 -0
- package/lib/commonjs/withCollapsibleContext.js.map +1 -1
- package/lib/module/components/header/CollapsibleHeaderContainer.js +6 -4
- package/lib/module/components/header/CollapsibleHeaderContainer.js.map +1 -1
- package/lib/module/components/scrollable/CollapsibleFlatList.js +5 -1
- package/lib/module/components/scrollable/CollapsibleFlatList.js.map +1 -1
- package/lib/module/components/scrollable/CollapsibleScrollView.js +5 -1
- package/lib/module/components/scrollable/CollapsibleScrollView.js.map +1 -1
- package/lib/module/components/scrollable/CollapsibleSectionList.js +120 -0
- package/lib/module/components/scrollable/CollapsibleSectionList.js.map +1 -0
- package/lib/module/components/scrollable/useAnimatedScroll.js +5 -3
- package/lib/module/components/scrollable/useAnimatedScroll.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/withCollapsibleContext.js +4 -0
- package/lib/module/withCollapsibleContext.js.map +1 -1
- package/lib/typescript/components/header/CollapsibleHeaderContainer.d.ts.map +1 -1
- package/lib/typescript/components/scrollable/CollapsibleFlatList.d.ts.map +1 -1
- package/lib/typescript/components/scrollable/CollapsibleScrollView.d.ts.map +1 -1
- package/lib/typescript/components/scrollable/CollapsibleSectionList.d.ts +7 -0
- package/lib/typescript/components/scrollable/CollapsibleSectionList.d.ts.map +1 -0
- package/lib/typescript/components/scrollable/useAnimatedScroll.d.ts +3 -1
- package/lib/typescript/components/scrollable/useAnimatedScroll.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +2 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/withCollapsibleContext.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/header/CollapsibleHeaderContainer.tsx +9 -4
- package/src/components/scrollable/CollapsibleFlatList.tsx +5 -0
- package/src/components/scrollable/CollapsibleScrollView.tsx +5 -0
- package/src/components/scrollable/CollapsibleSectionList.tsx +169 -0
- package/src/components/scrollable/useAnimatedScroll.ts +12 -2
- package/src/index.tsx +1 -0
- package/src/types.ts +2 -1
- package/src/withCollapsibleContext.tsx +2 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { View, StyleSheet, SectionList } from 'react-native';
|
|
4
|
+
import Animated, { runOnJS, useAnimatedReaction } from 'react-native-reanimated';
|
|
5
|
+
import useAnimatedScroll from './useAnimatedScroll';
|
|
6
|
+
import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
|
|
7
|
+
import AnimatedTopView from '../header/AnimatedTopView';
|
|
8
|
+
import useCollapsibleContext from '../../hooks/useCollapsibleContext';
|
|
9
|
+
const AnimatedSectionList = Animated.createAnimatedComponent(SectionList);
|
|
10
|
+
export default function CollapsibleSectionList(_ref) {
|
|
11
|
+
let {
|
|
12
|
+
headerSnappable = true,
|
|
13
|
+
...props
|
|
14
|
+
} = _ref;
|
|
15
|
+
const {
|
|
16
|
+
headerHeight
|
|
17
|
+
} = useCollapsibleContext();
|
|
18
|
+
const {
|
|
19
|
+
contentMinHeight,
|
|
20
|
+
scrollViewRef,
|
|
21
|
+
fixedHeaderHeight
|
|
22
|
+
} = useInternalCollapsibleContext();
|
|
23
|
+
const mounted = useRef(true);
|
|
24
|
+
const contentHeight = useRef(0);
|
|
25
|
+
const [internalContentMinHeight, setInternalContentMinHeight] = useState(contentMinHeight.value);
|
|
26
|
+
const [internalProgressViewOffset, setInternalProgressViewOffset] = useState(0);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
return () => {
|
|
29
|
+
mounted.current = false;
|
|
30
|
+
};
|
|
31
|
+
}, []);
|
|
32
|
+
const scrollTo = useCallback(() => {
|
|
33
|
+
console.warn('Not supported');
|
|
34
|
+
}, []);
|
|
35
|
+
const scrollToIndex = useCallback(() => {
|
|
36
|
+
console.warn('Not supported');
|
|
37
|
+
}, []);
|
|
38
|
+
const scrollToLocation = useCallback(params => {
|
|
39
|
+
var _scrollViewRef$curren;
|
|
40
|
+
(_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 ? void 0 : _scrollViewRef$curren.scrollToLocation(params);
|
|
41
|
+
}, [scrollViewRef]);
|
|
42
|
+
const {
|
|
43
|
+
scrollHandler
|
|
44
|
+
} = useAnimatedScroll({
|
|
45
|
+
headerSnappable,
|
|
46
|
+
scrollTo,
|
|
47
|
+
scrollToIndex,
|
|
48
|
+
scrollToLocation
|
|
49
|
+
});
|
|
50
|
+
const handleInternalContentHeight = useCallback(value => {
|
|
51
|
+
if (mounted.current) {
|
|
52
|
+
setInternalContentMinHeight(value);
|
|
53
|
+
}
|
|
54
|
+
}, []);
|
|
55
|
+
const handleInternalProgressViewOffset = useCallback(value => {
|
|
56
|
+
if (mounted.current) {
|
|
57
|
+
setInternalProgressViewOffset(value);
|
|
58
|
+
}
|
|
59
|
+
}, []);
|
|
60
|
+
useAnimatedReaction(() => {
|
|
61
|
+
return contentMinHeight.value;
|
|
62
|
+
}, (result, previous) => {
|
|
63
|
+
if (result !== previous) {
|
|
64
|
+
if (contentHeight.current < result && internalContentMinHeight !== result) {
|
|
65
|
+
runOnJS(handleInternalContentHeight)(result);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
useAnimatedReaction(() => {
|
|
70
|
+
return fixedHeaderHeight.value;
|
|
71
|
+
}, (result, previous) => {
|
|
72
|
+
if (result !== previous) {
|
|
73
|
+
runOnJS(handleInternalProgressViewOffset)(result);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
const contentContainerStyle = useMemo(() => [styles.contentContainer, {
|
|
77
|
+
minHeight: internalContentMinHeight
|
|
78
|
+
}, props.contentContainerStyle], [props.contentContainerStyle, internalContentMinHeight]);
|
|
79
|
+
const handleContentSizeChange = useCallback((_, height) => {
|
|
80
|
+
contentHeight.current = height;
|
|
81
|
+
}, []);
|
|
82
|
+
const handleScrollToIndexFailed = useCallback(() => {}, []);
|
|
83
|
+
function renderListHeader() {
|
|
84
|
+
return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(AnimatedTopView, {
|
|
85
|
+
height: headerHeight
|
|
86
|
+
}), props.ListHeaderComponent);
|
|
87
|
+
}
|
|
88
|
+
return /*#__PURE__*/React.createElement(AnimatedSectionList, _extends({
|
|
89
|
+
ref: scrollViewRef,
|
|
90
|
+
keyboardDismissMode: "on-drag",
|
|
91
|
+
keyboardShouldPersistTaps: "handled",
|
|
92
|
+
scrollEventThrottle: 1,
|
|
93
|
+
onScrollToIndexFailed: handleScrollToIndexFailed
|
|
94
|
+
}, props, {
|
|
95
|
+
style: [styles.container, props.style],
|
|
96
|
+
contentContainerStyle: contentContainerStyle,
|
|
97
|
+
onScroll: scrollHandler,
|
|
98
|
+
ListHeaderComponent: renderListHeader(),
|
|
99
|
+
onContentSizeChange: handleContentSizeChange
|
|
100
|
+
//@ts-ignore
|
|
101
|
+
,
|
|
102
|
+
simultaneousHandlers: [],
|
|
103
|
+
progressViewOffset: internalProgressViewOffset
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
const styles = StyleSheet.create({
|
|
107
|
+
container: {
|
|
108
|
+
...StyleSheet.absoluteFillObject
|
|
109
|
+
},
|
|
110
|
+
contentContainer: {
|
|
111
|
+
flexGrow: 1
|
|
112
|
+
},
|
|
113
|
+
topView: {
|
|
114
|
+
position: 'absolute',
|
|
115
|
+
top: 0,
|
|
116
|
+
left: 0,
|
|
117
|
+
right: 0
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=CollapsibleSectionList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","StyleSheet","SectionList","Animated","runOnJS","useAnimatedReaction","useAnimatedScroll","useInternalCollapsibleContext","AnimatedTopView","useCollapsibleContext","AnimatedSectionList","createAnimatedComponent","CollapsibleSectionList","_ref","headerSnappable","props","headerHeight","contentMinHeight","scrollViewRef","fixedHeaderHeight","mounted","contentHeight","internalContentMinHeight","setInternalContentMinHeight","value","internalProgressViewOffset","setInternalProgressViewOffset","current","scrollTo","console","warn","scrollToIndex","scrollToLocation","params","_scrollViewRef$curren","scrollHandler","handleInternalContentHeight","handleInternalProgressViewOffset","result","previous","contentContainerStyle","styles","contentContainer","minHeight","handleContentSizeChange","_","height","handleScrollToIndexFailed","renderListHeader","createElement","ListHeaderComponent","_extends","ref","keyboardDismissMode","keyboardShouldPersistTaps","scrollEventThrottle","onScrollToIndexFailed","style","container","onScroll","onContentSizeChange","simultaneousHandlers","progressViewOffset","create","absoluteFillObject","flexGrow","topView","position","top","left","right"],"sourceRoot":"../../../../src","sources":["components/scrollable/CollapsibleSectionList.tsx"],"mappings":"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"}
|
|
@@ -11,7 +11,8 @@ export default function useAnimatedScroll(_ref) {
|
|
|
11
11
|
let {
|
|
12
12
|
headerSnappable,
|
|
13
13
|
scrollTo,
|
|
14
|
-
scrollToIndex
|
|
14
|
+
scrollToIndex,
|
|
15
|
+
scrollToLocation
|
|
15
16
|
} = _ref;
|
|
16
17
|
const scrollDirection = useSharedValue('unknown');
|
|
17
18
|
const {
|
|
@@ -36,9 +37,10 @@ export default function useAnimatedScroll(_ref) {
|
|
|
36
37
|
collapse,
|
|
37
38
|
expand,
|
|
38
39
|
scrollTo,
|
|
39
|
-
scrollToIndex
|
|
40
|
+
scrollToIndex,
|
|
41
|
+
scrollToLocation
|
|
40
42
|
});
|
|
41
|
-
}, [setCollapsibleHandlers, collapse, expand, scrollTo, scrollToIndex]);
|
|
43
|
+
}, [setCollapsibleHandlers, collapse, expand, scrollTo, scrollToIndex, scrollToLocation]);
|
|
42
44
|
const scrollHandler = useAnimatedScrollHandler({
|
|
43
45
|
onScroll: event => {
|
|
44
46
|
const offset = event.contentOffset.y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","Dimensions","runOnJS","useAnimatedScrollHandler","useSharedValue","useCollapsibleContext","useInternalCollapsibleContext","height","wHeight","get","useAnimatedScroll","_ref","headerSnappable","scrollTo","scrollToIndex","scrollDirection","scrollY","setCollapsibleHandlers","fixedHeaderHeight","value","requestAnimationFrame","collapse","animated","arguments","length","undefined","expand","scrollHandler","onScroll","event","offset","contentOffset","y","diff","onEndDrag","maxY","delta","Math","abs","yValue"],"sourceRoot":"../../../../src","sources":["components/scrollable/useAnimatedScroll.ts"],"mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,SAASC,UAAU,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","Dimensions","runOnJS","useAnimatedScrollHandler","useSharedValue","useCollapsibleContext","useInternalCollapsibleContext","height","wHeight","get","useAnimatedScroll","_ref","headerSnappable","scrollTo","scrollToIndex","scrollToLocation","scrollDirection","scrollY","setCollapsibleHandlers","fixedHeaderHeight","value","requestAnimationFrame","collapse","animated","arguments","length","undefined","expand","scrollHandler","onScroll","event","offset","contentOffset","y","diff","onEndDrag","maxY","delta","Math","abs","yValue"],"sourceRoot":"../../../../src","sources":["components/scrollable/useAnimatedScroll.ts"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { default as useCollapsibleContext } from './hooks/useCollapsibleContext'
|
|
|
3
3
|
export { default as CollapsibleContainer } from './components/CollapsibleContainer';
|
|
4
4
|
export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
|
|
5
5
|
export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
|
|
6
|
+
export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
|
|
6
7
|
export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
|
|
7
8
|
export { default as StickyView } from './components/header/StickyView';
|
|
8
9
|
export { default as CollapsibleView } from './components/CollapsibleView';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","withCollapsibleContext","useCollapsibleContext","CollapsibleContainer","CollapsibleFlatList","CollapsibleScrollView","CollapsibleHeaderContainer","StickyView","CollapsibleView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,OAAO,IAAIC,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,+BAA+B;AAEhF,SAASF,OAAO,IAAIG,oBAAoB,QAAQ,mCAAmC;AACnF,SAASH,OAAO,IAAII,mBAAmB,QAAQ,6CAA6C;AAC5F,SAASJ,OAAO,IAAIK,qBAAqB,QAAQ,+CAA+C;AAChG,SAASL,OAAO,IAAIM,
|
|
1
|
+
{"version":3,"names":["default","withCollapsibleContext","useCollapsibleContext","CollapsibleContainer","CollapsibleFlatList","CollapsibleScrollView","CollapsibleSectionList","CollapsibleHeaderContainer","StickyView","CollapsibleView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,OAAO,IAAIC,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,+BAA+B;AAEhF,SAASF,OAAO,IAAIG,oBAAoB,QAAQ,mCAAmC;AACnF,SAASH,OAAO,IAAII,mBAAmB,QAAQ,6CAA6C;AAC5F,SAASJ,OAAO,IAAIK,qBAAqB,QAAQ,+CAA+C;AAChG,SAASL,OAAO,IAAIM,sBAAsB,QAAQ,gDAAgD;AAClG,SAASN,OAAO,IAAIO,0BAA0B,QAAQ,gDAAgD;AACtG,SAASP,OAAO,IAAIQ,UAAU,QAAQ,gCAAgC;AACtE,SAASR,OAAO,IAAIS,eAAe,QAAQ,8BAA8B;AACzE,cAAc,8BAA8B"}
|
|
@@ -78,6 +78,10 @@ export default function withCollapsibleContext(Component) {
|
|
|
78
78
|
var _collapsibleHandlers$4;
|
|
79
79
|
return (_collapsibleHandlers$4 = collapsibleHandlers.current) === null || _collapsibleHandlers$4 === void 0 ? void 0 : _collapsibleHandlers$4.scrollToIndex(params);
|
|
80
80
|
},
|
|
81
|
+
scrollToLocation: params => {
|
|
82
|
+
var _collapsibleHandlers$5;
|
|
83
|
+
return (_collapsibleHandlers$5 = collapsibleHandlers.current) === null || _collapsibleHandlers$5 === void 0 ? void 0 : _collapsibleHandlers$5.scrollToLocation(params);
|
|
84
|
+
},
|
|
81
85
|
headerHeight,
|
|
82
86
|
scrollY,
|
|
83
87
|
headerCollapsed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","useRef","CollapsibleContext","InternalCollapsibleContext","useDerivedValue","useSharedValue","withTiming","withCollapsibleContext","Component","props","collapsibleHandlers","headerHeight","scrollY","fixedHeaderHeight","containerHeight","scrollViewRef","headerContainerLayouts","headerViewPositions","setCollapsibleHandlers","handlers","current","headerCollapsed","maxY","value","contentMinHeight","handleHeaderContainerLayout","key","layout","stickyHeight","undefined","headerContainers","Object","keys","filter","k","totalHeight","reduce","acc","_headerContainerLayou","height","duration","sortedHeaders","sort","a","b","_headerContainerLayou2","_headerContainerLayou3","y","values","aStickyHeight","index","length","_headerContainerLayou4","headerKey","sHeight","top","handleContainerHeight","context","collapse","animated","_collapsibleHandlers$","expand","_collapsibleHandlers$2","scrollTo","offset","animate","_collapsibleHandlers$3","scrollToIndex","params","_collapsibleHandlers$4","internalContext","createElement","Provider"],"sourceRoot":"../../src","sources":["withCollapsibleContext.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","useRef","CollapsibleContext","InternalCollapsibleContext","useDerivedValue","useSharedValue","withTiming","withCollapsibleContext","Component","props","collapsibleHandlers","headerHeight","scrollY","fixedHeaderHeight","containerHeight","scrollViewRef","headerContainerLayouts","headerViewPositions","setCollapsibleHandlers","handlers","current","headerCollapsed","maxY","value","contentMinHeight","handleHeaderContainerLayout","key","layout","stickyHeight","undefined","headerContainers","Object","keys","filter","k","totalHeight","reduce","acc","_headerContainerLayou","height","duration","sortedHeaders","sort","a","b","_headerContainerLayou2","_headerContainerLayou3","y","values","aStickyHeight","index","length","_headerContainerLayou4","headerKey","sHeight","top","handleContainerHeight","context","collapse","animated","_collapsibleHandlers$","expand","_collapsibleHandlers$2","scrollTo","offset","animate","_collapsibleHandlers$3","scrollToIndex","params","_collapsibleHandlers$4","scrollToLocation","_collapsibleHandlers$5","internalContext","createElement","Provider"],"sourceRoot":"../../src","sources":["withCollapsibleContext.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleHeaderContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/header/CollapsibleHeaderContainer.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAsB,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAIF,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,EACjD,QAAQ,EACR,cAAc,GACf,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"CollapsibleHeaderContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/header/CollapsibleHeaderContainer.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAsB,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAIF,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,EACjD,QAAQ,EACR,cAAc,GACf,EAAE,KAAK,QA0CP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleFlatList.tsx"],"names":[],"mappings":"AACA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAA8B,MAAM,cAAc,CAAC;AAOzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,GAC3D,gBAAgB,CAAC;AAEnB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,EAChD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"CollapsibleFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleFlatList.tsx"],"names":[],"mappings":"AACA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAA8B,MAAM,cAAc,CAAC;AAOzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,GAC3D,gBAAgB,CAAC;AAEnB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,EAChD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,qBAyHb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleScrollView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EACZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAAkB,eAAe,EAAc,MAAM,cAAc,CAAC;AAM3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,KAAK,KAAK,GAAG,eAAe,GAC1B,gBAAgB,GAAG;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEJ,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,eAAsB,EACtB,QAAQ,EACR,UAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"CollapsibleScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleScrollView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EACZ,SAAS,EAMV,MAAM,OAAO,CAAC;AACf,OAAO,EAAkB,eAAe,EAAc,MAAM,cAAc,CAAC;AAM3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,KAAK,KAAK,GAAG,eAAe,GAC1B,gBAAgB,GAAG;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEJ,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,eAAsB,EACtB,QAAQ,EACR,UAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,qBAuFP"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SectionListProps } from 'react-native';
|
|
3
|
+
import type { CollapsibleProps } from '../../types';
|
|
4
|
+
type Props<Data> = Omit<SectionListProps<Data>, 'scrollEnabled'> & CollapsibleProps;
|
|
5
|
+
export default function CollapsibleSectionList<Data>({ headerSnappable, ...props }: Props<Data>): React.JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=CollapsibleSectionList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollapsibleSectionList.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/CollapsibleSectionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAIL,gBAAgB,EAEjB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,GAC9D,gBAAgB,CAAC;AAEnB,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,IAAI,EAAE,EACnD,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,IAAI,CAAC,qBAyHb"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { SectionListScrollParams } from 'react-native';
|
|
1
2
|
import type { ScrollToIndexParams } from '../../types';
|
|
2
3
|
type Props = {
|
|
3
4
|
headerSnappable: boolean;
|
|
4
5
|
scrollTo: (yValue: number, animated?: boolean) => void;
|
|
5
6
|
scrollToIndex: (params: ScrollToIndexParams) => void;
|
|
7
|
+
scrollToLocation: (params: SectionListScrollParams) => void;
|
|
6
8
|
};
|
|
7
|
-
export default function useAnimatedScroll({ headerSnappable, scrollTo, scrollToIndex, }: Props): {
|
|
9
|
+
export default function useAnimatedScroll({ headerSnappable, scrollTo, scrollToIndex, scrollToLocation, }: Props): {
|
|
8
10
|
scrollHandler: (event: import("react-native").NativeSyntheticEvent<import("react-native").NativeScrollEvent>) => void;
|
|
9
11
|
collapse: (animated?: any) => void;
|
|
10
12
|
expand: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnimatedScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/useAnimatedScroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAnimatedScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/scrollable/useAnimatedScroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAMnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMvD,KAAK,KAAK,GAAG;IACX,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,eAAe,EACf,QAAQ,EACR,aAAa,EACb,gBAAgB,GACjB,EAAE,KAAK;;;;EAsEP"}
|
|
@@ -3,6 +3,7 @@ export { default as useCollapsibleContext } from './hooks/useCollapsibleContext'
|
|
|
3
3
|
export { default as CollapsibleContainer } from './components/CollapsibleContainer';
|
|
4
4
|
export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
|
|
5
5
|
export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
|
|
6
|
+
export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
|
|
6
7
|
export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
|
|
7
8
|
export { default as StickyView } from './components/header/StickyView';
|
|
8
9
|
export { default as CollapsibleView } from './components/CollapsibleView';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACvG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,cAAc,8BAA8B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { LayoutRectangle } from 'react-native';
|
|
2
|
+
import type { LayoutRectangle, SectionListScrollParams } from 'react-native';
|
|
3
3
|
import type Animated from 'react-native-reanimated';
|
|
4
4
|
export type ScrollToIndexParams = {
|
|
5
5
|
animated?: boolean | null;
|
|
@@ -12,6 +12,7 @@ export type CollapsibleHandles = {
|
|
|
12
12
|
expand: () => void;
|
|
13
13
|
scrollTo: (offset: number, animate?: boolean) => void;
|
|
14
14
|
scrollToIndex: (params: ScrollToIndexParams) => void;
|
|
15
|
+
scrollToLocation: (params: SectionListScrollParams) => void;
|
|
15
16
|
};
|
|
16
17
|
export type CollapsibleContextType = CollapsibleHandles & {
|
|
17
18
|
scrollY: Animated.SharedValue<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,gBAAgB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CACvC,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CACtD,CAAC;IACF,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,2BAA2B,EAAE,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,CAAC;IACV,sBAAsB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCollapsibleContext.d.ts","sourceRoot":"","sources":["../../src/withCollapsibleContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAgC,EAAE,EAAE,MAAM,OAAO,CAAC;AAWhE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WACjD,CAAC,
|
|
1
|
+
{"version":3,"file":"withCollapsibleContext.d.ts","sourceRoot":"","sources":["../../src/withCollapsibleContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAgC,EAAE,EAAE,MAAM,OAAO,CAAC;AAWhE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WACjD,CAAC,uBAwHjB"}
|
package/package.json
CHANGED
|
@@ -14,19 +14,24 @@ export default function CollapsibleHeaderContainer({
|
|
|
14
14
|
children,
|
|
15
15
|
containerStyle,
|
|
16
16
|
}: Props) {
|
|
17
|
-
const
|
|
17
|
+
const originalKey = useMemo(() => key++, []);
|
|
18
|
+
const contentKey = useMemo(
|
|
19
|
+
() => `collapsible-header-${originalKey}`,
|
|
20
|
+
[originalKey]
|
|
21
|
+
);
|
|
18
22
|
const { mount, unmount, update } = useCollapsibleHeaderConsumerContext();
|
|
19
23
|
|
|
20
24
|
const internalStyle = useMemo(() => {
|
|
21
25
|
return {
|
|
22
|
-
zIndex: 100000 - key,
|
|
26
|
+
zIndex: 100000 - key - originalKey,
|
|
23
27
|
};
|
|
24
|
-
|
|
28
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
+
}, [key, originalKey]);
|
|
25
30
|
|
|
26
31
|
const content = useMemo(() => {
|
|
27
32
|
return (
|
|
28
33
|
<CollapsibleHeaderContainerProvider
|
|
29
|
-
containerStyle={[
|
|
34
|
+
containerStyle={[internalStyle, containerStyle]}
|
|
30
35
|
contentKey={contentKey}
|
|
31
36
|
key={contentKey}
|
|
32
37
|
>
|
|
@@ -54,10 +54,15 @@ export default function CollapsibleFlatList<Data>({
|
|
|
54
54
|
scrollViewRef.current?.scrollToIndex(params);
|
|
55
55
|
}, []);
|
|
56
56
|
|
|
57
|
+
const scrollToLocation = useCallback(() => {
|
|
58
|
+
console.warn('CollapsibleFlatList does not support scrollToLocation');
|
|
59
|
+
}, []);
|
|
60
|
+
|
|
57
61
|
const { scrollHandler } = useAnimatedScroll({
|
|
58
62
|
headerSnappable,
|
|
59
63
|
scrollTo,
|
|
60
64
|
scrollToIndex,
|
|
65
|
+
scrollToLocation,
|
|
61
66
|
});
|
|
62
67
|
|
|
63
68
|
const handleInternalContentHeight = useCallback((value: number) => {
|
|
@@ -54,10 +54,15 @@ export default function CollapsibleScrollView({
|
|
|
54
54
|
console.warn("CollapsibleScrollView doesn't support scrollToIndex");
|
|
55
55
|
}, []);
|
|
56
56
|
|
|
57
|
+
const scrollToLocation = useCallback(() => {
|
|
58
|
+
console.warn('CollapsibleFlatList does not support scrollToLocation');
|
|
59
|
+
}, []);
|
|
60
|
+
|
|
57
61
|
const { scrollHandler } = useAnimatedScroll({
|
|
58
62
|
headerSnappable,
|
|
59
63
|
scrollTo,
|
|
60
64
|
scrollToIndex,
|
|
65
|
+
scrollToLocation,
|
|
61
66
|
});
|
|
62
67
|
|
|
63
68
|
const animatedStyle = useAnimatedStyle(() => {
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
useCallback,
|
|
3
|
+
useEffect,
|
|
4
|
+
useMemo,
|
|
5
|
+
useRef,
|
|
6
|
+
useState,
|
|
7
|
+
} from 'react';
|
|
8
|
+
import {
|
|
9
|
+
View,
|
|
10
|
+
StyleSheet,
|
|
11
|
+
SectionList,
|
|
12
|
+
SectionListProps,
|
|
13
|
+
SectionListScrollParams,
|
|
14
|
+
} from 'react-native';
|
|
15
|
+
import Animated, {
|
|
16
|
+
runOnJS,
|
|
17
|
+
useAnimatedReaction,
|
|
18
|
+
} from 'react-native-reanimated';
|
|
19
|
+
import useAnimatedScroll from './useAnimatedScroll';
|
|
20
|
+
import useInternalCollapsibleContext from '../../hooks/useInternalCollapsibleContext';
|
|
21
|
+
import type { CollapsibleProps } from '../../types';
|
|
22
|
+
import AnimatedTopView from '../header/AnimatedTopView';
|
|
23
|
+
import useCollapsibleContext from '../../hooks/useCollapsibleContext';
|
|
24
|
+
|
|
25
|
+
const AnimatedSectionList = Animated.createAnimatedComponent(SectionList);
|
|
26
|
+
|
|
27
|
+
type Props<Data> = Omit<SectionListProps<Data>, 'scrollEnabled'> &
|
|
28
|
+
CollapsibleProps;
|
|
29
|
+
|
|
30
|
+
export default function CollapsibleSectionList<Data>({
|
|
31
|
+
headerSnappable = true,
|
|
32
|
+
...props
|
|
33
|
+
}: Props<Data>) {
|
|
34
|
+
const { headerHeight } = useCollapsibleContext();
|
|
35
|
+
const { contentMinHeight, scrollViewRef, fixedHeaderHeight } =
|
|
36
|
+
useInternalCollapsibleContext();
|
|
37
|
+
const mounted = useRef(true);
|
|
38
|
+
const contentHeight = useRef(0);
|
|
39
|
+
const [internalContentMinHeight, setInternalContentMinHeight] = useState(
|
|
40
|
+
contentMinHeight.value
|
|
41
|
+
);
|
|
42
|
+
const [internalProgressViewOffset, setInternalProgressViewOffset] =
|
|
43
|
+
useState(0);
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
return () => {
|
|
47
|
+
mounted.current = false;
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
|
|
51
|
+
const scrollTo = useCallback(() => {
|
|
52
|
+
console.warn('Not supported');
|
|
53
|
+
}, []);
|
|
54
|
+
|
|
55
|
+
const scrollToIndex = useCallback(() => {
|
|
56
|
+
console.warn('Not supported');
|
|
57
|
+
}, []);
|
|
58
|
+
|
|
59
|
+
const scrollToLocation = useCallback(
|
|
60
|
+
(params: SectionListScrollParams) => {
|
|
61
|
+
scrollViewRef.current?.scrollToLocation(params);
|
|
62
|
+
},
|
|
63
|
+
[scrollViewRef]
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const { scrollHandler } = useAnimatedScroll({
|
|
67
|
+
headerSnappable,
|
|
68
|
+
scrollTo,
|
|
69
|
+
scrollToIndex,
|
|
70
|
+
scrollToLocation,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const handleInternalContentHeight = useCallback((value: number) => {
|
|
74
|
+
if (mounted.current) {
|
|
75
|
+
setInternalContentMinHeight(value);
|
|
76
|
+
}
|
|
77
|
+
}, []);
|
|
78
|
+
|
|
79
|
+
const handleInternalProgressViewOffset = useCallback((value: number) => {
|
|
80
|
+
if (mounted.current) {
|
|
81
|
+
setInternalProgressViewOffset(value);
|
|
82
|
+
}
|
|
83
|
+
}, []);
|
|
84
|
+
|
|
85
|
+
useAnimatedReaction(
|
|
86
|
+
() => {
|
|
87
|
+
return contentMinHeight.value;
|
|
88
|
+
},
|
|
89
|
+
(result, previous) => {
|
|
90
|
+
if (result !== previous) {
|
|
91
|
+
if (
|
|
92
|
+
contentHeight.current < result &&
|
|
93
|
+
internalContentMinHeight !== result
|
|
94
|
+
) {
|
|
95
|
+
runOnJS(handleInternalContentHeight)(result);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
useAnimatedReaction(
|
|
102
|
+
() => {
|
|
103
|
+
return fixedHeaderHeight.value;
|
|
104
|
+
},
|
|
105
|
+
(result, previous) => {
|
|
106
|
+
if (result !== previous) {
|
|
107
|
+
runOnJS(handleInternalProgressViewOffset)(result);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
const contentContainerStyle = useMemo(
|
|
113
|
+
() => [
|
|
114
|
+
styles.contentContainer,
|
|
115
|
+
{ minHeight: internalContentMinHeight },
|
|
116
|
+
props.contentContainerStyle,
|
|
117
|
+
],
|
|
118
|
+
[props.contentContainerStyle, internalContentMinHeight]
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
const handleContentSizeChange = useCallback((_, height) => {
|
|
122
|
+
contentHeight.current = height;
|
|
123
|
+
}, []);
|
|
124
|
+
|
|
125
|
+
const handleScrollToIndexFailed = useCallback(() => {}, []);
|
|
126
|
+
|
|
127
|
+
function renderListHeader() {
|
|
128
|
+
return (
|
|
129
|
+
<View>
|
|
130
|
+
<AnimatedTopView height={headerHeight} />
|
|
131
|
+
{props.ListHeaderComponent}
|
|
132
|
+
</View>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return (
|
|
137
|
+
<AnimatedSectionList
|
|
138
|
+
ref={scrollViewRef}
|
|
139
|
+
keyboardDismissMode="on-drag"
|
|
140
|
+
keyboardShouldPersistTaps="handled"
|
|
141
|
+
scrollEventThrottle={1}
|
|
142
|
+
onScrollToIndexFailed={handleScrollToIndexFailed}
|
|
143
|
+
{...props}
|
|
144
|
+
style={[styles.container, props.style]}
|
|
145
|
+
contentContainerStyle={contentContainerStyle}
|
|
146
|
+
onScroll={scrollHandler}
|
|
147
|
+
ListHeaderComponent={renderListHeader()}
|
|
148
|
+
onContentSizeChange={handleContentSizeChange}
|
|
149
|
+
//@ts-ignore
|
|
150
|
+
simultaneousHandlers={[]}
|
|
151
|
+
progressViewOffset={internalProgressViewOffset}
|
|
152
|
+
/>
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const styles = StyleSheet.create({
|
|
157
|
+
container: {
|
|
158
|
+
...StyleSheet.absoluteFillObject,
|
|
159
|
+
},
|
|
160
|
+
contentContainer: {
|
|
161
|
+
flexGrow: 1,
|
|
162
|
+
},
|
|
163
|
+
topView: {
|
|
164
|
+
position: 'absolute',
|
|
165
|
+
top: 0,
|
|
166
|
+
left: 0,
|
|
167
|
+
right: 0,
|
|
168
|
+
},
|
|
169
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable react-hooks/exhaustive-deps */
|
|
2
2
|
import { useCallback, useEffect } from 'react';
|
|
3
|
-
import { Dimensions } from 'react-native';
|
|
3
|
+
import { Dimensions, SectionListScrollParams } from 'react-native';
|
|
4
4
|
import {
|
|
5
5
|
runOnJS,
|
|
6
6
|
useAnimatedScrollHandler,
|
|
@@ -16,12 +16,14 @@ type Props = {
|
|
|
16
16
|
headerSnappable: boolean;
|
|
17
17
|
scrollTo: (yValue: number, animated?: boolean) => void;
|
|
18
18
|
scrollToIndex: (params: ScrollToIndexParams) => void;
|
|
19
|
+
scrollToLocation: (params: SectionListScrollParams) => void;
|
|
19
20
|
};
|
|
20
21
|
|
|
21
22
|
export default function useAnimatedScroll({
|
|
22
23
|
headerSnappable,
|
|
23
24
|
scrollTo,
|
|
24
25
|
scrollToIndex,
|
|
26
|
+
scrollToLocation,
|
|
25
27
|
}: Props) {
|
|
26
28
|
const scrollDirection = useSharedValue('unknown');
|
|
27
29
|
const { scrollY } = useCollapsibleContext();
|
|
@@ -49,8 +51,16 @@ export default function useAnimatedScroll({
|
|
|
49
51
|
expand,
|
|
50
52
|
scrollTo,
|
|
51
53
|
scrollToIndex,
|
|
54
|
+
scrollToLocation,
|
|
52
55
|
});
|
|
53
|
-
}, [
|
|
56
|
+
}, [
|
|
57
|
+
setCollapsibleHandlers,
|
|
58
|
+
collapse,
|
|
59
|
+
expand,
|
|
60
|
+
scrollTo,
|
|
61
|
+
scrollToIndex,
|
|
62
|
+
scrollToLocation,
|
|
63
|
+
]);
|
|
54
64
|
|
|
55
65
|
const scrollHandler = useAnimatedScrollHandler(
|
|
56
66
|
{
|
package/src/index.tsx
CHANGED
|
@@ -4,6 +4,7 @@ export { default as useCollapsibleContext } from './hooks/useCollapsibleContext'
|
|
|
4
4
|
export { default as CollapsibleContainer } from './components/CollapsibleContainer';
|
|
5
5
|
export { default as CollapsibleFlatList } from './components/scrollable/CollapsibleFlatList';
|
|
6
6
|
export { default as CollapsibleScrollView } from './components/scrollable/CollapsibleScrollView';
|
|
7
|
+
export { default as CollapsibleSectionList } from './components/scrollable/CollapsibleSectionList';
|
|
7
8
|
export { default as CollapsibleHeaderContainer } from './components/header/CollapsibleHeaderContainer';
|
|
8
9
|
export { default as StickyView } from './components/header/StickyView';
|
|
9
10
|
export { default as CollapsibleView } from './components/CollapsibleView';
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { LayoutRectangle } from 'react-native';
|
|
2
|
+
import type { LayoutRectangle, SectionListScrollParams } from 'react-native';
|
|
3
3
|
import type Animated from 'react-native-reanimated';
|
|
4
4
|
|
|
5
5
|
export type ScrollToIndexParams = {
|
|
@@ -14,6 +14,7 @@ export type CollapsibleHandles = {
|
|
|
14
14
|
expand: () => void;
|
|
15
15
|
scrollTo: (offset: number, animate?: boolean) => void;
|
|
16
16
|
scrollToIndex: (params: ScrollToIndexParams) => void;
|
|
17
|
+
scrollToLocation: (params: SectionListScrollParams) => void;
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export type CollapsibleContextType = CollapsibleHandles & {
|