react-native-input-select 0.19.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 (72) 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/{Dropdown.js → components/Dropdown/Dropdown.js} +2 -2
  10. package/lib/commonjs/{Dropdown.js.map → components/Dropdown/Dropdown.js.map} +1 -1
  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/{SelectedItemsView.js → components/Dropdown/SelectedItemsView.js} +3 -3
  16. package/lib/commonjs/{SelectedItemsView.js.map → components/Dropdown/SelectedItemsView.js.map} +1 -1
  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 +16 -8
  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/{Dropdown.js → components/Dropdown/Dropdown.js} +2 -2
  31. package/lib/module/{Dropdown.js.map → components/Dropdown/Dropdown.js.map} +1 -1
  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/{SelectedItemsView.js → components/Dropdown/SelectedItemsView.js} +3 -3
  37. package/lib/module/{SelectedItemsView.js.map → components/Dropdown/SelectedItemsView.js.map} +1 -1
  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 +15 -7
  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/{DropdownList.d.ts → components/Dropdown/DropdownList.d.ts} +1 -1
  47. package/lib/typescript/{DropdownListItem.d.ts → components/Dropdown/DropdownListItem.d.ts} +1 -1
  48. package/lib/typescript/constants/index.d.ts +1 -0
  49. package/lib/typescript/index.d.ts +1 -1
  50. package/lib/typescript/types/index.types.d.ts +16 -13
  51. package/package.json +1 -5
  52. package/src/asset/check.png +0 -0
  53. package/src/components/CheckBox/index.tsx +58 -0
  54. package/src/components/CheckBox/types.ts +11 -0
  55. package/src/{Modal.tsx → components/CustomModal/index.tsx} +1 -1
  56. package/src/{Dropdown.tsx → components/Dropdown/Dropdown.tsx} +2 -2
  57. package/src/{DropdownList.tsx → components/Dropdown/DropdownList.tsx} +10 -1
  58. package/src/components/Dropdown/DropdownListItem.tsx +50 -0
  59. package/src/{SelectedItemsView.tsx → components/Dropdown/SelectedItemsView.tsx} +3 -3
  60. package/src/{Input.tsx → components/Input/index.tsx} +1 -1
  61. package/src/constants/index.ts +1 -0
  62. package/src/index.tsx +38 -33
  63. package/src/types/index.types.ts +16 -13
  64. package/lib/commonjs/DropdownList.js.map +0 -1
  65. package/lib/commonjs/DropdownListItem.js.map +0 -1
  66. package/lib/module/DropdownList.js.map +0 -1
  67. package/lib/module/DropdownListItem.js.map +0 -1
  68. package/src/DropdownListItem.tsx +0 -52
  69. /package/lib/typescript/{Modal.d.ts → components/CustomModal/index.d.ts} +0 -0
  70. /package/lib/typescript/{Dropdown.d.ts → components/Dropdown/Dropdown.d.ts} +0 -0
  71. /package/lib/typescript/{SelectedItemsView.d.ts → components/Dropdown/SelectedItemsView.d.ts} +0 -0
  72. /package/lib/typescript/{Input.d.ts → components/Input/index.d.ts} +0 -0
