react-native-input-select 1.1.6 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -10
- package/lib/commonjs/components/CheckBox/index.js +1 -1
- package/lib/commonjs/components/CheckBox/index.js.map +1 -1
- package/lib/commonjs/components/CustomModal/index.js +1 -2
- package/lib/commonjs/components/CustomModal/index.js.map +1 -1
- package/lib/commonjs/components/Dropdown/DropdownFlatList.js +4 -2
- package/lib/commonjs/components/Dropdown/DropdownFlatList.js.map +1 -1
- package/lib/commonjs/components/Dropdown/DropdownSectionList.js +5 -3
- package/lib/commonjs/components/Dropdown/DropdownSectionList.js.map +1 -1
- package/lib/commonjs/components/Input/index.js +5 -2
- package/lib/commonjs/components/Input/index.js.map +1 -1
- package/lib/commonjs/index.js +24 -23
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/index.types.js.map +1 -1
- package/lib/commonjs/utils/index.js +1 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/components/CheckBox/index.js +1 -1
- package/lib/module/components/CheckBox/index.js.map +1 -1
- package/lib/module/components/CustomModal/index.js +1 -2
- package/lib/module/components/CustomModal/index.js.map +1 -1
- package/lib/module/components/Dropdown/DropdownFlatList.js +4 -2
- package/lib/module/components/Dropdown/DropdownFlatList.js.map +1 -1
- package/lib/module/components/Dropdown/DropdownSectionList.js +5 -3
- package/lib/module/components/Dropdown/DropdownSectionList.js.map +1 -1
- package/lib/module/components/Input/index.js +5 -2
- package/lib/module/components/Input/index.js.map +1 -1
- package/lib/module/index.js +24 -23
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/index.types.js.map +1 -1
- package/lib/module/utils/index.js +1 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/components/CustomModal/index.d.ts +1 -1
- package/lib/typescript/components/Input/index.d.ts +1 -1
- package/lib/typescript/types/index.types.d.ts +2 -1
- package/package.json +1 -1
- package/src/components/CheckBox/index.tsx +1 -1
- package/src/components/CustomModal/index.tsx +1 -2
- package/src/components/Dropdown/DropdownFlatList.tsx +5 -3
- package/src/components/Dropdown/DropdownSectionList.tsx +6 -3
- package/src/components/Input/index.tsx +5 -2
- package/src/index.tsx +37 -31
- package/src/types/index.types.ts +2 -1
- package/src/utils/index.ts +1 -1
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useCallback","TouchableOpacity","StyleSheet","View","Input","CheckBox","Dropdown","DropdownFlatList","DropdownSectionList","CustomModal","colors","DEFAULT_OPTION_LABEL","DEFAULT_OPTION_VALUE","extractPropertyFromArray","DropdownSelect","_ref","placeholder","label","error","helperText","options","optionLabel","optionValue","onValueChange","selectedValue","isMultiple","isSearchable","dropdownIcon","labelStyle","placeholderStyle","dropdownStyle","dropdownIconStyle","dropdownContainerStyle","dropdownErrorStyle","dropdownErrorTextStyle","dropdownHelperTextStyle","selectedItemStyle","multipleSelectedItemStyle","modalBackgroundStyle","modalOptionsContainerStyle","searchInputStyle","primaryColor","disabled","checkboxSize","checkboxStyle","checkboxLabelStyle","checkboxComponentStyles","checkboxComponent","listHeaderComponent","listFooterComponent","listComponentStyles","modalProps","hideModal","listControls","searchControls","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","listIndex","setListIndex","itemIndex","Array","isArray","isSectionList","some","item","title","data","ListTypeComponent","modifiedSectionData","flat","modifiedOptions","optLabel","optValue","optionsCopy","JSON","parse","stringify","handleSingleSelection","value","handleMultipleSelections","prevVal","_selectedValues","selectedValues","includes","filter","push","removeDisabledItems","items","handleSelectAll","filteredOptions","i","length","selectAllCallback","unselectAllCallback","checkSelectAll","getSelectedItemsLabel","selectedLabels","forEach","element","_modifiedOptions$find","selectedItemLabel","find","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","searchSectionList","searchFlatList","flatList","toLowerCase","search","sectionList","map","listItem","handleToggleModal","sectionIndex","primary","gray","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","_extends","onRequestClose","keyboardShouldPersistTaps","ListHeaderComponent","onChangeText","text","style","textInputProps","styles","optionsContainerStyle","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","create","paddingHorizontal","paddingVertical","flexDirection"],"sources":["index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Input from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownFlatList from './components/Dropdown/DropdownFlatList';\nimport DropdownSectionList from './components/Dropdown/DropdownSectionList';\nimport CustomModal from './components/CustomModal';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type {\n DropdownProps,\n TFlatList,\n TFlatListItem,\n TSectionList,\n TSectionListItem,\n} from './types/index.types';\nimport { extractPropertyFromArray } from './utils';\n\nexport const DropdownSelect: React.FC<DropdownProps> = ({\n placeholder,\n label,\n error,\n helperText,\n options,\n optionLabel,\n optionValue,\n onValueChange,\n selectedValue,\n isMultiple,\n isSearchable,\n dropdownIcon,\n labelStyle,\n placeholderStyle,\n dropdownStyle,\n dropdownIconStyle,\n dropdownContainerStyle,\n dropdownErrorStyle,\n dropdownErrorTextStyle,\n dropdownHelperTextStyle,\n selectedItemStyle,\n multipleSelectedItemStyle,\n modalBackgroundStyle,\n modalOptionsContainerStyle,\n searchInputStyle, // kept for backwards compatibility\n primaryColor,\n disabled,\n checkboxSize, // kept for backwards compatibility\n checkboxStyle, // kept for backwards compatibility\n checkboxLabelStyle, // kept for backwards compatibility\n checkboxComponentStyles,\n checkboxComponent,\n listHeaderComponent,\n listFooterComponent,\n listComponentStyles,\n modalProps,\n hideModal = false,\n listControls,\n searchControls,\n ...rest\n}) => {\n const [newOptions, setNewOptions] = useState<TFlatList | TSectionList>([]);\n const [open, setOpen] = useState<boolean>(false);\n const [selectAll, setSelectAll] = useState<boolean>(false);\n const [selectedItem, setSelectedItem] = useState<any>(''); // for single selection\n const [selectedItems, setSelectedItems] = useState<any[]>([]); // for multiple selection\n const [searchValue, setSearchValue] = useState<string>('');\n const [listIndex, setListIndex] = useState<{\n sectionIndex?: number;\n itemIndex: number;\n }>({ itemIndex: 0 }); // for scrollToIndex in Sectionlist and Flatlist\n\n useEffect(() => {\n if (options) {\n setNewOptions(options);\n }\n return () => {};\n }, [options]);\n\n useEffect(() => {\n isMultiple\n ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : [])\n : setSelectedItem(selectedValue);\n\n return () => {};\n }, [selectedValue, isMultiple, onValueChange]);\n\n /*===========================================\n * List type\n *==========================================*/\n\n // check the structure of the new options array to determine if it is a section list or a\n const isSectionList = newOptions.some(\n (item) => item.title && item.data && Array.isArray(item.data)\n );\n\n const ListTypeComponent = isSectionList\n ? DropdownSectionList\n : DropdownFlatList;\n const modifiedSectionData = extractPropertyFromArray(\n newOptions,\n 'data'\n ).flat();\n\n /**\n *`modifiedOptions` should only be used for computations newOptions remains the default array.\n * At this point modifiedOptions now has the same structure for both `FlatList` and `SectionList`\n */\n const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;\n\n const optLabel = optionLabel || DEFAULT_OPTION_LABEL;\n const optValue = optionValue || DEFAULT_OPTION_VALUE;\n const optionsCopy = JSON.parse(JSON.stringify(options)); // copy of the original options array\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: string | number) => {\n if (selectedItem === value) {\n setSelectedItem(null);\n onValueChange(null); // send value to parent\n } else {\n setSelectedItem(value);\n onValueChange(value); // send value to parent\n setOpen(false); // close modal upon selection\n }\n };\n\n const handleMultipleSelections = (value: string[] | number[]) => {\n setSelectedItems((prevVal) => {\n let selectedValues = [...prevVal];\n\n if (selectedValues?.includes(value)) {\n selectedValues = selectedValues.filter((item) => item !== value);\n } else {\n selectedValues.push(value);\n }\n onValueChange(selectedValues); // send value to parent\n return selectedValues;\n });\n };\n\n const removeDisabledItems = (items: TFlatList) => {\n return items.filter((item: TFlatListItem) => !item.disabled);\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n\n // don't select disabled items\n const filteredOptions = removeDisabledItems(\n isSectionList\n ? extractPropertyFromArray(optionsCopy, 'data').flat()\n : optionsCopy\n );\n\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); // send value to parent\n return !prevVal;\n });\n\n if (typeof listControls?.selectAllCallback === 'function' && !selectAll) {\n listControls.selectAllCallback();\n }\n\n if (typeof listControls?.unselectAllCallback === 'function' && selectAll) {\n listControls.unselectAllCallback();\n }\n };\n\n /*===========================================\n * Handle side effects\n *==========================================*/\n const checkSelectAll = useCallback(\n (selectedValues: any[]) => {\n //if the list contains disabled values, those values will not be selected\n if (\n removeDisabledItems(modifiedOptions).length === selectedValues.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n },\n [modifiedOptions]\n );\n\n // anytime the selected items change, check if it is time to set `selectAll` to true\n useEffect(() => {\n if (isMultiple) {\n checkSelectAll(selectedItems);\n }\n return () => {};\n }, [checkSelectAll, isMultiple, selectedItems]);\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple && Array.isArray(selectedItems)) {\n let selectedLabels: Array<string> = [];\n\n selectedItems?.forEach((element: number | string) => {\n let selectedItemLabel = modifiedOptions?.find(\n (item: TFlatListItem) => item[optValue] === element\n )?.[optLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel = modifiedOptions?.find(\n (item: TFlatListItem) => item[optValue] === selectedItem\n );\n return selectedItemLabel?.[optLabel];\n };\n\n /*===========================================\n * Search\n *==========================================*/\n const onSearch = (value: string) => {\n setSearchValue(value);\n\n let searchText = value.toString().toLocaleLowerCase().trim();\n\n const regexFilter = new RegExp(searchText, 'i');\n\n // Because the options array will be mutated after Search, we have to search with a copy of the original array\n const searchResults = isSectionList\n ? searchSectionList(optionsCopy as TSectionList, regexFilter)\n : searchFlatList(optionsCopy as TFlatList, regexFilter);\n\n setNewOptions(searchResults);\n };\n\n const searchFlatList = (flatList: TFlatList, regexFilter: RegExp) => {\n const searchResults = flatList.filter((item: TFlatListItem) => {\n if (\n item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 ||\n item[optValue].toString().toLowerCase().search(regexFilter) !== -1\n ) {\n return true;\n }\n return;\n });\n return searchResults;\n };\n\n const searchSectionList = (\n sectionList: TSectionList,\n regexFilter: RegExp\n ) => {\n const searchResults = sectionList.map((listItem: TSectionListItem) => {\n listItem.data = listItem.data.filter((item: TFlatListItem) => {\n if (\n item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 ||\n item[optValue].toString().toLowerCase().search(regexFilter) !== -1\n ) {\n return listItem.data.push(item);\n }\n return;\n });\n\n return listItem;\n });\n\n return searchResults;\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n setListIndex({ itemIndex: 0, sectionIndex: 0 });\n };\n\n useEffect(() => {\n if (hideModal) {\n setOpen(false);\n }\n return () => {};\n }, [hideModal]);\n\n let primary = primaryColor || colors.gray;\n\n /*===========================================\n * setIndexOfSelectedItem - For ScrollToIndex\n *==========================================*/\n const setIndexOfSelectedItem = (selectedLabel: string) => {\n isSectionList\n ? optionsCopy.map((item: TSectionListItem, sectionIndex: number) => {\n item.data?.find((dataItem: TFlatListItem, itemIndex: number) => {\n if (dataItem[optLabel] === selectedLabel) {\n setListIndex({ sectionIndex, itemIndex });\n }\n });\n })\n : optionsCopy?.find((item: TFlatListItem, itemIndex: number) => {\n if (item[optLabel] === selectedLabel) {\n setListIndex({ itemIndex });\n }\n });\n };\n\n return (\n <>\n <Dropdown\n label={label}\n placeholder={placeholder}\n helperText={helperText}\n error={error}\n getSelectedItemsLabel={getSelectedItemsLabel}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n handleToggleModal={handleToggleModal}\n labelStyle={labelStyle}\n dropdownIcon={dropdownIcon}\n dropdownStyle={dropdownStyle}\n dropdownIconStyle={dropdownIconStyle}\n dropdownContainerStyle={dropdownContainerStyle}\n dropdownErrorStyle={dropdownErrorStyle}\n dropdownErrorTextStyle={dropdownErrorTextStyle}\n dropdownHelperTextStyle={dropdownHelperTextStyle}\n selectedItemStyle={selectedItemStyle}\n multipleSelectedItemStyle={multipleSelectedItemStyle}\n isMultiple={isMultiple}\n primaryColor={primary}\n disabled={disabled}\n placeholderStyle={placeholderStyle}\n setIndexOfSelectedItem={setIndexOfSelectedItem}\n {...rest}\n />\n <CustomModal\n open={open}\n handleToggleModal={handleToggleModal}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => {}}\n modalProps={modalProps}\n >\n <ListTypeComponent\n keyboardShouldPersistTaps=\"always\"\n ListHeaderComponent={\n <>\n {isSearchable && (\n <Input\n value={searchValue}\n onChangeText={(text: string) => onSearch(text)}\n style={searchControls?.searchInputStyle || searchInputStyle}\n primaryColor={primary}\n {...searchControls?.textInputProps}\n />\n )}\n {listHeaderComponent}\n {isMultiple && modifiedOptions.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={\n selectAll\n ? listControls?.unselectAllText || 'Clear all'\n : listControls?.selectAllText || 'Select all'\n }\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n checkboxComponentStyles={checkboxComponentStyles}\n checkboxComponent={checkboxComponent}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n listComponentStyles={listComponentStyles}\n options={newOptions}\n optionLabel={optLabel}\n optionValue={optValue}\n isMultiple={isMultiple}\n isSearchable={isSearchable}\n selectedItems={selectedItems}\n selectedItem={selectedItem}\n handleMultipleSelections={handleMultipleSelections}\n handleSingleSelection={handleSingleSelection}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n checkboxComponentStyles={checkboxComponentStyles}\n checkboxComponent={checkboxComponent}\n listIndex={listIndex}\n />\n </CustomModal>\n </>\n );\n};\n\nconst styles = StyleSheet.create({\n optionsContainerStyle: {\n paddingHorizontal: 20,\n paddingVertical: 10,\n flexDirection: 'row',\n },\n});\n\nexport default DropdownSelect;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useCallback","TouchableOpacity","StyleSheet","View","Input","CheckBox","Dropdown","DropdownFlatList","DropdownSectionList","CustomModal","colors","DEFAULT_OPTION_LABEL","DEFAULT_OPTION_VALUE","extractPropertyFromArray","DropdownSelect","_ref","_extractPropertyFromA","_searchControls$textI","placeholder","label","error","helperText","options","optionLabel","optionValue","onValueChange","selectedValue","isMultiple","isSearchable","dropdownIcon","labelStyle","placeholderStyle","dropdownStyle","dropdownIconStyle","dropdownContainerStyle","dropdownErrorStyle","dropdownErrorTextStyle","dropdownHelperTextStyle","selectedItemStyle","multipleSelectedItemStyle","modalBackgroundStyle","modalOptionsContainerStyle","searchInputStyle","primaryColor","disabled","checkboxSize","checkboxStyle","checkboxLabelStyle","checkboxComponentStyles","checkboxComponent","listHeaderComponent","listFooterComponent","listComponentStyles","modalProps","hideModal","listControls","searchControls","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","listIndex","setListIndex","itemIndex","sectionIndex","Array","isArray","isSectionList","some","item","title","data","ListTypeComponent","modifiedSectionData","flat","modifiedOptions","optLabel","optValue","handleSingleSelection","value","handleMultipleSelections","prevVal","_selectedValues","selectedValues","includes","filter","push","removeDisabledItems","items","handleSelectAll","filteredOptions","i","length","selectAllCallback","unselectAllCallback","checkSelectAll","_removeDisabledItems","getSelectedItemsLabel","selectedLabels","forEach","element","_modifiedOptions$find","selectedItemLabel","find","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","searchSectionList","searchFlatList","flatList","toLowerCase","search","sectionList","map","listItem","handleToggleModal","primary","gray","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","_extends","onRequestClose","ListHeaderComponent","onChangeText","text","style","textInputStyle","textInputContainerStyle","textInputProps","styles","optionsContainerStyle","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","create","paddingHorizontal","paddingVertical","flexDirection"],"sources":["index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Input from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownFlatList from './components/Dropdown/DropdownFlatList';\nimport DropdownSectionList from './components/Dropdown/DropdownSectionList';\nimport CustomModal from './components/CustomModal';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type {\n DropdownProps,\n TFlatList,\n TFlatListItem,\n TSectionList,\n TSectionListItem,\n} from './types/index.types';\nimport { extractPropertyFromArray } from './utils';\n\nexport const DropdownSelect: React.FC<DropdownProps> = ({\n placeholder,\n label,\n error,\n helperText,\n options,\n optionLabel,\n optionValue,\n onValueChange,\n selectedValue,\n isMultiple,\n isSearchable,\n dropdownIcon,\n labelStyle,\n placeholderStyle,\n dropdownStyle,\n dropdownIconStyle,\n dropdownContainerStyle,\n dropdownErrorStyle,\n dropdownErrorTextStyle,\n dropdownHelperTextStyle,\n selectedItemStyle,\n multipleSelectedItemStyle,\n modalBackgroundStyle,\n modalOptionsContainerStyle,\n searchInputStyle, // kept for backwards compatibility\n primaryColor,\n disabled,\n checkboxSize, // kept for backwards compatibility\n checkboxStyle, // kept for backwards compatibility\n checkboxLabelStyle, // kept for backwards compatibility\n checkboxComponentStyles,\n checkboxComponent,\n listHeaderComponent,\n listFooterComponent,\n listComponentStyles,\n modalProps,\n hideModal = false,\n listControls,\n searchControls,\n ...rest\n}) => {\n const [newOptions, setNewOptions] = useState<TFlatList | TSectionList>([]);\n const [open, setOpen] = useState<boolean>(false);\n const [selectAll, setSelectAll] = useState<boolean>(false);\n const [selectedItem, setSelectedItem] = useState<any>(''); // for single selection\n const [selectedItems, setSelectedItems] = useState<any[]>([]); // for multiple selection\n const [searchValue, setSearchValue] = useState<string>('');\n const [listIndex, setListIndex] = useState<{\n sectionIndex?: number;\n itemIndex: number;\n }>({ itemIndex: 0, sectionIndex: 0 }); // for scrollToIndex in Sectionlist and Flatlist\n\n useEffect(() => {\n setNewOptions(options);\n return () => {};\n }, [options]);\n\n useEffect(() => {\n isMultiple\n ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : [])\n : setSelectedItem(selectedValue);\n\n return () => {};\n }, [selectedValue, isMultiple, onValueChange]);\n\n /*===========================================\n * List type\n *==========================================*/\n\n // check the structure of the new options array to determine if it is a section list or a\n const isSectionList = newOptions?.some(\n (item) => item.title && item.data && Array.isArray(item.data)\n );\n\n const ListTypeComponent = isSectionList\n ? DropdownSectionList\n : DropdownFlatList;\n const modifiedSectionData = extractPropertyFromArray(\n newOptions,\n 'data'\n )?.flat();\n\n /**\n * `options` is the original array, it never changes. (Do not use except you really need the original array) .\n * `newOptions` is a copy of options but can be mutated by `setNewOptions`, as a result, the value many change.\n * `modifiedOptions` should only be used for computations. It has the same structure for both `FlatList` and `SectionList`\n */\n const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;\n\n const optLabel = optionLabel || DEFAULT_OPTION_LABEL;\n const optValue = optionValue || DEFAULT_OPTION_VALUE;\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: string | number) => {\n if (selectedItem === value) {\n setSelectedItem(null);\n onValueChange(null); // send value to parent\n } else {\n setSelectedItem(value);\n onValueChange(value); // send value to parent\n setOpen(false); // close modal upon selection\n }\n };\n\n const handleMultipleSelections = (value: string[] | number[]) => {\n setSelectedItems((prevVal) => {\n let selectedValues = [...prevVal];\n\n if (selectedValues?.includes(value)) {\n selectedValues = selectedValues.filter((item) => item !== value);\n } else {\n selectedValues.push(value);\n }\n onValueChange(selectedValues); // send value to parent\n return selectedValues;\n });\n };\n\n const removeDisabledItems = (items: TFlatList) => {\n return items?.filter((item: TFlatListItem) => !item.disabled);\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n\n // don't select disabled items\n const filteredOptions = removeDisabledItems(\n isSectionList\n ? extractPropertyFromArray(options, 'data').flat()\n : options\n );\n\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); // send value to parent\n return !prevVal;\n });\n\n if (typeof listControls?.selectAllCallback === 'function' && !selectAll) {\n listControls.selectAllCallback();\n }\n\n if (typeof listControls?.unselectAllCallback === 'function' && selectAll) {\n listControls.unselectAllCallback();\n }\n };\n\n /*===========================================\n * Handle side effects\n *==========================================*/\n const checkSelectAll = useCallback(\n (selectedValues: any[]) => {\n //if the list contains disabled values, those values will not be selected\n if (\n removeDisabledItems(modifiedOptions)?.length === selectedValues?.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n },\n [modifiedOptions]\n );\n\n // anytime the selected items change, check if it is time to set `selectAll` to true\n useEffect(() => {\n if (isMultiple) {\n checkSelectAll(selectedItems);\n }\n return () => {};\n }, [checkSelectAll, isMultiple, selectedItems]);\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple && Array.isArray(selectedItems)) {\n let selectedLabels: Array<string> = [];\n\n selectedItems?.forEach((element: number | string) => {\n let selectedItemLabel = modifiedOptions?.find(\n (item: TFlatListItem) => item[optValue] === element\n )?.[optLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel = modifiedOptions?.find(\n (item: TFlatListItem) => item[optValue] === selectedItem\n );\n return selectedItemLabel?.[optLabel];\n };\n\n /*===========================================\n * Search\n *==========================================*/\n const onSearch = (value: string) => {\n setSearchValue(value);\n\n let searchText = value.toString().toLocaleLowerCase().trim();\n\n const regexFilter = new RegExp(searchText, 'i');\n\n // Because the options array will be mutated while searching, we have to search with the original array\n const searchResults = isSectionList\n ? searchSectionList(options as TSectionList, regexFilter)\n : searchFlatList(options as TFlatList, regexFilter);\n\n setNewOptions(searchResults);\n };\n\n const searchFlatList = (flatList: TFlatList, regexFilter: RegExp) => {\n const searchResults = flatList.filter((item: TFlatListItem) => {\n if (\n item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 ||\n item[optValue].toString().toLowerCase().search(regexFilter) !== -1\n ) {\n return true;\n }\n return;\n });\n return searchResults;\n };\n\n const searchSectionList = (\n sectionList: TSectionList,\n regexFilter: RegExp\n ) => {\n const searchResults = sectionList.map((listItem: TSectionListItem) => {\n listItem.data = listItem.data.filter((item: TFlatListItem) => {\n if (\n item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 ||\n item[optValue].toString().toLowerCase().search(regexFilter) !== -1\n ) {\n return listItem.data.push(item);\n }\n return;\n });\n\n return listItem;\n });\n\n return searchResults;\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n setListIndex({ itemIndex: 0, sectionIndex: 0 });\n };\n\n useEffect(() => {\n if (hideModal) {\n setOpen(false);\n }\n return () => {};\n }, [hideModal]);\n\n let primary = primaryColor || colors.gray;\n\n /*===========================================\n * setIndexOfSelectedItem - For ScrollToIndex\n *==========================================*/\n const setIndexOfSelectedItem = (selectedLabel: string) => {\n isSectionList\n ? (options as TSectionListItem[] | undefined)?.map(\n (item: TSectionListItem, sectionIndex: number) => {\n item?.data?.find((dataItem: TFlatListItem, itemIndex: number) => {\n if (dataItem[optLabel] === selectedLabel) {\n setListIndex({ sectionIndex, itemIndex });\n }\n });\n }\n )\n : (options as TFlatListItem[] | undefined)?.find(\n (item: TFlatListItem, itemIndex: number) => {\n if (item[optLabel] === selectedLabel) {\n setListIndex({ itemIndex });\n }\n }\n );\n };\n\n return (\n <>\n <Dropdown\n label={label}\n placeholder={placeholder}\n helperText={helperText}\n error={error}\n getSelectedItemsLabel={getSelectedItemsLabel}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n handleToggleModal={handleToggleModal}\n labelStyle={labelStyle}\n dropdownIcon={dropdownIcon}\n dropdownStyle={dropdownStyle}\n dropdownIconStyle={dropdownIconStyle}\n dropdownContainerStyle={dropdownContainerStyle}\n dropdownErrorStyle={dropdownErrorStyle}\n dropdownErrorTextStyle={dropdownErrorTextStyle}\n dropdownHelperTextStyle={dropdownHelperTextStyle}\n selectedItemStyle={selectedItemStyle}\n multipleSelectedItemStyle={multipleSelectedItemStyle}\n isMultiple={isMultiple}\n primaryColor={primary}\n disabled={disabled}\n placeholderStyle={placeholderStyle}\n setIndexOfSelectedItem={setIndexOfSelectedItem}\n {...rest}\n />\n <CustomModal\n open={open}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => handleToggleModal()}\n modalProps={modalProps}\n >\n <ListTypeComponent\n ListHeaderComponent={\n <>\n {isSearchable && (\n <Input\n value={searchValue}\n onChangeText={(text: string) => onSearch(text)}\n style={searchControls?.textInputStyle || searchInputStyle}\n primaryColor={primary}\n textInputContainerStyle={\n searchControls?.textInputContainerStyle\n }\n placeholder={\n searchControls?.textInputProps?.placeholder || 'Search'\n }\n {...searchControls?.textInputProps}\n />\n )}\n {listHeaderComponent}\n {isMultiple && modifiedOptions?.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={\n selectAll\n ? listControls?.unselectAllText || 'Clear all'\n : listControls?.selectAllText || 'Select all'\n }\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n checkboxComponentStyles={checkboxComponentStyles}\n checkboxComponent={checkboxComponent}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n listComponentStyles={listComponentStyles}\n options={newOptions}\n optionLabel={optLabel}\n optionValue={optValue}\n isMultiple={isMultiple}\n isSearchable={isSearchable}\n selectedItems={selectedItems}\n selectedItem={selectedItem}\n handleMultipleSelections={handleMultipleSelections}\n handleSingleSelection={handleSingleSelection}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n checkboxComponentStyles={checkboxComponentStyles}\n checkboxComponent={checkboxComponent}\n listIndex={listIndex}\n />\n </CustomModal>\n </>\n );\n};\n\nconst styles = StyleSheet.create({\n optionsContainerStyle: {\n paddingHorizontal: 20,\n paddingVertical: 10,\n flexDirection: 'row',\n },\n});\n\nexport default DropdownSelect;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.types.ts"],"sourcesContent":["import type {\n ViewStyle,\n ColorValue,\n TextStyle,\n ModalProps,\n TextInputProps,\n} from 'react-native';\n\nexport type DropdownProps = {\n placeholder?: string;\n label?: string;\n error?: string;\n helperText?: string;\n options: TFlatList | TSectionList;\n optionLabel?: string;\n optionValue?: string;\n onValueChange: Function;\n selectedValue?:\n | string\n | boolean\n | number\n | string[]\n | boolean[]\n | number[]\n | null;\n isMultiple?: boolean;\n isSearchable?: boolean;\n dropdownIcon?: React.ReactNode;\n labelStyle?: TextStyle;\n dropdownStyle?: ViewStyle;\n dropdownIconStyle?: ViewStyle;\n dropdownContainerStyle?: ViewStyle;\n dropdownErrorStyle?: ViewStyle;\n dropdownErrorTextStyle?: TextStyle;\n dropdownHelperTextStyle?: TextStyle;\n selectedItemStyle?: TextStyle;\n multipleSelectedItemStyle?: TextStyle;\n modalBackgroundStyle?: ViewStyle;\n modalOptionsContainerStyle?: ViewStyle;\n searchInputStyle?: ViewStyle;\n primaryColor?: ColorValue;\n disabled?: boolean;\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n checkboxComponentStyles?: {\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n };\n checkboxComponent?: React.ReactNode;\n placeholderStyle?: TextStyle;\n listHeaderComponent?: React.ReactNode;\n listFooterComponent?: React.ReactNode;\n hideModal?: boolean;\n modalProps?: ModalProps;\n listComponentStyles?: {\n listEmptyComponentStyle?: TextStyle;\n itemSeparatorStyle?: ViewStyle;\n sectionHeaderStyle?: TextStyle;\n };\n listControls?: {\n selectAllText?: string;\n unselectAllText?: string;\n selectAllCallback?: () => void;\n unselectAllCallback?: () => void;\n };\n searchControls?: {\n
|
|
1
|
+
{"version":3,"names":[],"sources":["index.types.ts"],"sourcesContent":["import type {\n ViewStyle,\n ColorValue,\n TextStyle,\n ModalProps,\n TextInputProps,\n} from 'react-native';\n\nexport type DropdownProps = {\n placeholder?: string;\n label?: string;\n error?: string;\n helperText?: string;\n options: TFlatList | TSectionList;\n optionLabel?: string;\n optionValue?: string;\n onValueChange: Function;\n selectedValue?:\n | string\n | boolean\n | number\n | string[]\n | boolean[]\n | number[]\n | null;\n isMultiple?: boolean;\n isSearchable?: boolean;\n dropdownIcon?: React.ReactNode;\n labelStyle?: TextStyle;\n dropdownStyle?: ViewStyle;\n dropdownIconStyle?: ViewStyle;\n dropdownContainerStyle?: ViewStyle;\n dropdownErrorStyle?: ViewStyle;\n dropdownErrorTextStyle?: TextStyle;\n dropdownHelperTextStyle?: TextStyle;\n selectedItemStyle?: TextStyle;\n multipleSelectedItemStyle?: TextStyle;\n modalBackgroundStyle?: ViewStyle;\n modalOptionsContainerStyle?: ViewStyle;\n searchInputStyle?: ViewStyle;\n primaryColor?: ColorValue;\n disabled?: boolean;\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n checkboxComponentStyles?: {\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n };\n checkboxComponent?: React.ReactNode;\n placeholderStyle?: TextStyle;\n listHeaderComponent?: React.ReactNode;\n listFooterComponent?: React.ReactNode;\n hideModal?: boolean;\n modalProps?: ModalProps;\n listComponentStyles?: {\n listEmptyComponentStyle?: TextStyle;\n itemSeparatorStyle?: ViewStyle;\n sectionHeaderStyle?: TextStyle;\n };\n listControls?: {\n selectAllText?: string;\n unselectAllText?: string;\n selectAllCallback?: () => void;\n unselectAllCallback?: () => void;\n };\n searchControls?: {\n textInputStyle?: ViewStyle | TextStyle;\n textInputContainerStyle?: ViewStyle;\n textInputProps?: TextInputProps;\n };\n};\n\nexport type TFlatList = TFlatListItem[];\nexport type TFlatListItem = {\n [key: string]: string | number | boolean;\n};\n\nexport type TSectionList = TSectionListItem[];\nexport type TSectionListItem = { title: string; data: TFlatList };\n"],"mappings":""}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
export const extractPropertyFromArray = (arr, property) => {
|
|
6
|
-
let extractedValue = arr.map(item => item[property]);
|
|
6
|
+
let extractedValue = arr === null || arr === void 0 ? void 0 : arr.map(item => item[property]);
|
|
7
7
|
return extractedValue;
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item"],"sources":["index.ts"],"sourcesContent":["/**\n * Extract property from array\n */\n\nexport const extractPropertyFromArray = (arr: any, property: string) => {\n let extractedValue = arr
|
|
1
|
+
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item"],"sources":["index.ts"],"sourcesContent":["/**\n * Extract property from array\n */\n\nexport const extractPropertyFromArray = (arr: any, property: string) => {\n let extractedValue = arr?.map((item: any) => item[property]);\n\n return extractedValue;\n};\n"],"mappings":"AAAA;AACA;AACA;;AAEA,OAAO,MAAMA,wBAAwB,GAAGA,CAACC,GAAQ,EAAEC,QAAgB,KAAK;EACtE,IAAIC,cAAc,GAAGF,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEG,GAAG,CAAEC,IAAS,IAAKA,IAAI,CAACH,QAAQ,CAAC,CAAC;EAE5D,OAAOC,cAAc;AACvB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
declare const CustomModal: ({ open,
|
|
2
|
+
declare const CustomModal: ({ open, onRequestClose, modalBackgroundStyle, modalOptionsContainerStyle, modalProps, children, }: any) => JSX.Element;
|
|
3
3
|
export default CustomModal;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export declare const Input: ({ placeholder, value, onChangeText, style, primaryColor, ...rest }: any) => JSX.Element;
|
|
2
|
+
export declare const Input: ({ placeholder, value, onChangeText, style, primaryColor, textInputContainerStyle, ...rest }: any) => JSX.Element;
|
|
3
3
|
export default Input;
|
|
@@ -53,7 +53,8 @@ export type DropdownProps = {
|
|
|
53
53
|
unselectAllCallback?: () => void;
|
|
54
54
|
};
|
|
55
55
|
searchControls?: {
|
|
56
|
-
|
|
56
|
+
textInputStyle?: ViewStyle | TextStyle;
|
|
57
|
+
textInputContainerStyle?: ViewStyle;
|
|
57
58
|
textInputProps?: TextInputProps;
|
|
58
59
|
};
|
|
59
60
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-input-select",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.8",
|
|
4
4
|
"description": "A customizable dropdown selection package for react-native for android and iOS with multiple select and search capabilities.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -9,7 +9,6 @@ import { colors } from '../../styles/colors';
|
|
|
9
9
|
|
|
10
10
|
const CustomModal = ({
|
|
11
11
|
open,
|
|
12
|
-
handleToggleModal,
|
|
13
12
|
onRequestClose,
|
|
14
13
|
modalBackgroundStyle,
|
|
15
14
|
modalOptionsContainerStyle,
|
|
@@ -25,7 +24,7 @@ const CustomModal = ({
|
|
|
25
24
|
{...modalProps}
|
|
26
25
|
>
|
|
27
26
|
<TouchableOpacity
|
|
28
|
-
onPress={() =>
|
|
27
|
+
onPress={() => onRequestClose()}
|
|
29
28
|
style={[
|
|
30
29
|
styles.modalContainer,
|
|
31
30
|
styles.modalBackgroundStyle,
|
|
@@ -35,8 +35,10 @@ const DropdownFlatList = ({
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
useEffect(() => {
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
if (options?.length) {
|
|
39
|
+
scrollToItem(listIndex.itemIndex);
|
|
40
|
+
}
|
|
41
|
+
}, [listIndex, options]);
|
|
40
42
|
|
|
41
43
|
return (
|
|
42
44
|
<FlatList
|
|
@@ -71,7 +73,7 @@ const DropdownFlatList = ({
|
|
|
71
73
|
checkboxStyle, // kept for backwards compatibility
|
|
72
74
|
checkboxLabelStyle, // kept for backwards compatibility
|
|
73
75
|
checkboxComponentStyles,
|
|
74
|
-
checkboxComponent
|
|
76
|
+
checkboxComponent,
|
|
75
77
|
})
|
|
76
78
|
}
|
|
77
79
|
keyExtractor={(_item, index) => `Options${index}`}
|
|
@@ -71,8 +71,10 @@ const DropdownSectionList = ({
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
useEffect(() => {
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
if (options?.length) {
|
|
75
|
+
scrollToLocation(listIndex);
|
|
76
|
+
}
|
|
77
|
+
}, [listIndex, options]);
|
|
76
78
|
|
|
77
79
|
return (
|
|
78
80
|
<SectionList
|
|
@@ -111,7 +113,8 @@ const DropdownSectionList = ({
|
|
|
111
113
|
})
|
|
112
114
|
}
|
|
113
115
|
renderSectionHeader={({ section: { title, data } }) =>
|
|
114
|
-
data
|
|
116
|
+
data?.length &&
|
|
117
|
+
title && (
|
|
115
118
|
<SectionHeaderTitle
|
|
116
119
|
title={title}
|
|
117
120
|
sectionHeaderStyle={listComponentStyles?.sectionHeaderStyle}
|
|
@@ -8,12 +8,13 @@ export const Input = ({
|
|
|
8
8
|
onChangeText,
|
|
9
9
|
style,
|
|
10
10
|
primaryColor,
|
|
11
|
+
textInputContainerStyle,
|
|
11
12
|
...rest
|
|
12
13
|
}: any) => {
|
|
13
14
|
const [isFocused, setFocus] = useState(false);
|
|
14
15
|
|
|
15
16
|
return (
|
|
16
|
-
<View style={styles.container}>
|
|
17
|
+
<View style={[styles.container, textInputContainerStyle]}>
|
|
17
18
|
<TextInput
|
|
18
19
|
placeholder={placeholder}
|
|
19
20
|
style={[
|
|
@@ -26,7 +27,9 @@ export const Input = ({
|
|
|
26
27
|
isFocused && { borderColor: primaryColor },
|
|
27
28
|
style,
|
|
28
29
|
]}
|
|
29
|
-
onFocus={() =>
|
|
30
|
+
onFocus={() => {
|
|
31
|
+
setFocus(true);
|
|
32
|
+
}}
|
|
30
33
|
onBlur={() => setFocus(false)}
|
|
31
34
|
value={value}
|
|
32
35
|
onChangeText={onChangeText}
|
package/src/index.tsx
CHANGED
|
@@ -68,12 +68,10 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
68
68
|
const [listIndex, setListIndex] = useState<{
|
|
69
69
|
sectionIndex?: number;
|
|
70
70
|
itemIndex: number;
|
|
71
|
-
}>({ itemIndex: 0 }); // for scrollToIndex in Sectionlist and Flatlist
|
|
71
|
+
}>({ itemIndex: 0, sectionIndex: 0 }); // for scrollToIndex in Sectionlist and Flatlist
|
|
72
72
|
|
|
73
73
|
useEffect(() => {
|
|
74
|
-
|
|
75
|
-
setNewOptions(options);
|
|
76
|
-
}
|
|
74
|
+
setNewOptions(options);
|
|
77
75
|
return () => {};
|
|
78
76
|
}, [options]);
|
|
79
77
|
|
|
@@ -90,7 +88,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
90
88
|
*==========================================*/
|
|
91
89
|
|
|
92
90
|
// check the structure of the new options array to determine if it is a section list or a
|
|
93
|
-
const isSectionList = newOptions
|
|
91
|
+
const isSectionList = newOptions?.some(
|
|
94
92
|
(item) => item.title && item.data && Array.isArray(item.data)
|
|
95
93
|
);
|
|
96
94
|
|
|
@@ -100,17 +98,17 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
100
98
|
const modifiedSectionData = extractPropertyFromArray(
|
|
101
99
|
newOptions,
|
|
102
100
|
'data'
|
|
103
|
-
)
|
|
101
|
+
)?.flat();
|
|
104
102
|
|
|
105
103
|
/**
|
|
106
|
-
|
|
107
|
-
*
|
|
104
|
+
* `options` is the original array, it never changes. (Do not use except you really need the original array) .
|
|
105
|
+
* `newOptions` is a copy of options but can be mutated by `setNewOptions`, as a result, the value many change.
|
|
106
|
+
* `modifiedOptions` should only be used for computations. It has the same structure for both `FlatList` and `SectionList`
|
|
108
107
|
*/
|
|
109
108
|
const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;
|
|
110
109
|
|
|
111
110
|
const optLabel = optionLabel || DEFAULT_OPTION_LABEL;
|
|
112
111
|
const optValue = optionValue || DEFAULT_OPTION_VALUE;
|
|
113
|
-
const optionsCopy = JSON.parse(JSON.stringify(options)); // copy of the original options array
|
|
114
112
|
|
|
115
113
|
/*===========================================
|
|
116
114
|
* Selection handlers
|
|
@@ -141,7 +139,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
141
139
|
};
|
|
142
140
|
|
|
143
141
|
const removeDisabledItems = (items: TFlatList) => {
|
|
144
|
-
return items
|
|
142
|
+
return items?.filter((item: TFlatListItem) => !item.disabled);
|
|
145
143
|
};
|
|
146
144
|
|
|
147
145
|
const handleSelectAll = () => {
|
|
@@ -151,8 +149,8 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
151
149
|
// don't select disabled items
|
|
152
150
|
const filteredOptions = removeDisabledItems(
|
|
153
151
|
isSectionList
|
|
154
|
-
? extractPropertyFromArray(
|
|
155
|
-
:
|
|
152
|
+
? extractPropertyFromArray(options, 'data').flat()
|
|
153
|
+
: options
|
|
156
154
|
);
|
|
157
155
|
|
|
158
156
|
if (!prevVal) {
|
|
@@ -182,7 +180,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
182
180
|
(selectedValues: any[]) => {
|
|
183
181
|
//if the list contains disabled values, those values will not be selected
|
|
184
182
|
if (
|
|
185
|
-
removeDisabledItems(modifiedOptions)
|
|
183
|
+
removeDisabledItems(modifiedOptions)?.length === selectedValues?.length
|
|
186
184
|
) {
|
|
187
185
|
setSelectAll(true);
|
|
188
186
|
} else {
|
|
@@ -232,10 +230,10 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
232
230
|
|
|
233
231
|
const regexFilter = new RegExp(searchText, 'i');
|
|
234
232
|
|
|
235
|
-
// Because the options array will be mutated
|
|
233
|
+
// Because the options array will be mutated while searching, we have to search with the original array
|
|
236
234
|
const searchResults = isSectionList
|
|
237
|
-
? searchSectionList(
|
|
238
|
-
: searchFlatList(
|
|
235
|
+
? searchSectionList(options as TSectionList, regexFilter)
|
|
236
|
+
: searchFlatList(options as TFlatList, regexFilter);
|
|
239
237
|
|
|
240
238
|
setNewOptions(searchResults);
|
|
241
239
|
};
|
|
@@ -298,18 +296,22 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
298
296
|
*==========================================*/
|
|
299
297
|
const setIndexOfSelectedItem = (selectedLabel: string) => {
|
|
300
298
|
isSectionList
|
|
301
|
-
?
|
|
302
|
-
item
|
|
303
|
-
|
|
304
|
-
|
|
299
|
+
? (options as TSectionListItem[] | undefined)?.map(
|
|
300
|
+
(item: TSectionListItem, sectionIndex: number) => {
|
|
301
|
+
item?.data?.find((dataItem: TFlatListItem, itemIndex: number) => {
|
|
302
|
+
if (dataItem[optLabel] === selectedLabel) {
|
|
303
|
+
setListIndex({ sectionIndex, itemIndex });
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
)
|
|
308
|
+
: (options as TFlatListItem[] | undefined)?.find(
|
|
309
|
+
(item: TFlatListItem, itemIndex: number) => {
|
|
310
|
+
if (item[optLabel] === selectedLabel) {
|
|
311
|
+
setListIndex({ itemIndex });
|
|
305
312
|
}
|
|
306
|
-
});
|
|
307
|
-
})
|
|
308
|
-
: optionsCopy?.find((item: TFlatListItem, itemIndex: number) => {
|
|
309
|
-
if (item[optLabel] === selectedLabel) {
|
|
310
|
-
setListIndex({ itemIndex });
|
|
311
313
|
}
|
|
312
|
-
|
|
314
|
+
);
|
|
313
315
|
};
|
|
314
316
|
|
|
315
317
|
return (
|
|
@@ -342,27 +344,31 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
342
344
|
/>
|
|
343
345
|
<CustomModal
|
|
344
346
|
open={open}
|
|
345
|
-
handleToggleModal={handleToggleModal}
|
|
346
347
|
modalBackgroundStyle={modalBackgroundStyle}
|
|
347
348
|
modalOptionsContainerStyle={modalOptionsContainerStyle}
|
|
348
|
-
onRequestClose={() =>
|
|
349
|
+
onRequestClose={() => handleToggleModal()}
|
|
349
350
|
modalProps={modalProps}
|
|
350
351
|
>
|
|
351
352
|
<ListTypeComponent
|
|
352
|
-
keyboardShouldPersistTaps="always"
|
|
353
353
|
ListHeaderComponent={
|
|
354
354
|
<>
|
|
355
355
|
{isSearchable && (
|
|
356
356
|
<Input
|
|
357
357
|
value={searchValue}
|
|
358
358
|
onChangeText={(text: string) => onSearch(text)}
|
|
359
|
-
style={searchControls?.
|
|
359
|
+
style={searchControls?.textInputStyle || searchInputStyle}
|
|
360
360
|
primaryColor={primary}
|
|
361
|
+
textInputContainerStyle={
|
|
362
|
+
searchControls?.textInputContainerStyle
|
|
363
|
+
}
|
|
364
|
+
placeholder={
|
|
365
|
+
searchControls?.textInputProps?.placeholder || 'Search'
|
|
366
|
+
}
|
|
361
367
|
{...searchControls?.textInputProps}
|
|
362
368
|
/>
|
|
363
369
|
)}
|
|
364
370
|
{listHeaderComponent}
|
|
365
|
-
{isMultiple && modifiedOptions
|
|
371
|
+
{isMultiple && modifiedOptions?.length > 1 && (
|
|
366
372
|
<View style={styles.optionsContainerStyle}>
|
|
367
373
|
<TouchableOpacity onPress={() => {}}>
|
|
368
374
|
<CheckBox
|
package/src/types/index.types.ts
CHANGED
|
@@ -66,7 +66,8 @@ export type DropdownProps = {
|
|
|
66
66
|
unselectAllCallback?: () => void;
|
|
67
67
|
};
|
|
68
68
|
searchControls?: {
|
|
69
|
-
|
|
69
|
+
textInputStyle?: ViewStyle | TextStyle;
|
|
70
|
+
textInputContainerStyle?: ViewStyle;
|
|
70
71
|
textInputProps?: TextInputProps;
|
|
71
72
|
};
|
|
72
73
|
};
|
package/src/utils/index.ts
CHANGED