react-native-input-select 0.31.0 → 0.33.0

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.
@@ -16,6 +16,8 @@ var _input = require("../../styles/input");
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
18
  const DropdownSelectedItemsView = _ref => {
19
+ var _getSelectedItemsLabe;
20
+
19
21
  let {
20
22
  placeholder,
21
23
  error,
@@ -55,7 +57,7 @@ const DropdownSelectedItemsView = _ref => {
55
57
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
56
58
  style: styles.selectedItemsContainer,
57
59
  onStartShouldSetResponder: () => true
58
- }, isMultiple ? getSelectedItemsLabel().map((item, i) => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
60
+ }, isMultiple ? (_getSelectedItemsLabe = getSelectedItemsLabel()) === null || _getSelectedItemsLabe === void 0 ? void 0 : _getSelectedItemsLabe.map((item, i) => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
59
61
  onPress: () => handleToggleModal(),
60
62
  key: `react-native-input-select-${Math.random()}-${i}`,
61
63
  disabled: disabled
@@ -85,7 +87,8 @@ const styles = _reactNative.StyleSheet.create({
85
87
  },
86
88
  selectedItemsContainer: {
87
89
  flexDirection: 'row',
88
- flexWrap: 'nowrap'
90
+ flexWrap: 'nowrap',
91
+ alignItems: 'center'
89
92
  },
90
93
  selectedItems: {
91
94
  color: _colors.colors.white,
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownSelectedItemsView.tsx"],"names":["DropdownSelectedItemsView","placeholder","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","dropdownIcon","dropdownStyle","dropdownIconStyle","selectedItemStyle","placeholderStyle","multipleSelectedItemStyle","dropdownErrorStyle","primaryColor","disabled","pressed","inputStyles","inputFocusState","borderColor","input","inputFocusErrorState","styles","selectedItemsContainer","map","item","i","Math","random","backgroundColor","blackText","length","iconStyle","require","StyleSheet","create","position","right","top","flexDirection","flexWrap","color","colors","white","paddingHorizontal","paddingVertical","borderRadius","primary","marginRight","overflow","black"],"mappings":";;;;;;;AAAA;;AACA;;AASA;;AACA;;;;AAEA,MAAMA,yBAAyB,GAAG,QAiBvB;AAAA,MAjBwB;AACjCC,IAAAA,WADiC;AAEjCC,IAAAA,KAFiC;AAGjCC,IAAAA,qBAHiC;AAIjCC,IAAAA,iBAJiC;AAKjCC,IAAAA,UALiC;AAMjCC,IAAAA,YANiC;AAOjCC,IAAAA,aAPiC;AAQjCC,IAAAA,YARiC;AASjCC,IAAAA,aATiC;AAUjCC,IAAAA,iBAViC;AAWjCC,IAAAA,iBAXiC;AAYjCC,IAAAA,gBAZiC;AAajCC,IAAAA,yBAbiC;AAcjCC,IAAAA,kBAdiC;AAejCC,IAAAA,YAfiC;AAgBjCC,IAAAA;AAhBiC,GAiBxB;AACT,sBACE,6BAAC,sBAAD;AACE,IAAA,OAAO,EAAE,MAAMZ,iBAAiB,EADlC;AAEE,IAAA,KAAK,EAAE;AAAA,UAAC;AAAEa,QAAAA;AAAF,OAAD;AAAA,aAAiB,CACtBA,OAAO,IAAI,EACT,GAAGC,mBAAYC,eADN;AAETC,QAAAA,WAAW,EAAEL;AAFJ,OADW,EAKtBG,mBAAYG,KALU,EAMtBZ,aANsB,EAOtBP,KAAK,IAAI;AACPA,MAAAA,KAAK,KAAK,EADZ,IAEE,CAACe,OAFH,IAEc,EACV,GAAGC,mBAAYI,oBADL;AAEV,WAAGR;AAFO,OATQ,CAAjB;AAAA,KAFT;AAgBE,IAAA,QAAQ,EAAEE;AAhBZ,kBAkBE,6BAAC,uBAAD;AACE,IAAA,UAAU,MADZ;AAEE,IAAA,sBAAsB,MAFxB;AAGE,IAAA,8BAA8B,EAAE;AAHlC,kBAKE,6BAAC,iBAAD;AACE,IAAA,KAAK,EAAEO,MAAM,CAACC,sBADhB;AAEE,IAAA,yBAAyB,EAAE,MAAM;AAFnC,KAIGnB,UAAU,GACTF,qBAAqB,GAAGsB,GAAxB,CAA4B,CAACC,IAAD,EAAYC,CAAZ,kBAC1B,6BAAC,6BAAD;AACE,IAAA,OAAO,EAAE,MAAMvB,iBAAiB,EADlC;AAEE,IAAA,GAAG,EAAG,6BAA4BwB,IAAI,CAACC,MAAL,EAAc,IAAGF,CAAE,EAFvD;AAGE,IAAA,QAAQ,EAAEX;AAHZ,kBAKE,6BAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLO,MAAM,CAAChB,aADF,EAEL;AAAEuB,MAAAA,eAAe,EAAEf;AAAnB,KAFK,EAGLF,yBAHK;AADT,KAOGa,IAPH,CALF,CADF,CADS,gBAmBT,6BAAC,6BAAD;AACE,IAAA,OAAO,EAAE,MAAMtB,iBAAiB,EADlC;AAEE,IAAA,QAAQ,EAAEY;AAFZ,kBAIE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACO,MAAM,CAACQ,SAAR,EAAmBpB,iBAAnB;AAAb,KACGR,qBAAqB,EADxB,CAJF,CAvBJ,CALF,EAuCG,CAACG,YAAD,IAAiB,CAAAC,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEyB,MAAf,MAA0B,CAA3C,iBACC,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACT,MAAM,CAACQ,SAAR,EAAmBnB,gBAAnB;AAAb,KACGX,WADH,aACGA,WADH,cACGA,WADH,GACkB,kBADlB,CAxCJ,CAlBF,eA+DE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACsB,MAAM,CAACU,SAAR,EAAmBvB,iBAAnB;AAAb,KACGF,YAAY,iBACX,6BAAC,kBAAD;AAAO,IAAA,MAAM,EAAE0B,OAAO,CAAC,4BAAD;AAAtB,IAFJ,CA/DF,CADF;AAuED,CAzFD;;AA2FA,MAAMX,MAAM,GAAGY,wBAAWC,MAAX,CAAkB;AAC/BH,EAAAA,SAAS,EAAE;AAAEI,IAAAA,QAAQ,EAAE,UAAZ;AAAwBC,IAAAA,KAAK,EAAE,EAA/B;AAAmCC,IAAAA,GAAG,EAAE;AAAxC,GADoB;AAE/Bf,EAAAA,sBAAsB,EAAE;AAAEgB,IAAAA,aAAa,EAAE,KAAjB;AAAwBC,IAAAA,QAAQ,EAAE;AAAlC,GAFO;AAG/BlC,EAAAA,aAAa,EAAE;AACbmC,IAAAA,KAAK,EAAEC,eAAOC,KADD;AAEbC,IAAAA,iBAAiB,EAAE,EAFN;AAGbC,IAAAA,eAAe,EAAE,CAHJ;AAIbC,IAAAA,YAAY,EAAE,EAJD;AAKbjB,IAAAA,eAAe,EAAEa,eAAOK,OALX;AAMbC,IAAAA,WAAW,EAAE,EANA;AAObC,IAAAA,QAAQ,EAAE;AAPG,GAHgB;AAY/BnB,EAAAA,SAAS,EAAE;AAAEW,IAAAA,KAAK,EAAEC,eAAOQ;AAAhB;AAZoB,CAAlB,CAAf;;eAeenD,yB","sourcesContent":["import React from 'react';\nimport {\n View,\n Text,\n Pressable,\n ScrollView,\n StyleSheet,\n Image,\n TouchableOpacity,\n} from 'react-native';\nimport { colors } from '../../styles/colors';\nimport { inputStyles } from '../../styles/input';\n\nconst DropdownSelectedItemsView = ({\n placeholder,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n dropdownIcon,\n dropdownStyle,\n dropdownIconStyle,\n selectedItemStyle,\n placeholderStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //this must be last\n error !== '' &&\n !pressed && {\n ...inputStyles.inputFocusErrorState,\n ...dropdownErrorStyle,\n },\n ]}\n disabled={disabled}\n >\n <ScrollView\n horizontal\n alwaysBounceHorizontal\n showsHorizontalScrollIndicator={false}\n >\n <View\n style={styles.selectedItemsContainer}\n onStartShouldSetResponder={() => true}\n >\n {isMultiple ? (\n getSelectedItemsLabel().map((item: any, i: Number) => (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n key={`react-native-input-select-${Math.random()}-${i}`}\n disabled={disabled}\n >\n <Text\n style={[\n styles.selectedItems,\n { backgroundColor: primaryColor },\n multipleSelectedItemStyle,\n ]}\n >\n {item}\n </Text>\n </TouchableOpacity>\n ))\n ) : (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n disabled={disabled}\n >\n <Text style={[styles.blackText, selectedItemStyle]}>\n {getSelectedItemsLabel()}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {!selectedItem && selectedItems?.length === 0 && (\n <Text style={[styles.blackText, placeholderStyle]}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={[styles.iconStyle, dropdownIconStyle]}>\n {dropdownIcon || (\n <Image source={require('../../asset/arrow-down.png')} />\n )}\n </View>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n selectedItemsContainer: { flexDirection: 'row', flexWrap: 'nowrap' },\n selectedItems: {\n color: colors.white,\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 10,\n backgroundColor: colors.primary,\n marginRight: 10,\n overflow: 'hidden',\n },\n blackText: { color: colors.black },\n});\n\nexport default DropdownSelectedItemsView;\n"]}
1
+ {"version":3,"sources":["DropdownSelectedItemsView.tsx"],"names":["DropdownSelectedItemsView","placeholder","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","dropdownIcon","dropdownStyle","dropdownIconStyle","selectedItemStyle","placeholderStyle","multipleSelectedItemStyle","dropdownErrorStyle","primaryColor","disabled","pressed","inputStyles","inputFocusState","borderColor","input","inputFocusErrorState","styles","selectedItemsContainer","map","item","i","Math","random","backgroundColor","blackText","length","iconStyle","require","StyleSheet","create","position","right","top","flexDirection","flexWrap","alignItems","color","colors","white","paddingHorizontal","paddingVertical","borderRadius","primary","marginRight","overflow","black"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n View,\n Text,\n Pressable,\n ScrollView,\n StyleSheet,\n Image,\n TouchableOpacity,\n} from 'react-native';\nimport { colors } from '../../styles/colors';\nimport { inputStyles } from '../../styles/input';\n\nconst DropdownSelectedItemsView = ({\n placeholder,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n dropdownIcon,\n dropdownStyle,\n dropdownIconStyle,\n selectedItemStyle,\n placeholderStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //this must be last\n error !== '' &&\n !pressed && {\n ...inputStyles.inputFocusErrorState,\n ...dropdownErrorStyle,\n },\n ]}\n disabled={disabled}\n >\n <ScrollView\n horizontal\n alwaysBounceHorizontal\n showsHorizontalScrollIndicator={false}\n >\n <View\n style={styles.selectedItemsContainer}\n onStartShouldSetResponder={() => true}\n >\n {isMultiple ? (\n getSelectedItemsLabel()?.map((item: any, i: Number) => (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n key={`react-native-input-select-${Math.random()}-${i}`}\n disabled={disabled}\n >\n <Text\n style={[\n styles.selectedItems,\n { backgroundColor: primaryColor },\n multipleSelectedItemStyle,\n ]}\n >\n {item}\n </Text>\n </TouchableOpacity>\n ))\n ) : (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n disabled={disabled}\n >\n <Text style={[styles.blackText, selectedItemStyle]}>\n {getSelectedItemsLabel()}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {!selectedItem && selectedItems?.length === 0 && (\n <Text style={[styles.blackText, placeholderStyle]}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={[styles.iconStyle, dropdownIconStyle]}>\n {dropdownIcon || (\n <Image source={require('../../asset/arrow-down.png')} />\n )}\n </View>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n selectedItemsContainer: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n selectedItems: {\n color: colors.white,\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 10,\n backgroundColor: colors.primary,\n marginRight: 10,\n overflow: 'hidden',\n },\n blackText: { color: colors.black },\n});\n\nexport default DropdownSelectedItemsView;\n"]}
@@ -65,16 +65,25 @@ const DropdownSelect = _ref => {
65
65
  checkboxLabelStyle,
66
66
  listHeaderComponent,
67
67
  listFooterComponent,
68
+ hideModal = false,
68
69
  ...rest
69
70
  } = _ref;
70
- const [newOptions, setNewOptions] = (0, _react.useState)(options ? options : []);
71
+ const [newOptions, setNewOptions] = (0, _react.useState)([]);
71
72
  const [open, setOpen] = (0, _react.useState)(false);
72
73
  const [selectAll, setSelectAll] = (0, _react.useState)(false);
73
- const [selectedItem, setSelectedItem] = (0, _react.useState)(selectedValue); //for single selection
74
+ const [selectedItem, setSelectedItem] = (0, _react.useState)(''); //for single selection
74
75
 
75
- const [selectedItems, setSelectedItems] = (0, _react.useState)(Array.isArray(selectedValue) ? selectedValue : selectedValue === '' || selectedValue === undefined ? [] : [selectedValue]); //for multiple selection
76
+ const [selectedItems, setSelectedItems] = (0, _react.useState)([]); //for multiple selection
76
77
 
77
78
  const [searchValue, setSearchValue] = (0, _react.useState)('');
79
+ (0, _react.useEffect)(() => {
80
+ if (options) {
81
+ setNewOptions(options);
82
+ }
83
+ }, [options]);
84
+ (0, _react.useEffect)(() => {
85
+ isMultiple ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : []) : setSelectedItem(selectedValue);
86
+ }, [selectedValue, isMultiple, onValueChange]);
78
87
  /*===========================================
79
88
  * Selection handlers
80
89
  *==========================================*/
@@ -82,6 +91,7 @@ const DropdownSelect = _ref => {
82
91
  const handleSingleSelection = value => {
83
92
  if (selectedItem === value) {
84
93
  setSelectedItem(null);
94
+ onValueChange(null); //send value to parent
85
95
  } else {
86
96
  setSelectedItem(value);
87
97
  onValueChange(value); //send value to parent
@@ -91,22 +101,29 @@ const DropdownSelect = _ref => {
91
101
  };
92
102
 
93
103
  const handleMultipleSelections = value => {
94
- let selectedValues = [...selectedItems];
104
+ setSelectedItems(prevVal => {
105
+ var _selectedValues;
95
106
 
96
- if (selectedValues.includes(value)) {
97
- selectedValues = selectedValues.filter(item => item !== value);
98
- } else {
99
- selectedValues.push(value);
100
- }
107
+ let selectedValues = [...prevVal];
101
108
 
102
- setSelectedItems(selectedValues);
103
- onValueChange(selectedValues); //send value to parent
109
+ if ((_selectedValues = selectedValues) !== null && _selectedValues !== void 0 && _selectedValues.includes(value)) {
110
+ selectedValues = selectedValues.filter(item => item !== value);
111
+ } else {
112
+ selectedValues.push(value);
113
+ }
104
114
 
105
- if (options.filter(item => !item.disabled).length === selectedValues.length) {
106
- setSelectAll(true);
107
- } else {
108
- setSelectAll(false);
109
- }
115
+ setSelectedItems(selectedValues);
116
+ onValueChange(selectedValues); //send value to parent
117
+ //select all checkbox should not be checked if the list contains disabled values
118
+
119
+ if (options.filter(item => !item.disabled).length === selectedValues.length) {
120
+ setSelectAll(true);
121
+ } else {
122
+ setSelectAll(false);
123
+ }
124
+
125
+ return selectedValues;
126
+ });
110
127
  };
111
128
 
112
129
  const handleSelectAll = () => {
@@ -132,9 +149,9 @@ const DropdownSelect = _ref => {
132
149
 
133
150
 
134
151
  const getSelectedItemsLabel = () => {
135
- if (isMultiple) {
152
+ if (isMultiple && Array.isArray(selectedItems)) {
136
153
  let selectedLabels = [];
137
- selectedItems && selectedItems.forEach(element => {
154
+ selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.forEach(element => {
138
155
  var _options$find;
139
156
 
140
157
  let selectedItemLabel = options && ((_options$find = options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : _constants.DEFAULT_OPTION_VALUE] === element)) === null || _options$find === void 0 ? void 0 : _options$find[optionLabel]);
@@ -173,6 +190,11 @@ const DropdownSelect = _ref => {
173
190
  setNewOptions(options);
174
191
  };
175
192
 
193
+ (0, _react.useEffect)(() => {
194
+ if (hideModal) {
195
+ setOpen(false);
196
+ }
197
+ }, [hideModal]);
176
198
  let primary = primaryColor || _colors.colors.gray;
177
199
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Dropdown.default, _extends({
178
200
  label: label,
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["DropdownSelect","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","listHeaderComponent","listFooterComponent","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","Array","isArray","undefined","searchValue","setSearchValue","handleSingleSelection","value","handleMultipleSelections","selectedValues","includes","filter","item","push","length","handleSelectAll","prevVal","filteredOptions","i","getSelectedItemsLabel","selectedLabels","forEach","element","selectedItemLabel","find","DEFAULT_OPTION_VALUE","DEFAULT_OPTION_LABEL","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","toLowerCase","search","handleToggleModal","primary","colors","gray","text","styles","optionsContainerStyle","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownList from './components/Dropdown/DropdownList';\nimport CustomModal from './components/CustomModal';\nimport { Input } from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type { DropdownProps } from './types/index.types';\n\nexport const DropdownSelect = ({\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,\n checkboxStyle,\n checkboxLabelStyle,\n listHeaderComponent,\n listFooterComponent,\n ...rest\n}: DropdownProps) => {\n const [newOptions, setNewOptions] = useState(options ? options : []);\n const [open, setOpen] = useState(false);\n const [selectAll, setSelectAll] = useState(false);\n const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection\n const [selectedItems, setSelectedItems] = useState(\n Array.isArray(selectedValue)\n ? selectedValue\n : selectedValue === '' || selectedValue === undefined\n ? []\n : [selectedValue]\n ); //for multiple selection\n const [searchValue, setSearchValue] = useState('');\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: any) => {\n if (selectedItem === value) {\n setSelectedItem(null);\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: any) => {\n let selectedValues = [...selectedItems];\n\n if (selectedValues.includes(value)) {\n selectedValues = selectedValues.filter((item) => item !== value);\n } else {\n selectedValues.push(value);\n }\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n\n if (\n options.filter((item) => !item.disabled).length === selectedValues.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n const filteredOptions = newOptions.filter((item) => !item.disabled); //don't select disabled items\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optionValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n return !prevVal;\n });\n };\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple) {\n let selectedLabels: Array<string> = [];\n selectedItems &&\n selectedItems.forEach((element) => {\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === element\n )?.[optionLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === selectedItem\n );\n return selectedItemLabel?.[optionLabel ?? DEFAULT_OPTION_LABEL];\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 const searchResults = options.filter((item: any) => {\n if (\n item[optionLabel ?? DEFAULT_OPTION_LABEL]\n .toString()\n .toLowerCase()\n .search(regexFilter) !== -1 ||\n item[optionValue ?? DEFAULT_OPTION_VALUE]\n .toString(regexFilter)\n .toLowerCase()\n .search(regexFilter) !== -1\n ) {\n return item;\n }\n });\n\n setNewOptions(searchResults);\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n };\n\n let primary = primaryColor || colors.gray;\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 {...rest}\n />\n <CustomModal\n open={open}\n handleToggleModal={handleToggleModal}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => {}}\n >\n <DropdownList\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 && newOptions.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={selectAll ? 'Clear all' : 'Select all'}\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n options={newOptions}\n optionLabel={optionLabel}\n optionValue={optionValue}\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 />\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"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["DropdownSelect","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","listHeaderComponent","listFooterComponent","hideModal","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","Array","isArray","handleSingleSelection","value","handleMultipleSelections","prevVal","selectedValues","includes","filter","item","push","length","handleSelectAll","filteredOptions","i","getSelectedItemsLabel","selectedLabels","forEach","element","selectedItemLabel","find","DEFAULT_OPTION_VALUE","DEFAULT_OPTION_LABEL","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","toLowerCase","search","handleToggleModal","primary","colors","gray","text","styles","optionsContainerStyle","StyleSheet","create","paddingHorizontal","paddingVertical","flexDirection"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownList from './components/Dropdown/DropdownList';\nimport CustomModal from './components/CustomModal';\nimport { Input } from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type { DropdownProps } from './types/index.types';\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,\n checkboxStyle,\n checkboxLabelStyle,\n listHeaderComponent,\n listFooterComponent,\n hideModal = false,\n ...rest\n}) => {\n const [newOptions, setNewOptions] = useState<any[]>([]);\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\n useEffect(() => {\n if (options) {\n setNewOptions(options);\n }\n }, [options]);\n\n useEffect(() => {\n isMultiple\n ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : [])\n : setSelectedItem(selectedValue);\n }, [selectedValue, isMultiple, onValueChange]);\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: any) => {\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: any) => {\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\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n\n //select all checkbox should not be checked if the list contains disabled values\n if (\n options.filter((item) => !item.disabled).length ===\n selectedValues.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n return selectedValues;\n });\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n const filteredOptions = newOptions.filter((item) => !item.disabled); //don't select disabled items\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optionValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n return !prevVal;\n });\n };\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple && Array.isArray(selectedItems)) {\n let selectedLabels: Array<string> = [];\n selectedItems?.forEach((element: any) => {\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) => item[optionValue ?? DEFAULT_OPTION_VALUE] === element\n )?.[optionLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === selectedItem\n );\n return selectedItemLabel?.[optionLabel ?? DEFAULT_OPTION_LABEL];\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 const searchResults = options.filter((item: any) => {\n if (\n item[optionLabel ?? DEFAULT_OPTION_LABEL]\n .toString()\n .toLowerCase()\n .search(regexFilter) !== -1 ||\n item[optionValue ?? DEFAULT_OPTION_VALUE]\n .toString(regexFilter)\n .toLowerCase()\n .search(regexFilter) !== -1\n ) {\n return item;\n }\n });\n\n setNewOptions(searchResults);\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n };\n\n useEffect(() => {\n if (hideModal) {\n setOpen(false);\n }\n }, [hideModal]);\n\n let primary = primaryColor || colors.gray;\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 {...rest}\n />\n <CustomModal\n open={open}\n handleToggleModal={handleToggleModal}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => {}}\n >\n <DropdownList\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 && newOptions.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={selectAll ? 'Clear all' : 'Select all'}\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n options={newOptions}\n optionLabel={optionLabel}\n optionValue={optionValue}\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 />\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"]}
@@ -4,6 +4,8 @@ import { colors } from '../../styles/colors';
4
4
  import { inputStyles } from '../../styles/input';
5
5
 
6
6
  const DropdownSelectedItemsView = _ref => {
7
+ var _getSelectedItemsLabe;
8
+
7
9
  let {
8
10
  placeholder,
9
11
  error,
@@ -43,7 +45,7 @@ const DropdownSelectedItemsView = _ref => {
43
45
  }, /*#__PURE__*/React.createElement(View, {
44
46
  style: styles.selectedItemsContainer,
45
47
  onStartShouldSetResponder: () => true
46
- }, isMultiple ? getSelectedItemsLabel().map((item, i) => /*#__PURE__*/React.createElement(TouchableOpacity, {
48
+ }, isMultiple ? (_getSelectedItemsLabe = getSelectedItemsLabel()) === null || _getSelectedItemsLabe === void 0 ? void 0 : _getSelectedItemsLabe.map((item, i) => /*#__PURE__*/React.createElement(TouchableOpacity, {
47
49
  onPress: () => handleToggleModal(),
48
50
  key: `react-native-input-select-${Math.random()}-${i}`,
49
51
  disabled: disabled
@@ -73,7 +75,8 @@ const styles = StyleSheet.create({
73
75
  },
74
76
  selectedItemsContainer: {
75
77
  flexDirection: 'row',
76
- flexWrap: 'nowrap'
78
+ flexWrap: 'nowrap',
79
+ alignItems: 'center'
77
80
  },
78
81
  selectedItems: {
79
82
  color: colors.white,
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownSelectedItemsView.tsx"],"names":["React","View","Text","Pressable","ScrollView","StyleSheet","Image","TouchableOpacity","colors","inputStyles","DropdownSelectedItemsView","placeholder","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","dropdownIcon","dropdownStyle","dropdownIconStyle","selectedItemStyle","placeholderStyle","multipleSelectedItemStyle","dropdownErrorStyle","primaryColor","disabled","pressed","inputFocusState","borderColor","input","inputFocusErrorState","styles","selectedItemsContainer","map","item","i","Math","random","backgroundColor","blackText","length","iconStyle","require","create","position","right","top","flexDirection","flexWrap","color","white","paddingHorizontal","paddingVertical","borderRadius","primary","marginRight","overflow","black"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n View,\n Text,\n Pressable,\n ScrollView,\n StyleSheet,\n Image,\n TouchableOpacity,\n} from 'react-native';\nimport { colors } from '../../styles/colors';\nimport { inputStyles } from '../../styles/input';\n\nconst DropdownSelectedItemsView = ({\n placeholder,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n dropdownIcon,\n dropdownStyle,\n dropdownIconStyle,\n selectedItemStyle,\n placeholderStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //this must be last\n error !== '' &&\n !pressed && {\n ...inputStyles.inputFocusErrorState,\n ...dropdownErrorStyle,\n },\n ]}\n disabled={disabled}\n >\n <ScrollView\n horizontal\n alwaysBounceHorizontal\n showsHorizontalScrollIndicator={false}\n >\n <View\n style={styles.selectedItemsContainer}\n onStartShouldSetResponder={() => true}\n >\n {isMultiple ? (\n getSelectedItemsLabel().map((item: any, i: Number) => (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n key={`react-native-input-select-${Math.random()}-${i}`}\n disabled={disabled}\n >\n <Text\n style={[\n styles.selectedItems,\n { backgroundColor: primaryColor },\n multipleSelectedItemStyle,\n ]}\n >\n {item}\n </Text>\n </TouchableOpacity>\n ))\n ) : (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n disabled={disabled}\n >\n <Text style={[styles.blackText, selectedItemStyle]}>\n {getSelectedItemsLabel()}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {!selectedItem && selectedItems?.length === 0 && (\n <Text style={[styles.blackText, placeholderStyle]}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={[styles.iconStyle, dropdownIconStyle]}>\n {dropdownIcon || (\n <Image source={require('../../asset/arrow-down.png')} />\n )}\n </View>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n selectedItemsContainer: { flexDirection: 'row', flexWrap: 'nowrap' },\n selectedItems: {\n color: colors.white,\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 10,\n backgroundColor: colors.primary,\n marginRight: 10,\n overflow: 'hidden',\n },\n blackText: { color: colors.black },\n});\n\nexport default DropdownSelectedItemsView;\n"]}
1
+ {"version":3,"sources":["DropdownSelectedItemsView.tsx"],"names":["React","View","Text","Pressable","ScrollView","StyleSheet","Image","TouchableOpacity","colors","inputStyles","DropdownSelectedItemsView","placeholder","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","dropdownIcon","dropdownStyle","dropdownIconStyle","selectedItemStyle","placeholderStyle","multipleSelectedItemStyle","dropdownErrorStyle","primaryColor","disabled","pressed","inputFocusState","borderColor","input","inputFocusErrorState","styles","selectedItemsContainer","map","item","i","Math","random","backgroundColor","blackText","length","iconStyle","require","create","position","right","top","flexDirection","flexWrap","alignItems","color","white","paddingHorizontal","paddingVertical","borderRadius","primary","marginRight","overflow","black"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,IADF,EAEEC,IAFF,EAGEC,SAHF,EAIEC,UAJF,EAKEC,UALF,EAMEC,KANF,EAOEC,gBAPF,QAQO,cARP;AASA,SAASC,MAAT,QAAuB,qBAAvB;AACA,SAASC,WAAT,QAA4B,oBAA5B;;AAEA,MAAMC,yBAAyB,GAAG,QAiBvB;AAAA;;AAAA,MAjBwB;AACjCC,IAAAA,WADiC;AAEjCC,IAAAA,KAFiC;AAGjCC,IAAAA,qBAHiC;AAIjCC,IAAAA,iBAJiC;AAKjCC,IAAAA,UALiC;AAMjCC,IAAAA,YANiC;AAOjCC,IAAAA,aAPiC;AAQjCC,IAAAA,YARiC;AASjCC,IAAAA,aATiC;AAUjCC,IAAAA,iBAViC;AAWjCC,IAAAA,iBAXiC;AAYjCC,IAAAA,gBAZiC;AAajCC,IAAAA,yBAbiC;AAcjCC,IAAAA,kBAdiC;AAejCC,IAAAA,YAfiC;AAgBjCC,IAAAA;AAhBiC,GAiBxB;AACT,sBACE,oBAAC,SAAD;AACE,IAAA,OAAO,EAAE,MAAMZ,iBAAiB,EADlC;AAEE,IAAA,KAAK,EAAE;AAAA,UAAC;AAAEa,QAAAA;AAAF,OAAD;AAAA,aAAiB,CACtBA,OAAO,IAAI,EACT,GAAGlB,WAAW,CAACmB,eADN;AAETC,QAAAA,WAAW,EAAEJ;AAFJ,OADW,EAKtBhB,WAAW,CAACqB,KALU,EAMtBX,aANsB,EAOtBP,KAAK,IAAI;AACPA,MAAAA,KAAK,KAAK,EADZ,IAEE,CAACe,OAFH,IAEc,EACV,GAAGlB,WAAW,CAACsB,oBADL;AAEV,WAAGP;AAFO,OATQ,CAAjB;AAAA,KAFT;AAgBE,IAAA,QAAQ,EAAEE;AAhBZ,kBAkBE,oBAAC,UAAD;AACE,IAAA,UAAU,MADZ;AAEE,IAAA,sBAAsB,MAFxB;AAGE,IAAA,8BAA8B,EAAE;AAHlC,kBAKE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAEM,MAAM,CAACC,sBADhB;AAEE,IAAA,yBAAyB,EAAE,MAAM;AAFnC,KAIGlB,UAAU,4BACTF,qBAAqB,EADZ,0DACT,sBAAyBqB,GAAzB,CAA6B,CAACC,IAAD,EAAYC,CAAZ,kBAC3B,oBAAC,gBAAD;AACE,IAAA,OAAO,EAAE,MAAMtB,iBAAiB,EADlC;AAEE,IAAA,GAAG,EAAG,6BAA4BuB,IAAI,CAACC,MAAL,EAAc,IAAGF,CAAE,EAFvD;AAGE,IAAA,QAAQ,EAAEV;AAHZ,kBAKE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAE,CACLM,MAAM,CAACf,aADF,EAEL;AAAEsB,MAAAA,eAAe,EAAEd;AAAnB,KAFK,EAGLF,yBAHK;AADT,KAOGY,IAPH,CALF,CADF,CADS,gBAmBT,oBAAC,gBAAD;AACE,IAAA,OAAO,EAAE,MAAMrB,iBAAiB,EADlC;AAEE,IAAA,QAAQ,EAAEY;AAFZ,kBAIE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACM,MAAM,CAACQ,SAAR,EAAmBnB,iBAAnB;AAAb,KACGR,qBAAqB,EADxB,CAJF,CAvBJ,CALF,EAuCG,CAACG,YAAD,IAAiB,CAAAC,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEwB,MAAf,MAA0B,CAA3C,iBACC,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACT,MAAM,CAACQ,SAAR,EAAmBlB,gBAAnB;AAAb,KACGX,WADH,aACGA,WADH,cACGA,WADH,GACkB,kBADlB,CAxCJ,CAlBF,eA+DE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACqB,MAAM,CAACU,SAAR,EAAmBtB,iBAAnB;AAAb,KACGF,YAAY,iBACX,oBAAC,KAAD;AAAO,IAAA,MAAM,EAAEyB,OAAO,CAAC,4BAAD;AAAtB,IAFJ,CA/DF,CADF;AAuED,CAzFD;;AA2FA,MAAMX,MAAM,GAAG3B,UAAU,CAACuC,MAAX,CAAkB;AAC/BF,EAAAA,SAAS,EAAE;AAAEG,IAAAA,QAAQ,EAAE,UAAZ;AAAwBC,IAAAA,KAAK,EAAE,EAA/B;AAAmCC,IAAAA,GAAG,EAAE;AAAxC,GADoB;AAE/Bd,EAAAA,sBAAsB,EAAE;AACtBe,IAAAA,aAAa,EAAE,KADO;AAEtBC,IAAAA,QAAQ,EAAE,QAFY;AAGtBC,IAAAA,UAAU,EAAE;AAHU,GAFO;AAO/BjC,EAAAA,aAAa,EAAE;AACbkC,IAAAA,KAAK,EAAE3C,MAAM,CAAC4C,KADD;AAEbC,IAAAA,iBAAiB,EAAE,EAFN;AAGbC,IAAAA,eAAe,EAAE,CAHJ;AAIbC,IAAAA,YAAY,EAAE,EAJD;AAKbhB,IAAAA,eAAe,EAAE/B,MAAM,CAACgD,OALX;AAMbC,IAAAA,WAAW,EAAE,EANA;AAObC,IAAAA,QAAQ,EAAE;AAPG,GAPgB;AAgB/BlB,EAAAA,SAAS,EAAE;AAAEW,IAAAA,KAAK,EAAE3C,MAAM,CAACmD;AAAhB;AAhBoB,CAAlB,CAAf;AAmBA,eAAejD,yBAAf","sourcesContent":["import React from 'react';\nimport {\n View,\n Text,\n Pressable,\n ScrollView,\n StyleSheet,\n Image,\n TouchableOpacity,\n} from 'react-native';\nimport { colors } from '../../styles/colors';\nimport { inputStyles } from '../../styles/input';\n\nconst DropdownSelectedItemsView = ({\n placeholder,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n dropdownIcon,\n dropdownStyle,\n dropdownIconStyle,\n selectedItemStyle,\n placeholderStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //this must be last\n error !== '' &&\n !pressed && {\n ...inputStyles.inputFocusErrorState,\n ...dropdownErrorStyle,\n },\n ]}\n disabled={disabled}\n >\n <ScrollView\n horizontal\n alwaysBounceHorizontal\n showsHorizontalScrollIndicator={false}\n >\n <View\n style={styles.selectedItemsContainer}\n onStartShouldSetResponder={() => true}\n >\n {isMultiple ? (\n getSelectedItemsLabel()?.map((item: any, i: Number) => (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n key={`react-native-input-select-${Math.random()}-${i}`}\n disabled={disabled}\n >\n <Text\n style={[\n styles.selectedItems,\n { backgroundColor: primaryColor },\n multipleSelectedItemStyle,\n ]}\n >\n {item}\n </Text>\n </TouchableOpacity>\n ))\n ) : (\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n disabled={disabled}\n >\n <Text style={[styles.blackText, selectedItemStyle]}>\n {getSelectedItemsLabel()}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {!selectedItem && selectedItems?.length === 0 && (\n <Text style={[styles.blackText, placeholderStyle]}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={[styles.iconStyle, dropdownIconStyle]}>\n {dropdownIcon || (\n <Image source={require('../../asset/arrow-down.png')} />\n )}\n </View>\n </Pressable>\n );\n};\n\nconst styles = StyleSheet.create({\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n selectedItemsContainer: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n selectedItems: {\n color: colors.white,\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 10,\n backgroundColor: colors.primary,\n marginRight: 10,\n overflow: 'hidden',\n },\n blackText: { color: colors.black },\n});\n\nexport default DropdownSelectedItemsView;\n"]}
@@ -1,6 +1,6 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
- import React, { useState } from 'react';
3
+ import React, { useState, useEffect } from 'react';
4
4
  import { TouchableOpacity, StyleSheet, View } from 'react-native';
5
5
  import Dropdown from './components/Dropdown/Dropdown';
6
6
  import DropdownList from './components/Dropdown/DropdownList';
@@ -43,16 +43,25 @@ export const DropdownSelect = _ref => {
43
43
  checkboxLabelStyle,
44
44
  listHeaderComponent,
45
45
  listFooterComponent,
46
+ hideModal = false,
46
47
  ...rest
47
48
  } = _ref;
48
- const [newOptions, setNewOptions] = useState(options ? options : []);
49
+ const [newOptions, setNewOptions] = useState([]);
49
50
  const [open, setOpen] = useState(false);
50
51
  const [selectAll, setSelectAll] = useState(false);
51
- const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection
52
+ const [selectedItem, setSelectedItem] = useState(''); //for single selection
52
53
 
53
- const [selectedItems, setSelectedItems] = useState(Array.isArray(selectedValue) ? selectedValue : selectedValue === '' || selectedValue === undefined ? [] : [selectedValue]); //for multiple selection
54
+ const [selectedItems, setSelectedItems] = useState([]); //for multiple selection
54
55
 
55
56
  const [searchValue, setSearchValue] = useState('');
57
+ useEffect(() => {
58
+ if (options) {
59
+ setNewOptions(options);
60
+ }
61
+ }, [options]);
62
+ useEffect(() => {
63
+ isMultiple ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : []) : setSelectedItem(selectedValue);
64
+ }, [selectedValue, isMultiple, onValueChange]);
56
65
  /*===========================================
57
66
  * Selection handlers
58
67
  *==========================================*/
@@ -60,6 +69,7 @@ export const DropdownSelect = _ref => {
60
69
  const handleSingleSelection = value => {
61
70
  if (selectedItem === value) {
62
71
  setSelectedItem(null);
72
+ onValueChange(null); //send value to parent
63
73
  } else {
64
74
  setSelectedItem(value);
65
75
  onValueChange(value); //send value to parent
@@ -69,22 +79,29 @@ export const DropdownSelect = _ref => {
69
79
  };
70
80
 
71
81
  const handleMultipleSelections = value => {
72
- let selectedValues = [...selectedItems];
82
+ setSelectedItems(prevVal => {
83
+ var _selectedValues;
73
84
 
74
- if (selectedValues.includes(value)) {
75
- selectedValues = selectedValues.filter(item => item !== value);
76
- } else {
77
- selectedValues.push(value);
78
- }
85
+ let selectedValues = [...prevVal];
79
86
 
80
- setSelectedItems(selectedValues);
81
- onValueChange(selectedValues); //send value to parent
87
+ if ((_selectedValues = selectedValues) !== null && _selectedValues !== void 0 && _selectedValues.includes(value)) {
88
+ selectedValues = selectedValues.filter(item => item !== value);
89
+ } else {
90
+ selectedValues.push(value);
91
+ }
82
92
 
83
- if (options.filter(item => !item.disabled).length === selectedValues.length) {
84
- setSelectAll(true);
85
- } else {
86
- setSelectAll(false);
87
- }
93
+ setSelectedItems(selectedValues);
94
+ onValueChange(selectedValues); //send value to parent
95
+ //select all checkbox should not be checked if the list contains disabled values
96
+
97
+ if (options.filter(item => !item.disabled).length === selectedValues.length) {
98
+ setSelectAll(true);
99
+ } else {
100
+ setSelectAll(false);
101
+ }
102
+
103
+ return selectedValues;
104
+ });
88
105
  };
89
106
 
90
107
  const handleSelectAll = () => {
@@ -110,9 +127,9 @@ export const DropdownSelect = _ref => {
110
127
 
111
128
 
112
129
  const getSelectedItemsLabel = () => {
113
- if (isMultiple) {
130
+ if (isMultiple && Array.isArray(selectedItems)) {
114
131
  let selectedLabels = [];
115
- selectedItems && selectedItems.forEach(element => {
132
+ selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.forEach(element => {
116
133
  var _options$find;
117
134
 
118
135
  let selectedItemLabel = options && ((_options$find = options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : DEFAULT_OPTION_VALUE] === element)) === null || _options$find === void 0 ? void 0 : _options$find[optionLabel]);
@@ -151,6 +168,11 @@ export const DropdownSelect = _ref => {
151
168
  setNewOptions(options);
152
169
  };
153
170
 
171
+ useEffect(() => {
172
+ if (hideModal) {
173
+ setOpen(false);
174
+ }
175
+ }, [hideModal]);
154
176
  let primary = primaryColor || colors.gray;
155
177
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dropdown, _extends({
156
178
  label: label,
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["React","useState","TouchableOpacity","StyleSheet","View","Dropdown","DropdownList","CustomModal","Input","CheckBox","colors","DEFAULT_OPTION_LABEL","DEFAULT_OPTION_VALUE","DropdownSelect","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","listHeaderComponent","listFooterComponent","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","Array","isArray","undefined","searchValue","setSearchValue","handleSingleSelection","value","handleMultipleSelections","selectedValues","includes","filter","item","push","length","handleSelectAll","prevVal","filteredOptions","i","getSelectedItemsLabel","selectedLabels","forEach","element","selectedItemLabel","find","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","toLowerCase","search","handleToggleModal","primary","gray","text","styles","optionsContainerStyle","create","paddingHorizontal","paddingVertical","flexDirection"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownList from './components/Dropdown/DropdownList';\nimport CustomModal from './components/CustomModal';\nimport { Input } from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type { DropdownProps } from './types/index.types';\n\nexport const DropdownSelect = ({\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,\n checkboxStyle,\n checkboxLabelStyle,\n listHeaderComponent,\n listFooterComponent,\n ...rest\n}: DropdownProps) => {\n const [newOptions, setNewOptions] = useState(options ? options : []);\n const [open, setOpen] = useState(false);\n const [selectAll, setSelectAll] = useState(false);\n const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection\n const [selectedItems, setSelectedItems] = useState(\n Array.isArray(selectedValue)\n ? selectedValue\n : selectedValue === '' || selectedValue === undefined\n ? []\n : [selectedValue]\n ); //for multiple selection\n const [searchValue, setSearchValue] = useState('');\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: any) => {\n if (selectedItem === value) {\n setSelectedItem(null);\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: any) => {\n let selectedValues = [...selectedItems];\n\n if (selectedValues.includes(value)) {\n selectedValues = selectedValues.filter((item) => item !== value);\n } else {\n selectedValues.push(value);\n }\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n\n if (\n options.filter((item) => !item.disabled).length === selectedValues.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n const filteredOptions = newOptions.filter((item) => !item.disabled); //don't select disabled items\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optionValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n return !prevVal;\n });\n };\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple) {\n let selectedLabels: Array<string> = [];\n selectedItems &&\n selectedItems.forEach((element) => {\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === element\n )?.[optionLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === selectedItem\n );\n return selectedItemLabel?.[optionLabel ?? DEFAULT_OPTION_LABEL];\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 const searchResults = options.filter((item: any) => {\n if (\n item[optionLabel ?? DEFAULT_OPTION_LABEL]\n .toString()\n .toLowerCase()\n .search(regexFilter) !== -1 ||\n item[optionValue ?? DEFAULT_OPTION_VALUE]\n .toString(regexFilter)\n .toLowerCase()\n .search(regexFilter) !== -1\n ) {\n return item;\n }\n });\n\n setNewOptions(searchResults);\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n };\n\n let primary = primaryColor || colors.gray;\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 {...rest}\n />\n <CustomModal\n open={open}\n handleToggleModal={handleToggleModal}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => {}}\n >\n <DropdownList\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 && newOptions.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={selectAll ? 'Clear all' : 'Select all'}\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n options={newOptions}\n optionLabel={optionLabel}\n optionValue={optionValue}\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 />\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"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["React","useState","useEffect","TouchableOpacity","StyleSheet","View","Dropdown","DropdownList","CustomModal","Input","CheckBox","colors","DEFAULT_OPTION_LABEL","DEFAULT_OPTION_VALUE","DropdownSelect","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","listHeaderComponent","listFooterComponent","hideModal","rest","newOptions","setNewOptions","open","setOpen","selectAll","setSelectAll","selectedItem","setSelectedItem","selectedItems","setSelectedItems","searchValue","setSearchValue","Array","isArray","handleSingleSelection","value","handleMultipleSelections","prevVal","selectedValues","includes","filter","item","push","length","handleSelectAll","filteredOptions","i","getSelectedItemsLabel","selectedLabels","forEach","element","selectedItemLabel","find","onSearch","searchText","toString","toLocaleLowerCase","trim","regexFilter","RegExp","searchResults","toLowerCase","search","handleToggleModal","primary","gray","text","styles","optionsContainerStyle","create","paddingHorizontal","paddingVertical","flexDirection"],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { TouchableOpacity, StyleSheet, View } from 'react-native';\nimport Dropdown from './components/Dropdown/Dropdown';\nimport DropdownList from './components/Dropdown/DropdownList';\nimport CustomModal from './components/CustomModal';\nimport { Input } from './components/Input';\nimport CheckBox from './components/CheckBox';\nimport { colors } from './styles/colors';\nimport { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';\nimport type { DropdownProps } from './types/index.types';\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,\n checkboxStyle,\n checkboxLabelStyle,\n listHeaderComponent,\n listFooterComponent,\n hideModal = false,\n ...rest\n}) => {\n const [newOptions, setNewOptions] = useState<any[]>([]);\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\n useEffect(() => {\n if (options) {\n setNewOptions(options);\n }\n }, [options]);\n\n useEffect(() => {\n isMultiple\n ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : [])\n : setSelectedItem(selectedValue);\n }, [selectedValue, isMultiple, onValueChange]);\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: any) => {\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: any) => {\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\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n\n //select all checkbox should not be checked if the list contains disabled values\n if (\n options.filter((item) => !item.disabled).length ===\n selectedValues.length\n ) {\n setSelectAll(true);\n } else {\n setSelectAll(false);\n }\n return selectedValues;\n });\n };\n\n const handleSelectAll = () => {\n setSelectAll((prevVal) => {\n const selectedValues = [];\n const filteredOptions = newOptions.filter((item) => !item.disabled); //don't select disabled items\n if (!prevVal) {\n for (let i = 0; i < filteredOptions.length; i++) {\n selectedValues.push(filteredOptions[i][optionValue]);\n }\n }\n\n setSelectedItems(selectedValues);\n onValueChange(selectedValues); //send value to parent\n return !prevVal;\n });\n };\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple && Array.isArray(selectedItems)) {\n let selectedLabels: Array<string> = [];\n selectedItems?.forEach((element: any) => {\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) => item[optionValue ?? DEFAULT_OPTION_VALUE] === element\n )?.[optionLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel =\n options &&\n options.find(\n (item: any) =>\n item[optionValue ?? DEFAULT_OPTION_VALUE] === selectedItem\n );\n return selectedItemLabel?.[optionLabel ?? DEFAULT_OPTION_LABEL];\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 const searchResults = options.filter((item: any) => {\n if (\n item[optionLabel ?? DEFAULT_OPTION_LABEL]\n .toString()\n .toLowerCase()\n .search(regexFilter) !== -1 ||\n item[optionValue ?? DEFAULT_OPTION_VALUE]\n .toString(regexFilter)\n .toLowerCase()\n .search(regexFilter) !== -1\n ) {\n return item;\n }\n });\n\n setNewOptions(searchResults);\n };\n\n /*===========================================\n * Modal\n *==========================================*/\n const handleToggleModal = () => {\n setOpen(!open);\n setSearchValue('');\n setNewOptions(options);\n };\n\n useEffect(() => {\n if (hideModal) {\n setOpen(false);\n }\n }, [hideModal]);\n\n let primary = primaryColor || colors.gray;\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 {...rest}\n />\n <CustomModal\n open={open}\n handleToggleModal={handleToggleModal}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainerStyle={modalOptionsContainerStyle}\n onRequestClose={() => {}}\n >\n <DropdownList\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 && newOptions.length > 1 && (\n <View style={styles.optionsContainerStyle}>\n <TouchableOpacity onPress={() => {}}>\n <CheckBox\n value={selectAll}\n label={selectAll ? 'Clear all' : 'Select all'}\n onChange={() => handleSelectAll()}\n primaryColor={primary}\n checkboxSize={checkboxSize}\n checkboxStyle={checkboxStyle}\n checkboxLabelStyle={checkboxLabelStyle}\n />\n </TouchableOpacity>\n </View>\n )}\n </>\n }\n ListFooterComponent={listFooterComponent}\n options={newOptions}\n optionLabel={optionLabel}\n optionValue={optionValue}\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 />\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"]}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import type { DropdownProps } from './types/index.types';
3
- export declare const DropdownSelect: ({ 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, listHeaderComponent, listFooterComponent, ...rest }: DropdownProps) => JSX.Element;
3
+ export declare const DropdownSelect: React.FC<DropdownProps>;
4
4
  export default DropdownSelect;
@@ -9,7 +9,7 @@ export declare type DropdownProps = {
9
9
  optionLabel: string;
10
10
  optionValue: string;
11
11
  onValueChange: Function;
12
- selectedValue?: string | any[] | null;
12
+ selectedValue?: string | boolean | number | string[] | boolean[] | number[] | null;
13
13
  isMultiple?: boolean;
14
14
  isSearchable?: boolean;
15
15
  dropdownIcon?: React.ReactNode;
@@ -33,4 +33,5 @@ export declare type DropdownProps = {
33
33
  placeholderStyle?: TextStyle;
34
34
  listHeaderComponent?: React.ReactNode;
35
35
  listFooterComponent?: React.ReactNode;
36
+ hideModal?: boolean;
36
37
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-input-select",
3
- "version": "0.31.0",
3
+ "version": "0.33.0",
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",
@@ -58,7 +58,7 @@ const DropdownSelectedItemsView = ({
58
58
  onStartShouldSetResponder={() => true}
59
59
  >
60
60
  {isMultiple ? (
61
- getSelectedItemsLabel().map((item: any, i: Number) => (
61
+ getSelectedItemsLabel()?.map((item: any, i: Number) => (
62
62
  <TouchableOpacity
63
63
  onPress={() => handleToggleModal()}
64
64
  key={`react-native-input-select-${Math.random()}-${i}`}
@@ -104,7 +104,11 @@ const DropdownSelectedItemsView = ({
104
104
 
105
105
  const styles = StyleSheet.create({
106
106
  iconStyle: { position: 'absolute', right: 25, top: 25 },
107
- selectedItemsContainer: { flexDirection: 'row', flexWrap: 'nowrap' },
107
+ selectedItemsContainer: {
108
+ flexDirection: 'row',
109
+ flexWrap: 'nowrap',
110
+ alignItems: 'center',
111
+ },
108
112
  selectedItems: {
109
113
  color: colors.white,
110
114
  paddingHorizontal: 10,
package/src/index.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { TouchableOpacity, StyleSheet, View } from 'react-native';
3
3
  import Dropdown from './components/Dropdown/Dropdown';
4
4
  import DropdownList from './components/Dropdown/DropdownList';
@@ -9,7 +9,7 @@ import { colors } from './styles/colors';
9
9
  import { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';
10
10
  import type { DropdownProps } from './types/index.types';
11
11
 
12
- export const DropdownSelect = ({
12
+ export const DropdownSelect: React.FC<DropdownProps> = ({
13
13
  placeholder,
14
14
  label,
15
15
  error,
@@ -42,20 +42,27 @@ export const DropdownSelect = ({
42
42
  checkboxLabelStyle,
43
43
  listHeaderComponent,
44
44
  listFooterComponent,
45
+ hideModal = false,
45
46
  ...rest
46
- }: DropdownProps) => {
47
- const [newOptions, setNewOptions] = useState(options ? options : []);
48
- const [open, setOpen] = useState(false);
49
- const [selectAll, setSelectAll] = useState(false);
50
- const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection
51
- const [selectedItems, setSelectedItems] = useState(
52
- Array.isArray(selectedValue)
53
- ? selectedValue
54
- : selectedValue === '' || selectedValue === undefined
55
- ? []
56
- : [selectedValue]
57
- ); //for multiple selection
58
- const [searchValue, setSearchValue] = useState('');
47
+ }) => {
48
+ const [newOptions, setNewOptions] = useState<any[]>([]);
49
+ const [open, setOpen] = useState<boolean>(false);
50
+ const [selectAll, setSelectAll] = useState<boolean>(false);
51
+ const [selectedItem, setSelectedItem] = useState<any>(''); //for single selection
52
+ const [selectedItems, setSelectedItems] = useState<any[]>([]); //for multiple selection
53
+ const [searchValue, setSearchValue] = useState<string>('');
54
+
55
+ useEffect(() => {
56
+ if (options) {
57
+ setNewOptions(options);
58
+ }
59
+ }, [options]);
60
+
61
+ useEffect(() => {
62
+ isMultiple
63
+ ? setSelectedItems(Array.isArray(selectedValue) ? selectedValue : [])
64
+ : setSelectedItem(selectedValue);
65
+ }, [selectedValue, isMultiple, onValueChange]);
59
66
 
60
67
  /*===========================================
61
68
  * Selection handlers
@@ -63,6 +70,7 @@ export const DropdownSelect = ({
63
70
  const handleSingleSelection = (value: any) => {
64
71
  if (selectedItem === value) {
65
72
  setSelectedItem(null);
73
+ onValueChange(null); //send value to parent
66
74
  } else {
67
75
  setSelectedItem(value);
68
76
  onValueChange(value); //send value to parent
@@ -71,23 +79,29 @@ export const DropdownSelect = ({
71
79
  };
72
80
 
73
81
  const handleMultipleSelections = (value: any) => {
74
- let selectedValues = [...selectedItems];
82
+ setSelectedItems((prevVal) => {
83
+ let selectedValues = [...prevVal];
75
84
 
76
- if (selectedValues.includes(value)) {
77
- selectedValues = selectedValues.filter((item) => item !== value);
78
- } else {
79
- selectedValues.push(value);
80
- }
81
- setSelectedItems(selectedValues);
82
- onValueChange(selectedValues); //send value to parent
85
+ if (selectedValues?.includes(value)) {
86
+ selectedValues = selectedValues.filter((item) => item !== value);
87
+ } else {
88
+ selectedValues.push(value);
89
+ }
83
90
 
84
- if (
85
- options.filter((item) => !item.disabled).length === selectedValues.length
86
- ) {
87
- setSelectAll(true);
88
- } else {
89
- setSelectAll(false);
90
- }
91
+ setSelectedItems(selectedValues);
92
+ onValueChange(selectedValues); //send value to parent
93
+
94
+ //select all checkbox should not be checked if the list contains disabled values
95
+ if (
96
+ options.filter((item) => !item.disabled).length ===
97
+ selectedValues.length
98
+ ) {
99
+ setSelectAll(true);
100
+ } else {
101
+ setSelectAll(false);
102
+ }
103
+ return selectedValues;
104
+ });
91
105
  };
92
106
 
93
107
  const handleSelectAll = () => {
@@ -110,18 +124,16 @@ export const DropdownSelect = ({
110
124
  * Get label handler
111
125
  *==========================================*/
112
126
  const getSelectedItemsLabel = () => {
113
- if (isMultiple) {
127
+ if (isMultiple && Array.isArray(selectedItems)) {
114
128
  let selectedLabels: Array<string> = [];
115
- selectedItems &&
116
- selectedItems.forEach((element) => {
117
- let selectedItemLabel =
118
- options &&
119
- options.find(
120
- (item: any) =>
121
- item[optionValue ?? DEFAULT_OPTION_VALUE] === element
122
- )?.[optionLabel];
123
- selectedLabels.push(selectedItemLabel);
124
- });
129
+ selectedItems?.forEach((element: any) => {
130
+ let selectedItemLabel =
131
+ options &&
132
+ options.find(
133
+ (item: any) => item[optionValue ?? DEFAULT_OPTION_VALUE] === element
134
+ )?.[optionLabel];
135
+ selectedLabels.push(selectedItemLabel);
136
+ });
125
137
  return selectedLabels;
126
138
  }
127
139
 
@@ -171,6 +183,12 @@ export const DropdownSelect = ({
171
183
  setNewOptions(options);
172
184
  };
173
185
 
186
+ useEffect(() => {
187
+ if (hideModal) {
188
+ setOpen(false);
189
+ }
190
+ }, [hideModal]);
191
+
174
192
  let primary = primaryColor || colors.gray;
175
193
  return (
176
194
  <>
@@ -9,7 +9,14 @@ export type DropdownProps = {
9
9
  optionLabel: string;
10
10
  optionValue: string;
11
11
  onValueChange: Function;
12
- selectedValue?: string | any[] | null;
12
+ selectedValue?:
13
+ | string
14
+ | boolean
15
+ | number
16
+ | string[]
17
+ | boolean[]
18
+ | number[]
19
+ | null;
13
20
  isMultiple?: boolean;
14
21
  isSearchable?: boolean;
15
22
  dropdownIcon?: React.ReactNode;
@@ -33,4 +40,5 @@ export type DropdownProps = {
33
40
  placeholderStyle?: TextStyle;
34
41
  listHeaderComponent?: React.ReactNode;
35
42
  listFooterComponent?: React.ReactNode;
43
+ hideModal?: boolean;
36
44
  };