Skip to content

Commit 404e176

Browse files
authored
Merge pull request #131 from joshsj89/main
Add case sensitivity prop
2 parents 1ce7e38 + b112a63 commit 404e176

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

README^4.md

+1
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ yarn android
267267
| `closeOnBlur` | whether to close dropdown on blur | bool | false |
268268
| `closeOnSubmit` | whether to close dropdown on submit | bool | false |
269269
| `clearOnFocus` | whether to clear typed text on focus | bool | true |
270+
| `caseSensitive` | whether to perform case-sensitive search | bool | false
270271
| `ignoreAccents` | ignore diacritics | bool | true |
271272
| `trimSearchText` | trim the searched text | bool | true |
272273
| `editable` | is textInput editable | bool | true |

src/index.tsx

+7-4
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export const AutocompleteDropdown = memo<
4949
dataSet: dataSetProp,
5050
initialValue: initialValueProp,
5151
clearOnFocus = true,
52+
caseSensitive = false,
5253
ignoreAccents = true,
5354
trimSearchText = true,
5455
editable = true,
@@ -287,7 +288,7 @@ export const AutocompleteDropdown = memo<
287288
return
288289
}
289290

290-
let findWhat = searchText.toLowerCase()
291+
let findWhat = caseSensitive ? searchText : searchText.toLowerCase()
291292

292293
if (ignoreAccents) {
293294
findWhat = diacriticless(findWhat)
@@ -297,9 +298,11 @@ export const AutocompleteDropdown = memo<
297298
findWhat = findWhat.trim()
298299
}
299300

300-
const newSet = initialDataSet.filter(item => {
301+
const newSet = initialDataSet.filter((item: AutocompleteDropdownItem) => {
301302
const titleLowercase = (item.title || '').toLowerCase()
302-
const findWhere = ignoreAccents ? diacriticless(titleLowercase) : titleLowercase.toLowerCase()
303+
const titleStr = item.title || ''
304+
const title = caseSensitive ? titleStr : titleStr.toLowerCase()
305+
const findWhere = ignoreAccents ? diacriticless(title) : title
303306

304307
if (matchFromStart) {
305308
return typeof item.title === 'string' && findWhere.startsWith(findWhat)
@@ -309,7 +312,7 @@ export const AutocompleteDropdown = memo<
309312
})
310313

311314
setDataSet(newSet)
312-
}, [ignoreAccents, matchFromStart, searchText, trimSearchText, useFilter])
315+
}, [ignoreAccents, matchFromStart, caseSensitive, searchText, trimSearchText, useFilter])
313316

314317
const renderItem: ListRenderItem<AutocompleteDropdownItem> = useCallback(
315318
({ item }) => {

src/types/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export interface IAutocompleteDropdownProps {
3636
closeOnBlur?: boolean
3737
closeOnSubmit?: boolean
3838
clearOnFocus?: boolean
39+
caseSensitive?: boolean
3940
ignoreAccents?: boolean
4041
trimSearchText?: boolean
4142
editable?: boolean

0 commit comments

Comments
 (0)