react-native-input-select 1.3.2 → 1.3.4
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 +48 -40
- package/lib/commonjs/components/CheckBox/{types.js → checkbox.types.js} +1 -1
- package/lib/commonjs/components/CheckBox/checkbox.types.js.map +1 -0
- package/lib/commonjs/components/CheckBox/index.js +9 -28
- package/lib/commonjs/components/CheckBox/index.js.map +1 -1
- package/lib/commonjs/components/CustomModal/index.js +11 -7
- package/lib/commonjs/components/CustomModal/index.js.map +1 -1
- package/lib/commonjs/components/Dropdown/DropdownSectionList.js +1 -1
- package/lib/commonjs/components/Dropdown/DropdownSectionList.js.map +1 -1
- package/lib/commonjs/components/Input/index.js +2 -1
- package/lib/commonjs/components/Input/index.js.map +1 -1
- package/lib/commonjs/components/Others/index.js.map +1 -1
- package/lib/commonjs/index.js +14 -5
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/index.types.js.map +1 -1
- package/lib/commonjs/utils/index.js +5 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/components/CheckBox/checkbox.types.js +2 -0
- package/lib/module/components/CheckBox/checkbox.types.js.map +1 -0
- package/lib/module/components/CheckBox/index.js +9 -28
- package/lib/module/components/CheckBox/index.js.map +1 -1
- package/lib/module/components/CustomModal/index.js +11 -7
- package/lib/module/components/CustomModal/index.js.map +1 -1
- package/lib/module/components/Dropdown/DropdownSectionList.js +1 -1
- package/lib/module/components/Dropdown/DropdownSectionList.js.map +1 -1
- package/lib/module/components/Input/index.js +2 -1
- package/lib/module/components/Input/index.js.map +1 -1
- package/lib/module/components/Others/index.js.map +1 -1
- package/lib/module/index.js +15 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/index.types.js.map +1 -1
- package/lib/module/utils/index.js +3 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/components/CheckBox/checkbox.types.d.ts +9 -0
- package/lib/typescript/components/CheckBox/index.d.ts +2 -19
- package/lib/typescript/components/CustomModal/index.d.ts +3 -1
- package/lib/typescript/components/Others/index.d.ts +3 -1
- package/lib/typescript/types/index.types.d.ts +46 -15
- package/lib/typescript/utils/index.d.ts +2 -1
- package/package.json +2 -2
- package/src/components/CheckBox/checkbox.types.ts +10 -0
- package/src/components/CheckBox/index.tsx +15 -26
- package/src/components/CustomModal/index.tsx +19 -11
- package/src/components/Dropdown/DropdownSectionList.tsx +1 -1
- package/src/components/Input/index.tsx +1 -0
- package/src/components/Others/index.tsx +5 -1
- package/src/index.tsx +16 -11
- package/src/types/index.types.ts +56 -15
- package/src/utils/index.ts +5 -1
- package/lib/commonjs/components/CheckBox/types.js.map +0 -1
- package/lib/module/components/CheckBox/types.js +0 -2
- package/lib/module/components/CheckBox/types.js.map +0 -1
- package/lib/typescript/components/CheckBox/types.d.ts +0 -18
- package/src/components/CheckBox/types.ts +0 -19
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","_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","filteredData","handleToggleModal","primary","gray","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","_extends","onRequestClose","ListHeaderComponent","onChangeText","text","style","textInputStyle","textInputContainerStyle","textInputProps","hideSelectAll","styles","optionsContainerStyle","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","emptyListMessage","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: -1, sectionIndex: -1 }); // 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 false;\n });\n return searchResults;\n };\n\n const searchSectionList = (\n sectionList: TSectionList,\n regexFilter: RegExp\n ) => {\n const searchResults = sectionList.map((listItem: TSectionListItem) => {\n const filteredData = 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 true;\n }\n return false;\n });\n\n return { ...listItem, data: filteredData };\n });\n\n return searchResults;\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n if (disabled){ // protecting any toggleModal invocation when Dropdown is disabled by not activating state\n return; \n }\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n setListIndex({ itemIndex: -1, sectionIndex: -1 });\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 {!listControls?.hideSelectAll &&\n isMultiple &&\n 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 emptyListMessage={listControls?.emptyListMessage}\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","escapeRegExp","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","modalControls","checkboxControls","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","filteredData","handleToggleModal","primary","gray","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","_extends","visible","onRequestClose","ListHeaderComponent","onChangeText","text","style","textInputStyle","textInputContainerStyle","textInputProps","hideSelectAll","styles","optionsContainerStyle","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","emptyListMessage","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 { escapeRegExp, 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, // kept for backwards compatibility\n modalOptionsContainerStyle, // kept for backwards compatibility\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, // kept for backwards compatibility\n hideModal = false,\n listControls,\n searchControls,\n modalControls,\n checkboxControls,\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: -1, sectionIndex: -1 }); // 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 = escapeRegExp(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 false;\n });\n return searchResults;\n };\n\n const searchSectionList = (\n sectionList: TSectionList,\n regexFilter: RegExp\n ) => {\n const searchResults = sectionList.map((listItem: TSectionListItem) => {\n const filteredData = 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 true;\n }\n return false;\n });\n\n return { ...listItem, data: filteredData };\n });\n\n return searchResults;\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n if (disabled) {\n // protecting any toggleModal invocation when Dropdown is disabled by not activating state\n return;\n }\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n setListIndex({ itemIndex: -1, sectionIndex: -1 });\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 visible={open}\n modalBackgroundStyle={modalBackgroundStyle} // kept for backwards compatibility\n modalOptionsContainerStyle={modalOptionsContainerStyle} // kept for backwards compatibility\n onRequestClose={() => handleToggleModal()}\n modalControls={modalControls}\n modalProps={modalProps} // kept for backwards compatibility\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 {!listControls?.hideSelectAll &&\n isMultiple &&\n 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 checkboxControls={checkboxControls}\n listIndex={listIndex}\n emptyListMessage={listControls?.emptyListMessage}\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 =
|
|
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 = CommonDropdownProps &\n TDropdownInputProps &\n TSearchControls &\n TCheckboxControls &\n TCustomModalControls &\n TListControls;\n\nexport type CommonDropdownProps = {\n label?: 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};\n\nexport type TDropdownInputProps = {\n placeholder?: string;\n error?: string;\n helperText?: string;\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 primaryColor?: ColorValue;\n disabled?: boolean;\n placeholderStyle?: TextStyle;\n hideModal?: boolean;\n};\n\nexport type TSearchControls = {\n /** @deprecated Use `searchControls = {{textInputStyle: ViewStyle | TextStyle }}` instead.*/\n searchInputStyle?: ViewStyle;\n searchControls?: {\n textInputStyle?: ViewStyle | TextStyle;\n textInputContainerStyle?: ViewStyle;\n textInputProps?: TextInputProps;\n };\n};\nexport type TCheckboxControls = {\n /** @deprecated Use `checkboxControls = {{checkboxSize: number }}` instead.*/\n checkboxSize?: number;\n /** @deprecated Use `checkboxControls = {{checkboxStyle: ViewStyle }}` instead.*/\n checkboxStyle?: ViewStyle;\n /** @deprecated Use `checkboxControls = {{checkboxLabelStyle: TextStyle }}` instead.*/\n checkboxLabelStyle?: TextStyle;\n /** @deprecated Use `checkboxControls` instead.*/\n checkboxComponentStyles?: {\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n };\n /** @deprecated Use `checkboxControls = {{checkboxComponent: <View></View> }}` instead.*/\n checkboxComponent?: React.ReactNode;\n checkboxControls?: {\n checkboxSize?: number;\n checkboxStyle?: ViewStyle;\n checkboxLabelStyle?: TextStyle;\n checkboxComponent?: React.ReactNode;\n };\n};\n\nexport type TCustomModalControls = {\n /** @deprecated Use `modalControls = {{modalBackgroundStyle: ViewStyle}} instead.*/\n modalBackgroundStyle?: ViewStyle;\n /** @deprecated Use `modalControls = {{ modalOptionsContainerStyle: ViewStyle}} instead.*/\n modalOptionsContainerStyle?: ViewStyle;\n /** @deprecated Use `modalControls = {{modalProps: ModalProps }}` instead.*/\n modalProps?: ModalProps;\n modalControls?: {\n modalBackgroundStyle?: ViewStyle;\n modalOptionsContainerStyle?: ViewStyle;\n modalProps?: ModalProps;\n };\n};\n\nexport type TListControls = {\n listHeaderComponent?: React.ReactNode;\n listFooterComponent?: React.ReactNode;\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 hideSelectAll?: boolean;\n emptyListMessage?: string;\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":""}
|
|
@@ -6,4 +6,7 @@ export const extractPropertyFromArray = (arr, property) => {
|
|
|
6
6
|
let extractedValue = arr === null || arr === void 0 ? void 0 : arr.map(item => item[property]);
|
|
7
7
|
return extractedValue;
|
|
8
8
|
};
|
|
9
|
+
export const escapeRegExp = text => {
|
|
10
|
+
return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
11
|
+
};
|
|
9
12
|
//# 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?.map((item: any) => item[property]);\n\n return extractedValue;\n};\n"],"mappings":"AAAA;AACA;AACA;;AAEA,OAAO,MAAMA,wBAAwB,GAAGA,CAACC,
|
|
1
|
+
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item","escapeRegExp","text","replace"],"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\nexport const escapeRegExp = (text: string) => {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n"],"mappings":"AAAA;AACA;AACA;;AAEA,OAAO,MAAMA,wBAAwB,GAAGA,CAACC,GAAU,EAAEC,QAAgB,KAAK;EACxE,IAAIC,cAAc,GAAGF,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEG,GAAG,CAAEC,IAAS,IAAKA,IAAI,CAACH,QAAQ,CAAC,CAAC;EAE5D,OAAOC,cAAc;AACvB,CAAC;AAED,OAAO,MAAMG,YAAY,GAAIC,IAAY,IAAK;EAC5C,OAAOA,IAAI,CAACC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ColorValue } from 'react-native';
|
|
2
|
+
import { TCheckboxControls } from 'src/types/index.types';
|
|
3
|
+
export type CheckboxProps = {
|
|
4
|
+
label?: string;
|
|
5
|
+
value?: boolean;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
primaryColor?: ColorValue;
|
|
8
|
+
onChange?: (value: boolean | string | number) => void;
|
|
9
|
+
} & TCheckboxControls;
|
|
@@ -1,21 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { CheckboxProps } from './types';
|
|
3
|
-
|
|
4
|
-
* Individual props `checkboxSize`, `checkboxStyle`, `checkboxLabelStyle` would be replaced in future releases
|
|
5
|
-
* and replaced with a single object `checkboxComponentStyles` e.g
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
const checkboxComponentStyles = {
|
|
9
|
-
checkboxSize: 20,
|
|
10
|
-
checkboxStyle: {
|
|
11
|
-
backgroundColor: 'purple',
|
|
12
|
-
borderRadius: 30,
|
|
13
|
-
padding: 10,
|
|
14
|
-
borderColor: 'red',
|
|
15
|
-
},
|
|
16
|
-
checkboxLabelStyle: { color: 'red', fontSize: 20 },
|
|
17
|
-
};
|
|
18
|
-
```
|
|
19
|
-
*/
|
|
20
|
-
declare const CheckBox: ({ label, value, disabled, primaryColor, checkboxSize, checkboxStyle, checkboxLabelStyle, checkboxComponentStyles, checkboxComponent, onChange, }: CheckboxProps) => JSX.Element;
|
|
2
|
+
import type { CheckboxProps } from './checkbox.types';
|
|
3
|
+
declare const CheckBox: ({ label, value, disabled, primaryColor, checkboxSize, checkboxStyle, checkboxLabelStyle, checkboxComponentStyles, checkboxComponent, checkboxControls, onChange, }: CheckboxProps) => JSX.Element;
|
|
21
4
|
export default CheckBox;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
2
|
+
import { ModalProps } from 'react-native';
|
|
3
|
+
import { TCustomModalControls } from 'src/types/index.types';
|
|
4
|
+
declare const CustomModal: ({ visible, onRequestClose, modalBackgroundStyle, modalOptionsContainerStyle, modalControls, modalProps, children, }: TCustomModalControls & ModalProps) => JSX.Element;
|
|
3
5
|
export default CustomModal;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { TextStyle, ViewStyle } from 'react-native';
|
|
3
3
|
export declare const ListEmptyComponent: ({ listEmptyComponentStyle, emptyListMessage, }: any) => JSX.Element;
|
|
4
|
-
export declare const ItemSeparatorComponent: ({ itemSeparatorStyle }:
|
|
4
|
+
export declare const ItemSeparatorComponent: ({ itemSeparatorStyle, }: {
|
|
5
|
+
itemSeparatorStyle: ViewStyle;
|
|
6
|
+
}) => JSX.Element;
|
|
5
7
|
export declare const ListItemContainer: ({ children, listItemContainerStyle, }: {
|
|
6
8
|
children: ReactNode;
|
|
7
9
|
listItemContainerStyle: ViewStyle;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { ViewStyle, ColorValue, TextStyle, ModalProps, TextInputProps } from 'react-native';
|
|
3
|
-
export type DropdownProps =
|
|
4
|
-
|
|
3
|
+
export type DropdownProps = CommonDropdownProps & TDropdownInputProps & TSearchControls & TCheckboxControls & TCustomModalControls & TListControls;
|
|
4
|
+
export type CommonDropdownProps = {
|
|
5
5
|
label?: string;
|
|
6
|
-
error?: string;
|
|
7
|
-
helperText?: string;
|
|
8
6
|
options: TFlatList | TSectionList;
|
|
9
7
|
optionLabel?: string;
|
|
10
8
|
optionValue?: string;
|
|
11
9
|
onValueChange: Function;
|
|
12
10
|
selectedValue?: string | boolean | number | string[] | boolean[] | number[] | null;
|
|
11
|
+
};
|
|
12
|
+
export type TDropdownInputProps = {
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
helperText?: string;
|
|
13
16
|
isMultiple?: boolean;
|
|
14
17
|
isSearchable?: boolean;
|
|
15
18
|
dropdownIcon?: React.ReactNode;
|
|
@@ -22,25 +25,58 @@ export type DropdownProps = {
|
|
|
22
25
|
dropdownHelperTextStyle?: TextStyle;
|
|
23
26
|
selectedItemStyle?: TextStyle;
|
|
24
27
|
multipleSelectedItemStyle?: TextStyle;
|
|
25
|
-
modalBackgroundStyle?: ViewStyle;
|
|
26
|
-
modalOptionsContainerStyle?: ViewStyle;
|
|
27
|
-
searchInputStyle?: ViewStyle;
|
|
28
28
|
primaryColor?: ColorValue;
|
|
29
29
|
disabled?: boolean;
|
|
30
|
+
placeholderStyle?: TextStyle;
|
|
31
|
+
hideModal?: boolean;
|
|
32
|
+
};
|
|
33
|
+
export type TSearchControls = {
|
|
34
|
+
/** @deprecated Use `searchControls = {{textInputStyle: ViewStyle | TextStyle }}` instead.*/
|
|
35
|
+
searchInputStyle?: ViewStyle;
|
|
36
|
+
searchControls?: {
|
|
37
|
+
textInputStyle?: ViewStyle | TextStyle;
|
|
38
|
+
textInputContainerStyle?: ViewStyle;
|
|
39
|
+
textInputProps?: TextInputProps;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export type TCheckboxControls = {
|
|
43
|
+
/** @deprecated Use `checkboxControls = {{checkboxSize: number }}` instead.*/
|
|
30
44
|
checkboxSize?: number;
|
|
45
|
+
/** @deprecated Use `checkboxControls = {{checkboxStyle: ViewStyle }}` instead.*/
|
|
31
46
|
checkboxStyle?: ViewStyle;
|
|
47
|
+
/** @deprecated Use `checkboxControls = {{checkboxLabelStyle: TextStyle }}` instead.*/
|
|
32
48
|
checkboxLabelStyle?: TextStyle;
|
|
49
|
+
/** @deprecated Use `checkboxControls` instead.*/
|
|
33
50
|
checkboxComponentStyles?: {
|
|
34
51
|
checkboxSize?: number;
|
|
35
52
|
checkboxStyle?: ViewStyle;
|
|
36
53
|
checkboxLabelStyle?: TextStyle;
|
|
37
54
|
};
|
|
55
|
+
/** @deprecated Use `checkboxControls = {{checkboxComponent: <View></View> }}` instead.*/
|
|
38
56
|
checkboxComponent?: React.ReactNode;
|
|
39
|
-
|
|
57
|
+
checkboxControls?: {
|
|
58
|
+
checkboxSize?: number;
|
|
59
|
+
checkboxStyle?: ViewStyle;
|
|
60
|
+
checkboxLabelStyle?: TextStyle;
|
|
61
|
+
checkboxComponent?: React.ReactNode;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export type TCustomModalControls = {
|
|
65
|
+
/** @deprecated Use `modalControls = {{modalBackgroundStyle: ViewStyle}} instead.*/
|
|
66
|
+
modalBackgroundStyle?: ViewStyle;
|
|
67
|
+
/** @deprecated Use `modalControls = {{ modalOptionsContainerStyle: ViewStyle}} instead.*/
|
|
68
|
+
modalOptionsContainerStyle?: ViewStyle;
|
|
69
|
+
/** @deprecated Use `modalControls = {{modalProps: ModalProps }}` instead.*/
|
|
70
|
+
modalProps?: ModalProps;
|
|
71
|
+
modalControls?: {
|
|
72
|
+
modalBackgroundStyle?: ViewStyle;
|
|
73
|
+
modalOptionsContainerStyle?: ViewStyle;
|
|
74
|
+
modalProps?: ModalProps;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export type TListControls = {
|
|
40
78
|
listHeaderComponent?: React.ReactNode;
|
|
41
79
|
listFooterComponent?: React.ReactNode;
|
|
42
|
-
hideModal?: boolean;
|
|
43
|
-
modalProps?: ModalProps;
|
|
44
80
|
listComponentStyles?: {
|
|
45
81
|
listEmptyComponentStyle?: TextStyle;
|
|
46
82
|
itemSeparatorStyle?: ViewStyle;
|
|
@@ -54,11 +90,6 @@ export type DropdownProps = {
|
|
|
54
90
|
hideSelectAll?: boolean;
|
|
55
91
|
emptyListMessage?: string;
|
|
56
92
|
};
|
|
57
|
-
searchControls?: {
|
|
58
|
-
textInputStyle?: ViewStyle | TextStyle;
|
|
59
|
-
textInputContainerStyle?: ViewStyle;
|
|
60
|
-
textInputProps?: TextInputProps;
|
|
61
|
-
};
|
|
62
93
|
};
|
|
63
94
|
export type TFlatList = TFlatListItem[];
|
|
64
95
|
export type TFlatListItem = {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract property from array
|
|
3
3
|
*/
|
|
4
|
-
export declare const extractPropertyFromArray: (arr: any, property: string) => any;
|
|
4
|
+
export declare const extractPropertyFromArray: (arr: any[], property: string) => any[];
|
|
5
|
+
export declare const escapeRegExp: (text: string) => string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-input-select",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
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",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"react-native": "0.63.4",
|
|
74
74
|
"react-native-builder-bob": "^0.18.2",
|
|
75
75
|
"release-it": "^14.14.3",
|
|
76
|
-
"typescript": "^
|
|
76
|
+
"typescript": "^5.3.3"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"react": "*",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ColorValue } from 'react-native';
|
|
2
|
+
import { TCheckboxControls } from 'src/types/index.types';
|
|
3
|
+
|
|
4
|
+
export type CheckboxProps = {
|
|
5
|
+
label?: string;
|
|
6
|
+
value?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
primaryColor?: ColorValue;
|
|
9
|
+
onChange?: (value: boolean | string | number) => void;
|
|
10
|
+
} & TCheckboxControls;
|
|
@@ -2,25 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { Pressable, Text, StyleSheet, Image, View } from 'react-native';
|
|
3
3
|
import { colors } from '../../styles/colors';
|
|
4
4
|
import { CHECKBOX_SIZE } from '../../constants';
|
|
5
|
-
import type { CheckboxProps } from './types';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Individual props `checkboxSize`, `checkboxStyle`, `checkboxLabelStyle` would be replaced in future releases
|
|
9
|
-
* and replaced with a single object `checkboxComponentStyles` e.g
|
|
10
|
-
|
|
11
|
-
```js
|
|
12
|
-
const checkboxComponentStyles = {
|
|
13
|
-
checkboxSize: 20,
|
|
14
|
-
checkboxStyle: {
|
|
15
|
-
backgroundColor: 'purple',
|
|
16
|
-
borderRadius: 30,
|
|
17
|
-
padding: 10,
|
|
18
|
-
borderColor: 'red',
|
|
19
|
-
},
|
|
20
|
-
checkboxLabelStyle: { color: 'red', fontSize: 20 },
|
|
21
|
-
};
|
|
22
|
-
```
|
|
23
|
-
*/
|
|
5
|
+
import type { CheckboxProps } from './checkbox.types';
|
|
24
6
|
|
|
25
7
|
const CheckBox = ({
|
|
26
8
|
label,
|
|
@@ -32,22 +14,23 @@ const CheckBox = ({
|
|
|
32
14
|
checkboxLabelStyle,
|
|
33
15
|
checkboxComponentStyles,
|
|
34
16
|
checkboxComponent,
|
|
17
|
+
checkboxControls,
|
|
35
18
|
onChange,
|
|
36
19
|
}: CheckboxProps) => {
|
|
37
|
-
// const { checkboxSize, checkboxStyle, checkboxLabelStyle } =
|
|
38
|
-
// checkboxComponentStyles || undefined;
|
|
39
20
|
const fillColor = {
|
|
40
21
|
backgroundColor: disabled
|
|
41
22
|
? '#d3d3d3'
|
|
42
23
|
: value
|
|
43
|
-
?
|
|
24
|
+
? checkboxControls?.checkboxStyle?.backgroundColor ||
|
|
25
|
+
checkboxComponentStyles?.checkboxStyle?.backgroundColor ||
|
|
44
26
|
checkboxStyle?.backgroundColor ||
|
|
45
27
|
primaryColor ||
|
|
46
28
|
'green'
|
|
47
29
|
: 'white',
|
|
48
30
|
borderColor: disabled
|
|
49
31
|
? colors.disabled
|
|
50
|
-
:
|
|
32
|
+
: checkboxControls?.checkboxStyle?.borderColor ||
|
|
33
|
+
checkboxComponentStyles?.checkboxStyle?.borderColor ||
|
|
51
34
|
checkboxStyle?.borderColor ||
|
|
52
35
|
styles.checkbox.borderColor,
|
|
53
36
|
};
|
|
@@ -61,20 +44,24 @@ const CheckBox = ({
|
|
|
61
44
|
<View
|
|
62
45
|
style={[
|
|
63
46
|
styles.checkbox,
|
|
64
|
-
|
|
47
|
+
checkboxControls?.checkboxStyle ||
|
|
48
|
+
checkboxComponentStyles?.checkboxStyle ||
|
|
49
|
+
checkboxStyle,
|
|
65
50
|
fillColor,
|
|
66
51
|
]}
|
|
67
52
|
>
|
|
68
|
-
{checkboxComponent || (
|
|
53
|
+
{checkboxControls?.checkboxComponent || checkboxComponent || (
|
|
69
54
|
<Image
|
|
70
55
|
source={require('../../asset/check.png')}
|
|
71
56
|
style={[
|
|
72
57
|
{
|
|
73
58
|
height:
|
|
59
|
+
checkboxControls?.checkboxSize ||
|
|
74
60
|
checkboxComponentStyles?.checkboxSize ||
|
|
75
61
|
checkboxSize ||
|
|
76
62
|
CHECKBOX_SIZE,
|
|
77
63
|
width:
|
|
64
|
+
checkboxControls?.checkboxSize ||
|
|
78
65
|
checkboxComponentStyles?.checkboxSize ||
|
|
79
66
|
checkboxSize ||
|
|
80
67
|
CHECKBOX_SIZE,
|
|
@@ -86,7 +73,9 @@ const CheckBox = ({
|
|
|
86
73
|
{label && label !== '' && (
|
|
87
74
|
<Text
|
|
88
75
|
style={[
|
|
89
|
-
|
|
76
|
+
checkboxControls?.checkboxLabelStyle ||
|
|
77
|
+
checkboxComponentStyles?.checkboxLabelStyle ||
|
|
78
|
+
checkboxLabelStyle,
|
|
90
79
|
styles.labelStyle,
|
|
91
80
|
]}
|
|
92
81
|
>
|
|
@@ -5,37 +5,45 @@ import {
|
|
|
5
5
|
SafeAreaView,
|
|
6
6
|
StyleSheet,
|
|
7
7
|
TouchableWithoutFeedback,
|
|
8
|
+
ModalProps,
|
|
8
9
|
} from 'react-native';
|
|
9
10
|
import { colors } from '../../styles/colors';
|
|
11
|
+
import { TCustomModalControls } from 'src/types/index.types';
|
|
10
12
|
|
|
11
13
|
const CustomModal = ({
|
|
12
|
-
|
|
14
|
+
visible,
|
|
13
15
|
onRequestClose,
|
|
14
|
-
modalBackgroundStyle,
|
|
15
|
-
modalOptionsContainerStyle,
|
|
16
|
-
|
|
16
|
+
modalBackgroundStyle, //kept for backwards compatibility
|
|
17
|
+
modalOptionsContainerStyle, //kept for backwards compatibility
|
|
18
|
+
modalControls,
|
|
19
|
+
modalProps, //kept for backwards compatibility
|
|
17
20
|
children,
|
|
18
|
-
}:
|
|
21
|
+
}: TCustomModalControls & ModalProps) => {
|
|
19
22
|
return (
|
|
20
23
|
<Modal
|
|
21
24
|
transparent={true}
|
|
22
|
-
visible={
|
|
23
|
-
onRequestClose={() => onRequestClose()}
|
|
25
|
+
visible={visible}
|
|
26
|
+
onRequestClose={() => onRequestClose?.()}
|
|
24
27
|
animationType="fade"
|
|
25
|
-
{...modalProps}
|
|
28
|
+
{...modalControls?.modalProps}
|
|
29
|
+
{...modalProps} //kept for backwards compatibility
|
|
26
30
|
>
|
|
27
31
|
<TouchableOpacity
|
|
28
|
-
onPress={() => onRequestClose()}
|
|
32
|
+
onPress={() => onRequestClose?.()}
|
|
29
33
|
style={[
|
|
30
34
|
styles.modalContainer,
|
|
31
35
|
styles.modalBackgroundStyle,
|
|
32
|
-
modalBackgroundStyle,
|
|
36
|
+
modalControls?.modalBackgroundStyle || modalBackgroundStyle,
|
|
33
37
|
]}
|
|
34
38
|
>
|
|
35
39
|
{/* Added this `TouchableWithoutFeedback` wrapper because of the closing modal on expo web */}
|
|
36
40
|
<TouchableWithoutFeedback onPress={() => {}}>
|
|
37
41
|
<SafeAreaView
|
|
38
|
-
style={[
|
|
42
|
+
style={[
|
|
43
|
+
styles.modalOptionsContainer,
|
|
44
|
+
modalControls?.modalOptionsContainerStyle ||
|
|
45
|
+
modalOptionsContainerStyle,
|
|
46
|
+
]}
|
|
39
47
|
>
|
|
40
48
|
{children}
|
|
41
49
|
</SafeAreaView>
|
|
@@ -64,7 +64,7 @@ const DropdownSectionList = ({
|
|
|
64
64
|
const sectionlistRef = useRef<SectionList<TSectionList>>(null);
|
|
65
65
|
|
|
66
66
|
const scrollToLocation = (listIndex: any) => {
|
|
67
|
-
sectionlistRef
|
|
67
|
+
sectionlistRef?.current?.scrollToLocation({
|
|
68
68
|
sectionIndex: listIndex.sectionIndex,
|
|
69
69
|
animated: true,
|
|
70
70
|
itemIndex: listIndex.itemIndex,
|
|
@@ -23,7 +23,11 @@ export const ListEmptyComponent = ({
|
|
|
23
23
|
);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
export const ItemSeparatorComponent = ({
|
|
26
|
+
export const ItemSeparatorComponent = ({
|
|
27
|
+
itemSeparatorStyle,
|
|
28
|
+
}: {
|
|
29
|
+
itemSeparatorStyle: ViewStyle;
|
|
30
|
+
}) => {
|
|
27
31
|
return <View style={[styles.itemSeparatorStyle, itemSeparatorStyle]} />;
|
|
28
32
|
};
|
|
29
33
|
|
package/src/index.tsx
CHANGED
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
TSectionList,
|
|
16
16
|
TSectionListItem,
|
|
17
17
|
} from './types/index.types';
|
|
18
|
-
import { extractPropertyFromArray } from './utils';
|
|
18
|
+
import { escapeRegExp, extractPropertyFromArray } from './utils';
|
|
19
19
|
|
|
20
20
|
export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
21
21
|
placeholder,
|
|
@@ -40,8 +40,8 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
40
40
|
dropdownHelperTextStyle,
|
|
41
41
|
selectedItemStyle,
|
|
42
42
|
multipleSelectedItemStyle,
|
|
43
|
-
modalBackgroundStyle,
|
|
44
|
-
modalOptionsContainerStyle,
|
|
43
|
+
modalBackgroundStyle, // kept for backwards compatibility
|
|
44
|
+
modalOptionsContainerStyle, // kept for backwards compatibility
|
|
45
45
|
searchInputStyle, // kept for backwards compatibility
|
|
46
46
|
primaryColor,
|
|
47
47
|
disabled,
|
|
@@ -53,10 +53,12 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
53
53
|
listHeaderComponent,
|
|
54
54
|
listFooterComponent,
|
|
55
55
|
listComponentStyles,
|
|
56
|
-
modalProps,
|
|
56
|
+
modalProps, // kept for backwards compatibility
|
|
57
57
|
hideModal = false,
|
|
58
58
|
listControls,
|
|
59
59
|
searchControls,
|
|
60
|
+
modalControls,
|
|
61
|
+
checkboxControls,
|
|
60
62
|
...rest
|
|
61
63
|
}) => {
|
|
62
64
|
const [newOptions, setNewOptions] = useState<TFlatList | TSectionList>([]);
|
|
@@ -226,7 +228,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
226
228
|
const onSearch = (value: string) => {
|
|
227
229
|
setSearchValue(value);
|
|
228
230
|
|
|
229
|
-
let searchText = value.toString().toLocaleLowerCase().trim();
|
|
231
|
+
let searchText = escapeRegExp(value).toString().toLocaleLowerCase().trim();
|
|
230
232
|
|
|
231
233
|
const regexFilter = new RegExp(searchText, 'i');
|
|
232
234
|
|
|
@@ -276,8 +278,9 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
276
278
|
* Modal
|
|
277
279
|
*==========================================*/
|
|
278
280
|
const handleToggleModal = () => {
|
|
279
|
-
if (disabled){
|
|
280
|
-
|
|
281
|
+
if (disabled) {
|
|
282
|
+
// protecting any toggleModal invocation when Dropdown is disabled by not activating state
|
|
283
|
+
return;
|
|
281
284
|
}
|
|
282
285
|
setOpen(!open);
|
|
283
286
|
setSearchValue('');
|
|
@@ -346,11 +349,12 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
346
349
|
{...rest}
|
|
347
350
|
/>
|
|
348
351
|
<CustomModal
|
|
349
|
-
|
|
350
|
-
modalBackgroundStyle={modalBackgroundStyle}
|
|
351
|
-
modalOptionsContainerStyle={modalOptionsContainerStyle}
|
|
352
|
+
visible={open}
|
|
353
|
+
modalBackgroundStyle={modalBackgroundStyle} // kept for backwards compatibility
|
|
354
|
+
modalOptionsContainerStyle={modalOptionsContainerStyle} // kept for backwards compatibility
|
|
352
355
|
onRequestClose={() => handleToggleModal()}
|
|
353
|
-
|
|
356
|
+
modalControls={modalControls}
|
|
357
|
+
modalProps={modalProps} // kept for backwards compatibility
|
|
354
358
|
>
|
|
355
359
|
<ListTypeComponent
|
|
356
360
|
ListHeaderComponent={
|
|
@@ -413,6 +417,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
413
417
|
checkboxLabelStyle={checkboxLabelStyle}
|
|
414
418
|
checkboxComponentStyles={checkboxComponentStyles}
|
|
415
419
|
checkboxComponent={checkboxComponent}
|
|
420
|
+
checkboxControls={checkboxControls}
|
|
416
421
|
listIndex={listIndex}
|
|
417
422
|
emptyListMessage={listControls?.emptyListMessage}
|
|
418
423
|
/>
|