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.
Files changed (75) hide show
  1. package/README.md +15 -9
  2. package/lib/commonjs/asset/check.png +0 -0
  3. package/lib/commonjs/components/CheckBox/index.js +66 -0
  4. package/lib/commonjs/components/CheckBox/index.js.map +1 -0
  5. package/lib/commonjs/components/CheckBox/types.js +6 -0
  6. package/lib/commonjs/components/CheckBox/types.js.map +1 -0
  7. package/lib/commonjs/{Modal.js → components/CustomModal/index.js} +2 -2
  8. package/lib/commonjs/{Modal.js.map → components/CustomModal/index.js.map} +1 -1
  9. package/lib/commonjs/components/Dropdown/Dropdown.js +99 -0
  10. package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -0
  11. package/lib/commonjs/{DropdownList.js → components/Dropdown/DropdownList.js} +13 -4
  12. package/lib/commonjs/components/Dropdown/DropdownList.js.map +1 -0
  13. package/lib/commonjs/{DropdownListItem.js → components/Dropdown/DropdownListItem.js} +13 -20
  14. package/lib/commonjs/components/Dropdown/DropdownListItem.js.map +1 -0
  15. package/lib/commonjs/{Dropdown.js → components/Dropdown/SelectedItemsView.js} +10 -50
  16. package/lib/commonjs/components/Dropdown/SelectedItemsView.js.map +1 -0
  17. package/lib/commonjs/{Input.js → components/Input/index.js} +2 -2
  18. package/lib/commonjs/{Input.js.map → components/Input/index.js.map} +1 -1
  19. package/lib/commonjs/constants/index.js +3 -1
  20. package/lib/commonjs/constants/index.js.map +1 -1
  21. package/lib/commonjs/index.js +21 -10
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/module/asset/check.png +0 -0
  24. package/lib/module/components/CheckBox/index.js +53 -0
  25. package/lib/module/components/CheckBox/index.js.map +1 -0
  26. package/lib/module/components/CheckBox/types.js +2 -0
  27. package/lib/module/components/CheckBox/types.js.map +1 -0
  28. package/lib/module/{Modal.js → components/CustomModal/index.js} +2 -2
  29. package/lib/module/{Modal.js.map → components/CustomModal/index.js.map} +1 -1
  30. package/lib/module/components/Dropdown/Dropdown.js +84 -0
  31. package/lib/module/components/Dropdown/Dropdown.js.map +1 -0
  32. package/lib/module/{DropdownList.js → components/Dropdown/DropdownList.js} +13 -4
  33. package/lib/module/components/Dropdown/DropdownList.js.map +1 -0
  34. package/lib/module/{DropdownListItem.js → components/Dropdown/DropdownListItem.js} +13 -20
  35. package/lib/module/components/Dropdown/DropdownListItem.js.map +1 -0
  36. package/lib/module/{Dropdown.js → components/Dropdown/SelectedItemsView.js} +10 -49
  37. package/lib/module/components/Dropdown/SelectedItemsView.js.map +1 -0
  38. package/lib/module/{Input.js → components/Input/index.js} +2 -2
  39. package/lib/module/{Input.js.map → components/Input/index.js.map} +1 -1
  40. package/lib/module/constants/index.js +1 -0
  41. package/lib/module/constants/index.js.map +1 -1
  42. package/lib/module/index.js +19 -9
  43. package/lib/module/index.js.map +1 -1
  44. package/lib/typescript/components/CheckBox/index.d.ts +4 -0
  45. package/lib/typescript/components/CheckBox/types.d.ts +10 -0
  46. package/lib/typescript/{Modal.d.ts → components/CustomModal/index.d.ts} +1 -0
  47. package/lib/typescript/{Dropdown.d.ts → components/Dropdown/Dropdown.d.ts} +1 -0
  48. package/lib/typescript/{DropdownList.d.ts → components/Dropdown/DropdownList.d.ts} +2 -1
  49. package/lib/typescript/{DropdownListItem.d.ts → components/Dropdown/DropdownListItem.d.ts} +1 -1
  50. package/lib/typescript/components/Dropdown/SelectedItemsView.d.ts +3 -0
  51. package/lib/typescript/{Input.d.ts → components/Input/index.d.ts} +1 -0
  52. package/lib/typescript/constants/index.d.ts +1 -0
  53. package/lib/typescript/index.d.ts +2 -1
  54. package/lib/typescript/types/index.types.d.ts +25 -22
  55. package/package.json +8 -9
  56. package/src/asset/check.png +0 -0
  57. package/src/components/CheckBox/index.tsx +58 -0
  58. package/src/components/CheckBox/types.ts +11 -0
  59. package/src/{Modal.tsx → components/CustomModal/index.tsx} +1 -1
  60. package/src/components/Dropdown/Dropdown.tsx +75 -0
  61. package/src/{DropdownList.tsx → components/Dropdown/DropdownList.tsx} +10 -1
  62. package/src/components/Dropdown/DropdownListItem.tsx +50 -0
  63. package/src/components/Dropdown/SelectedItemsView.tsx +114 -0
  64. package/src/{Input.tsx → components/Input/index.tsx} +1 -1
  65. package/src/constants/index.ts +1 -0
  66. package/src/index.tsx +43 -36
  67. package/src/types/index.types.ts +25 -22
  68. package/lib/commonjs/Dropdown.js.map +0 -1
  69. package/lib/commonjs/DropdownList.js.map +0 -1
  70. package/lib/commonjs/DropdownListItem.js.map +0 -1
  71. package/lib/module/Dropdown.js.map +0 -1
  72. package/lib/module/DropdownList.js.map +0 -1
  73. package/lib/module/DropdownListItem.js.map +0 -1
  74. package/src/Dropdown.tsx +0 -145
  75. 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;
