1- import {
2- array ,
3- arrayOf ,
4- bool ,
5- element ,
6- func ,
7- node ,
8- number ,
9- object ,
10- oneOf ,
11- oneOfType ,
12- Requireable ,
13- shape ,
14- string
15- } from 'prop-types' ;
16- import { Component , FC , ReactNode , Ref } from 'react' ;
1+ import { array , arrayOf , bool , element , func , node , number , object , oneOf , oneOfType , Requireable , shape , string } from 'prop-types' ;
2+ import { ReactNode , Ref } from 'react' ;
173import warning from 'warning' ;
184import { DisplayHandlerProps , DisplayInterface } from './___subComponents/DisplayHandler' ;
195import { InfiniteLoaderInterface } from './___subComponents/InfiniteLoader' ;
20- import { renderFunc , renderItem } from './___subComponents/uiFunctions' ;
6+ import { renderItem } from './___subComponents/uiFunctions' ;
217import { GroupOptionsInterface } from './___utils/groupList' ;
228import { SearchOptionsInterface } from './___utils/searchList' ;
239import { SortOptionsInterface } from './___utils/sortList' ;
@@ -39,20 +25,20 @@ function deprecated(propType: Requireable<unknown>, defaultVal: unknown, alterna
3925 } ;
4026}
4127
42- export type listItem = { id ?: string | number } | unknown ;
28+ export type listItem = Array < { id ?: string | number , [ key : string ] : any } | any > | Set < any > | Map < any , any > | { id ?: string | number , [ key : string ] : any } ;
4329
4430export interface GroupInterface extends GroupOptionsInterface {
4531 of ?: number ;
4632 // eslint-disable-next-line @typescript-eslint/no-explicit-any
47- separator ?: JSX . Element | ( ( g : any , idx : number , label : string ) => JSX . Element | null ) | null ;
33+ separator ?: ReactNode | ( ( g : any , idx : number , label : string ) => ReactNode | null ) | null ;
4834 separatorAtTheBottom ?: boolean ;
4935 sortBy ?: SortOptionsInterface [ 'by' ] ;
5036 sortDescending ?: boolean ;
5137 sortCaseInsensitive ?: boolean ;
5238}
5339
5440export interface ScrollToTopInterface {
55- button ?: JSX . Element | ( ( ) => JSX . Element ) ;
41+ button ?: ReactNode | ( ( ) => JSX . Element ) ;
5642 offset ?: number ;
5743 padding ?: number ;
5844 position ?: string ;
@@ -67,9 +53,9 @@ export interface SortInterface extends SortOptionsInterface {
6753export interface FlatListProps {
6854 __forwarededRef ?: Ref < HTMLElement > ;
6955 // RENDER
70- list : listItem [ ] ;
56+ list : listItem ;
7157 renderItem : renderItem ;
72- renderWhenEmpty ?: null | ( ( ) => JSX . Element ) ;
58+ renderWhenEmpty ?: ReactNode | ( ( ) => JSX . Element ) ;
7359 renderOnScroll ?: boolean ;
7460 limit ?: number | string ;
7561 reversed ?: boolean ;
@@ -119,7 +105,7 @@ export interface FlatListProps {
119105 paginationLoadingIndicatorPosition ?: InfiniteLoaderInterface [ 'loadingIndicatorPosition' ] ;
120106 // scrollToTop
121107 scrollToTop ?: boolean | ScrollToTopInterface ;
122- scrollToTopButton ?: JSX . Element | ( ( ) => JSX . Element ) ;
108+ scrollToTopButton ?: ReactNode | ( ( ) => ReactNode ) ;
123109 scrollToTopOffset ?: number ;
124110 scrollToTopPadding ?: number ;
125111 scrollToTopPosition ?: string ;
@@ -128,9 +114,11 @@ export interface FlatListProps {
128114 [ key : string ] : any ;
129115}
130116
131- export const defaultProps = {
117+ export const defaultProps : FlatListProps = {
132118 __forwarededRef : { current : null } ,
133119 // RENDER
120+ list : [ ] ,
121+ renderItem : null ,
134122 limit : 0 ,
135123 renderWhenEmpty : null ,
136124 reversed : false ,
@@ -154,18 +142,14 @@ export const defaultProps = {
154142 // GROUPS
155143 group : {
156144 by : '' ,
157- limit : 0 , // deprecated
145+ limit : 0 ,
158146 of : 0 ,
159147 reversed : false ,
160148 separator : null ,
161149 separatorAtTheBottom : false ,
162- sortedBy : '' ,
163- sortBy : '' , // deprecated
164- sorted : false ,
165- sortedCaseInsensitive : false ,
166- sortCaseInsensitive : false , // deprecated
167- sortedDescending : false ,
168- sortDescending : false // deprecated
150+ sortBy : '' ,
151+ sortCaseInsensitive : false ,
152+ sortDescending : false
169153 } ,
170154 groupBy : '' ,
171155 groupOf : 0 ,
@@ -260,7 +244,7 @@ export const propTypes = {
260244 // GROUPS
261245 group : shape ( {
262246 by : oneOfType ( [ func , string ] ) ,
263- limit : deprecated ( number , defaultProps . group . limit , 'group.of' ) , // deprecated
247+ limit : deprecated ( number , defaultProps . group ? .limit , 'group.of' ) , // deprecated
264248 of : number ,
265249 reversed : bool ,
266250 separator : oneOfType ( [ node , func , element ] ) ,
@@ -272,11 +256,11 @@ export const propTypes = {
272256 sortBy : deprecated ( oneOfType ( [
273257 string ,
274258 arrayOf ( oneOfType ( [ string , shape ( { by : string , caseInsensitive : bool , descending : bool } ) ] ) )
275- ] ) , defaultProps . group . sortBy , 'sortedBy' ) , // deprecated
259+ ] ) , defaultProps ? .group ? .sortBy , 'sortedBy' ) , // deprecated
276260 sortedCaseInsensitive : bool ,
277- sortCaseInsensitive : deprecated ( bool , defaultProps . group . sortCaseInsensitive , 'sortedCaseInsensitive' ) , // deprecated
261+ sortCaseInsensitive : deprecated ( bool , defaultProps . group ? .sortCaseInsensitive , 'sortedCaseInsensitive' ) , // deprecated
278262 sortedDescending : bool ,
279- sortDescending : deprecated ( bool , defaultProps . group . sortDescending , 'sortedDescending' ) // deprecated
263+ sortDescending : deprecated ( bool , defaultProps . group ? .sortDescending , 'sortedDescending' ) // deprecated
280264 } ) ,
281265 groupBy : oneOfType ( [ func , string ] ) ,
282266 groupOf : number ,
@@ -324,7 +308,7 @@ export const propTypes = {
324308 arrayOf ( oneOfType ( [ string , shape ( { by : string , caseInsensitive : bool } ) ] ) )
325309 ] ) ,
326310 caseInsensitive : bool ,
327- everyWord : deprecated ( bool , defaultProps . search . everyWord , 'search.onEveryWord' ) , // deprecated
311+ everyWord : deprecated ( bool , defaultProps . search ? .everyWord , 'search.onEveryWord' ) , // deprecated
328312 onEveryWord : bool ,
329313 minCharactersCount : number ,
330314 term : string
0 commit comments