Skip to content

Commit 4fcb4ee

Browse files
committed
Add case sensitivity prop
1 parent 1ce7e38 commit 4fcb4ee

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

README^4.md

Lines changed: 1 addition & 0 deletions
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

Lines changed: 17 additions & 4 deletions
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,13 @@ export const AutocompleteDropdown = memo<
287288
return
288289
}
289290

290-
let findWhat = searchText.toLowerCase()
291+
let findWhat: string
292+
293+
if (caseSensitive) {
294+
findWhat = searchText
295+
} else {
296+
findWhat = searchText.toLowerCase()
297+
}
291298

292299
if (ignoreAccents) {
293300
findWhat = diacriticless(findWhat)
@@ -297,9 +304,15 @@ export const AutocompleteDropdown = memo<
297304
findWhat = findWhat.trim()
298305
}
299306

300-
const newSet = initialDataSet.filter(item => {
307+
const newSet = initialDataSet.filter((item: AutocompleteDropdownItem) => {
301308
const titleLowercase = (item.title || '').toLowerCase()
302-
const findWhere = ignoreAccents ? diacriticless(titleLowercase) : titleLowercase.toLowerCase()
309+
let findWhere: string
310+
311+
if (caseSensitive) {
312+
findWhere = ignoreAccents ? diacriticless(item.title || '') : item.title || ''
313+
} else {
314+
findWhere = ignoreAccents ? diacriticless(titleLowercase) : titleLowercase
315+
}
303316

304317
if (matchFromStart) {
305318
return typeof item.title === 'string' && findWhere.startsWith(findWhat)
@@ -309,7 +322,7 @@ export const AutocompleteDropdown = memo<
309322
})
310323

311324
setDataSet(newSet)
312-
}, [ignoreAccents, matchFromStart, searchText, trimSearchText, useFilter])
325+
}, [ignoreAccents, matchFromStart, caseSensitive, searchText, trimSearchText, useFilter])
313326

314327
const renderItem: ListRenderItem<AutocompleteDropdownItem> = useCallback(
315328
({ item }) => {

src/types/index.ts

Lines changed: 1 addition & 0 deletions
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)