@rific/scroll-view 0.2.0 → 0.4.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.
- package/README.md +2 -0
- package/dist/index.d.mts +23 -17
- package/dist/index.d.ts +23 -17
- package/dist/index.js +720 -1960
- package/dist/index.mjs +697 -1939
- package/package.json +10 -10
- package/src/CustomList.tsx +32 -8
- package/src/FlatList.tsx +102 -20
- package/src/PullSearch.tsx +4 -3
- package/src/ScrollView.tsx +28 -8
- package/src/ScrollViewContext.ts +17 -4
- package/src/ScrollViewHeader.tsx +34 -31
- package/src/ScrollViewProvider.tsx +22 -6
- package/src/SectionList.tsx +31 -10
- package/src/internal/useScrollHandler.ts +19 -21
- package/src/internal/useScrollHandlerJS.ts +141 -0
- package/src/internal/useScrollList.ts +16 -11
- package/src/redux/scrollViewSlice.ts +19 -11
- package/src/useScrollInit.ts +200 -19
- package/src/__mocks__/auto-paper.ts +0 -9
- package/src/__mocks__/flash-list.ts +0 -20
- package/src/__mocks__/react-native-gesture-handler.ts +0 -13
- package/src/__mocks__/react-native-keyboard-controller.ts +0 -11
- package/src/__mocks__/react-native-paper.ts +0 -22
- package/src/__mocks__/react-native-reanimated.ts +0 -30
- package/src/__mocks__/react-native-safe-area-context.ts +0 -2
- package/src/__mocks__/react-native.ts +0 -30
- package/src/__tests__/CustomList.test.tsx +0 -61
- package/src/__tests__/FlatList.test.tsx +0 -52
- package/src/__tests__/PullSearch.test.tsx +0 -38
- package/src/__tests__/ScrollView.test.tsx +0 -23
- package/src/__tests__/ScrollViewHeader.test.tsx +0 -28
- package/src/__tests__/ScrollViewProvider.test.tsx +0 -65
- package/src/__tests__/SectionList.test.tsx +0 -88
- package/src/out.txt +0 -61
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { act, render } from '@testing-library/react'
|
|
2
|
-
import React, { useContext } from 'react'
|
|
3
|
-
|
|
4
|
-
import { ScrollViewContext } from '../ScrollViewContext'
|
|
5
|
-
import { ScrollViewProvider } from '../ScrollViewProvider'
|
|
6
|
-
import { useScrollView } from '../useScrollView'
|
|
7
|
-
|
|
8
|
-
const ContextReader = ({ onRead }: { onRead: (v: ReturnType<typeof useScrollView>) => void }) => {
|
|
9
|
-
const value = useScrollView()
|
|
10
|
-
onRead(value)
|
|
11
|
-
return null
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe('ScrollViewProvider', () => {
|
|
15
|
-
it('renders without crashing', () => {
|
|
16
|
-
render(
|
|
17
|
-
<ScrollViewProvider>
|
|
18
|
-
<></>
|
|
19
|
-
</ScrollViewProvider>
|
|
20
|
-
)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('provides default context values', () => {
|
|
24
|
-
let capturedValue: ReturnType<typeof useScrollView> | undefined
|
|
25
|
-
render(
|
|
26
|
-
<ScrollViewProvider>
|
|
27
|
-
<ContextReader onRead={(v) => { capturedValue = v }} />
|
|
28
|
-
</ScrollViewProvider>
|
|
29
|
-
)
|
|
30
|
-
expect(capturedValue?.progress).toBeNull()
|
|
31
|
-
expect(capturedValue?.progressing).toBe(false)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
it('accepts headerFixed and footerFixed props', () => {
|
|
35
|
-
let capturedCtx: { headerFixed: boolean; footerFixed: boolean } | undefined
|
|
36
|
-
const Reader = () => {
|
|
37
|
-
const ctx = useContext(ScrollViewContext)
|
|
38
|
-
capturedCtx = { headerFixed: ctx.headerFixed, footerFixed: ctx.footerFixed }
|
|
39
|
-
return null
|
|
40
|
-
}
|
|
41
|
-
render(
|
|
42
|
-
<ScrollViewProvider headerFixed footerFixed>
|
|
43
|
-
<Reader />
|
|
44
|
-
</ScrollViewProvider>
|
|
45
|
-
)
|
|
46
|
-
expect(capturedCtx?.headerFixed).toBe(true)
|
|
47
|
-
expect(capturedCtx?.footerFixed).toBe(true)
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
it('setProgress updates progress value', () => {
|
|
51
|
-
let capturedValue: ReturnType<typeof useScrollView> | undefined
|
|
52
|
-
const { rerender } = render(
|
|
53
|
-
<ScrollViewProvider>
|
|
54
|
-
<ContextReader onRead={(v) => { capturedValue = v }} />
|
|
55
|
-
</ScrollViewProvider>
|
|
56
|
-
)
|
|
57
|
-
act(() => { capturedValue?.setProgress(0.5) })
|
|
58
|
-
rerender(
|
|
59
|
-
<ScrollViewProvider>
|
|
60
|
-
<ContextReader onRead={(v) => { capturedValue = v }} />
|
|
61
|
-
</ScrollViewProvider>
|
|
62
|
-
)
|
|
63
|
-
expect(capturedValue?.progress).toBe(0.5)
|
|
64
|
-
})
|
|
65
|
-
})
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { render } from '@testing-library/react'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import { SectionList as RNSectionList } from 'react-native'
|
|
4
|
-
|
|
5
|
-
import { SectionList } from '../SectionList'
|
|
6
|
-
import { ScrollViewProvider } from '../ScrollViewProvider'
|
|
7
|
-
|
|
8
|
-
const wrapper = ({ children }: { children: React.ReactNode }) => <ScrollViewProvider>{children}</ScrollViewProvider>
|
|
9
|
-
|
|
10
|
-
type Section = { title: string; data: string[] }
|
|
11
|
-
const sections: Section[] = [
|
|
12
|
-
{ title: 'Fruits', data: ['Apple', 'Banana'] },
|
|
13
|
-
{ title: 'Veggies', data: ['Carrot'] }
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
describe('SectionList', () => {
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
;(RNSectionList as jest.Mock).mockClear()
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
it('renders without crashing', () => {
|
|
22
|
-
render(
|
|
23
|
-
<SectionList sections={sections} renderItem={({ item }) => <>{item}</>} keyExtractor={(item) => item} />,
|
|
24
|
-
{ wrapper }
|
|
25
|
-
)
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
it('renders with renderSectionHeader', () => {
|
|
29
|
-
render(
|
|
30
|
-
<SectionList
|
|
31
|
-
sections={sections}
|
|
32
|
-
renderItem={({ item }) => <>{item}</>}
|
|
33
|
-
keyExtractor={(item) => item}
|
|
34
|
-
renderSectionHeader={({ section }) => <>{(section as Section).title}</>}
|
|
35
|
-
/>,
|
|
36
|
-
{ wrapper }
|
|
37
|
-
)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('disables native stickySectionHeadersEnabled when custom renderSectionHeader is provided', () => {
|
|
41
|
-
render(
|
|
42
|
-
<SectionList
|
|
43
|
-
sections={sections}
|
|
44
|
-
renderItem={({ item }) => <>{item}</>}
|
|
45
|
-
keyExtractor={(item) => item}
|
|
46
|
-
renderSectionHeader={({ section }) => <>{(section as Section).title}</>}
|
|
47
|
-
/>,
|
|
48
|
-
{ wrapper }
|
|
49
|
-
)
|
|
50
|
-
const calls = (RNSectionList as jest.Mock).mock.calls
|
|
51
|
-
const lastProps = calls[calls.length - 1]?.[0]
|
|
52
|
-
expect(lastProps?.stickySectionHeadersEnabled).toBe(false)
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
it('keeps native sticky when no renderSectionHeader provided', () => {
|
|
56
|
-
render(
|
|
57
|
-
<SectionList sections={sections} renderItem={({ item }) => <>{item}</>} keyExtractor={(item) => item} />,
|
|
58
|
-
{ wrapper }
|
|
59
|
-
)
|
|
60
|
-
const calls = (RNSectionList as jest.Mock).mock.calls
|
|
61
|
-
const lastProps = calls[calls.length - 1]?.[0]
|
|
62
|
-
expect(lastProps?.stickySectionHeadersEnabled).toBe(false)
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
it('renders with pullSearchHeight', () => {
|
|
66
|
-
render(
|
|
67
|
-
<SectionList
|
|
68
|
-
sections={sections}
|
|
69
|
-
renderItem={({ item }) => <>{item}</>}
|
|
70
|
-
keyExtractor={(item) => item}
|
|
71
|
-
pullSearchHeight={60}
|
|
72
|
-
/>,
|
|
73
|
-
{ wrapper }
|
|
74
|
-
)
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
it('renders with renderFilters', () => {
|
|
78
|
-
render(
|
|
79
|
-
<SectionList
|
|
80
|
-
sections={sections}
|
|
81
|
-
renderItem={({ item }) => <>{item}</>}
|
|
82
|
-
keyExtractor={(item) => item}
|
|
83
|
-
renderFilters={<></>}
|
|
84
|
-
/>,
|
|
85
|
-
{ wrapper }
|
|
86
|
-
)
|
|
87
|
-
})
|
|
88
|
-
})
|
package/src/out.txt
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
jay~/Developer/React-Native-Scroll-View% yalc publish && yalc push
|
|
2
|
-
Running prepublishOnly script: npm run build
|
|
3
|
-
|
|
4
|
-
> @rific/scroll-view@0.1.0 prepublishOnly
|
|
5
|
-
> npm run build
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
> @rific/scroll-view@0.1.0 build
|
|
9
|
-
> tsup src/index.ts --format cjs,esm --dts --clean
|
|
10
|
-
|
|
11
|
-
CLI Building entry: src/index.ts
|
|
12
|
-
CLI Using tsconfig: tsconfig.json
|
|
13
|
-
CLI tsup v8.5.1
|
|
14
|
-
CLI Target: es2020
|
|
15
|
-
CLI Cleaning output folder
|
|
16
|
-
CJS Build start
|
|
17
|
-
ESM Build start
|
|
18
|
-
CJS dist/index.js 103.45 KB
|
|
19
|
-
CJS ⚡️ Build success in 78ms
|
|
20
|
-
ESM dist/index.mjs 95.24 KB
|
|
21
|
-
ESM ⚡️ Build success in 78ms
|
|
22
|
-
DTS Build start
|
|
23
|
-
src/ScrollView.tsx(48,49): error TS2339: Property 'scrollTo' does not exist on type 'ScrollResponderMixin'.
|
|
24
|
-
|
|
25
|
-
Error: error occurred in dts build
|
|
26
|
-
at Worker.<anonymous> (/Users/jay/Developer/React-Native-Scroll-View/node_modules/tsup/dist/index.js:1545:26)
|
|
27
|
-
at Worker.emit (node:events:509:20)
|
|
28
|
-
at MessagePort.<anonymous> (node:internal/worker:333:53)
|
|
29
|
-
at [nodejs.internal.kHybridDispatch] (node:internal/event_target:843:20)
|
|
30
|
-
at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28)
|
|
31
|
-
DTS Build error
|
|
32
|
-
yalc publish
|
|
33
|
-
|
|
34
|
-
Publish package in yalc local repo
|
|
35
|
-
|
|
36
|
-
Options:
|
|
37
|
-
--version Show version number [boolean]
|
|
38
|
-
--help Show help [boolean]
|
|
39
|
-
--sig [boolean] [default: false]
|
|
40
|
-
--dev-mod [boolean] [default: true]
|
|
41
|
-
--workspace-resolve [default: true]
|
|
42
|
-
|
|
43
|
-
Error: Command failed: npm run prepublishOnly
|
|
44
|
-
at genericNodeError (node:internal/errors:998:15)
|
|
45
|
-
at wrappedFn (node:internal/errors:543:14)
|
|
46
|
-
at checkExecSyncError (node:child_process:925:11)
|
|
47
|
-
at Object.execSync (node:child_process:997:15)
|
|
48
|
-
at runPmScript (/opt/homebrew/lib/node_modules/yalc/src/publish.js:75:41)
|
|
49
|
-
at Array.forEach (<anonymous>)
|
|
50
|
-
at /opt/homebrew/lib/node_modules/yalc/src/publish.js:90:28
|
|
51
|
-
at step (/opt/homebrew/lib/node_modules/yalc/src/publish.js:44:23)
|
|
52
|
-
at Object.next (/opt/homebrew/lib/node_modules/yalc/src/publish.js:25:53)
|
|
53
|
-
at /opt/homebrew/lib/node_modules/yalc/src/publish.js:19:71 {
|
|
54
|
-
status: 1,
|
|
55
|
-
signal: null,
|
|
56
|
-
output: [ null, null, null ],
|
|
57
|
-
pid: 71344,
|
|
58
|
-
stdout: null,
|
|
59
|
-
stderr: null
|
|
60
|
-
}
|
|
61
|
-
jay~/Developer/React-Native-Scroll-View%
|