@@ -0,0 +1,58 @@
1
+ /* eslint-disable react-native/no-inline-styles */
2
+ import React from 'react';
3
+ import { Pressable, Text, StyleSheet, Image, View } from 'react-native';
4
+ import { CHECKBOX_SIZE } from '../../constants';
5
+ import type { CheckboxProps } from './types';
6
+
7
+ const CheckBox = ({
8
+ label,
9
+ value,
10
+ primaryColor,
11
+ checkboxSize,
12
+ checkboxStyle,
13
+ checkboxLabelStyle,
14
+ onChange,
15
+ }: CheckboxProps) => {
16
+ const fillColor = {
17
+ backgroundColor: value ? primaryColor || 'green' : 'white',
18
+ };
19
+ return (
20
+ <Pressable
21
+ onPress={onChange ? () => onChange(!value) : () => {}}
22
+ style={[styles.checkboxContainer]}
23
+ >
24
+ <View style={[styles.checkbox, checkboxStyle, fillColor]}>
25
+ <Image
26
+ source={require('../../asset/check.png')}
27
+ style={[
28
+ {
29
+ height: checkboxSize || CHECKBOX_SIZE,
30
+ width: checkboxSize || CHECKBOX_SIZE,
31
+ },
32
+ ]}
33
+ />
34
+ </View>
35
+ {label && (
36
+ <Text style={[checkboxLabelStyle, styles.labelStyle]}>{label}</Text>
37
+ )}
38
+ </Pressable>
39
+ );
40
+ };
41
+
42
+ const styles = StyleSheet.create({
43
+ checkboxContainer: {
44
+ flexDirection: 'row',
45
+ flexWrap: 'nowrap',
46
+ alignItems: 'center',
47
+ },
48
+ checkbox: {
49
+ padding: 4,
50
+ borderWidth: 1,
51
+ borderStyle: 'solid',
52
+ borderRadius: 4,
53
+ borderColor: 'black',
54
+ },
55
+ labelStyle: { marginLeft: 10 },
56
+ });
57
+
58
+ export default CheckBox;
@@ -0,0 +1,11 @@
1
+ import type { ColorValue, ViewStyle, TextStyle } from 'react-native';
2
+
3
+ export type CheckboxProps = {
4
+ label?: string;
5
+ value?: boolean;
6
+ primaryColor?: ColorValue;
7
+ checkboxSize?: number;
8
+ checkboxStyle?: ViewStyle;
9
+ checkboxLabelStyle?: TextStyle;
10
+ onChange?: (value: boolean | string | number) => void;
11
+ };
@@ -5,7 +5,7 @@ import {
5
5
  SafeAreaView,
6
6
  StyleSheet,
7
7
  } from 'react-native';
8
- import { colors } from './styles/colors';
8
+ import { colors } from '../../styles/colors';
9
9
 
