react-native-input-select 0.30.0 → 0.31.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.
- package/README.md +66 -37
- package/lib/commonjs/index.js +2 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/types/index.types.d.ts +1 -1
- package/package.json +1 -1
- package/src/index.tsx +2 -2
- package/src/types/index.types.ts +1 -1
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ export default function App() {
|
|
|
57
57
|
```js
|
|
58
58
|
import React from 'react';
|
|
59
59
|
import Dropdown from 'react-native-input-select';
|
|
60
|
+
import { View, StyleSheet, Text, Button, Alert, Image } from 'react-native';
|
|
60
61
|
|
|
61
62
|
export default function App() {
|
|
62
63
|
const [country, setCountry] = React.useState();
|
|
@@ -96,6 +97,15 @@ export default function App() {
|
|
|
96
97
|
padding: 10,
|
|
97
98
|
}}
|
|
98
99
|
checkboxLabelStyle={{ color: 'red', fontSize: 30 }}
|
|
100
|
+
dropdownIcon={
|
|
101
|
+
<Image
|
|
102
|
+
style={styles.tinyLogo}
|
|
103
|
+
source={{
|
|
104
|
+
uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAEXRFWHRTb2Z0d2FyZQBwbmdjcnVzaEB1SfMAAABQSURBVGje7dSxCQBACARB+2/ab8BEeQNhFi6WSYzYLYudDQYGBgYGBgYGBgYGBgYGBgZmcvDqYGBgmhivGQYGBgYGBgYGBgYGBgYGBgbmQw+P/eMrC5UTVAAAAABJRU5ErkJggg==',
|
|
105
|
+
}}
|
|
106
|
+
/>
|
|
107
|
+
}
|
|
108
|
+
dropdownIconStyle={{ top: 20, right: 20 }}
|
|
99
109
|
listHeaderComponent={
|
|
100
110
|
<View style={styles.customComponentContainer}>
|
|
101
111
|
<Text style={styles.text}>
|
|
@@ -119,9 +129,28 @@ export default function App() {
|
|
|
119
129
|
<Text>You can add any component to the bottom of this list</Text>
|
|
120
130
|
</View>
|
|
121
131
|
}
|
|
132
|
+
modalOptionsContainerStyle={{ padding: 10, backgroundColor: 'cyan' }}
|
|
122
133
|
/>
|
|
123
134
|
);
|
|
124
135
|
}
|
|
136
|
+
|
|
137
|
+
const styles = StyleSheet.create({
|
|
138
|
+
customComponentContainer: {
|
|
139
|
+
paddingHorizontal: 20,
|
|
140
|
+
paddingVertical: 10,
|
|
141
|
+
},
|
|
142
|
+
text: {
|
|
143
|
+
marginBottom: 20,
|
|
144
|
+
},
|
|
145
|
+
fixToText: {
|
|
146
|
+
flexDirection: 'row',
|
|
147
|
+
justifyContent: 'space-between',
|
|
148
|
+
},
|
|
149
|
+
tinyLogo: {
|
|
150
|
+
width: 20,
|
|
151
|
+
height: 20,
|
|
152
|
+
},
|
|
153
|
+
});
|
|
125
154
|
```
|
|
126
155
|
|
|
127
156
|
For more examples visit our [wiki page](https://github.com/azeezat/react-native-select/wiki)
|
|
@@ -135,46 +164,46 @@ For more examples visit our [wiki page](https://github.com/azeezat/react-native-
|
|
|
135
164
|
|
|
136
165
|
# Android
|
|
137
166
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
| <img width="456" alt="Screenshot 2023-
|
|
167
|
+
| | | |
|
|
168
|
+
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
169
|
+
| <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"> |
|
|
141
170
|
|
|
142
171
|
## Props
|
|
143
172
|
|
|
144
|
-
| Proptypes
|
|
145
|
-
|
|
|
146
|
-
| label
|
|
147
|
-
| placeholder
|
|
148
|
-
| options
|
|
149
|
-
| optionLabel
|
|
150
|
-
| optionValue
|
|
151
|
-
| error
|
|
152
|
-
| helperText
|
|
153
|
-
| selectedValue
|
|
154
|
-
| onValueChange
|
|
155
|
-
| isMultiple
|
|
156
|
-
| isSearchable
|
|
157
|
-
| disabled
|
|
158
|
-
| dropdownIcon
|
|
159
|
-
| labelStyle
|
|
160
|
-
| placeholderStyle
|
|
161
|
-
| dropdownStyle
|
|
162
|
-
| dropdownContainerStyle
|
|
163
|
-
| dropdownIconStyle
|
|
164
|
-
| searchInputStyle
|
|
165
|
-
| selectedItemStyle
|
|
166
|
-
| multipleSelectedItemStyle
|
|
167
|
-
| modalBackgroundStyle
|
|
168
|
-
|
|
|
169
|
-
| dropdownErrorStyle
|
|
170
|
-
| dropdownErrorTextStyle
|
|
171
|
-
| dropdownHelperTextStyle
|
|
172
|
-
| primaryColor
|
|
173
|
-
| checkboxSize
|
|
174
|
-
| checkboxStyle
|
|
175
|
-
| checkboxLabelStyle
|
|
176
|
-
| listHeaderComponent
|
|
177
|
-
| listFooterComponent
|
|
173
|
+
| Proptypes | Datatype | Example |
|
|
174
|
+
| -------------------------- | ------------------- | -------------------------------------------------------------------- |
|
|
175
|
+
| label | `string` | `Countries` |
|
|
176
|
+
| placeholder | `string` | `Select a country` |
|
|
177
|
+
| options | `Array` | `[{ name: 'Nigeria', code: 'NG' }, { name: 'Albania', code: 'AL' }]` |
|
|
178
|
+
| optionLabel | `string` | `name` |
|
|
179
|
+
| optionValue | `string` | `code` |
|
|
180
|
+
| error | `string` | `This is a requiredfield` |
|
|
181
|
+
| helperText | `string` | `Only few countries are listed` |
|
|
182
|
+
| selectedValue | `string` or `Array` | `AL` or `[AL, AX]` |
|
|
183
|
+
| onValueChange | `function` | `()=>{}` |
|
|
184
|
+
| isMultiple | `Boolean` | `true` |
|
|
185
|
+
| isSearchable | `Boolean` | `true` |
|
|
186
|
+
| disabled | `Boolean` | `true` |
|
|
187
|
+
| dropdownIcon | `React Component` | `Image` or `<Text> Show <Text>` |
|
|
188
|
+
| labelStyle | `Object` | `{color: 'red', fontSize: 15, fontWeight: '500'}` |
|
|
189
|
+
| placeholderStyle | `Object` | `{color: 'blue', fontSize: 15, fontWeight: '500'}` |
|
|
190
|
+
| dropdownStyle | `Object` | `{borderColor: 'blue', margin: 5, borderWidth:0 ...}` |
|
|
191
|
+
| dropdownContainerStyle | `Object` | `{backgroundColor: 'red', width: '30%', ...}` |
|
|
192
|
+
| dropdownIconStyle | `Object` | `{top: 10 , right: 10, ...}` |
|
|
193
|
+
| searchInputStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
|
|
194
|
+
| selectedItemStyle | `Object` | `{fontWeight: '600', color: 'yellow', ...}` |
|
|
195
|
+
| multipleSelectedItemStyle | `Object` | `{backgroundColor: 'red', color: 'yellow', ...}` |
|
|
196
|
+
| modalBackgroundStyle | `Object` | `{backgroundColor: 'rgba(196, 198, 246, 0.5)'}` |
|
|
197
|
+
| modalOptionsContainerStyle | `Object` | `{padding: 10, backgroundColor: 'cyan',}` |
|
|
198
|
+
| dropdownErrorStyle | `Object` | `{borderWidth: 2, borderStyle: 'solid'}` |
|
|
199
|
+
| dropdownErrorTextStyle | `Object` | `{color: 'red', fontWeight:'500'}` |
|
|
200
|
+
| dropdownHelperTextStyle | `Object` | `{color: 'green', fontWeight:'500'}` |
|
|
201
|
+
| primaryColor | `string` | `blue` |
|
|
202
|
+
| checkboxSize | `number` | `20` |
|
|
203
|
+
| checkboxStyle | `Object` | `{backgroundColor: 'blue', borderRadius: 30, padding: 10}` |
|
|
204
|
+
| checkboxLabelStyle | `Object` | `{color: 'red', fontWeight:'500'}` |
|
|
205
|
+
| listHeaderComponent | `React Component` | `<Text> You can add any component here` |
|
|
206
|
+
| listFooterComponent | `React Component` | `<Text> You can add any component here` |
|
|
178
207
|
|
|
179
208
|
## Contributing
|
|
180
209
|
|
package/lib/commonjs/index.js
CHANGED
|
@@ -56,7 +56,7 @@ const DropdownSelect = _ref => {
|
|
|
56
56
|
selectedItemStyle,
|
|
57
57
|
multipleSelectedItemStyle,
|
|
58
58
|
modalBackgroundStyle,
|
|
59
|
-
|
|
59
|
+
modalOptionsContainerStyle,
|
|
60
60
|
searchInputStyle,
|
|
61
61
|
primaryColor,
|
|
62
62
|
disabled,
|
|
@@ -201,7 +201,7 @@ const DropdownSelect = _ref => {
|
|
|
201
201
|
open: open,
|
|
202
202
|
handleToggleModal: handleToggleModal,
|
|
203
203
|
modalBackgroundStyle: modalBackgroundStyle,
|
|
204
|
-
|
|
204
|
+
modalOptionsContainerStyle: modalOptionsContainerStyle,
|
|
205
205
|
onRequestClose: () => {}
|
|
206
206
|
}, /*#__PURE__*/_react.default.createElement(_DropdownList.default, {
|
|
207
207
|
ListHeaderComponent: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isSearchable && /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
@@ -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","modalOptionsContainer","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 modalOptionsContainer,\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 modalOptionsContainer={modalOptionsContainer}\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","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"]}
|
package/lib/module/index.js
CHANGED
|
@@ -34,7 +34,7 @@ export const DropdownSelect = _ref => {
|
|
|
34
34
|
selectedItemStyle,
|
|
35
35
|
multipleSelectedItemStyle,
|
|
36
36
|
modalBackgroundStyle,
|
|
37
|
-
|
|
37
|
+
modalOptionsContainerStyle,
|
|
38
38
|
searchInputStyle,
|
|
39
39
|
primaryColor,
|
|
40
40
|
disabled,
|
|
@@ -179,7 +179,7 @@ export const DropdownSelect = _ref => {
|
|
|
179
179
|
open: open,
|
|
180
180
|
handleToggleModal: handleToggleModal,
|
|
181
181
|
modalBackgroundStyle: modalBackgroundStyle,
|
|
182
|
-
|
|
182
|
+
modalOptionsContainerStyle: modalOptionsContainerStyle,
|
|
183
183
|
onRequestClose: () => {}
|
|
184
184
|
}, /*#__PURE__*/React.createElement(DropdownList, {
|
|
185
185
|
ListHeaderComponent: /*#__PURE__*/React.createElement(React.Fragment, null, isSearchable && /*#__PURE__*/React.createElement(Input, {
|
package/lib/module/index.js.map
CHANGED
|
@@ -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","modalOptionsContainer","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 modalOptionsContainer,\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 modalOptionsContainer={modalOptionsContainer}\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","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,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="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,
|
|
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;
|
|
4
4
|
export default DropdownSelect;
|
|
@@ -23,7 +23,7 @@ export declare type DropdownProps = {
|
|
|
23
23
|
selectedItemStyle?: TextStyle;
|
|
24
24
|
multipleSelectedItemStyle?: ViewStyle;
|
|
25
25
|
modalBackgroundStyle?: ViewStyle;
|
|
26
|
-
|
|
26
|
+
modalOptionsContainerStyle?: ViewStyle;
|
|
27
27
|
searchInputStyle?: ViewStyle;
|
|
28
28
|
primaryColor?: ColorValue;
|
|
29
29
|
disabled?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-input-select",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.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",
|
package/src/index.tsx
CHANGED
|
@@ -33,7 +33,7 @@ export const DropdownSelect = ({
|
|
|
33
33
|
selectedItemStyle,
|
|
34
34
|
multipleSelectedItemStyle,
|
|
35
35
|
modalBackgroundStyle,
|
|
36
|
-
|
|
36
|
+
modalOptionsContainerStyle,
|
|
37
37
|
searchInputStyle,
|
|
38
38
|
primaryColor,
|
|
39
39
|
disabled,
|
|
@@ -203,7 +203,7 @@ export const DropdownSelect = ({
|
|
|
203
203
|
open={open}
|
|
204
204
|
handleToggleModal={handleToggleModal}
|
|
205
205
|
modalBackgroundStyle={modalBackgroundStyle}
|
|
206
|
-
|
|
206
|
+
modalOptionsContainerStyle={modalOptionsContainerStyle}
|
|
207
207
|
onRequestClose={() => {}}
|
|
208
208
|
>
|
|
209
209
|
<DropdownList
|
package/src/types/index.types.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type DropdownProps = {
|
|
|
23
23
|
selectedItemStyle?: TextStyle;
|
|
24
24
|
multipleSelectedItemStyle?: ViewStyle;
|
|
25
25
|
modalBackgroundStyle?: ViewStyle;
|
|
26
|
-
|
|
26
|
+
modalOptionsContainerStyle?: ViewStyle;
|
|
27
27
|
searchInputStyle?: ViewStyle;
|
|
28
28
|
primaryColor?: ColorValue;
|
|
29
29
|
disabled?: boolean;
|