react-native-input-select 0.18.0 → 0.20.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 +15 -9
- package/lib/commonjs/asset/check.png +0 -0
- package/lib/commonjs/components/CheckBox/index.js +66 -0
- package/lib/commonjs/components/CheckBox/index.js.map +1 -0
- package/lib/commonjs/components/CheckBox/types.js +6 -0
- package/lib/commonjs/components/CheckBox/types.js.map +1 -0
- package/lib/commonjs/{Modal.js → components/CustomModal/index.js} +2 -2
- package/lib/commonjs/{Modal.js.map → components/CustomModal/index.js.map} +1 -1
- package/lib/commonjs/components/Dropdown/Dropdown.js +99 -0
- package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -0
- package/lib/commonjs/{DropdownList.js → components/Dropdown/DropdownList.js} +13 -4
- package/lib/commonjs/components/Dropdown/DropdownList.js.map +1 -0
- package/lib/commonjs/{DropdownListItem.js → components/Dropdown/DropdownListItem.js} +13 -20
- package/lib/commonjs/components/Dropdown/DropdownListItem.js.map +1 -0
- package/lib/commonjs/{Dropdown.js → components/Dropdown/SelectedItemsView.js} +10 -50
- package/lib/commonjs/components/Dropdown/SelectedItemsView.js.map +1 -0
- package/lib/commonjs/{Input.js → components/Input/index.js} +2 -2
- package/lib/commonjs/{Input.js.map → components/Input/index.js.map} +1 -1
- package/lib/commonjs/constants/index.js +3 -1
- package/lib/commonjs/constants/index.js.map +1 -1
- package/lib/commonjs/index.js +21 -10
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/asset/check.png +0 -0
- package/lib/module/components/CheckBox/index.js +53 -0
- package/lib/module/components/CheckBox/index.js.map +1 -0
- package/lib/module/components/CheckBox/types.js +2 -0
- package/lib/module/components/CheckBox/types.js.map +1 -0
- package/lib/module/{Modal.js → components/CustomModal/index.js} +2 -2
- package/lib/module/{Modal.js.map → components/CustomModal/index.js.map} +1 -1
- package/lib/module/components/Dropdown/Dropdown.js +84 -0
- package/lib/module/components/Dropdown/Dropdown.js.map +1 -0
- package/lib/module/{DropdownList.js → components/Dropdown/DropdownList.js} +13 -4
- package/lib/module/components/Dropdown/DropdownList.js.map +1 -0
- package/lib/module/{DropdownListItem.js → components/Dropdown/DropdownListItem.js} +13 -20
- package/lib/module/components/Dropdown/DropdownListItem.js.map +1 -0
- package/lib/module/{Dropdown.js → components/Dropdown/SelectedItemsView.js} +10 -49
- package/lib/module/components/Dropdown/SelectedItemsView.js.map +1 -0
- package/lib/module/{Input.js → components/Input/index.js} +2 -2
- package/lib/module/{Input.js.map → components/Input/index.js.map} +1 -1
- package/lib/module/constants/index.js +1 -0
- package/lib/module/constants/index.js.map +1 -1
- package/lib/module/index.js +19 -9
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/CheckBox/index.d.ts +4 -0
- package/lib/typescript/components/CheckBox/types.d.ts +10 -0
- package/lib/typescript/{Modal.d.ts → components/CustomModal/index.d.ts} +1 -0
- package/lib/typescript/{Dropdown.d.ts → components/Dropdown/Dropdown.d.ts} +1 -0
- package/lib/typescript/{DropdownList.d.ts → components/Dropdown/DropdownList.d.ts} +2 -1
- package/lib/typescript/{DropdownListItem.d.ts → components/Dropdown/DropdownListItem.d.ts} +1 -1
- package/lib/typescript/components/Dropdown/SelectedItemsView.d.ts +3 -0
- package/lib/typescript/{Input.d.ts → components/Input/index.d.ts} +1 -0
- package/lib/typescript/constants/index.d.ts +1 -0
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/types/index.types.d.ts +25 -22
- package/package.json +8 -9
- package/src/asset/check.png +0 -0
- package/src/components/CheckBox/index.tsx +58 -0
- package/src/components/CheckBox/types.ts +11 -0
- package/src/{Modal.tsx → components/CustomModal/index.tsx} +1 -1
- package/src/components/Dropdown/Dropdown.tsx +75 -0
- package/src/{DropdownList.tsx → components/Dropdown/DropdownList.tsx} +10 -1
- package/src/components/Dropdown/DropdownListItem.tsx +50 -0
- package/src/components/Dropdown/SelectedItemsView.tsx +114 -0
- package/src/{Input.tsx → components/Input/index.tsx} +1 -1
- package/src/constants/index.ts +1 -0
- package/src/index.tsx +43 -36
- package/src/types/index.types.ts +25 -22
- package/lib/commonjs/Dropdown.js.map +0 -1
- package/lib/commonjs/DropdownList.js.map +0 -1
- package/lib/commonjs/DropdownListItem.js.map +0 -1
- package/lib/module/Dropdown.js.map +0 -1
- package/lib/module/DropdownList.js.map +0 -1
- package/lib/module/DropdownListItem.js.map +0 -1
- package/src/Dropdown.tsx +0 -145
- package/src/DropdownListItem.tsx +0 -52
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
Pressable,
|
|
6
|
+
ScrollView,
|
|
7
|
+
StyleSheet,
|
|
8
|
+
Image,
|
|
9
|
+
TouchableOpacity,
|
|
10
|
+
} from 'react-native';
|
|
11
|
+
import { colors } from '../../styles/colors';
|
|
12
|
+
import { inputStyles } from '../../styles/input';
|
|
13
|
+
|
|
14
|
+
const SelectedItemsView = ({
|
|
15
|
+
placeholder,
|
|
16
|
+
error,
|
|
17
|
+
getSelectedItemsLabel,
|
|
18
|
+
handleToggleModal,
|
|
19
|
+
isMultiple,
|
|
20
|
+
selectedItem,
|
|
21
|
+
selectedItems,
|
|
22
|
+
dropdownStyle,
|
|
23
|
+
selectedItemStyle,
|
|
24
|
+
multipleSelectedItemStyle,
|
|
25
|
+
dropdownErrorStyle,
|
|
26
|
+
primaryColor,
|
|
27
|
+
disabled,
|
|
28
|
+
}: any) => {
|
|
29
|
+
return (
|
|
30
|
+
<Pressable
|
|
31
|
+
onPress={() => handleToggleModal()}
|
|
32
|
+
style={({ pressed }) => [
|
|
33
|
+
pressed && {
|
|
34
|
+
...inputStyles.inputFocusState,
|
|
35
|
+
borderColor: primaryColor,
|
|
36
|
+
},
|
|
37
|
+
inputStyles.input,
|
|
38
|
+
dropdownStyle,
|
|
39
|
+
error && //this must be last
|
|
40
|
+
error !== '' &&
|
|
41
|
+
!pressed && {
|
|
42
|
+
...inputStyles.inputFocusErrorState,
|
|
43
|
+
...dropdownErrorStyle,
|
|
44
|
+
},
|
|
45
|
+
]}
|
|
46
|
+
disabled={disabled}
|
|
47
|
+
>
|
|
48
|
+
<ScrollView
|
|
49
|
+
horizontal
|
|
50
|
+
alwaysBounceHorizontal
|
|
51
|
+
showsHorizontalScrollIndicator={false}
|
|
52
|
+
>
|
|
53
|
+
<View
|
|
54
|
+
style={styles.selectedItemsContainer}
|
|
55
|
+
onStartShouldSetResponder={() => true}
|
|
56
|
+
>
|
|
57
|
+
{isMultiple ? (
|
|
58
|
+
getSelectedItemsLabel().map((item: any, i: Number) => (
|
|
59
|
+
<TouchableOpacity
|
|
60
|
+
onPress={() => handleToggleModal()}
|
|
61
|
+
key={`react-native-input-select-${Math.random()}-${i}`}
|
|
62
|
+
disabled={disabled}
|
|
63
|
+
>
|
|
64
|
+
<Text
|
|
65
|
+
style={[
|
|
66
|
+
styles.selectedItems,
|
|
67
|
+
{ backgroundColor: primaryColor },
|
|
68
|
+
multipleSelectedItemStyle,
|
|
69
|
+
]}
|
|
70
|
+
>
|
|
71
|
+
{item}
|
|
72
|
+
</Text>
|
|
73
|
+
</TouchableOpacity>
|
|
74
|
+
))
|
|
75
|
+
) : (
|
|
76
|
+
<TouchableOpacity
|
|
77
|
+
onPress={() => handleToggleModal()}
|
|
78
|
+
disabled={disabled}
|
|
79
|
+
>
|
|
80
|
+
<Text style={[styles.blackText, selectedItemStyle]}>
|
|
81
|
+
{getSelectedItemsLabel()}
|
|
82
|
+
</Text>
|
|
83
|
+
</TouchableOpacity>
|
|
84
|
+
)}
|
|
85
|
+
</View>
|
|
86
|
+
|
|
87
|
+
{!selectedItem && selectedItems?.length === 0 && (
|
|
88
|
+
<Text style={styles.blackText}>
|
|
89
|
+
{placeholder ?? 'Select an option'}
|
|
90
|
+
</Text>
|
|
91
|
+
)}
|
|
92
|
+
</ScrollView>
|
|
93
|
+
<View style={styles.iconStyle}>
|
|
94
|
+
<Image source={require('../../asset/arrow-down.png')} />
|
|
95
|
+
</View>
|
|
96
|
+
</Pressable>
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const styles = StyleSheet.create({
|
|
101
|
+
iconStyle: { position: 'absolute', right: 25, top: 25 },
|
|
102
|
+
selectedItemsContainer: { flexDirection: 'row', flexWrap: 'nowrap' },
|
|
103
|
+
selectedItems: {
|
|
104
|
+
color: colors.white,
|
|
105
|
+
paddingHorizontal: 10,
|
|
106
|
+
paddingVertical: 5,
|
|
107
|
+
borderRadius: 10,
|
|
108
|
+
backgroundColor: colors.primary,
|
|
109
|
+
marginRight: 10,
|
|
110
|
+
},
|
|
111
|
+
blackText: { color: colors.black },
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
export default SelectedItemsView;
|
package/src/constants/index.ts
CHANGED
package/src/index.tsx
CHANGED
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import Dropdown from './Dropdown';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import Dropdown from './components/Dropdown/Dropdown';
|
|
3
|
+
import DropdownList from './components/Dropdown/DropdownList';
|
|
4
|
+
import CustomModal from './components/CustomModal';
|
|
5
5
|
import { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';
|
|
6
6
|
import type { DropdownProps } from './types/index.types';
|
|
7
|
-
import { Input } from './Input';
|
|
7
|
+
import { Input } from './components/Input';
|
|
8
|
+
import { colors } from './styles/colors';
|
|
8
9
|
|
|
9
|
-
export const DropdownSelect = (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
10
|
+
export const DropdownSelect = ({
|
|
11
|
+
placeholder,
|
|
12
|
+
label,
|
|
13
|
+
error,
|
|
14
|
+
helperText,
|
|
15
|
+
options,
|
|
16
|
+
optionLabel,
|
|
17
|
+
optionValue,
|
|
18
|
+
onValueChange,
|
|
19
|
+
selectedValue,
|
|
20
|
+
isMultiple,
|
|
21
|
+
isSearchable,
|
|
22
|
+
labelStyle,
|
|
23
|
+
dropdownStyle,
|
|
24
|
+
dropdownContainerStyle,
|
|
25
|
+
dropdownErrorStyle,
|
|
26
|
+
dropdownErrorTextStyle,
|
|
27
|
+
dropdownHelperTextStyle,
|
|
28
|
+
selectedItemStyle,
|
|
29
|
+
multipleSelectedItemStyle,
|
|
30
|
+
modalBackgroundStyle,
|
|
31
|
+
modalOptionsContainer,
|
|
32
|
+
searchInputStyle,
|
|
33
|
+
primaryColor,
|
|
34
|
+
disabled,
|
|
35
|
+
checkboxSize,
|
|
36
|
+
checkboxStyle,
|
|
37
|
+
checkboxLabelStyle,
|
|
38
|
+
...rest
|
|
39
|
+
}: DropdownProps) => {
|
|
38
40
|
const [newOptions, setNewOptions] = useState(options ? options : []);
|
|
39
41
|
const [open, setOpen] = useState(false);
|
|
40
42
|
const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection
|
|
@@ -69,6 +71,7 @@ export const DropdownSelect = (
|
|
|
69
71
|
selectedValues.push(value);
|
|
70
72
|
}
|
|
71
73
|
setSelectedItems(selectedValues);
|
|
74
|
+
onValueChange(selectedValues); //send value to parent
|
|
72
75
|
};
|
|
73
76
|
|
|
74
77
|
/*===========================================
|
|
@@ -136,6 +139,7 @@ export const DropdownSelect = (
|
|
|
136
139
|
setNewOptions(options);
|
|
137
140
|
};
|
|
138
141
|
|
|
142
|
+
let primary = primaryColor || colors.gray;
|
|
139
143
|
return (
|
|
140
144
|
<>
|
|
141
145
|
<Dropdown
|
|
@@ -156,7 +160,7 @@ export const DropdownSelect = (
|
|
|
156
160
|
selectedItemStyle={selectedItemStyle}
|
|
157
161
|
multipleSelectedItemStyle={multipleSelectedItemStyle}
|
|
158
162
|
isMultiple={isMultiple}
|
|
159
|
-
primaryColor={
|
|
163
|
+
primaryColor={primary}
|
|
160
164
|
disabled={disabled}
|
|
161
165
|
{...rest}
|
|
162
166
|
/>
|
|
@@ -172,7 +176,7 @@ export const DropdownSelect = (
|
|
|
172
176
|
value={searchValue}
|
|
173
177
|
onChangeText={(text: string) => onSearch(text)}
|
|
174
178
|
style={searchInputStyle}
|
|
175
|
-
primaryColor={
|
|
179
|
+
primaryColor={primary}
|
|
176
180
|
/>
|
|
177
181
|
)}
|
|
178
182
|
<DropdownList
|
|
@@ -184,7 +188,10 @@ export const DropdownSelect = (
|
|
|
184
188
|
selectedItem={selectedItem}
|
|
185
189
|
handleMultipleSelections={handleMultipleSelections}
|
|
186
190
|
handleSingleSelection={handleSingleSelection}
|
|
187
|
-
primaryColor={
|
|
191
|
+
primaryColor={primary}
|
|
192
|
+
checkboxSize={checkboxSize}
|
|
193
|
+
checkboxStyle={checkboxStyle}
|
|
194
|
+
checkboxLabelStyle={checkboxLabelStyle}
|
|
188
195
|
/>
|
|
189
196
|
</CustomModal>
|
|
190
197
|
</>
|
package/src/types/index.types.ts
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ViewStyle, ColorValue, TextStyle } from 'react-native';
|
|
2
2
|
|
|
3
3
|
export type DropdownProps = {
|
|
4
|
-
placeholder
|
|
5
|
-
label
|
|
6
|
-
error
|
|
7
|
-
helperText
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
helperText?: string;
|
|
8
8
|
options: any[];
|
|
9
9
|
optionLabel: string;
|
|
10
|
-
optionValue
|
|
10
|
+
optionValue?: string;
|
|
11
11
|
onValueChange: Function;
|
|
12
|
-
selectedValue
|
|
13
|
-
isMultiple
|
|
14
|
-
isSearchable
|
|
15
|
-
labelStyle
|
|
16
|
-
dropdownStyle
|
|
17
|
-
dropdownContainerStyle
|
|
18
|
-
dropdownErrorStyle
|
|
19
|
-
dropdownErrorTextStyle
|
|
20
|
-
dropdownHelperTextStyle
|
|
21
|
-
selectedItemStyle
|
|
22
|
-
multipleSelectedItemStyle
|
|
23
|
-
modalBackgroundStyle
|
|
24
|
-
modalOptionsContainer
|
|
25
|
-
searchInputStyle
|
|
26
|
-
primaryColor
|
|
27
|
-
disabled
|
|
12
|
+
selectedValue?: string | any[] | null;
|
|
13
|
+
isMultiple?: boolean;
|
|
14
|
+
isSearchable?: boolean;
|
|
15
|
+
labelStyle?: TextStyle;
|
|
16
|
+
dropdownStyle?: ViewStyle;
|
|
17
|
+
dropdownContainerStyle?: ViewStyle;
|
|
18
|
+
dropdownErrorStyle?: ViewStyle;
|
|
19
|
+
dropdownErrorTextStyle?: TextStyle;
|
|
20
|
+
dropdownHelperTextStyle?: TextStyle;
|
|
21
|
+
selectedItemStyle?: ViewStyle;
|
|
22
|
+
multipleSelectedItemStyle?: ViewStyle;
|
|
23
|
+
modalBackgroundStyle?: ViewStyle;
|
|
24
|
+
modalOptionsContainer?: ViewStyle;
|
|
25
|
+
searchInputStyle?: ViewStyle;
|
|
26
|
+
primaryColor?: ColorValue;
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
checkboxSize?: number;
|
|
29
|
+
checkboxStyle?: ViewStyle;
|
|
30
|
+
checkboxLabelStyle?: TextStyle;
|
|
28
31
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["Dropdown.tsx"],"names":["Dropdown","label","placeholder","helperText","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","labelStyle","dropdownStyle","dropdownContainerStyle","selectedItemStyle","multipleSelectedItemStyle","dropdownErrorStyle","dropdownErrorTextStyle","dropdownHelperTextStyle","primaryColor","disabled","styles","dropdownInputContainer","pressed","inputStyles","inputFocusState","borderColor","input","inputFocusErrorState","selectedItemsContainer","map","item","i","backgroundColor","blackText","length","iconStyle","require","helper","StyleSheet","create","marginBottom","color","colors","gray","typography","caption","borderWidth","borderStyle","red","position","right","top","marginTop","primary","width","flexDirection","flexWrap","white","paddingHorizontal","paddingVertical","borderRadius","marginRight","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';\nimport { typography } from './styles/typography';\n\nconst Dropdown = ({\n label,\n placeholder,\n helperText,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n labelStyle,\n dropdownStyle,\n dropdownContainerStyle,\n selectedItemStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n dropdownErrorTextStyle,\n dropdownHelperTextStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <View style={[styles.dropdownInputContainer, dropdownContainerStyle]}>\n {label && label !== '' && (\n <Text style={[styles.label, labelStyle]}>{label}</Text>\n )}\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //order matters\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={`SelectedItems${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}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={styles.iconStyle}>\n <Image source={require('../src/asset/arrow-down.png')} />\n </View>\n </Pressable>\n\n {error && error !== '' && (\n <Text style={[styles.error, dropdownErrorTextStyle]}>{error}</Text>\n )}\n\n {helperText && helperText !== '' && !error && (\n <Text style={[styles.helper, dropdownHelperTextStyle]}>\n {helperText}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n label: { marginBottom: 16, color: colors.gray, ...typography.caption },\n inputFocusErrorState: {\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: colors.red,\n },\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n error: { color: colors.red, marginTop: 8, ...typography.caption },\n helper: { marginTop: 8, color: colors.primary, ...typography.caption },\n dropdownInputContainer: { marginBottom: 23, width: '100%' },\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 },\n blackText: { color: colors.black },\n});\n\nexport default Dropdown;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["DropdownList.tsx"],"names":["DropdownList","options","optionLabel","optionValue","isMultiple","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","styles","emptyListStyle","itemSeparatorStyle","item","_renderItem","selectedOption","onChange","_item","index","props","StyleSheet","create","modalContainer","flex","justifyContent","modalBackgroundStyle","backgroundColor","modalOptionsContainer","maxHeight","colors","white","borderTopLeftRadius","borderTopRightRadius","gray","height","opacity","alignItems","width","marginVertical"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,YAAY,GAAG,QAUV;AAAA,MAVW;AACpBC,IAAAA,OADoB;AAEpBC,IAAAA,WAFoB;AAGpBC,IAAAA,WAHoB;AAIpBC,IAAAA,UAJoB;AAKpBC,IAAAA,aALoB;AAMpBC,IAAAA,YANoB;AAOpBC,IAAAA,wBAPoB;AAQpBC,IAAAA,qBARoB;AASpBC,IAAAA;AAToB,GAUX;AACT,sBACE,6BAAC,qBAAD;AACE,IAAA,IAAI,EAAER,OADR;AAEE,IAAA,SAAS,EAAEG,UAAU,GAAGC,aAAH,GAAmBC,YAF1C;AAGE,IAAA,kBAAkB,EAAE,CAHtB;AAIE,IAAA,kBAAkB,eAChB,6BAAC,iBAAD;AAAM,MAAA,KAAK,EAAEI,MAAM,CAACC;AAApB,oBACE,6BAAC,iBAAD,+BADF,CALJ;AASE,IAAA,sBAAsB,EAAE,mBAAM,6BAAC,iBAAD;AAAM,MAAA,KAAK,EAAED,MAAM,CAACE;AAApB,MAThC;AAUE,IAAA,UAAU,EAAGC,IAAD,IACVC,WAAW,CAACD,IAAD,EAAO;AAChBX,MAAAA,WADgB;AAEhBC,MAAAA,WAFgB;AAGhBC,MAAAA,UAHgB;AAIhBW,MAAAA,cAAc,EAAEX,UAAU,GAAGC,aAAH,GAAmBC,YAJ7B;AAKhBU,MAAAA,QAAQ,EAAEZ,UAAU,GAChBG,wBADgB,GAEhBC,qBAPY;AAQhBC,MAAAA;AARgB,KAAP,CAXf;AAsBE,IAAA,YAAY,EAAE,CAACQ,KAAD,EAAQC,KAAR,KAAmB,UAASA,KAAM;AAtBlD,IADF;AA0BD,CArCD;;AAuCA,MAAMJ,WAAW,GAAG,QAAgBK,KAAhB,KAA+B;AAAA,MAA9B;AAAEN,IAAAA;AAAF,GAA8B;AACjD,sBACE,6BAAC,yBAAD;AACE,IAAA,IAAI,EAAEA,IADR;AAEE,IAAA,WAAW,EAAEM,KAAK,CAACjB,WAFrB;AAGE,IAAA,WAAW,EAAEiB,KAAK,CAAChB,WAHrB;AAIE,IAAA,UAAU,EAAEgB,KAAK,CAACf,UAJpB;AAKE,IAAA,cAAc,EAAEe,KAAK,CAACJ,cALxB;AAME,IAAA,QAAQ,EAAEI,KAAK,CAACH,QANlB;AAOE,IAAA,YAAY,EAAEG,KAAK,CAACV;AAPtB,IADF;AAWD,CAZD;;AAcA,MAAMC,MAAM,GAAGU,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,IAAI,EAAE,CADQ;AAEdC,IAAAA,cAAc,EAAE;AAFF,GADe;AAK/BC,EAAAA,oBAAoB,EAAE;AAAEC,IAAAA,eAAe,EAAE;AAAnB,GALS;AAM/BC,EAAAA,qBAAqB,EAAE;AACrBC,IAAAA,SAAS,EAAE,KADU;AAErBF,IAAAA,eAAe,EAAEG,eAAOC,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD,GANQ;AAY/BpB,EAAAA,kBAAkB,EAAE;AAClBc,IAAAA,eAAe,EAAEG,eAAOI,IADN;AAElBC,IAAAA,MAAM,EAAE,CAFU;AAGlBC,IAAAA,OAAO,EAAE;AAHS,GAZW;AAiB/BxB,EAAAA,cAAc,EAAE;AAAEyB,IAAAA,UAAU,EAAE,QAAd;AAAwBC,IAAAA,KAAK,EAAE,MAA/B;AAAuCC,IAAAA,cAAc,EAAE;AAAvD;AAjBe,CAAlB,CAAf;;eAoBetC,Y","sourcesContent":["import React from 'react';\nimport { View, FlatList, StyleSheet, Text } from 'react-native';\nimport DropdownListItem from './DropdownListItem';\nimport { colors } from './styles/colors';\n\nconst DropdownList = ({\n options,\n optionLabel,\n optionValue,\n isMultiple,\n selectedItems,\n selectedItem,\n handleMultipleSelections,\n handleSingleSelection,\n primaryColor,\n}: any) => {\n return (\n <FlatList\n data={options}\n extraData={isMultiple ? selectedItems : selectedItem}\n initialNumToRender={5}\n ListEmptyComponent={\n <View style={styles.emptyListStyle}>\n <Text>No options available</Text>\n </View>\n }\n ItemSeparatorComponent={() => <View style={styles.itemSeparatorStyle} />}\n renderItem={(item) =>\n _renderItem(item, {\n optionLabel,\n optionValue,\n isMultiple,\n selectedOption: isMultiple ? selectedItems : selectedItem,\n onChange: isMultiple\n ? handleMultipleSelections\n : handleSingleSelection,\n primaryColor,\n })\n }\n keyExtractor={(_item, index) => `Options${index}`}\n />\n );\n};\n\nconst _renderItem = ({ item }: any, props: any) => {\n return (\n <DropdownListItem\n item={item}\n optionLabel={props.optionLabel}\n optionValue={props.optionValue}\n isMultiple={props.isMultiple}\n selectedOption={props.selectedOption}\n onChange={props.onChange}\n primaryColor={props.primaryColor}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n modalContainer: {\n flex: 1,\n justifyContent: 'flex-end',\n },\n modalBackgroundStyle: { backgroundColor: 'rgba(0, 0, 0, 0.5)' },\n modalOptionsContainer: {\n maxHeight: '50%',\n backgroundColor: colors.white,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n itemSeparatorStyle: {\n backgroundColor: colors.gray,\n height: 1,\n opacity: 0.15,\n },\n emptyListStyle: { alignItems: 'center', width: '100%', marginVertical: 20 },\n});\n\nexport default DropdownList;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["DropdownListItem.tsx"],"names":["DropdownListItem","item","optionLabel","optionValue","isMultiple","selectedOption","onChange","primaryColor","selectedOptionValue","styles","modalOptions","spacing","includes","true","colors","primary","StyleSheet","create","marginRight","paddingHorizontal","paddingVertical","flexDirection","alignItems"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,gBAAgB,GAAG,QAQd;AAAA,MARe;AACxBC,IAAAA,IADwB;AAExBC,IAAAA,WAFwB;AAGxBC,IAAAA,WAHwB;AAIxBC,IAAAA,UAJwB;AAKxBC,IAAAA,cALwB;AAMxBC,IAAAA,QANwB;AAOxBC,IAAAA;AAPwB,GAQf;AACT,QAAMC,mBAAmB,GAAGL,WAAH,aAAGA,WAAH,cAAGA,WAAH,GAAkB,OAA3C;AACA,sBACE,6BAAC,6BAAD;AACE,IAAA,KAAK,EAAEM,MAAM,CAACC,YADhB;AAEE,IAAA,OAAO,EAAE,MAAMJ,QAAQ,CAACL,IAAI,CAACO,mBAAD,CAAL;AAFzB,kBAIE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACE;AAApB,kBACE,6BAAC,iBAAD;AACE,IAAA,KAAK,EACHP,UAAU,GACNC,cAAc,CAACO,QAAf,CAAwBX,IAAI,CAACO,mBAAD,CAA5B,CADM,GAEN,CAACH,cAAD,EAAiBO,QAAjB,CAA0BX,IAAI,CAACO,mBAAD,CAA9B,CAJR;AAME,IAAA,QAAQ,EAAE,MAAMF,QAAQ,CAACL,IAAI,CAACO,mBAAD,CAAL,CAN1B;AAOE,IAAA,OAAO,EAAC,QAPV,CAOmB;AAPnB;AAQE,IAAA,UAAU,EAAE;AAAEK,MAAAA,IAAI,EAAEN,YAAY,IAAIO,eAAOC;AAA/B,KARd,CAQwD;AARxD;AASE,IAAA,YAAY,EAAER,YAAY,IAAIO,eAAOC,OATvC,CASgD;AAThD;AAUE,IAAA,WAAW,EAAER,YAAY,IAAIO,eAAOC,OAVtC,CAU+C;;AAV/C,IADF,CAJF,eAkBE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD,QAAOd,IAAI,CAACC,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgB,OAAhB,CAAX,CADF,CAlBF,CADF;AAwBD,CAlCD;;AAoCA,MAAMO,MAAM,GAAGO,wBAAWC,MAAX,CAAkB;AAC/BN,EAAAA,OAAO,EAAE;AAAEO,IAAAA,WAAW,EAAE;AAAf,GADsB;AAE/BR,EAAAA,YAAY,EAAE;AACZS,IAAAA,iBAAiB,EAAE,EADP;AAEZC,IAAAA,eAAe,EAAE,EAFL;AAGZC,IAAAA,aAAa,EAAE,KAHH;AAIZC,IAAAA,UAAU,EAAE;AAJA;AAFiB,CAAlB,CAAf;;4BAUe,iBAAKtB,gBAAL,C","sourcesContent":["import React, { memo } from 'react';\nimport { View, Text, TouchableOpacity, StyleSheet } from 'react-native';\nimport CheckBox from '@react-native-community/checkbox';\nimport { colors } from './styles/colors';\n\nconst DropdownListItem = ({\n item,\n optionLabel,\n optionValue,\n isMultiple,\n selectedOption,\n onChange,\n primaryColor,\n}: any) => {\n const selectedOptionValue = optionValue ?? 'value';\n return (\n <TouchableOpacity\n style={styles.modalOptions}\n onPress={() => onChange(item[selectedOptionValue])}\n >\n <View style={styles.spacing}>\n <CheckBox\n value={\n isMultiple\n ? selectedOption.includes(item[selectedOptionValue])\n : [selectedOption].includes(item[selectedOptionValue])\n }\n onChange={() => onChange(item[selectedOptionValue])}\n boxType=\"circle\" //works on ios only\n tintColors={{ true: primaryColor || colors.primary }} //android control\n onCheckColor={primaryColor || colors.primary} //ios checkmark colour control\n onTintColor={primaryColor || colors.primary} //ios box colour control\n />\n </View>\n <View>\n <Text>{item[optionLabel ?? 'label']}</Text>\n </View>\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n spacing: { marginRight: 10 },\n modalOptions: {\n paddingHorizontal: 20,\n paddingVertical: 10,\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n\nexport default memo(DropdownListItem);\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["Dropdown.tsx"],"names":["React","View","Text","Pressable","ScrollView","StyleSheet","Image","TouchableOpacity","colors","inputStyles","typography","Dropdown","label","placeholder","helperText","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","labelStyle","dropdownStyle","dropdownContainerStyle","selectedItemStyle","multipleSelectedItemStyle","dropdownErrorStyle","dropdownErrorTextStyle","dropdownHelperTextStyle","primaryColor","disabled","styles","dropdownInputContainer","pressed","inputFocusState","borderColor","input","inputFocusErrorState","selectedItemsContainer","map","item","i","backgroundColor","blackText","length","iconStyle","require","helper","create","marginBottom","color","gray","caption","borderWidth","borderStyle","red","position","right","top","marginTop","primary","width","flexDirection","flexWrap","white","paddingHorizontal","paddingVertical","borderRadius","marginRight","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';\nimport { typography } from './styles/typography';\n\nconst Dropdown = ({\n label,\n placeholder,\n helperText,\n error,\n getSelectedItemsLabel,\n handleToggleModal,\n isMultiple,\n selectedItem,\n selectedItems,\n labelStyle,\n dropdownStyle,\n dropdownContainerStyle,\n selectedItemStyle,\n multipleSelectedItemStyle,\n dropdownErrorStyle,\n dropdownErrorTextStyle,\n dropdownHelperTextStyle,\n primaryColor,\n disabled,\n}: any) => {\n return (\n <View style={[styles.dropdownInputContainer, dropdownContainerStyle]}>\n {label && label !== '' && (\n <Text style={[styles.label, labelStyle]}>{label}</Text>\n )}\n <Pressable\n onPress={() => handleToggleModal()}\n style={({ pressed }) => [\n pressed && {\n ...inputStyles.inputFocusState,\n borderColor: primaryColor,\n },\n inputStyles.input,\n dropdownStyle,\n error && //order matters\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={`SelectedItems${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}>\n {placeholder ?? 'Select an option'}\n </Text>\n )}\n </ScrollView>\n <View style={styles.iconStyle}>\n <Image source={require('../src/asset/arrow-down.png')} />\n </View>\n </Pressable>\n\n {error && error !== '' && (\n <Text style={[styles.error, dropdownErrorTextStyle]}>{error}</Text>\n )}\n\n {helperText && helperText !== '' && !error && (\n <Text style={[styles.helper, dropdownHelperTextStyle]}>\n {helperText}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n label: { marginBottom: 16, color: colors.gray, ...typography.caption },\n inputFocusErrorState: {\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: colors.red,\n },\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n error: { color: colors.red, marginTop: 8, ...typography.caption },\n helper: { marginTop: 8, color: colors.primary, ...typography.caption },\n dropdownInputContainer: { marginBottom: 23, width: '100%' },\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 },\n blackText: { color: colors.black },\n});\n\nexport default Dropdown;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["DropdownList.tsx"],"names":["React","View","FlatList","StyleSheet","Text","DropdownListItem","colors","DropdownList","options","optionLabel","optionValue","isMultiple","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","styles","emptyListStyle","itemSeparatorStyle","item","_renderItem","selectedOption","onChange","_item","index","props","create","modalContainer","flex","justifyContent","modalBackgroundStyle","backgroundColor","modalOptionsContainer","maxHeight","white","borderTopLeftRadius","borderTopRightRadius","gray","height","opacity","alignItems","width","marginVertical"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, FlatList, StyleSheet, Text } from 'react-native';\nimport DropdownListItem from './DropdownListItem';\nimport { colors } from './styles/colors';\n\nconst DropdownList = ({\n options,\n optionLabel,\n optionValue,\n isMultiple,\n selectedItems,\n selectedItem,\n handleMultipleSelections,\n handleSingleSelection,\n primaryColor,\n}: any) => {\n return (\n <FlatList\n data={options}\n extraData={isMultiple ? selectedItems : selectedItem}\n initialNumToRender={5}\n ListEmptyComponent={\n <View style={styles.emptyListStyle}>\n <Text>No options available</Text>\n </View>\n }\n ItemSeparatorComponent={() => <View style={styles.itemSeparatorStyle} />}\n renderItem={(item) =>\n _renderItem(item, {\n optionLabel,\n optionValue,\n isMultiple,\n selectedOption: isMultiple ? selectedItems : selectedItem,\n onChange: isMultiple\n ? handleMultipleSelections\n : handleSingleSelection,\n primaryColor,\n })\n }\n keyExtractor={(_item, index) => `Options${index}`}\n />\n );\n};\n\nconst _renderItem = ({ item }: any, props: any) => {\n return (\n <DropdownListItem\n item={item}\n optionLabel={props.optionLabel}\n optionValue={props.optionValue}\n isMultiple={props.isMultiple}\n selectedOption={props.selectedOption}\n onChange={props.onChange}\n primaryColor={props.primaryColor}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n modalContainer: {\n flex: 1,\n justifyContent: 'flex-end',\n },\n modalBackgroundStyle: { backgroundColor: 'rgba(0, 0, 0, 0.5)' },\n modalOptionsContainer: {\n maxHeight: '50%',\n backgroundColor: colors.white,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n itemSeparatorStyle: {\n backgroundColor: colors.gray,\n height: 1,\n opacity: 0.15,\n },\n emptyListStyle: { alignItems: 'center', width: '100%', marginVertical: 20 },\n});\n\nexport default DropdownList;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["DropdownListItem.tsx"],"names":["React","memo","View","Text","TouchableOpacity","StyleSheet","CheckBox","colors","DropdownListItem","item","optionLabel","optionValue","isMultiple","selectedOption","onChange","primaryColor","selectedOptionValue","styles","modalOptions","spacing","includes","true","primary","create","marginRight","paddingHorizontal","paddingVertical","flexDirection","alignItems"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,IAAhB,QAA4B,OAA5B;AACA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,gBAArB,EAAuCC,UAAvC,QAAyD,cAAzD;AACA,OAAOC,QAAP,MAAqB,kCAArB;AACA,SAASC,MAAT,QAAuB,iBAAvB;;AAEA,MAAMC,gBAAgB,GAAG,QAQd;AAAA,MARe;AACxBC,IAAAA,IADwB;AAExBC,IAAAA,WAFwB;AAGxBC,IAAAA,WAHwB;AAIxBC,IAAAA,UAJwB;AAKxBC,IAAAA,cALwB;AAMxBC,IAAAA,QANwB;AAOxBC,IAAAA;AAPwB,GAQf;AACT,QAAMC,mBAAmB,GAAGL,WAAH,aAAGA,WAAH,cAAGA,WAAH,GAAkB,OAA3C;AACA,sBACE,oBAAC,gBAAD;AACE,IAAA,KAAK,EAAEM,MAAM,CAACC,YADhB;AAEE,IAAA,OAAO,EAAE,MAAMJ,QAAQ,CAACL,IAAI,CAACO,mBAAD,CAAL;AAFzB,kBAIE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACE;AAApB,kBACE,oBAAC,QAAD;AACE,IAAA,KAAK,EACHP,UAAU,GACNC,cAAc,CAACO,QAAf,CAAwBX,IAAI,CAACO,mBAAD,CAA5B,CADM,GAEN,CAACH,cAAD,EAAiBO,QAAjB,CAA0BX,IAAI,CAACO,mBAAD,CAA9B,CAJR;AAME,IAAA,QAAQ,EAAE,MAAMF,QAAQ,CAACL,IAAI,CAACO,mBAAD,CAAL,CAN1B;AAOE,IAAA,OAAO,EAAC,QAPV,CAOmB;AAPnB;AAQE,IAAA,UAAU,EAAE;AAAEK,MAAAA,IAAI,EAAEN,YAAY,IAAIR,MAAM,CAACe;AAA/B,KARd,CAQwD;AARxD;AASE,IAAA,YAAY,EAAEP,YAAY,IAAIR,MAAM,CAACe,OATvC,CASgD;AAThD;AAUE,IAAA,WAAW,EAAEP,YAAY,IAAIR,MAAM,CAACe,OAVtC,CAU+C;;AAV/C,IADF,CAJF,eAkBE,oBAAC,IAAD,qBACE,oBAAC,IAAD,QAAOb,IAAI,CAACC,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgB,OAAhB,CAAX,CADF,CAlBF,CADF;AAwBD,CAlCD;;AAoCA,MAAMO,MAAM,GAAGZ,UAAU,CAACkB,MAAX,CAAkB;AAC/BJ,EAAAA,OAAO,EAAE;AAAEK,IAAAA,WAAW,EAAE;AAAf,GADsB;AAE/BN,EAAAA,YAAY,EAAE;AACZO,IAAAA,iBAAiB,EAAE,EADP;AAEZC,IAAAA,eAAe,EAAE,EAFL;AAGZC,IAAAA,aAAa,EAAE,KAHH;AAIZC,IAAAA,UAAU,EAAE;AAJA;AAFiB,CAAlB,CAAf;AAUA,4BAAe3B,IAAI,CAACO,gBAAD,CAAnB","sourcesContent":["import React, { memo } from 'react';\nimport { View, Text, TouchableOpacity, StyleSheet } from 'react-native';\nimport CheckBox from '@react-native-community/checkbox';\nimport { colors } from './styles/colors';\n\nconst DropdownListItem = ({\n item,\n optionLabel,\n optionValue,\n isMultiple,\n selectedOption,\n onChange,\n primaryColor,\n}: any) => {\n const selectedOptionValue = optionValue ?? 'value';\n return (\n <TouchableOpacity\n style={styles.modalOptions}\n onPress={() => onChange(item[selectedOptionValue])}\n >\n <View style={styles.spacing}>\n <CheckBox\n value={\n isMultiple\n ? selectedOption.includes(item[selectedOptionValue])\n : [selectedOption].includes(item[selectedOptionValue])\n }\n onChange={() => onChange(item[selectedOptionValue])}\n boxType=\"circle\" //works on ios only\n tintColors={{ true: primaryColor || colors.primary }} //android control\n onCheckColor={primaryColor || colors.primary} //ios checkmark colour control\n onTintColor={primaryColor || colors.primary} //ios box colour control\n />\n </View>\n <View>\n <Text>{item[optionLabel ?? 'label']}</Text>\n </View>\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n spacing: { marginRight: 10 },\n modalOptions: {\n paddingHorizontal: 20,\n paddingVertical: 10,\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n\nexport default memo(DropdownListItem);\n"]}
|
package/src/Dropdown.tsx
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
View,
|
|
4
|
-
Text,
|
|
5
|
-
Pressable,
|
|
6
|
-
ScrollView,
|
|
7
|
-
StyleSheet,
|
|
8
|
-
Image,
|
|
9
|
-
TouchableOpacity,
|
|
10
|
-
} from 'react-native';
|
|
11
|
-
import { colors } from './styles/colors';
|
|
12
|
-
import { inputStyles } from './styles/input';
|
|
13
|
-
import { typography } from './styles/typography';
|
|
14
|
-
|
|
15
|
-
const Dropdown = ({
|
|
16
|
-
label,
|
|
17
|
-
placeholder,
|
|
18
|
-
helperText,
|
|
19
|
-
error,
|
|
20
|
-
getSelectedItemsLabel,
|
|
21
|
-
handleToggleModal,
|
|
22
|
-
isMultiple,
|
|
23
|
-
selectedItem,
|
|
24
|
-
selectedItems,
|
|
25
|
-
labelStyle,
|
|
26
|
-
dropdownStyle,
|
|
27
|
-
dropdownContainerStyle,
|
|
28
|
-
selectedItemStyle,
|
|
29
|
-
multipleSelectedItemStyle,
|
|
30
|
-
dropdownErrorStyle,
|
|
31
|
-
dropdownErrorTextStyle,
|
|
32
|
-
dropdownHelperTextStyle,
|
|
33
|
-
primaryColor,
|
|
34
|
-
disabled,
|
|
35
|
-
}: any) => {
|
|
36
|
-
return (
|
|
37
|
-
<View style={[styles.dropdownInputContainer, dropdownContainerStyle]}>
|
|
38
|
-
{label && label !== '' && (
|
|
39
|
-
<Text style={[styles.label, labelStyle]}>{label}</Text>
|
|
40
|
-
)}
|
|
41
|
-
<Pressable
|
|
42
|
-
onPress={() => handleToggleModal()}
|
|
43
|
-
style={({ pressed }) => [
|
|
44
|
-
pressed && {
|
|
45
|
-
...inputStyles.inputFocusState,
|
|
46
|
-
borderColor: primaryColor,
|
|
47
|
-
},
|
|
48
|
-
inputStyles.input,
|
|
49
|
-
dropdownStyle,
|
|
50
|
-
error && //order matters
|
|
51
|
-
error !== '' &&
|
|
52
|
-
!pressed && {
|
|
53
|
-
...inputStyles.inputFocusErrorState,
|
|
54
|
-
...dropdownErrorStyle,
|
|
55
|
-
},
|
|
56
|
-
]}
|
|
57
|
-
disabled={disabled}
|
|
58
|
-
>
|
|
59
|
-
<ScrollView
|
|
60
|
-
horizontal
|
|
61
|
-
alwaysBounceHorizontal
|
|
62
|
-
showsHorizontalScrollIndicator={false}
|
|
63
|
-
>
|
|
64
|
-
<View
|
|
65
|
-
style={styles.selectedItemsContainer}
|
|
66
|
-
onStartShouldSetResponder={() => true}
|
|
67
|
-
>
|
|
68
|
-
{isMultiple ? (
|
|
69
|
-
getSelectedItemsLabel().map((item: any, i: Number) => (
|
|
70
|
-
<TouchableOpacity
|
|
71
|
-
onPress={() => handleToggleModal()}
|
|
72
|
-
key={`SelectedItems${i}`}
|
|
73
|
-
disabled={disabled}
|
|
74
|
-
>
|
|
75
|
-
<Text
|
|
76
|
-
style={[
|
|
77
|
-
styles.selectedItems,
|
|
78
|
-
{ backgroundColor: primaryColor },
|
|
79
|
-
multipleSelectedItemStyle,
|
|
80
|
-
]}
|
|
81
|
-
>
|
|
82
|
-
{item}
|
|
83
|
-
</Text>
|
|
84
|
-
</TouchableOpacity>
|
|
85
|
-
))
|
|
86
|
-
) : (
|
|
87
|
-
<TouchableOpacity
|
|
88
|
-
onPress={() => handleToggleModal()}
|
|
89
|
-
disabled={disabled}
|
|
90
|
-
>
|
|
91
|
-
<Text style={[styles.blackText, selectedItemStyle]}>
|
|
92
|
-
{getSelectedItemsLabel()}
|
|
93
|
-
</Text>
|
|
94
|
-
</TouchableOpacity>
|
|
95
|
-
)}
|
|
96
|
-
</View>
|
|
97
|
-
|
|
98
|
-
{!selectedItem && selectedItems?.length === 0 && (
|
|
99
|
-
<Text style={styles.blackText}>
|
|
100
|
-
{placeholder ?? 'Select an option'}
|
|
101
|
-
</Text>
|
|
102
|
-
)}
|
|
103
|
-
</ScrollView>
|
|
104
|
-
<View style={styles.iconStyle}>
|
|
105
|
-
<Image source={require('../src/asset/arrow-down.png')} />
|
|
106
|
-
</View>
|
|
107
|
-
</Pressable>
|
|
108
|
-
|
|
109
|
-
{error && error !== '' && (
|
|
110
|
-
<Text style={[styles.error, dropdownErrorTextStyle]}>{error}</Text>
|
|
111
|
-
)}
|
|
112
|
-
|
|
113
|
-
{helperText && helperText !== '' && !error && (
|
|
114
|
-
<Text style={[styles.helper, dropdownHelperTextStyle]}>
|
|
115
|
-
{helperText}
|
|
116
|
-
</Text>
|
|
117
|
-
)}
|
|
118
|
-
</View>
|
|
119
|
-
);
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
const styles = StyleSheet.create({
|
|
123
|
-
label: { marginBottom: 16, color: colors.gray, ...typography.caption },
|
|
124
|
-
inputFocusErrorState: {
|
|
125
|
-
borderWidth: 2,
|
|
126
|
-
borderStyle: 'solid',
|
|
127
|
-
borderColor: colors.red,
|
|
128
|
-
},
|
|
129
|
-
iconStyle: { position: 'absolute', right: 25, top: 25 },
|
|
130
|
-
error: { color: colors.red, marginTop: 8, ...typography.caption },
|
|
131
|
-
helper: { marginTop: 8, color: colors.primary, ...typography.caption },
|
|
132
|
-
dropdownInputContainer: { marginBottom: 23, width: '100%' },
|
|
133
|
-
selectedItemsContainer: { flexDirection: 'row', flexWrap: 'nowrap' },
|
|
134
|
-
selectedItems: {
|
|
135
|
-
color: colors.white,
|
|
136
|
-
paddingHorizontal: 10,
|
|
137
|
-
paddingVertical: 5,
|
|
138
|
-
borderRadius: 10,
|
|
139
|
-
backgroundColor: colors.primary,
|
|
140
|
-
marginRight: 10,
|
|
141
|
-
},
|
|
142
|
-
blackText: { color: colors.black },
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
export default Dropdown;
|
package/src/DropdownListItem.tsx
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import React, { memo } from 'react';
|
|
2
|
-
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
|
|
3
|
-
import CheckBox from '@react-native-community/checkbox';
|
|
4
|
-
import { colors } from './styles/colors';
|
|
5
|
-
|
|
6
|
-
const DropdownListItem = ({
|
|
7
|
-
item,
|
|
8
|
-
optionLabel,
|
|
9
|
-
optionValue,
|
|
10
|
-
isMultiple,
|
|
11
|
-
selectedOption,
|
|
12
|
-
onChange,
|
|
13
|
-
primaryColor,
|
|
14
|
-
}: any) => {
|
|
15
|
-
const selectedOptionValue = optionValue ?? 'value';
|
|
16
|
-
return (
|
|
17
|
-
<TouchableOpacity
|
|
18
|
-
style={styles.modalOptions}
|
|
19
|
-
onPress={() => onChange(item[selectedOptionValue])}
|
|
20
|
-
>
|
|
21
|
-
<View style={styles.spacing}>
|
|
22
|
-
<CheckBox
|
|
23
|
-
value={
|
|
24
|
-
isMultiple
|
|
25
|
-
? selectedOption.includes(item[selectedOptionValue])
|
|
26
|
-
: [selectedOption].includes(item[selectedOptionValue])
|
|
27
|
-
}
|
|
28
|
-
onChange={() => onChange(item[selectedOptionValue])}
|
|
29
|
-
boxType="circle" //works on ios only
|
|
30
|
-
tintColors={{ true: primaryColor || colors.primary }} //android control
|
|
31
|
-
onCheckColor={primaryColor || colors.primary} //ios checkmark colour control
|
|
32
|
-
onTintColor={primaryColor || colors.primary} //ios box colour control
|
|
33
|
-
/>
|
|
34
|
-
</View>
|
|
35
|
-
<View>
|
|
36
|
-
<Text>{item[optionLabel ?? 'label']}</Text>
|
|
37
|
-
</View>
|
|
38
|
-
</TouchableOpacity>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const styles = StyleSheet.create({
|
|
43
|
-
spacing: { marginRight: 10 },
|
|
44
|
-
modalOptions: {
|
|
45
|
-
paddingHorizontal: 20,
|
|
46
|
-
paddingVertical: 10,
|
|
47
|
-
flexDirection: 'row',
|
|
48
|
-
alignItems: 'center',
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
export default memo(DropdownListItem);
|