10
10
  const CustomModal = ({
11
11
  open,
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { View, Text, StyleSheet } from 'react-native';
3
3
  import SelectedItemsView from './SelectedItemsView';
4
- import { colors } from './styles/colors';
5
- import { typography } from './styles/typography';
4
+ import { colors } from '../../styles/colors';
5
+ import { typography } from '../../styles/typography';
6
6
 
7
7
  const Dropdown = ({
8
8
  label,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, FlatList, StyleSheet, Text } from 'react-native';
3
3
  import DropdownListItem from './DropdownListItem';
4
- import { colors } from './styles/colors';
4
+ import { colors } from '../../styles/colors';
5
5
 
6
6
  const DropdownList = ({
7
7
  options,
@@ -13,6 +13,9 @@ const DropdownList = ({
13
13
  handleMultipleSelections,
14
14
  handleSingleSelection,
15
15
  primaryColor,
16
+ checkboxSize,
17
+ checkboxStyle,
18
+ checkboxLabelStyle,
16
19
  }: any) => {
17
20
  return (
18
21
  <FlatList
@@ -35,6 +38,9 @@ const DropdownList = ({
35
38
  ? handleMultipleSelections
36
39
  : handleSingleSelection,
37
40
  primaryColor,
41
+ checkboxSize,
42
+ checkboxStyle,
43
+ checkboxLabelStyle,
38
44
  })
39
45
  }
40
46
  keyExtractor={(_item, index) => `Options${index}`}
@@ -52,6 +58,9 @@ const _renderItem = ({ item }: any, props: any) => {
52
58
  selectedOption={props.selectedOption}
53
59
  onChange={props.onChange}
54
60
  primaryColor={props.primaryColor}
61
+ checkboxSize={props.checkboxSize}
62
+ checkboxStyle={props.checkboxStyle}
63
+ checkboxLabelStyle={props.checkboxLabelStyle}
55
64
  />
56
65
  );
57
66
  };
@@ -0,0 +1,50 @@
1
+ import React, { memo } from 'react';
2
+ import { TouchableOpacity, StyleSheet } from 'react-native';
3
+ import CheckBox from '../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
+ checkboxSize,
15
+ checkboxStyle,
16
+ checkboxLabelStyle,
17
+ }: any) => {
18
+ const selectedOptionValue = optionValue ?? 'value';
19
+ return (
20
+ <TouchableOpacity
21
+ style={styles.modalOptions}
22
+ onPress={() => onChange(item[selectedOptionValue])}
23
+ >
24
+ <CheckBox
25
+ value={
26
+ isMultiple
27
+ ? selectedOption.includes(item[selectedOptionValue])
28
+ : [selectedOption].includes(item[selectedOptionValue])
29
+ }
30
+ label={item[optionLabel ?? '']}
31
+ onChange={() => onChange(item[selectedOptionValue])}
32
+ primaryColor={primaryColor || colors.primary}
33
+ checkboxSize={checkboxSize}
34
+ checkboxStyle={checkboxStyle}
35
+ checkboxLabelStyle={checkboxLabelStyle}
36
+ />
37
+ </TouchableOpacity>
38
+ );
39
+ };
40
+
41
+ const styles = StyleSheet.create({
42
+ modalOptions: {
43
+ paddingHorizontal: 20,
44
+ paddingVertical: 10,
45
+ flexDirection: 'row',
46
+ alignItems: 'center',
47
+ },
48
+ });
49
+
50
+ export default memo(DropdownListItem);
@@ -8,8 +8,8 @@ import {
8
8
  Image,
9
9
  TouchableOpacity,
10
10
  } from 'react-native';
11
- import { colors } from './styles/colors';
12
- import { inputStyles } from './styles/input';
11
+ import { colors } from '../../styles/colors';
12
+ import { inputStyles } from '../../styles/input';
13
13
 
14
14
  const SelectedItemsView = ({
15
15
  placeholder,
@@ -91,7 +91,7 @@ const SelectedItemsView = ({
91
91
  )}
92
92
  </ScrollView>
93
93
  <View style={styles.iconStyle}>
94
- <Image source={require('../src/asset/arrow-down.png')} />
94
+ <Image source={require('../../asset/arrow-down.png')} />
95
95
  </View>
96
96
  </Pressable>
97
97
  );
@@ -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,41 +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
8
  import { colors } from './styles/colors';
9
9
 
10
- export const DropdownSelect = (
11
- {
12
- placeholder,
13
- label,
14
- error,
15
- helperText,
16
- options,
17
- optionLabel,
18
- optionValue,
19
- onValueChange,
20
- selectedValue,
21
- isMultiple,
22
- isSearchable,
23
- labelStyle,
24
- dropdownStyle,
25
- dropdownContainerStyle,
26
- dropdownErrorStyle,
27
- dropdownErrorTextStyle,
28
- dropdownHelperTextStyle,
29
- selectedItemStyle,
30
- multipleSelectedItemStyle,
31
- modalBackgroundStyle,
32
- modalOptionsContainer,
33
- searchInputStyle,
34
- primaryColor,
35
- disabled,
36
- }: DropdownProps,
37
- rest: any
38
- ) => {
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) => {
39
40
  const [newOptions, setNewOptions] = useState(options ? options : []);
40
41
  const [open, setOpen] = useState(false);
41
42
  const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection
@@ -70,6 +71,7 @@ export const DropdownSelect = (
70
71
  selectedValues.push(value);
71
72
  }
72
73
  setSelectedItems(selectedValues);
74
+ onValueChange(selectedValues); //send value to parent
73
75
  };
74
76
 
75
77
  /*===========================================
@@ -187,6 +189,9 @@ export const DropdownSelect = (
187
189
  handleMultipleSelections={handleMultipleSelections}
188
190
  handleSingleSelection={handleSingleSelection}
189
191
  primaryColor={primary}
192
+ checkboxSize={checkboxSize}
193
+ checkboxStyle={checkboxStyle}
194
+ checkboxLabelStyle={checkboxLabelStyle}
190
195
  />
191
196
  </CustomModal>
192
197
  </>
@@ -1,4 +1,4 @@
1
- import type { CSSProperties } from 'react';
1
+ import type { ViewStyle, ColorValue, TextStyle } from 'react-native';
2
2
 
3
3
  export type DropdownProps = {
4
4
  placeholder?: string;
@@ -12,17 +12,20 @@ export type DropdownProps = {
12
12
  selectedValue?: string | any[] | null;
13
13
  isMultiple?: boolean;
14
14
  isSearchable?: boolean;
15
- labelStyle?: CSSProperties;
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;
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
27
  disabled?: boolean;
28
+ checkboxSize?: number;
29
+ checkboxStyle?: ViewStyle;
30
+ checkboxLabelStyle?: TextStyle;
28
31
  };
@@ -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":["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"]}
@@ -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);