react-native-input-select 1.1.5 → 1.1.6
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 -3
- package/lib/commonjs/index.js +26 -16
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/index.types.js.map +1 -1
- package/lib/commonjs/utils/index.js +2 -12
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/index.js +27 -17
- 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 -10
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/types/index.types.d.ts +5 -1
- package/lib/typescript/utils/index.d.ts +0 -2
- package/package.json +1 -1
- package/src/index.tsx +33 -37
- package/src/types/index.types.ts +5 -0
- package/src/utils/index.ts +1 -17
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[](https://nodei.co/npm/react-native-input-select/)
|
|
2
2
|
|
|
3
|
-
[](https://github.com/azeezat/react-native-select/actions/workflows/codeql.yml) [](https://github.com/azeezat/react-native-select/actions/workflows/release-and-publish-to-npm.yml)
|
|
3
|
+
[](https://badge.fury.io/js/react-native-input-select) [](https://github.com/azeezat/react-native-select/stargazers) [](https://github.com/azeezat/react-native-select/actions/workflows/codeql.yml) [](https://github.com/azeezat/react-native-select/actions/workflows/release-and-publish-to-npm.yml)
|
|
4
4
|
|
|
5
5
|
# react-native-input-select
|
|
6
6
|
|
|
@@ -237,6 +237,7 @@ For more examples visit our [wiki page](https://github.com/azeezat/react-native-
|
|
|
237
237
|
| <img width="456" alt="Screenshot 2023-05-16 at 6 17 09 AM" src="https://github.com/azeezat/react-native-select/assets/9849221/d695657f-d840-4368-b841-42af479d6543"> | <img width="456" alt="Screenshot 2023-03-23 at 5 26 58 PM" src="https://user-images.githubusercontent.com/9849221/227393548-28796d7b-9760-43a9-8ed3-fb1618cd1b7d.png"> | <img width="456" alt="Screenshot 2023-03-23 at 5 28 49 PM" src="https://user-images.githubusercontent.com/9849221/227393554-91ed1a92-d229-4814-84d8-5f9095e8d048.png"> |
|
|
238
238
|
|
|
239
239
|
## Props
|
|
240
|
+
|
|
240
241
|
| Proptypes | Datatype | Example |
|
|
241
242
|
| -------------------------- | ------------------------ | -------------------------------------------------------------------- |
|
|
242
243
|
| label | `string` | Countries |
|
|
@@ -257,7 +258,6 @@ For more examples visit our [wiki page](https://github.com/azeezat/react-native-
|
|
|
257
258
|
| dropdownStyle | `Object` | `{borderColor: 'blue', margin: 5, borderWidth:0 ...}` |
|
|
258
259
|
| dropdownContainerStyle | `Object` | `{backgroundColor: 'red', width: '30%', ...}` |
|
|
259
260
|
| dropdownIconStyle | `Object` | `{top: 10 , right: 10, ...}` |
|
|
260
|
-
| searchInputStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
|
|
261
261
|
| selectedItemStyle | `Object` | `{fontWeight: '600', color: 'yellow', ...}` |
|
|
262
262
|
| multipleSelectedItemStyle | `Object` | `{backgroundColor: 'red', color: 'yellow', ...}` |
|
|
263
263
|
| modalBackgroundStyle | `Object` | `{backgroundColor: 'rgba(196, 198, 246, 0.5)'}` |
|
|
@@ -274,6 +274,7 @@ For more examples visit our [wiki page](https://github.com/azeezat/react-native-
|
|
|
274
274
|
| checkboxComponentStyles | `Object` | `{checkboxSize?: number, checkboxStyle?: ViewStyle, checkboxLabelStyle: TextStyle}` |
|
|
275
275
|
| checkboxComponent | `React Component` | `<View style={styles.radioButton} />` |
|
|
276
276
|
| listControls | `Object` | `{ selectAllText: 'Choose all', unselectAllText: 'Remove all', selectAllCallback?: () => {}, unselectAllCallback?: () => {}}` |
|
|
277
|
+
| searchControls | `Object` | `{ searchInputStyle?: ViewStyle | TextStyle, textInputProps: TextInputProps}` |
|
|
277
278
|
|
|
278
279
|
## Deprecation Notice
|
|
279
280
|
|
|
@@ -282,7 +283,7 @@ The following props would be removed in coming releases.
|
|
|
282
283
|
- Individual props `checkboxSize`, `checkboxStyle`, `checkboxLabelStyle` would be replaced with a single object `checkboxComponentStyles` e.g
|
|
283
284
|
|
|
284
285
|
```js
|
|
285
|
-
|
|
286
|
+
checkboxComponentStyles = {
|
|
286
287
|
checkboxSize: 20,
|
|
287
288
|
checkboxStyle: {
|
|
288
289
|
backgroundColor: 'purple',
|
|
@@ -294,6 +295,22 @@ const checkboxComponentStyles = {
|
|
|
294
295
|
};
|
|
295
296
|
```
|
|
296
297
|
|
|
298
|
+
- `searchInputStyle` would now be inside `searchControls`
|
|
299
|
+
|
|
300
|
+
```js
|
|
301
|
+
searchControls={{
|
|
302
|
+
searchInputStyle: {
|
|
303
|
+
backgroundColor: 'yellow',
|
|
304
|
+
color: 'blue',
|
|
305
|
+
fontWeight: '900',
|
|
306
|
+
},
|
|
307
|
+
textInputProps: {
|
|
308
|
+
placeholder: 'Search anything here',
|
|
309
|
+
placeholderTextColor: 'gray',
|
|
310
|
+
},
|
|
311
|
+
}}
|
|
312
|
+
```
|
|
313
|
+
|
|
297
314
|
## Contributing
|
|
298
315
|
|
|
299
316
|
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
|
package/lib/commonjs/index.js
CHANGED
|
@@ -46,6 +46,7 @@ const DropdownSelect = _ref => {
|
|
|
46
46
|
modalBackgroundStyle,
|
|
47
47
|
modalOptionsContainerStyle,
|
|
48
48
|
searchInputStyle,
|
|
49
|
+
// kept for backwards compatibility
|
|
49
50
|
primaryColor,
|
|
50
51
|
disabled,
|
|
51
52
|
checkboxSize,
|
|
@@ -62,6 +63,7 @@ const DropdownSelect = _ref => {
|
|
|
62
63
|
modalProps,
|
|
63
64
|
hideModal = false,
|
|
64
65
|
listControls,
|
|
66
|
+
searchControls,
|
|
65
67
|
...rest
|
|
66
68
|
} = _ref;
|
|
67
69
|
const [newOptions, setNewOptions] = (0, _react.useState)([]);
|
|
@@ -89,13 +91,19 @@ const DropdownSelect = _ref => {
|
|
|
89
91
|
* List type
|
|
90
92
|
*==========================================*/
|
|
91
93
|
|
|
94
|
+
// check the structure of the new options array to determine if it is a section list or a
|
|
92
95
|
const isSectionList = newOptions.some(item => item.title && item.data && Array.isArray(item.data));
|
|
93
96
|
const ListTypeComponent = isSectionList ? _DropdownSectionList.default : _DropdownFlatList.default;
|
|
94
97
|
const modifiedSectionData = (0, _utils.extractPropertyFromArray)(newOptions, 'data').flat();
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
*`modifiedOptions` should only be used for computations newOptions remains the default array.
|
|
101
|
+
* At this point modifiedOptions now has the same structure for both `FlatList` and `SectionList`
|
|
102
|
+
*/
|
|
95
103
|
const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;
|
|
96
104
|
const optLabel = optionLabel || _constants.DEFAULT_OPTION_LABEL;
|
|
97
105
|
const optValue = optionValue || _constants.DEFAULT_OPTION_VALUE;
|
|
98
|
-
const optionsCopy = JSON.parse(JSON.stringify(options)); //copy of the original options array
|
|
106
|
+
const optionsCopy = JSON.parse(JSON.stringify(options)); // copy of the original options array
|
|
99
107
|
|
|
100
108
|
/*===========================================
|
|
101
109
|
* Selection handlers
|
|
@@ -103,11 +111,11 @@ const DropdownSelect = _ref => {
|
|
|
103
111
|
const handleSingleSelection = value => {
|
|
104
112
|
if (selectedItem === value) {
|
|
105
113
|
setSelectedItem(null);
|
|
106
|
-
onValueChange(null); //send value to parent
|
|
114
|
+
onValueChange(null); // send value to parent
|
|
107
115
|
} else {
|
|
108
116
|
setSelectedItem(value);
|
|
109
|
-
onValueChange(value); //send value to parent
|
|
110
|
-
setOpen(false); //close modal upon selection
|
|
117
|
+
onValueChange(value); // send value to parent
|
|
118
|
+
setOpen(false); // close modal upon selection
|
|
111
119
|
}
|
|
112
120
|
};
|
|
113
121
|
|
|
@@ -120,23 +128,26 @@ const DropdownSelect = _ref => {
|
|
|
120
128
|
} else {
|
|
121
129
|
selectedValues.push(value);
|
|
122
130
|
}
|
|
123
|
-
onValueChange(selectedValues); //send value to parent
|
|
131
|
+
onValueChange(selectedValues); // send value to parent
|
|
124
132
|
return selectedValues;
|
|
125
133
|
});
|
|
126
134
|
};
|
|
135
|
+
const removeDisabledItems = items => {
|
|
136
|
+
return items.filter(item => !item.disabled);
|
|
137
|
+
};
|
|
127
138
|
const handleSelectAll = () => {
|
|
128
139
|
setSelectAll(prevVal => {
|
|
129
140
|
const selectedValues = [];
|
|
130
141
|
|
|
131
|
-
//don't select disabled items
|
|
132
|
-
const filteredOptions =
|
|
142
|
+
// don't select disabled items
|
|
143
|
+
const filteredOptions = removeDisabledItems(isSectionList ? (0, _utils.extractPropertyFromArray)(optionsCopy, 'data').flat() : optionsCopy);
|
|
133
144
|
if (!prevVal) {
|
|
134
145
|
for (let i = 0; i < filteredOptions.length; i++) {
|
|
135
146
|
selectedValues.push(filteredOptions[i][optValue]);
|
|
136
147
|
}
|
|
137
148
|
}
|
|
138
149
|
setSelectedItems(selectedValues);
|
|
139
|
-
onValueChange(selectedValues); //send value to parent
|
|
150
|
+
onValueChange(selectedValues); // send value to parent
|
|
140
151
|
return !prevVal;
|
|
141
152
|
});
|
|
142
153
|
if (typeof (listControls === null || listControls === void 0 ? void 0 : listControls.selectAllCallback) === 'function' && !selectAll) {
|
|
@@ -152,7 +163,7 @@ const DropdownSelect = _ref => {
|
|
|
152
163
|
*==========================================*/
|
|
153
164
|
const checkSelectAll = (0, _react.useCallback)(selectedValues => {
|
|
154
165
|
//if the list contains disabled values, those values will not be selected
|
|
155
|
-
if (modifiedOptions
|
|
166
|
+
if (removeDisabledItems(modifiedOptions).length === selectedValues.length) {
|
|
156
167
|
setSelectAll(true);
|
|
157
168
|
} else {
|
|
158
169
|
setSelectAll(false);
|
|
@@ -192,14 +203,14 @@ const DropdownSelect = _ref => {
|
|
|
192
203
|
let searchText = value.toString().toLocaleLowerCase().trim();
|
|
193
204
|
const regexFilter = new RegExp(searchText, 'i');
|
|
194
205
|
|
|
195
|
-
//Because
|
|
206
|
+
// Because the options array will be mutated after Search, we have to search with a copy of the original array
|
|
196
207
|
const searchResults = isSectionList ? searchSectionList(optionsCopy, regexFilter) : searchFlatList(optionsCopy, regexFilter);
|
|
197
208
|
setNewOptions(searchResults);
|
|
198
209
|
};
|
|
199
210
|
const searchFlatList = (flatList, regexFilter) => {
|
|
200
211
|
const searchResults = flatList.filter(item => {
|
|
201
212
|
if (item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 || item[optValue].toString().toLowerCase().search(regexFilter) !== -1) {
|
|
202
|
-
return
|
|
213
|
+
return true;
|
|
203
214
|
}
|
|
204
215
|
return;
|
|
205
216
|
});
|
|
@@ -237,8 +248,6 @@ const DropdownSelect = _ref => {
|
|
|
237
248
|
return () => {};
|
|
238
249
|
}, [hideModal]);
|
|
239
250
|
let primary = primaryColor || _colors.colors.gray;
|
|
240
|
-
const sectionListMaxLength = (0, _utils.getMaxLengthOfSectionListProperty)(newOptions, 'data');
|
|
241
|
-
const listIsEmpty = isSectionList ? sectionListMaxLength > 1 : newOptions.length > 1;
|
|
242
251
|
|
|
243
252
|
/*===========================================
|
|
244
253
|
* setIndexOfSelectedItem - For ScrollToIndex
|
|
@@ -294,12 +303,13 @@ const DropdownSelect = _ref => {
|
|
|
294
303
|
onRequestClose: () => {},
|
|
295
304
|
modalProps: modalProps
|
|
296
305
|
}, /*#__PURE__*/_react.default.createElement(ListTypeComponent, {
|
|
297
|
-
|
|
306
|
+
keyboardShouldPersistTaps: "always",
|
|
307
|
+
ListHeaderComponent: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isSearchable && /*#__PURE__*/_react.default.createElement(_Input.default, _extends({
|
|
298
308
|
value: searchValue,
|
|
299
309
|
onChangeText: text => onSearch(text),
|
|
300
|
-
style: searchInputStyle,
|
|
310
|
+
style: (searchControls === null || searchControls === void 0 ? void 0 : searchControls.searchInputStyle) || searchInputStyle,
|
|
301
311
|
primaryColor: primary
|
|
302
|
-
}), listHeaderComponent, isMultiple &&
|
|
312
|
+
}, searchControls === null || searchControls === void 0 ? void 0 : searchControls.textInputProps)), listHeaderComponent, isMultiple && modifiedOptions.length > 1 && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
303
313
|
style: styles.optionsContainerStyle
|
|
304
314
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
305
315
|
onPress: () => {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_Input","_interopRequireDefault","_CheckBox","_Dropdown","_DropdownFlatList","_DropdownSectionList","_CustomModal","_colors","_constants","_utils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","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","rest","newOptions","setNewOptions","useState","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","listIndex","setListIndex","itemIndex","useEffect","Array","isArray","isSectionList","some","item","title","data","ListTypeComponent","DropdownSectionList","DropdownFlatList","modifiedSectionData","extractPropertyFromArray","flat","modifiedOptions","optLabel","DEFAULT_OPTION_LABEL","optValue","DEFAULT_OPTION_VALUE","optionsCopy","JSON","parse","stringify","handleSingleSelection","value","handleMultipleSelections","prevVal","_selectedValues","selectedValues","includes","filter","push","handleSelectAll","filteredOptions","selectAllCallback","unselectAllCallback","checkSelectAll","useCallback","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","colors","gray","sectionListMaxLength","getMaxLengthOfSectionListProperty","listIsEmpty","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","onRequestClose","ListHeaderComponent","onChangeText","text","style","View","styles","optionsContainerStyle","TouchableOpacity","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","exports","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection","_default"],"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 {\n extractPropertyFromArray,\n getMaxLengthOfSectionListProperty,\n} 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,\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 ...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 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 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 handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n\n //don't select disabled items\n const filteredOptions = modifiedOptions.filter(\n (item: TFlatListItem) => !item.disabled\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 (\n typeof listControls?.selectAllCallback === 'function' &&\n !selectAll\n ) {\n listControls.selectAllCallback();\n }\n\n if (\n typeof listControls?.unselectAllCallback === 'function' &&\n selectAll\n ) {\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 modifiedOptions.filter((item: TFlatListItem) => !item.disabled)\n .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 Search mutates the initial state, 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 item;\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 const sectionListMaxLength = getMaxLengthOfSectionListProperty(\n newOptions as TSectionList,\n 'data'\n );\n\n const listIsEmpty = isSectionList\n ? sectionListMaxLength > 1\n : newOptions.length > 1;\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 ListHeaderComponent={\n <>\n {isSearchable && (\n <Input\n value={searchValue}\n onChangeText={(text: string) => onSearch(text)}\n style={searchInputStyle}\n primaryColor={primary}\n />\n )}\n {listHeaderComponent}\n {isMultiple && listIsEmpty && (\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","_interopRequireWildcard","require","_reactNative","_Input","_interopRequireDefault","_CheckBox","_Dropdown","_DropdownFlatList","_DropdownSectionList","_CustomModal","_colors","_constants","_utils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","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","useState","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","listIndex","setListIndex","itemIndex","useEffect","Array","isArray","isSectionList","some","item","title","data","ListTypeComponent","DropdownSectionList","DropdownFlatList","modifiedSectionData","extractPropertyFromArray","flat","modifiedOptions","optLabel","DEFAULT_OPTION_LABEL","optValue","DEFAULT_OPTION_VALUE","optionsCopy","JSON","parse","stringify","handleSingleSelection","value","handleMultipleSelections","prevVal","_selectedValues","selectedValues","includes","filter","push","removeDisabledItems","items","handleSelectAll","filteredOptions","selectAllCallback","unselectAllCallback","checkSelectAll","useCallback","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","colors","gray","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","onRequestClose","keyboardShouldPersistTaps","ListHeaderComponent","onChangeText","text","style","textInputProps","View","styles","optionsContainerStyle","TouchableOpacity","onPress","unselectAllText","selectAllText","onChange","ListFooterComponent","exports","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection","_default"],"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 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.types.ts"],"sourcesContent":["import type {\n ViewStyle,\n ColorValue,\n TextStyle,\n ModalProps,\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};\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":""}
|
|
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 searchInputStyle?: ViewStyle | TextStyle;\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,24 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.extractPropertyFromArray = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Extract property from array
|
|
9
9
|
*/
|
|
10
|
+
|
|
10
11
|
const extractPropertyFromArray = (arr, property) => {
|
|
11
12
|
let extractedValue = arr.map(item => item[property]);
|
|
12
13
|
return extractedValue;
|
|
13
14
|
};
|
|
14
15
|
exports.extractPropertyFromArray = extractPropertyFromArray;
|
|
15
|
-
const getMaxLengthOfSectionListProperty = (sectionList, property) => {
|
|
16
|
-
let maxLength = 0;
|
|
17
|
-
sectionList.forEach(obj => {
|
|
18
|
-
var _obj$property;
|
|
19
|
-
if (((_obj$property = obj[property]) === null || _obj$property === void 0 ? void 0 : _obj$property.length) > maxLength) {
|
|
20
|
-
maxLength = obj.data.length;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return maxLength;
|
|
24
|
-
};
|
|
25
|
-
exports.getMaxLengthOfSectionListProperty = getMaxLengthOfSectionListProperty;
|
|
26
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item","exports"
|
|
1
|
+
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item","exports"],"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;;AAEO,MAAMA,wBAAwB,GAAGA,CAACC,GAAQ,EAAEC,QAAgB,KAAK;EACtE,IAAIC,cAAc,GAAGF,GAAG,CAACG,GAAG,CAAEC,IAAS,IAAKA,IAAI,CAACH,QAAQ,CAAC,CAAC;EAE3D,OAAOC,cAAc;AACvB,CAAC;AAACG,OAAA,CAAAN,wBAAA,GAAAA,wBAAA"}
|
package/lib/module/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import DropdownSectionList from './components/Dropdown/DropdownSectionList';
|
|
|
9
9
|
import CustomModal from './components/CustomModal';
|
|
10
10
|
import { colors } from './styles/colors';
|
|
11
11
|
import { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';
|
|
12
|
-
import { extractPropertyFromArray
|
|
12
|
+
import { extractPropertyFromArray } from './utils';
|
|
13
13
|
export const DropdownSelect = _ref => {
|
|
14
14
|
let {
|
|
15
15
|
placeholder,
|
|
@@ -37,6 +37,7 @@ export const DropdownSelect = _ref => {
|
|
|
37
37
|
modalBackgroundStyle,
|
|
38
38
|
modalOptionsContainerStyle,
|
|
39
39
|
searchInputStyle,
|
|
40
|
+
// kept for backwards compatibility
|
|
40
41
|
primaryColor,
|
|
41
42
|
disabled,
|
|
42
43
|
checkboxSize,
|
|
@@ -53,6 +54,7 @@ export const DropdownSelect = _ref => {
|
|
|
53
54
|
modalProps,
|
|
54
55
|
hideModal = false,
|
|
55
56
|
listControls,
|
|
57
|
+
searchControls,
|
|
56
58
|
...rest
|
|
57
59
|
} = _ref;
|
|
58
60
|
const [newOptions, setNewOptions] = useState([]);
|
|
@@ -80,13 +82,19 @@ export const DropdownSelect = _ref => {
|
|
|
80
82
|
* List type
|
|
81
83
|
*==========================================*/
|
|
82
84
|
|
|
85
|
+
// check the structure of the new options array to determine if it is a section list or a
|
|
83
86
|
const isSectionList = newOptions.some(item => item.title && item.data && Array.isArray(item.data));
|
|
84
87
|
const ListTypeComponent = isSectionList ? DropdownSectionList : DropdownFlatList;
|
|
85
88
|
const modifiedSectionData = extractPropertyFromArray(newOptions, 'data').flat();
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
*`modifiedOptions` should only be used for computations newOptions remains the default array.
|
|
92
|
+
* At this point modifiedOptions now has the same structure for both `FlatList` and `SectionList`
|
|
93
|
+
*/
|
|
86
94
|
const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;
|
|
87
95
|
const optLabel = optionLabel || DEFAULT_OPTION_LABEL;
|
|
88
96
|
const optValue = optionValue || DEFAULT_OPTION_VALUE;
|
|
89
|
-
const optionsCopy = JSON.parse(JSON.stringify(options)); //copy of the original options array
|
|
97
|
+
const optionsCopy = JSON.parse(JSON.stringify(options)); // copy of the original options array
|
|
90
98
|
|
|
91
99
|
/*===========================================
|
|
92
100
|
* Selection handlers
|
|
@@ -94,11 +102,11 @@ export const DropdownSelect = _ref => {
|
|
|
94
102
|
const handleSingleSelection = value => {
|
|
95
103
|
if (selectedItem === value) {
|
|
96
104
|
setSelectedItem(null);
|
|
97
|
-
onValueChange(null); //send value to parent
|
|
105
|
+
onValueChange(null); // send value to parent
|
|
98
106
|
} else {
|
|
99
107
|
setSelectedItem(value);
|
|
100
|
-
onValueChange(value); //send value to parent
|
|
101
|
-
setOpen(false); //close modal upon selection
|
|
108
|
+
onValueChange(value); // send value to parent
|
|
109
|
+
setOpen(false); // close modal upon selection
|
|
102
110
|
}
|
|
103
111
|
};
|
|
104
112
|
|
|
@@ -111,23 +119,26 @@ export const DropdownSelect = _ref => {
|
|
|
111
119
|
} else {
|
|
112
120
|
selectedValues.push(value);
|
|
113
121
|
}
|
|
114
|
-
onValueChange(selectedValues); //send value to parent
|
|
122
|
+
onValueChange(selectedValues); // send value to parent
|
|
115
123
|
return selectedValues;
|
|
116
124
|
});
|
|
117
125
|
};
|
|
126
|
+
const removeDisabledItems = items => {
|
|
127
|
+
return items.filter(item => !item.disabled);
|
|
128
|
+
};
|
|
118
129
|
const handleSelectAll = () => {
|
|
119
130
|
setSelectAll(prevVal => {
|
|
120
131
|
const selectedValues = [];
|
|
121
132
|
|
|
122
|
-
//don't select disabled items
|
|
123
|
-
const filteredOptions =
|
|
133
|
+
// don't select disabled items
|
|
134
|
+
const filteredOptions = removeDisabledItems(isSectionList ? extractPropertyFromArray(optionsCopy, 'data').flat() : optionsCopy);
|
|
124
135
|
if (!prevVal) {
|
|
125
136
|
for (let i = 0; i < filteredOptions.length; i++) {
|
|
126
137
|
selectedValues.push(filteredOptions[i][optValue]);
|
|
127
138
|
}
|
|
128
139
|
}
|
|
129
140
|
setSelectedItems(selectedValues);
|
|
130
|
-
onValueChange(selectedValues); //send value to parent
|
|
141
|
+
onValueChange(selectedValues); // send value to parent
|
|
131
142
|
return !prevVal;
|
|
132
143
|
});
|
|
133
144
|
if (typeof (listControls === null || listControls === void 0 ? void 0 : listControls.selectAllCallback) === 'function' && !selectAll) {
|
|
@@ -143,7 +154,7 @@ export const DropdownSelect = _ref => {
|
|
|
143
154
|
*==========================================*/
|
|
144
155
|
const checkSelectAll = useCallback(selectedValues => {
|
|
145
156
|
//if the list contains disabled values, those values will not be selected
|
|
146
|
-
if (modifiedOptions
|
|
157
|
+
if (removeDisabledItems(modifiedOptions).length === selectedValues.length) {
|
|
147
158
|
setSelectAll(true);
|
|
148
159
|
} else {
|
|
149
160
|
setSelectAll(false);
|
|
@@ -183,14 +194,14 @@ export const DropdownSelect = _ref => {
|
|
|
183
194
|
let searchText = value.toString().toLocaleLowerCase().trim();
|
|
184
195
|
const regexFilter = new RegExp(searchText, 'i');
|
|
185
196
|
|
|
186
|
-
//Because
|
|
197
|
+
// Because the options array will be mutated after Search, we have to search with a copy of the original array
|
|
187
198
|
const searchResults = isSectionList ? searchSectionList(optionsCopy, regexFilter) : searchFlatList(optionsCopy, regexFilter);
|
|
188
199
|
setNewOptions(searchResults);
|
|
189
200
|
};
|
|
190
201
|
const searchFlatList = (flatList, regexFilter) => {
|
|
191
202
|
const searchResults = flatList.filter(item => {
|
|
192
203
|
if (item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 || item[optValue].toString().toLowerCase().search(regexFilter) !== -1) {
|
|
193
|
-
return
|
|
204
|
+
return true;
|
|
194
205
|
}
|
|
195
206
|
return;
|
|
196
207
|
});
|
|
@@ -228,8 +239,6 @@ export const DropdownSelect = _ref => {
|
|
|
228
239
|
return () => {};
|
|
229
240
|
}, [hideModal]);
|
|
230
241
|
let primary = primaryColor || colors.gray;
|
|
231
|
-
const sectionListMaxLength = getMaxLengthOfSectionListProperty(newOptions, 'data');
|
|
232
|
-
const listIsEmpty = isSectionList ? sectionListMaxLength > 1 : newOptions.length > 1;
|
|
233
242
|
|
|
234
243
|
/*===========================================
|
|
235
244
|
* setIndexOfSelectedItem - For ScrollToIndex
|
|
@@ -285,12 +294,13 @@ export const DropdownSelect = _ref => {
|
|
|
285
294
|
onRequestClose: () => {},
|
|
286
295
|
modalProps: modalProps
|
|
287
296
|
}, /*#__PURE__*/React.createElement(ListTypeComponent, {
|
|
288
|
-
|
|
297
|
+
keyboardShouldPersistTaps: "always",
|
|
298
|
+
ListHeaderComponent: /*#__PURE__*/React.createElement(React.Fragment, null, isSearchable && /*#__PURE__*/React.createElement(Input, _extends({
|
|
289
299
|
value: searchValue,
|
|
290
300
|
onChangeText: text => onSearch(text),
|
|
291
|
-
style: searchInputStyle,
|
|
301
|
+
style: (searchControls === null || searchControls === void 0 ? void 0 : searchControls.searchInputStyle) || searchInputStyle,
|
|
292
302
|
primaryColor: primary
|
|
293
|
-
}), listHeaderComponent, isMultiple &&
|
|
303
|
+
}, searchControls === null || searchControls === void 0 ? void 0 : searchControls.textInputProps)), listHeaderComponent, isMultiple && modifiedOptions.length > 1 && /*#__PURE__*/React.createElement(View, {
|
|
294
304
|
style: styles.optionsContainerStyle
|
|
295
305
|
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
296
306
|
onPress: () => {}
|
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","getMaxLengthOfSectionListProperty","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","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","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","sectionListMaxLength","listIsEmpty","setIndexOfSelectedItem","selectedLabel","_item$data","dataItem","createElement","Fragment","_extends","onRequestClose","ListHeaderComponent","onChangeText","text","style","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 {\n extractPropertyFromArray,\n getMaxLengthOfSectionListProperty,\n} 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,\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 ...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 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 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 handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n\n //don't select disabled items\n const filteredOptions = modifiedOptions.filter(\n (item: TFlatListItem) => !item.disabled\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 (\n typeof listControls?.selectAllCallback === 'function' &&\n !selectAll\n ) {\n listControls.selectAllCallback();\n }\n\n if (\n typeof listControls?.unselectAllCallback === 'function' &&\n selectAll\n ) {\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 modifiedOptions.filter((item: TFlatListItem) => !item.disabled)\n .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 Search mutates the initial state, 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 item;\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 const sectionListMaxLength = getMaxLengthOfSectionListProperty(\n newOptions as TSectionList,\n 'data'\n );\n\n const listIsEmpty = isSectionList\n ? sectionListMaxLength > 1\n : newOptions.length > 1;\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 ListHeaderComponent={\n <>\n {isSearchable && (\n <Input\n value={searchValue}\n onChangeText={(text: string) => onSearch(text)}\n style={searchInputStyle}\n primaryColor={primary}\n />\n )}\n {listHeaderComponent}\n {isMultiple && listIsEmpty && (\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","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 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.types.ts"],"sourcesContent":["import type {\n ViewStyle,\n ColorValue,\n TextStyle,\n ModalProps,\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};\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":""}
|
|
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 searchInputStyle?: ViewStyle | TextStyle;\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":""}
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract property from array
|
|
3
3
|
*/
|
|
4
|
+
|
|
4
5
|
export const extractPropertyFromArray = (arr, property) => {
|
|
5
6
|
let extractedValue = arr.map(item => item[property]);
|
|
6
7
|
return extractedValue;
|
|
7
8
|
};
|
|
8
|
-
export const getMaxLengthOfSectionListProperty = (sectionList, property) => {
|
|
9
|
-
let maxLength = 0;
|
|
10
|
-
sectionList.forEach(obj => {
|
|
11
|
-
var _obj$property;
|
|
12
|
-
if (((_obj$property = obj[property]) === null || _obj$property === void 0 ? void 0 : _obj$property.length) > maxLength) {
|
|
13
|
-
maxLength = obj.data.length;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
return maxLength;
|
|
17
|
-
};
|
|
18
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item"
|
|
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,CAACG,GAAG,CAAEC,IAAS,IAAKA,IAAI,CAACH,QAAQ,CAAC,CAAC;EAE3D,OAAOC,cAAc;AACvB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { ViewStyle, ColorValue, TextStyle, ModalProps } from 'react-native';
|
|
2
|
+
import type { ViewStyle, ColorValue, TextStyle, ModalProps, TextInputProps } from 'react-native';
|
|
3
3
|
export type DropdownProps = {
|
|
4
4
|
placeholder?: string;
|
|
5
5
|
label?: string;
|
|
@@ -52,6 +52,10 @@ export type DropdownProps = {
|
|
|
52
52
|
selectAllCallback?: () => void;
|
|
53
53
|
unselectAllCallback?: () => void;
|
|
54
54
|
};
|
|
55
|
+
searchControls?: {
|
|
56
|
+
searchInputStyle?: ViewStyle | TextStyle;
|
|
57
|
+
textInputProps?: TextInputProps;
|
|
58
|
+
};
|
|
55
59
|
};
|
|
56
60
|
export type TFlatList = TFlatListItem[];
|
|
57
61
|
export type TFlatListItem = {
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { TSectionList } from 'src/types/index.types';
|
|
2
1
|
/**
|
|
3
2
|
* Extract property from array
|
|
4
3
|
*/
|
|
5
4
|
export declare const extractPropertyFromArray: (arr: any, property: string) => any;
|
|
6
|
-
export declare const getMaxLengthOfSectionListProperty: (sectionList: TSectionList, property: 'title' | 'data') => number;
|
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.6",
|
|
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",
|
package/src/index.tsx
CHANGED
|
@@ -15,10 +15,7 @@ import type {
|
|
|
15
15
|
TSectionList,
|
|
16
16
|
TSectionListItem,
|
|
17
17
|
} from './types/index.types';
|
|
18
|
-
import {
|
|
19
|
-
extractPropertyFromArray,
|
|
20
|
-
getMaxLengthOfSectionListProperty,
|
|
21
|
-
} from './utils';
|
|
18
|
+
import { extractPropertyFromArray } from './utils';
|
|
22
19
|
|
|
23
20
|
export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
24
21
|
placeholder,
|
|
@@ -45,7 +42,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
45
42
|
multipleSelectedItemStyle,
|
|
46
43
|
modalBackgroundStyle,
|
|
47
44
|
modalOptionsContainerStyle,
|
|
48
|
-
searchInputStyle,
|
|
45
|
+
searchInputStyle, // kept for backwards compatibility
|
|
49
46
|
primaryColor,
|
|
50
47
|
disabled,
|
|
51
48
|
checkboxSize, // kept for backwards compatibility
|
|
@@ -59,6 +56,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
59
56
|
modalProps,
|
|
60
57
|
hideModal = false,
|
|
61
58
|
listControls,
|
|
59
|
+
searchControls,
|
|
62
60
|
...rest
|
|
63
61
|
}) => {
|
|
64
62
|
const [newOptions, setNewOptions] = useState<TFlatList | TSectionList>([]);
|
|
@@ -91,6 +89,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
91
89
|
* List type
|
|
92
90
|
*==========================================*/
|
|
93
91
|
|
|
92
|
+
// check the structure of the new options array to determine if it is a section list or a
|
|
94
93
|
const isSectionList = newOptions.some(
|
|
95
94
|
(item) => item.title && item.data && Array.isArray(item.data)
|
|
96
95
|
);
|
|
@@ -102,11 +101,16 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
102
101
|
newOptions,
|
|
103
102
|
'data'
|
|
104
103
|
).flat();
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
*`modifiedOptions` should only be used for computations newOptions remains the default array.
|
|
107
|
+
* At this point modifiedOptions now has the same structure for both `FlatList` and `SectionList`
|
|
108
|
+
*/
|
|
105
109
|
const modifiedOptions = isSectionList ? modifiedSectionData : newOptions;
|
|
106
110
|
|
|
107
111
|
const optLabel = optionLabel || DEFAULT_OPTION_LABEL;
|
|
108
112
|
const optValue = optionValue || DEFAULT_OPTION_VALUE;
|
|
109
|
-
const optionsCopy = JSON.parse(JSON.stringify(options)); //copy of the original options array
|
|
113
|
+
const optionsCopy = JSON.parse(JSON.stringify(options)); // copy of the original options array
|
|
110
114
|
|
|
111
115
|
/*===========================================
|
|
112
116
|
* Selection handlers
|
|
@@ -114,11 +118,11 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
114
118
|
const handleSingleSelection = (value: string | number) => {
|
|
115
119
|
if (selectedItem === value) {
|
|
116
120
|
setSelectedItem(null);
|
|
117
|
-
onValueChange(null); //send value to parent
|
|
121
|
+
onValueChange(null); // send value to parent
|
|
118
122
|
} else {
|
|
119
123
|
setSelectedItem(value);
|
|
120
|
-
onValueChange(value); //send value to parent
|
|
121
|
-
setOpen(false); //close modal upon selection
|
|
124
|
+
onValueChange(value); // send value to parent
|
|
125
|
+
setOpen(false); // close modal upon selection
|
|
122
126
|
}
|
|
123
127
|
};
|
|
124
128
|
|
|
@@ -131,18 +135,24 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
131
135
|
} else {
|
|
132
136
|
selectedValues.push(value);
|
|
133
137
|
}
|
|
134
|
-
onValueChange(selectedValues); //send value to parent
|
|
138
|
+
onValueChange(selectedValues); // send value to parent
|
|
135
139
|
return selectedValues;
|
|
136
140
|
});
|
|
137
141
|
};
|
|
138
142
|
|
|
143
|
+
const removeDisabledItems = (items: TFlatList) => {
|
|
144
|
+
return items.filter((item: TFlatListItem) => !item.disabled);
|
|
145
|
+
};
|
|
146
|
+
|
|
139
147
|
const handleSelectAll = () => {
|
|
140
148
|
setSelectAll((prevVal) => {
|
|
141
149
|
const selectedValues = [];
|
|
142
150
|
|
|
143
|
-
//don't select disabled items
|
|
144
|
-
const filteredOptions =
|
|
145
|
-
|
|
151
|
+
// don't select disabled items
|
|
152
|
+
const filteredOptions = removeDisabledItems(
|
|
153
|
+
isSectionList
|
|
154
|
+
? extractPropertyFromArray(optionsCopy, 'data').flat()
|
|
155
|
+
: optionsCopy
|
|
146
156
|
);
|
|
147
157
|
|
|
148
158
|
if (!prevVal) {
|
|
@@ -152,21 +162,15 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
152
162
|
}
|
|
153
163
|
|
|
154
164
|
setSelectedItems(selectedValues);
|
|
155
|
-
onValueChange(selectedValues); //send value to parent
|
|
165
|
+
onValueChange(selectedValues); // send value to parent
|
|
156
166
|
return !prevVal;
|
|
157
167
|
});
|
|
158
168
|
|
|
159
|
-
if (
|
|
160
|
-
typeof listControls?.selectAllCallback === 'function' &&
|
|
161
|
-
!selectAll
|
|
162
|
-
) {
|
|
169
|
+
if (typeof listControls?.selectAllCallback === 'function' && !selectAll) {
|
|
163
170
|
listControls.selectAllCallback();
|
|
164
171
|
}
|
|
165
172
|
|
|
166
|
-
if (
|
|
167
|
-
typeof listControls?.unselectAllCallback === 'function' &&
|
|
168
|
-
selectAll
|
|
169
|
-
) {
|
|
173
|
+
if (typeof listControls?.unselectAllCallback === 'function' && selectAll) {
|
|
170
174
|
listControls.unselectAllCallback();
|
|
171
175
|
}
|
|
172
176
|
};
|
|
@@ -178,8 +182,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
178
182
|
(selectedValues: any[]) => {
|
|
179
183
|
//if the list contains disabled values, those values will not be selected
|
|
180
184
|
if (
|
|
181
|
-
modifiedOptions.
|
|
182
|
-
.length === selectedValues.length
|
|
185
|
+
removeDisabledItems(modifiedOptions).length === selectedValues.length
|
|
183
186
|
) {
|
|
184
187
|
setSelectAll(true);
|
|
185
188
|
} else {
|
|
@@ -229,7 +232,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
229
232
|
|
|
230
233
|
const regexFilter = new RegExp(searchText, 'i');
|
|
231
234
|
|
|
232
|
-
//Because
|
|
235
|
+
// Because the options array will be mutated after Search, we have to search with a copy of the original array
|
|
233
236
|
const searchResults = isSectionList
|
|
234
237
|
? searchSectionList(optionsCopy as TSectionList, regexFilter)
|
|
235
238
|
: searchFlatList(optionsCopy as TFlatList, regexFilter);
|
|
@@ -243,7 +246,7 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
243
246
|
item[optLabel].toString().toLowerCase().search(regexFilter) !== -1 ||
|
|
244
247
|
item[optValue].toString().toLowerCase().search(regexFilter) !== -1
|
|
245
248
|
) {
|
|
246
|
-
return
|
|
249
|
+
return true;
|
|
247
250
|
}
|
|
248
251
|
return;
|
|
249
252
|
});
|
|
@@ -290,15 +293,6 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
290
293
|
|
|
291
294
|
let primary = primaryColor || colors.gray;
|
|
292
295
|
|
|
293
|
-
const sectionListMaxLength = getMaxLengthOfSectionListProperty(
|
|
294
|
-
newOptions as TSectionList,
|
|
295
|
-
'data'
|
|
296
|
-
);
|
|
297
|
-
|
|
298
|
-
const listIsEmpty = isSectionList
|
|
299
|
-
? sectionListMaxLength > 1
|
|
300
|
-
: newOptions.length > 1;
|
|
301
|
-
|
|
302
296
|
/*===========================================
|
|
303
297
|
* setIndexOfSelectedItem - For ScrollToIndex
|
|
304
298
|
*==========================================*/
|
|
@@ -355,18 +349,20 @@ export const DropdownSelect: React.FC<DropdownProps> = ({
|
|
|
355
349
|
modalProps={modalProps}
|
|
356
350
|
>
|
|
357
351
|
<ListTypeComponent
|
|
352
|
+
keyboardShouldPersistTaps="always"
|
|
358
353
|
ListHeaderComponent={
|
|
359
354
|
<>
|
|
360
355
|
{isSearchable && (
|
|
361
356
|
<Input
|
|
362
357
|
value={searchValue}
|
|
363
358
|
onChangeText={(text: string) => onSearch(text)}
|
|
364
|
-
style={searchInputStyle}
|
|
359
|
+
style={searchControls?.searchInputStyle || searchInputStyle}
|
|
365
360
|
primaryColor={primary}
|
|
361
|
+
{...searchControls?.textInputProps}
|
|
366
362
|
/>
|
|
367
363
|
)}
|
|
368
364
|
{listHeaderComponent}
|
|
369
|
-
{isMultiple &&
|
|
365
|
+
{isMultiple && modifiedOptions.length > 1 && (
|
|
370
366
|
<View style={styles.optionsContainerStyle}>
|
|
371
367
|
<TouchableOpacity onPress={() => {}}>
|
|
372
368
|
<CheckBox
|
package/src/types/index.types.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
ColorValue,
|
|
4
4
|
TextStyle,
|
|
5
5
|
ModalProps,
|
|
6
|
+
TextInputProps,
|
|
6
7
|
} from 'react-native';
|
|
7
8
|
|
|
8
9
|
export type DropdownProps = {
|
|
@@ -64,6 +65,10 @@ export type DropdownProps = {
|
|
|
64
65
|
selectAllCallback?: () => void;
|
|
65
66
|
unselectAllCallback?: () => void;
|
|
66
67
|
};
|
|
68
|
+
searchControls?: {
|
|
69
|
+
searchInputStyle?: ViewStyle | TextStyle;
|
|
70
|
+
textInputProps?: TextInputProps;
|
|
71
|
+
};
|
|
67
72
|
};
|
|
68
73
|
|
|
69
74
|
export type TFlatList = TFlatListItem[];
|
package/src/utils/index.ts
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
import { TSectionList } from 'src/types/index.types';
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Extract property from array
|
|
5
3
|
*/
|
|
4
|
+
|
|
6
5
|
export const extractPropertyFromArray = (arr: any, property: string) => {
|
|
7
6
|
let extractedValue = arr.map((item: any) => item[property]);
|
|
8
7
|
|
|
9
8
|
return extractedValue;
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
export const getMaxLengthOfSectionListProperty = (
|
|
13
|
-
sectionList: TSectionList,
|
|
14
|
-
property: 'title' | 'data'
|
|
15
|
-
) => {
|
|
16
|
-
let maxLength = 0;
|
|
17
|
-
|
|
18
|
-
sectionList.forEach((obj) => {
|
|
19
|
-
if (obj[property]?.length > maxLength) {
|
|
20
|
-
maxLength = obj.data.length;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
return maxLength;
|
|
25
|
-
};
|