@@ -1,6 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { TextInput, StyleSheet, View } from 'react-native';
3
- import { inputStyles } from './styles/input';
3
+ import { inputStyles } from '../../styles/input';
4
4
 
5
5
  export const Input = ({
6
6
  placeholder,
@@ -1,2 +1,3 @@
1
1
  export const DEFAULT_OPTION_LABEL = 'label';
2
2
  export const DEFAULT_OPTION_VALUE = 'value';
3
+ export const CHECKBOX_SIZE = 14;
package/src/index.tsx CHANGED
@@ -1,40 +1,42 @@
1
1
  import React, { useState } from 'react';
2
- import Dropdown from './Dropdown';
3
- import CustomModal from './Modal';
4
- import DropdownList from './DropdownList';
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
- 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
- }: DropdownProps,
36
- rest: any
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={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={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={primaryColor}
191
+ primaryColor={primary}
192
+ checkboxSize={checkboxSize}
193
+ checkboxStyle={checkboxStyle}
194
+ checkboxLabelStyle={checkboxLabelStyle}
188
195
  />
189
196
  </CustomModal>
190
197
  </>
@@ -1,28 +1,31 @@
1
- import type { CSSProperties } from 'react';
1
+ import type { ViewStyle, ColorValue, TextStyle } from 'react-native';
2
2
 
3
3
  export type DropdownProps = {
4
- placeholder: string;
5
- label: string;
6
- error: string;
7
- helperText: string;
4
+ placeholder?: string;
5
+ label?: string;
6
+ error?: string;
7
+ helperText?: string;
8
8
  options: any[];
9
9
  optionLabel: string;
10
- optionValue: string;
10
+ optionValue?: string;
11
11
  onValueChange: Function;
12
- selectedValue: string | any[] | null;
13
- isMultiple: boolean;
14
- isSearchable: boolean;
15
- labelStyle: string;
16
- dropdownStyle: CSSProperties;
17
- dropdownContainerStyle: CSSProperties;
18
- dropdownErrorStyle: CSSProperties;
19
- dropdownErrorTextStyle: CSSProperties;
20
- dropdownHelperTextStyle: CSSProperties;
21
- selectedItemStyle: CSSProperties;
22
- multipleSelectedItemStyle: CSSProperties;
23
- modalBackgroundStyle: CSSProperties;
24
- modalOptionsContainer: CSSProperties;
25
- searchInputStyle: CSSProperties;
26
- primaryColor: string;
27
- disabled: boolean;
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":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,EAAeC,QAAf,EAAyBC,UAAzB,EAAqCC,IAArC,QAAiD,cAAjD;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,SAASC,MAAT,QAAuB,iBAAvB;;AAEA,MAAMC,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,oBAAC,QAAD;AACE,IAAA,IAAI,EAAER,OADR;AAEE,IAAA,SAAS,EAAEG,UAAU,GAAGC,aAAH,GAAmBC,YAF1C;AAGE,IAAA,kBAAkB,EAAE,CAHtB;AAIE,IAAA,kBAAkB,eAChB,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEI,MAAM,CAACC;AAApB,oBACE,oBAAC,IAAD,+BADF,CALJ;AASE,IAAA,sBAAsB,EAAE,mBAAM,oBAAC,IAAD;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,oBAAC,gBAAD;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,GAAGd,UAAU,CAACwB,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,EAAE1B,MAAM,CAAC6B,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD,GANQ;AAY/BlB,EAAAA,kBAAkB,EAAE;AAClBa,IAAAA,eAAe,EAAE1B,MAAM,CAACgC,IADN;AAElBC,IAAAA,MAAM,EAAE,CAFU;AAGlBC,IAAAA,OAAO,EAAE;AAHS,GAZW;AAiB/BtB,EAAAA,cAAc,EAAE;AAAEuB,IAAAA,UAAU,EAAE,QAAd;AAAwBC,IAAAA,KAAK,EAAE,MAA/B;AAAuCC,IAAAA,cAAc,EAAE;AAAvD;AAjBe,CAAlB,CAAf;AAoBA,eAAepC,YAAf","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;
@@ -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);