diff --git a/components/MultipleSelectList.tsx b/components/MultipleSelectList.tsx index a3bba1d8..5a192f4d 100644 --- a/components/MultipleSelectList.tsx +++ b/components/MultipleSelectList.tsx @@ -12,8 +12,8 @@ import { Pressable, Keyboard } from 'react-native'; +import {MultipleSelectListProps} from ".."; -import { MultipleSelectListProps } from '..'; type L1Keys = { key?: any; value?: any; disabled?: boolean | undefined } @@ -28,6 +28,7 @@ const MultipleSelectList: React.FC = ({ dropdownTextStyles, maxHeight, data, + defaultOptions, searchicon = false, arrowicon = false, closeicon = false, @@ -58,21 +59,21 @@ const MultipleSelectList: React.FC = ({ const slidedown = () => { setDropdown(true) - + Animated.timing(animatedvalue,{ toValue:height, duration:500, useNativeDriver:false, - + }).start() } const slideup = () => { - + Animated.timing(animatedvalue,{ toValue:0, duration:500, useNativeDriver:false, - + }).start(() => setDropdown(false)) } @@ -81,7 +82,7 @@ const MultipleSelectList: React.FC = ({ setHeight(maxHeight) },[maxHeight]) - + React.useEffect(() => { setFilteredData(data); },[data]) @@ -93,18 +94,25 @@ const MultipleSelectList: React.FC = ({ return; } onSelect() - + },[selectedval]) + React.useEffect(() => { + if(defaultOptions && _firstRender){ + setSelected(defaultOptions); + setSelectedVal(defaultOptions); + } + }) + React.useEffect(() => { if(!_firstRender){ if(dropdownShown) slidedown(); else slideup(); - + } - + },[dropdownShown]) @@ -118,11 +126,11 @@ const MultipleSelectList: React.FC = ({ (dropdown && search) ? - + { (!searchicon) ? - = ({ : searchicon } - - { let result = data.filter((item: L1Keys) => { @@ -150,7 +158,7 @@ const MultipleSelectList: React.FC = ({ { (!closeicon) ? - = ({ closeicon } - - + + - + : @@ -191,7 +199,7 @@ const MultipleSelectList: React.FC = ({ { (!arrowicon) ? - = ({ : arrowicon } - + } - + { (dropdown) ? @@ -221,18 +229,18 @@ const MultipleSelectList: React.FC = ({ return( - + { (selectedval?.includes(value)) ? - - - + : null @@ -245,7 +253,7 @@ const MultipleSelectList: React.FC = ({ return( { - + let existing = selectedval?.indexOf(value) @@ -254,16 +262,16 @@ const MultipleSelectList: React.FC = ({ if(existing != -1 && existing != undefined){ let sv = [...selectedval]; - sv.splice(existing,1) + sv.splice(existing,1) setSelectedVal(sv); setSelected((val: any) => { let temp = [...val]; - temp.splice(existing,1) + temp.splice(existing,1) return temp; }); - + // onSelect() }else{ if(save === 'value'){ @@ -277,62 +285,62 @@ const MultipleSelectList: React.FC = ({ return temp; }) } - + setSelectedVal((val: any )=> { let temp = [...new Set([...val,value])]; return temp; }) - - + + // onSelect() } - - - + + + }}> - + { (selectedval?.includes(value)) ? - - - + : null } - - - + + + {value} ) } - + }) : { setSelected(undefined) setSelectedVal("") slideup() - setTimeout(() => setFilteredData(data), 800) + setTimeout(() => setFilteredData(data), 800) }}> {notFoundText} } - - - + + + - + { (selectedval?.length > 0) ? @@ -342,7 +350,7 @@ const MultipleSelectList: React.FC = ({ - + { selectedval?.map((item,index) => { return ( @@ -358,17 +366,17 @@ const MultipleSelectList: React.FC = ({ : null } - - - + + + - + : null } - - + + ) } diff --git a/index.d.ts b/index.d.ts index cee3ba03..92318e80 100644 --- a/index.d.ts +++ b/index.d.ts @@ -79,7 +79,7 @@ export interface SelectListProps { onSelect?: () => void, /** - * set fontFamily of whole component Text + * set fontFamily of whole component Text */ fontFamily?: string, @@ -137,7 +137,7 @@ export interface MultipleSelectListProps { inputStyles?: TextStyle, /** - * Additional styles for dropdown scrollview + * Additional styles for dropdown scrollview */ dropdownStyles?:ViewStyle, @@ -162,9 +162,9 @@ export interface MultipleSelectListProps { data: Array<{}>, /** - * The default option of the select list - */ - defaultOption?: { key: any, value: any }, + * The default option of the multi select list + */ + defaultOptions?: Array<{}>, /** * Pass any JSX to this prop like Text, Image or Icon to show instead of search icon @@ -197,7 +197,7 @@ export interface MultipleSelectListProps { label?: string, /** - * set fontFamily of whole component Text + * set fontFamily of whole component Text */ fontFamily?: string, @@ -231,7 +231,7 @@ export interface MultipleSelectListProps { * What to store inside your local state (key or value) */ save?: 'key' | 'value', - + /** * Control the dropdown with this prop */ @@ -242,7 +242,7 @@ export interface MultipleSelectListProps { */ closeicon?: JSX.Element, - + /** * Additional styles for multiselect badge */