@r0b0t3d/react-native-collapsible 1.2.2 → 1.3.0

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.
Files changed (37) hide show
  1. package/lib/commonjs/components/CollapsibleContainer.js +5 -2
  2. package/lib/commonjs/components/CollapsibleContainer.js.map +1 -1
  3. package/lib/commonjs/components/header/CollapsibleHeaderConsumer.js +67 -0
  4. package/lib/commonjs/components/header/CollapsibleHeaderConsumer.js.map +1 -0
  5. package/lib/commonjs/components/header/CollapsibleHeaderContainer.js +15 -62
  6. package/lib/commonjs/components/header/CollapsibleHeaderContainer.js.map +1 -1
  7. package/lib/commonjs/components/header/CollapsibleHeaderProvider.js +62 -0
  8. package/lib/commonjs/components/header/CollapsibleHeaderProvider.js.map +1 -0
  9. package/lib/commonjs/hooks/useCollapsibleHeaderContext.js +26 -0
  10. package/lib/commonjs/hooks/useCollapsibleHeaderContext.js.map +1 -0
  11. package/lib/commonjs/withCollapsibleContext.js +6 -15
  12. package/lib/commonjs/withCollapsibleContext.js.map +1 -1
  13. package/lib/module/components/CollapsibleContainer.js +4 -2
  14. package/lib/module/components/CollapsibleContainer.js.map +1 -1
  15. package/lib/module/components/header/CollapsibleHeaderConsumer.js +47 -0
  16. package/lib/module/components/header/CollapsibleHeaderConsumer.js.map +1 -0
  17. package/lib/module/components/header/CollapsibleHeaderContainer.js +15 -54
  18. package/lib/module/components/header/CollapsibleHeaderContainer.js.map +1 -1
  19. package/lib/module/components/header/CollapsibleHeaderProvider.js +49 -0
  20. package/lib/module/components/header/CollapsibleHeaderProvider.js.map +1 -0
  21. package/lib/module/hooks/useCollapsibleHeaderContext.js +15 -0
  22. package/lib/module/hooks/useCollapsibleHeaderContext.js.map +1 -0
  23. package/lib/module/withCollapsibleContext.js +5 -15
  24. package/lib/module/withCollapsibleContext.js.map +1 -1
  25. package/lib/typescript/components/header/CollapsibleHeaderConsumer.d.ts +1 -0
  26. package/lib/typescript/components/header/CollapsibleHeaderContainer.d.ts +2 -2
  27. package/lib/typescript/components/header/CollapsibleHeaderProvider.d.ts +4 -0
  28. package/lib/typescript/hooks/useCollapsibleHeaderContext.d.ts +14 -0
  29. package/lib/typescript/types.d.ts +1 -1
  30. package/package.json +1 -1
  31. package/src/components/CollapsibleContainer.tsx +3 -0
  32. package/src/components/header/CollapsibleHeaderConsumer.tsx +61 -0
  33. package/src/components/header/CollapsibleHeaderContainer.tsx +13 -82
  34. package/src/components/header/CollapsibleHeaderProvider.tsx +70 -0
  35. package/src/hooks/useCollapsibleHeaderContext.ts +22 -0
  36. package/src/types.ts +1 -1
  37. package/src/withCollapsibleContext.tsx +15 -26
package/src/types.ts CHANGED
@@ -42,7 +42,7 @@ export type CollapsibleContextInternalType = {
42
42
  viewKey: string,
43
43
  viewRef?: React.RefObject<View>
44
44
  ) => void;
45
- handleHeaderContainerLayout: (viewKey: string, height?: number) => void;
45
+ handleHeaderContainerLayout: (height: number) => void;
46
46
  setCollapsibleHandlers: (handlers: CollapsibleHandles) => void;
47
47
  };
48
48
 
@@ -13,6 +13,7 @@ import {
13
13
  import type { View } from 'react-native';
14
14
  import { debounce } from './utils/debounce';
15
15
  import PullToRefreshProvider from './components/pullToRefresh/PullToRefreshProvider';
16
+ import CollapsibleHeaderProvider from './components/header/CollapsibleHeaderProvider';
16
17
 
17
18
  export default function withCollapsibleContext<T>(Component: FC<T>) {
18
19
  return (props: T) => {
@@ -29,13 +30,10 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
29
30
  const stickyHeaderHeight = useSharedValue(0);
30
31
  const containerHeight = useSharedValue(0);
31
32
  const firstStickyViewY = useSharedValue(1000000);
32
- const headerContainersHeight = useRef<Record<string, number>>({});
33
33
  const containerRef = useRef<View>(null);
34
34
  const scrollViewRef = useRef<View>(null);
35
35
 
36
36
  const setCollapsibleHandlers = useCallback((handlers) => {
37
- console.log({ handlers });
38
-
39
37
  collapsibleHandlers.current = handlers;
40
38
  }, []);
41
39
 
@@ -128,26 +126,14 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
128
126
  }, 200);
129
127
  }, []);
130
128
 
131
- const handleHeaderContainerLayout = useCallback(
132
- (viewKey: string, height?: number) => {
133
- if (!height) {
134
- delete headerContainersHeight.current[viewKey];
135
- } else {
136
- headerContainersHeight.current[viewKey] = height;
137
- }
138
- const totalHeight = Object.keys(headerContainersHeight.current).reduce(
139
- (acc, key) => headerContainersHeight.current[key] + acc,
140
- 0
141
- );
142
- headerHeight.value = withTiming(totalHeight, {
143
- duration: fixedHeaderHeight.value === 0 ? 0 : 10,
144
- });
145
- fixedHeaderHeight.value = totalHeight;
146
- // Try refresh sticky positions
147
- debounceRefreshStickyPositions();
148
- },
149
- []
150
- );
129
+ const handleHeaderContainerLayout = useCallback((height: number) => {
130
+ headerHeight.value = withTiming(height, {
131
+ duration: fixedHeaderHeight.value === 0 ? 0 : 10,
132
+ });
133
+ fixedHeaderHeight.value = height;
134
+ // Try refresh sticky positions
135
+ debounceRefreshStickyPositions();
136
+ }, []);
151
137
 
152
138
  const handleContainerHeight = useCallback((height: number) => {
153
139
  containerHeight.value = height;
@@ -198,9 +184,12 @@ export default function withCollapsibleContext<T>(Component: FC<T>) {
198
184
  return (
199
185
  <CollapsibleContext.Provider value={context}>
200
186
  <InternalCollapsibleContext.Provider value={internalContext}>
201
- <PullToRefreshProvider>
202
- <Component {...props} />
203
- </PullToRefreshProvider>
187
+ <CollapsibleHeaderProvider>
188
+ <PullToRefreshProvider>
189
+ {/** @ts-ignore */}
190
+ <Component {...props} />
191
+ </PullToRefreshProvider>
192
+ </CollapsibleHeaderProvider>
204
193
  </InternalCollapsibleContext.Provider>
205
194
  </CollapsibleContext.Provider>
206
195
  );