From 968c2afddc4ddf21756090254620ffdce0ed9786 Mon Sep 17 00:00:00 2001 From: Justin Reed Date: Thu, 17 Nov 2022 06:30:50 -0500 Subject: [PATCH 1/5] Added AllowNewEntries property and implemented allowing new entries if value not found in data array --- .gitignore | 1 + components/SelectList.tsx | 43 +++++++++++++++++++++++++++------------ index.d.ts | 5 +++++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index e69de29b..e43b0f98 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/components/SelectList.tsx b/components/SelectList.tsx index 5e7a6771..20f9642a 100644 --- a/components/SelectList.tsx +++ b/components/SelectList.tsx @@ -31,6 +31,7 @@ const SelectList: React.FC = ({ search = true, searchPlaceholder = "search", notFoundText = "No data found", + allowNewEntries = false, disabledItemStyles, disabledTextStyles, onSelect = () => {}, @@ -143,6 +144,7 @@ const SelectList: React.FC = ({ let row = item.value.toLowerCase() return row.search(val.toLowerCase()) > -1; }); + setEnteredVal(val); setFilteredData(result) }} style={[{padding:0,height:20,flex:1,fontFamily},inputStyles]} @@ -219,19 +221,34 @@ const SelectList: React.FC = ({ }}> {value} - - ) - } - - }) - : - { - setSelected(undefined) - setSelectedVal("") - slideup() - setTimeout(() => setFilteredData(data), 800) - - }}> + + ) + } + + }) + : + (allowNewEntries) + ? + { + setSelected(enteredVal) + let key = data.length+1 + data.push({key:key,value:enteredVal}) + setSelected(key); + setSelectedVal(enteredVal); + slideup() + setTimeout(() => setFilteredData(data), 800) + + }}> + {enteredVal} + + : + { + setSelected(undefined) + setSelectedVal("") + slideup() + setTimeout(() => setFilteredData(data), 800) + + }}> {notFoundText} } diff --git a/index.d.ts b/index.d.ts index 92ed702b..de4b4859 100644 --- a/index.d.ts +++ b/index.d.ts @@ -112,6 +112,11 @@ export interface SelectListProps { * Pass any JSX to this prop like Text, Image or Icon to show instead of close icon */ closeicon?: JSX.Element, + + /** + * Set to true if you want to allow adding new values + */ + allowNewEntries?: boolean, } From 3d84753b1abe033954f96ddc742f01de8ca2abff Mon Sep 17 00:00:00 2001 From: Justin Reed Date: Thu, 17 Nov 2022 06:35:38 -0500 Subject: [PATCH 2/5] fixed formatting --- components/SelectList.tsx | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/components/SelectList.tsx b/components/SelectList.tsx index 20f9642a..4d188a8b 100644 --- a/components/SelectList.tsx +++ b/components/SelectList.tsx @@ -228,29 +228,29 @@ const SelectList: React.FC = ({ }) : (allowNewEntries) - ? - { - setSelected(enteredVal) - let key = data.length+1 - data.push({key:key,value:enteredVal}) - setSelected(key); - setSelectedVal(enteredVal); - slideup() - setTimeout(() => setFilteredData(data), 800) + ? + { + setSelected(enteredVal) + let key = data.length+1 + data.push({key:key,value:enteredVal}) + setSelected(key); + setSelectedVal(enteredVal); + slideup() + setTimeout(() => setFilteredData(data), 800) - }}> - {enteredVal} - - : - { - setSelected(undefined) - setSelectedVal("") - slideup() - setTimeout(() => setFilteredData(data), 800) + }}> + {enteredVal} + + : + { + setSelected(undefined) + setSelectedVal("") + slideup() + setTimeout(() => setFilteredData(data), 800) - }}> - {notFoundText} - + }}> + {notFoundText} + } From b6200a64550d5ff17bfbae89112f364bb5fc3bf8 Mon Sep 17 00:00:00 2001 From: Justin Reed Date: Thu, 17 Nov 2022 06:39:01 -0500 Subject: [PATCH 3/5] fixed formatting --- components/SelectList.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/SelectList.tsx b/components/SelectList.tsx index 4d188a8b..a5deedfd 100644 --- a/components/SelectList.tsx +++ b/components/SelectList.tsx @@ -221,10 +221,9 @@ const SelectList: React.FC = ({ }}> {value} - + ) } - }) : (allowNewEntries) From bb9b5b9a84989728d494caffb4b6b9d807d6bcae Mon Sep 17 00:00:00 2001 From: Justin Reed Date: Thu, 17 Nov 2022 06:48:37 -0500 Subject: [PATCH 4/5] Added property missed when fixing formatting --- components/SelectList.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/SelectList.tsx b/components/SelectList.tsx index a5deedfd..5b93ded1 100644 --- a/components/SelectList.tsx +++ b/components/SelectList.tsx @@ -46,7 +46,8 @@ const SelectList: React.FC = ({ const [selectedval, setSelectedVal] = React.useState(""); const [height,setHeight] = React.useState(200) const animatedvalue = React.useRef(new Animated.Value(0)).current; - const [filtereddata,setFilteredData] = React.useState(data) + const [filtereddata,setFilteredData] = React.useState(data); + const [enteredVal, setEnteredVal] = React.useState(""); const slidedown = () => { From 253697740308c3f73eec7c9e8554a945e5ffb3ca Mon Sep 17 00:00:00 2001 From: Justin Reed Date: Thu, 17 Nov 2022 06:54:01 -0500 Subject: [PATCH 5/5] Formatting --- components/SelectList.tsx | 52 +++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/components/SelectList.tsx b/components/SelectList.tsx index 5b93ded1..a77f2e5a 100644 --- a/components/SelectList.tsx +++ b/components/SelectList.tsx @@ -223,34 +223,34 @@ const SelectList: React.FC = ({ }}> {value} - ) - } - }) - : - (allowNewEntries) - ? - { - setSelected(enteredVal) - let key = data.length+1 - data.push({key:key,value:enteredVal}) - setSelected(key); - setSelectedVal(enteredVal); - slideup() - setTimeout(() => setFilteredData(data), 800) + ) + } + }) + : + (allowNewEntries) + ? + { + setSelected(enteredVal) + let key = data.length+1 + data.push({key:key,value:enteredVal}) + setSelected(key); + setSelectedVal(enteredVal); + slideup() + setTimeout(() => setFilteredData(data), 800) - }}> - {enteredVal} - - : - { - setSelected(undefined) - setSelectedVal("") - slideup() - setTimeout(() => setFilteredData(data), 800) + }}> + {enteredVal} + + : + { + setSelected(undefined) + setSelectedVal("") + slideup() + setTimeout(() => setFilteredData(data), 800) - }}> - {notFoundText} - + }}> + {notFoundText} + }