react-native-input-select 0.3.0 → 0.7.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 (55) hide show
  1. package/README.md +32 -19
  2. package/lib/commonjs/Dropdown.js +12 -25
  3. package/lib/commonjs/Dropdown.js.map +1 -1
  4. package/lib/commonjs/DropdownList.js +15 -10
  5. package/lib/commonjs/DropdownList.js.map +1 -1
  6. package/lib/commonjs/DropdownListItem.js +5 -4
  7. package/lib/commonjs/DropdownListItem.js.map +1 -1
  8. package/lib/commonjs/Input.js +50 -0
  9. package/lib/commonjs/Input.js.map +1 -0
  10. package/lib/commonjs/Modal.js +2 -2
  11. package/lib/commonjs/Modal.js.map +1 -1
  12. package/lib/commonjs/constants/index.js +11 -0
  13. package/lib/commonjs/constants/index.js.map +1 -0
  14. package/lib/commonjs/index.js +48 -11
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/styles/colors.js +1 -0
  17. package/lib/commonjs/styles/colors.js.map +1 -1
  18. package/lib/commonjs/styles/input.js +33 -0
  19. package/lib/commonjs/styles/input.js.map +1 -0
  20. package/lib/module/Dropdown.js +11 -25
  21. package/lib/module/Dropdown.js.map +1 -1
  22. package/lib/module/DropdownList.js +16 -11
  23. package/lib/module/DropdownList.js.map +1 -1
  24. package/lib/module/DropdownListItem.js +5 -4
  25. package/lib/module/DropdownListItem.js.map +1 -1
  26. package/lib/module/Input.js +33 -0
  27. package/lib/module/Input.js.map +1 -0
  28. package/lib/module/Modal.js +2 -2
  29. package/lib/module/Modal.js.map +1 -1
  30. package/lib/module/constants/index.js +3 -0
  31. package/lib/module/constants/index.js.map +1 -0
  32. package/lib/module/index.js +46 -11
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/module/styles/colors.js +1 -0
  35. package/lib/module/styles/colors.js.map +1 -1
  36. package/lib/module/styles/input.js +22 -0
  37. package/lib/module/styles/input.js.map +1 -0
  38. package/lib/typescript/Dropdown.d.ts +1 -1
  39. package/lib/typescript/DropdownList.d.ts +1 -1
  40. package/lib/typescript/DropdownListItem.d.ts +1 -1
  41. package/lib/typescript/Input.d.ts +1 -0
  42. package/lib/typescript/Modal.d.ts +1 -1
  43. package/lib/typescript/constants/index.d.ts +2 -0
  44. package/lib/typescript/index.d.ts +1 -1
  45. package/lib/typescript/styles/input.d.ts +1 -0
  46. package/package.json +8 -3
  47. package/src/Dropdown.tsx +13 -25
  48. package/src/DropdownList.tsx +10 -7
  49. package/src/DropdownListItem.tsx +4 -3
  50. package/src/Input.tsx +37 -0
  51. package/src/Modal.tsx +2 -2
  52. package/src/constants/index.ts +2 -0
  53. package/src/index.tsx +55 -7
  54. package/src/styles/colors.ts +1 -0
  55. package/src/styles/input.ts +22 -0
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # react-native-select
2
2
 
3
- Dropdown package for react-native
3
+ Dropdown package for react-native.
4
+ Works perfectly on android and iOS.
4
5
 
5
6
  ## Installation
6
7
 
@@ -8,6 +9,12 @@ Dropdown package for react-native
8
9
  npm install react-native-select
9
10
  ```
10
11
 
12
+ ## Demo
13
+
14
+ | Multiple Select | Single Select |
15
+ | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: |
16
+ | <video src='https://user-images.githubusercontent.com/9849221/148039859-9eb4ef87-60ca-4300-9899-fbe81dcb0fb6.mov' width=90/> | <video src='https://user-images.githubusercontent.com/9849221/148039800-9c30509a-6115-415e-aa3c-0402d64ec578.mov' width=90/> |
17
+
11
18
  ## Usage
12
19
 
13
20
  ```js
@@ -17,7 +24,7 @@ import { StyleSheet, View } from 'react-native';
17
24
  import DropdownSelect from 'react-native-select';
18
25
 
19
26
  export default function App() {
20
- const [result, setResult] = React.useState<number | undefined>();
27
+ const [country, setCountry] = React.useState<number | undefined>();
21
28
 
22
29
  return (
23
30
  <DropdownSelect
@@ -36,29 +43,35 @@ export default function App() {
36
43
  ]}
37
44
  optionLabel={'name'}
38
45
  optionValue={'code'}
39
- selectedValue={result}
40
- onValueChange={(itemValue) => setResult(itemValue)}
46
+ selectedValue={country}
47
+ onValueChange={(value) => setCountry(value)}
48
+ primaryColor={'green'}
41
49
  />
42
50
  );
43
51
  }
44
52
  ```
45
53
 
46
- | Proptypes | Datatype | Example |
47
- | ---------------------- | ------------------- | ------------------------------------------------ |
48
- | label | `string` | `Countries` |
49
- | placeholder | `string` | `Select a country` |
54
+ ## Props
55
+
56
+ | Proptypes | Datatype | Example |
57
+ | ---------------------- | ------------------- | -------------------------------------------------------------------------- |
58
+ | label | `string` | `Countries` |
59
+ | placeholder | `string` | `Select a country` |
50
60
  | options | `Array` | `[{ name: 'Albania', code: 'AL' }, { name: 'Åland Islands', code: 'AX' }]` |
51
- | optionLabel | `string` | `name` |
52
- | optionValue | `string` | `code` |
53
- | selectedValue | `string` or `Array` | `AL` or `[AL, AX]` |
54
- | onValueChange | `function` | `()=>{` |
55
- | isMultiple | `Boolean` | `true` |
56
- | labelStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
57
- | dropdownStyle | `Object` | `{backgroundColor: 'red', margin: 5, ...}` |
58
- | dropdownContainerStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
59
- | selectedItemStyle | `Object` | `{backgroundColor: 'red', color: 'yellow', ...}` |
60
- | modalBackgroundStyle | `Object` | `{backgroundColor: 'blue', ...}` |
61
- | modalOptionsContainer | `Object` | `{padding: 5}` |
61
+ | optionLabel | `string` | `name` |
62
+ | optionValue | `string` | `code` |
63
+ | selectedValue | `string` or `Array` | `AL` or `[AL, AX]` |
64
+ | onValueChange | `function` | `()=>{}` |
65
+ | isMultiple | `Boolean` | `true` |
66
+ | isSearchable | `Boolean` | `true` |
67
+ | labelStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
68
+ | dropdownStyle | `Object` | `{backgroundColor: 'red', margin: 5, ...}` |
69
+ | dropdownContainerStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
70
+ | searchInputStyle | `Object` | `{backgroundColor: 'red', borderRadius: 0, ...}` |
71
+ | selectedItemStyle | `Object` | `{backgroundColor: 'red', color: 'yellow', ...}` |
72
+ | modalBackgroundStyle | `Object` | `{backgroundColor: 'blue', ...}` |
73
+ | modalOptionsContainer | `Object` | `{padding: 5}` |
74
+ | primaryColor | `string` | `blue` |
62
75
 
63
76
  ## Contributing
64
77
 
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _colors = require("./styles/colors");
13
13
 
14
+ var _input = require("./styles/input");
15
+
14
16
  var _typography = require("./styles/typography");
15
17
 
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -22,27 +24,27 @@ const Dropdown = _ref => {
22
24
  helperText,
23
25
  error,
24
26
  getSelectedItemsLabel,
25
- setOpen,
26
- open,
27
+ handleToggleModal,
27
28
  isMultiple,
28
29
  selectedItem,
29
30
  selectedItems,
30
31
  labelStyle,
31
32
  dropdownStyle,
32
33
  dropdownContainerStyle,
33
- selectedItemStyle
34
+ selectedItemStyle,
35
+ primaryColor
34
36
  } = _ref;
35
37
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
36
38
  style: [styles.dropdownInputContainer, dropdownContainerStyle]
37
39
  }, label && label !== '' && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
38
40
  style: [styles.label, labelStyle]
39
41
  }, label), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
40
- onPress: () => setOpen(!open),
42
+ onPress: () => handleToggleModal(),
41
43
  style: _ref2 => {
42
44
  let {
43
45
  pressed
44
46
  } = _ref2;
45
- return [pressed && styles.inputFocusState, styles.input, dropdownStyle];
47
+ return [pressed && _input.inputStyles.inputFocusState, _input.inputStyles.input, dropdownStyle];
46
48
  }
47
49
  }, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
48
50
  horizontal: true,
@@ -53,7 +55,9 @@ const Dropdown = _ref => {
53
55
  onStartShouldSetResponder: () => true
54
56
  }, isMultiple ? getSelectedItemsLabel().map((item, i) => /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
55
57
  key: `SelectedItems${i}`,
56
- style: [styles.selectedItems, selectedItemStyle]
58
+ style: [styles.selectedItems, {
59
+ backgroundColor: primaryColor
60
+ }, selectedItemStyle]
57
61
  }, item)) : /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
58
62
  style: styles.blackText
59
63
  }, getSelectedItemsLabel())), !selectedItem && (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) === 0 && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
@@ -75,27 +79,10 @@ const styles = _reactNative.StyleSheet.create({
75
79
  color: _colors.colors.gray,
76
80
  ..._typography.typography.caption
77
81
  },
78
- input: {
79
- paddingVertical: 18,
80
- paddingHorizontal: 23,
81
- backgroundColor: _colors.colors.lightGray,
82
- borderRadius: 8,
83
- borderColor: _colors.colors.dark,
84
- borderWidth: 1,
85
- color: _colors.colors.dark,
86
- width: '100%',
87
- minHeight: 64
88
- },
89
- inputFocusState: {
90
- borderWidth: 2,
91
- borderStyle: 'solid',
92
- borderColor: _colors.colors.primary,
93
- borderRadius: 8
94
- },
95
82
  inputFocusErrorState: {
96
83
  borderWidth: 2,
97
84
  borderStyle: 'solid',
98
- borderColor: _colors.colors.cliqkiRed
85
+ borderColor: _colors.colors.red
99
86
  },
100
87
  iconStyle: {
101
88
  position: 'absolute',
@@ -103,7 +90,7 @@ const styles = _reactNative.StyleSheet.create({
103
90
  top: 25
104
91
  },
105
92
  error: {
106
- color: _colors.colors.cliqkiRed,
93
+ color: _colors.colors.red,
107
94
  marginTop: 8,
108
95
  ..._typography.typography.caption
109
96
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["Dropdown.tsx"],"names":["Dropdown","label","placeholder","helperText","error","getSelectedItemsLabel","setOpen","open","isMultiple","selectedItem","selectedItems","labelStyle","dropdownStyle","dropdownContainerStyle","selectedItemStyle","styles","dropdownInputContainer","pressed","inputFocusState","input","selectedItemsContainer","map","item","i","blackText","length","iconStyle","require","helper","StyleSheet","create","marginBottom","color","colors","gray","typography","caption","paddingVertical","paddingHorizontal","backgroundColor","lightGray","borderRadius","borderColor","dark","borderWidth","width","minHeight","borderStyle","primary","inputFocusErrorState","cliqkiRed","position","right","top","marginTop","flexDirection","flexWrap","white","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} from 'react-native';\nimport { colors } from './styles/colors';\nimport { typography } from './styles/typography';\n\nconst Dropdown = ({\n label,\n placeholder,\n helperText,\n error,\n getSelectedItemsLabel,\n setOpen,\n open,\n isMultiple,\n selectedItem,\n selectedItems,\n labelStyle,\n dropdownStyle,\n dropdownContainerStyle,\n selectedItemStyle,\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={() => setOpen(!open)}\n style={({ pressed }) => [\n pressed && styles.inputFocusState,\n styles.input,\n dropdownStyle,\n ]}\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 <Text\n key={`SelectedItems${i}`}\n style={[styles.selectedItems, selectedItemStyle]}\n >\n {item}\n </Text>\n ))\n ) : (\n <Text style={styles.blackText}>{getSelectedItemsLabel()}</Text>\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 !== '' && <Text style={styles.error}>{error}</Text>}\n\n {helperText && helperText !== '' && !error && (\n <Text style={styles.helper}>{helperText}</Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n label: { marginBottom: 16, color: colors.gray, ...typography.caption },\n input: {\n paddingVertical: 18,\n paddingHorizontal: 23,\n backgroundColor: colors.lightGray,\n borderRadius: 8,\n borderColor: colors.dark,\n borderWidth: 1,\n color: colors.dark,\n width: '100%',\n minHeight: 64,\n },\n inputFocusState: {\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: colors.primary,\n borderRadius: 8,\n },\n inputFocusErrorState: {\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: colors.cliqkiRed,\n },\n iconStyle: { position: 'absolute', right: 25, top: 25 },\n error: { color: colors.cliqkiRed, 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
+ {"version":3,"sources":["Dropdown.tsx"],"names":["Dropdown","label","placeholder","helperText","error","getSelectedItemsLabel","handleToggleModal","isMultiple","selectedItem","selectedItems","labelStyle","dropdownStyle","dropdownContainerStyle","selectedItemStyle","primaryColor","styles","dropdownInputContainer","pressed","inputStyles","inputFocusState","input","selectedItemsContainer","map","item","i","backgroundColor","blackText","length","iconStyle","require","helper","StyleSheet","create","marginBottom","color","colors","gray","typography","caption","inputFocusErrorState","borderWidth","borderStyle","borderColor","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} 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 primaryColor,\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 && inputStyles.inputFocusState,\n inputStyles.input,\n dropdownStyle,\n ]}\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 <Text\n key={`SelectedItems${i}`}\n style={[\n styles.selectedItems,\n { backgroundColor: primaryColor },\n selectedItemStyle,\n ]}\n >\n {item}\n </Text>\n ))\n ) : (\n <Text style={styles.blackText}>{getSelectedItemsLabel()}</Text>\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 !== '' && <Text style={styles.error}>{error}</Text>}\n\n {helperText && helperText !== '' && !error && (\n <Text style={styles.helper}>{helperText}</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"]}
@@ -24,18 +24,16 @@ const DropdownList = _ref => {
24
24
  selectedItems,
25
25
  selectedItem,
26
26
  handleMultipleSelections,
27
- handleSingleSelection
27
+ handleSingleSelection,
28
+ primaryColor
28
29
  } = _ref;
29
30
  return /*#__PURE__*/_react.default.createElement(_reactNative.FlatList, {
30
31
  data: options,
31
32
  extraData: isMultiple ? selectedItems : selectedItem,
32
- initialNumToRender: 5 // ListEmptyComponent={
33
- // <EmptyStateComponent
34
- // style={{alignItems: 'flex-start', marginTop: 30}}
35
- // message="Be the first to reply"
36
- // />
37
- // }
38
- ,
33
+ initialNumToRender: 5,
34
+ ListEmptyComponent: /*#__PURE__*/_react.default.createElement(_reactNative.View, {
35
+ style: styles.emptyListStyle
36
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, "No options available")),
39
37
  ItemSeparatorComponent: () => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
38
  style: styles.itemSeparatorStyle
41
39
  }),
@@ -44,7 +42,8 @@ const DropdownList = _ref => {
44
42
  optionValue,
45
43
  isMultiple,
46
44
  selectedOption: isMultiple ? selectedItems : selectedItem,
47
- onChange: isMultiple ? handleMultipleSelections : handleSingleSelection
45
+ onChange: isMultiple ? handleMultipleSelections : handleSingleSelection,
46
+ primaryColor
48
47
  }),
49
48
  keyExtractor: (_item, index) => `Options${index}`
50
49
  });
@@ -60,7 +59,8 @@ const _renderItem = (_ref2, props) => {
60
59
  optionValue: props.optionValue,
61
60
  isMultiple: props.isMultiple,
62
61
  selectedOption: props.selectedOption,
63
- onChange: props.onChange
62
+ onChange: props.onChange,
63
+ primaryColor: props.primaryColor
64
64
  });
65
65
  };
66
66
 
@@ -82,6 +82,11 @@ const styles = _reactNative.StyleSheet.create({
82
82
  backgroundColor: _colors.colors.gray,
83
83
  height: 1,
84
84
  opacity: 0.15
85
+ },
86
+ emptyListStyle: {
87
+ alignItems: 'center',
88
+ width: '100%',
89
+ marginVertical: 20
85
90
  }
86
91
  });
87
92
 
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownList.tsx"],"names":["DropdownList","options","optionLabel","optionValue","isMultiple","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","styles","itemSeparatorStyle","item","_renderItem","selectedOption","onChange","_item","index","props","StyleSheet","create","modalContainer","flex","justifyContent","modalBackgroundStyle","backgroundColor","modalOptionsContainer","maxHeight","colors","white","borderTopLeftRadius","borderTopRightRadius","gray","height","opacity"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,YAAY,GAAG,QASV;AAAA,MATW;AACpBC,IAAAA,OADoB;AAEpBC,IAAAA,WAFoB;AAGpBC,IAAAA,WAHoB;AAIpBC,IAAAA,UAJoB;AAKpBC,IAAAA,aALoB;AAMpBC,IAAAA,YANoB;AAOpBC,IAAAA,wBAPoB;AAQpBC,IAAAA;AARoB,GASX;AACT,sBACE,6BAAC,qBAAD;AACE,IAAA,IAAI,EAAEP,OADR;AAEE,IAAA,SAAS,EAAEG,UAAU,GAAGC,aAAH,GAAmBC,YAF1C;AAGE,IAAA,kBAAkB,EAAE,CAHtB,CAIE;AACA;AACA;AACA;AACA;AACA;AATF;AAUE,IAAA,sBAAsB,EAAE,mBAAM,6BAAC,iBAAD;AAAM,MAAA,KAAK,EAAEG,MAAM,CAACC;AAApB,MAVhC;AAWE,IAAA,UAAU,EAAGC,IAAD,IACVC,WAAW,CAACD,IAAD,EAAO;AAChBT,MAAAA,WADgB;AAEhBC,MAAAA,WAFgB;AAGhBC,MAAAA,UAHgB;AAIhBS,MAAAA,cAAc,EAAET,UAAU,GAAGC,aAAH,GAAmBC,YAJ7B;AAKhBQ,MAAAA,QAAQ,EAAEV,UAAU,GAChBG,wBADgB,GAEhBC;AAPY,KAAP,CAZf;AAsBE,IAAA,YAAY,EAAE,CAACO,KAAD,EAAQC,KAAR,KAAmB,UAASA,KAAM;AAtBlD,IADF;AA0BD,CApCD;;AAsCA,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,CAACf,WAFrB;AAGE,IAAA,WAAW,EAAEe,KAAK,CAACd,WAHrB;AAIE,IAAA,UAAU,EAAEc,KAAK,CAACb,UAJpB;AAKE,IAAA,cAAc,EAAEa,KAAK,CAACJ,cALxB;AAME,IAAA,QAAQ,EAAEI,KAAK,CAACH;AANlB,IADF;AAUD,CAXD;;AAaA,MAAML,MAAM,GAAGS,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;AAZW,CAAlB,CAAf;;eAmBejC,Y","sourcesContent":["import React from 'react';\nimport { View, FlatList, StyleSheet } 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}: any) => {\n return (\n <FlatList\n data={options}\n extraData={isMultiple ? selectedItems : selectedItem}\n initialNumToRender={5}\n // ListEmptyComponent={\n // <EmptyStateComponent\n // style={{alignItems: 'flex-start', marginTop: 30}}\n // message=\"Be the first to reply\"\n // />\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 })\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 />\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});\n\nexport default DropdownList;\n"]}
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"]}
@@ -26,7 +26,8 @@ const DropdownListItem = _ref => {
26
26
  optionValue,
27
27
  isMultiple,
28
28
  selectedOption,
29
- onChange
29
+ onChange,
30
+ primaryColor
30
31
  } = _ref;
31
32
  const selectedOptionValue = optionValue !== null && optionValue !== void 0 ? optionValue : 'value';
32
33
  return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
@@ -40,12 +41,12 @@ const DropdownListItem = _ref => {
40
41
  boxType: "circle" //works on ios only
41
42
  ,
42
43
  tintColors: {
43
- true: _colors.colors.primary
44
+ true: primaryColor || _colors.colors.primary
44
45
  } //android control
45
46
  ,
46
- onCheckColor: _colors.colors.primary //ios checkmark colour control
47
+ onCheckColor: primaryColor || _colors.colors.primary //ios checkmark colour control
47
48
  ,
48
- onTintColor: _colors.colors.primary //ios box colour control
49
+ onTintColor: primaryColor || _colors.colors.primary //ios box colour control
49
50
 
50
51
  })), /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, item[optionLabel !== null && optionLabel !== void 0 ? optionLabel : 'label'])));
51
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownListItem.tsx"],"names":["DropdownListItem","item","optionLabel","optionValue","isMultiple","selectedOption","onChange","selectedOptionValue","styles","modalOptions","spacing","includes","true","colors","primary","StyleSheet","create","marginRight","paddingHorizontal","paddingVertical","flexDirection","alignItems"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,gBAAgB,GAAG,QAOd;AAAA,MAPe;AACxBC,IAAAA,IADwB;AAExBC,IAAAA,WAFwB;AAGxBC,IAAAA,WAHwB;AAIxBC,IAAAA,UAJwB;AAKxBC,IAAAA,cALwB;AAMxBC,IAAAA;AANwB,GAOf;AACT,QAAMC,mBAAmB,GAAGJ,WAAH,aAAGA,WAAH,cAAGA,WAAH,GAAkB,OAA3C;AACA,sBACE,6BAAC,6BAAD;AACE,IAAA,KAAK,EAAEK,MAAM,CAACC,YADhB;AAEE,IAAA,OAAO,EAAE,MAAMH,QAAQ,CAACL,IAAI,CAACM,mBAAD,CAAL;AAFzB,kBAIE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACE;AAApB,kBACE,6BAAC,iBAAD;AACE,IAAA,KAAK,EACHN,UAAU,GACNC,cAAc,CAACM,QAAf,CAAwBV,IAAI,CAACM,mBAAD,CAA5B,CADM,GAEN,CAACF,cAAD,EAAiBM,QAAjB,CAA0BV,IAAI,CAACM,mBAAD,CAA9B,CAJR;AAME,IAAA,QAAQ,EAAE,MAAMD,QAAQ,CAACL,IAAI,CAACM,mBAAD,CAAL,CAN1B;AAOE,IAAA,OAAO,EAAC,QAPV,CAOmB;AAPnB;AAQE,IAAA,UAAU,EAAE;AAAEK,MAAAA,IAAI,EAAEC,eAAOC;AAAf,KARd,CAQwC;AARxC;AASE,IAAA,YAAY,EAAED,eAAOC,OATvB,CASgC;AAThC;AAUE,IAAA,WAAW,EAAED,eAAOC,OAVtB,CAU+B;;AAV/B,IADF,CAJF,eAkBE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD,QAAOb,IAAI,CAACC,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgB,OAAhB,CAAX,CADF,CAlBF,CADF;AAwBD,CAjCD;;AAmCA,MAAMM,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,iBAAKrB,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}: 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: colors.primary }} //android control\n onCheckColor={colors.primary} //ios checkmark colour control\n onTintColor={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
+ {"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"]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Input = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _input = require("./styles/input");
13
+
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+
18
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+
20
+ const Input = _ref => {
21
+ let {
22
+ placeholder,
23
+ value,
24
+ onChangeText,
25
+ style,
26
+ ...rest
27
+ } = _ref;
28
+ const [isFocused, setFocus] = (0, _react.useState)(false);
29
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
30
+ style: styles.container
31
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, _extends({
32
+ placeholder: placeholder,
33
+ style: [_input.inputStyles.input, isFocused && _input.inputStyles.inputFocusState, style],
34
+ onFocus: () => {
35
+ setFocus(true);
36
+ },
37
+ onBlur: () => setFocus(false),
38
+ value: value,
39
+ onChangeText: onChangeText
40
+ }, rest)));
41
+ };
42
+
43
+ exports.Input = Input;
44
+
45
+ const styles = _reactNative.StyleSheet.create({
46
+ container: {
47
+ margin: 23
48
+ }
49
+ });
50
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Input.tsx"],"names":["Input","placeholder","value","onChangeText","style","rest","isFocused","setFocus","styles","container","inputStyles","input","inputFocusState","StyleSheet","create","margin"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEO,MAAMA,KAAK,GAAG,QAMV;AAAA,MANW;AACpBC,IAAAA,WADoB;AAEpBC,IAAAA,KAFoB;AAGpBC,IAAAA,YAHoB;AAIpBC,IAAAA,KAJoB;AAKpB,OAAGC;AALiB,GAMX;AACT,QAAM,CAACC,SAAD,EAAYC,QAAZ,IAAwB,qBAAS,KAAT,CAA9B;AAEA,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACC;AAApB,kBACE,6BAAC,sBAAD;AACE,IAAA,WAAW,EAAER,WADf;AAEE,IAAA,KAAK,EAAE,CACLS,mBAAYC,KADP,EAELL,SAAS,IAAII,mBAAYE,eAFpB,EAGLR,KAHK,CAFT;AAOE,IAAA,OAAO,EAAE,MAAM;AACbG,MAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,KATH;AAUE,IAAA,MAAM,EAAE,MAAMA,QAAQ,CAAC,KAAD,CAVxB;AAWE,IAAA,KAAK,EAAEL,KAXT;AAYE,IAAA,YAAY,EAAEC;AAZhB,KAaME,IAbN,EADF,CADF;AAmBD,CA5BM;;;;AA8BP,MAAMG,MAAM,GAAGK,wBAAWC,MAAX,CAAkB;AAC/BL,EAAAA,SAAS,EAAE;AAAEM,IAAAA,MAAM,EAAE;AAAV;AADoB,CAAlB,CAAf","sourcesContent":["import React, { useState } from 'react';\nimport { TextInput, StyleSheet, View } from 'react-native';\nimport { inputStyles } from './styles/input';\n\nexport const Input = ({\n placeholder,\n value,\n onChangeText,\n style,\n ...rest\n}: any) => {\n const [isFocused, setFocus] = useState(false);\n\n return (\n <View style={styles.container}>\n <TextInput\n placeholder={placeholder}\n style={[\n inputStyles.input,\n isFocused && inputStyles.inputFocusState,\n style,\n ]}\n onFocus={() => {\n setFocus(true);\n }}\n onBlur={() => setFocus(false)}\n value={value}\n onChangeText={onChangeText}\n {...rest}\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { margin: 23 },\n});\n"]}
@@ -16,7 +16,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
16
16
  const CustomModal = _ref => {
17
17
  let {
18
18
  open,
19
- setOpen,
19
+ handleToggleModal,
20
20
  onRequestClose,
21
21
  modalBackgroundStyle,
22
22
  modalOptionsContainerStyle,
@@ -28,7 +28,7 @@ const CustomModal = _ref => {
28
28
  onRequestClose: () => onRequestClose(),
29
29
  animationType: "fade"
30
30
  }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
31
- onPress: () => setOpen(!open),
31
+ onPress: () => handleToggleModal(),
32
32
  style: [styles.modalContainer, styles.modalBackgroundStyle, modalBackgroundStyle]
33
33
  }, /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
34
34
  style: [styles.modalOptionsContainer, modalOptionsContainerStyle]
@@ -1 +1 @@
1
- {"version":3,"sources":["Modal.tsx"],"names":["CustomModal","open","setOpen","onRequestClose","modalBackgroundStyle","modalOptionsContainerStyle","children","styles","modalContainer","modalOptionsContainer","StyleSheet","create","flex","justifyContent","backgroundColor","maxHeight","colors","white","borderTopLeftRadius","borderTopRightRadius"],"mappings":";;;;;;;AAAA;;AACA;;AAMA;;;;AAEA,MAAMA,WAAW,GAAG,QAOT;AAAA,MAPU;AACnBC,IAAAA,IADmB;AAEnBC,IAAAA,OAFmB;AAGnBC,IAAAA,cAHmB;AAInBC,IAAAA,oBAJmB;AAKnBC,IAAAA,0BALmB;AAMnBC,IAAAA;AANmB,GAOV;AACT,sBACE,6BAAC,kBAAD;AACE,IAAA,WAAW,EAAE,IADf;AAEE,IAAA,OAAO,EAAEL,IAFX;AAGE,IAAA,cAAc,EAAE,MAAME,cAAc,EAHtC;AAIE,IAAA,aAAa,EAAC;AAJhB,kBAME,6BAAC,6BAAD;AACE,IAAA,OAAO,EAAE,MAAMD,OAAO,CAAC,CAACD,IAAF,CADxB;AAEE,IAAA,KAAK,EAAE,CACLM,MAAM,CAACC,cADF,EAELD,MAAM,CAACH,oBAFF,EAGLA,oBAHK;AAFT,kBAQE,6BAAC,yBAAD;AACE,IAAA,KAAK,EAAE,CAACG,MAAM,CAACE,qBAAR,EAA+BJ,0BAA/B;AADT,KAGGC,QAHH,CARF,CANF,CADF;AAuBD,CA/BD;;AAiCA,MAAMC,MAAM,GAAGG,wBAAWC,MAAX,CAAkB;AAC/BH,EAAAA,cAAc,EAAE;AACdI,IAAAA,IAAI,EAAE,CADQ;AAEdC,IAAAA,cAAc,EAAE;AAFF,GADe;AAK/BT,EAAAA,oBAAoB,EAAE;AAAEU,IAAAA,eAAe,EAAE;AAAnB,GALS;AAM/BL,EAAAA,qBAAqB,EAAE;AACrBM,IAAAA,SAAS,EAAE,KADU;AAErBD,IAAAA,eAAe,EAAEE,eAAOC,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD;AANQ,CAAlB,CAAf;;eAcenB,W","sourcesContent":["import React from 'react';\nimport {\n Modal,\n TouchableOpacity,\n SafeAreaView,\n StyleSheet,\n} from 'react-native';\nimport { colors } from './styles/colors';\n\nconst CustomModal = ({\n open,\n setOpen,\n onRequestClose,\n modalBackgroundStyle,\n modalOptionsContainerStyle,\n children,\n}: any) => {\n return (\n <Modal\n transparent={true}\n visible={open}\n onRequestClose={() => onRequestClose()}\n animationType=\"fade\"\n >\n <TouchableOpacity\n onPress={() => setOpen(!open)}\n style={[\n styles.modalContainer,\n styles.modalBackgroundStyle,\n modalBackgroundStyle,\n ]}\n >\n <SafeAreaView\n style={[styles.modalOptionsContainer, modalOptionsContainerStyle]}\n >\n {children}\n </SafeAreaView>\n </TouchableOpacity>\n </Modal>\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});\n\nexport default CustomModal;\n"]}
1
+ {"version":3,"sources":["Modal.tsx"],"names":["CustomModal","open","handleToggleModal","onRequestClose","modalBackgroundStyle","modalOptionsContainerStyle","children","styles","modalContainer","modalOptionsContainer","StyleSheet","create","flex","justifyContent","backgroundColor","maxHeight","colors","white","borderTopLeftRadius","borderTopRightRadius"],"mappings":";;;;;;;AAAA;;AACA;;AAMA;;;;AAEA,MAAMA,WAAW,GAAG,QAOT;AAAA,MAPU;AACnBC,IAAAA,IADmB;AAEnBC,IAAAA,iBAFmB;AAGnBC,IAAAA,cAHmB;AAInBC,IAAAA,oBAJmB;AAKnBC,IAAAA,0BALmB;AAMnBC,IAAAA;AANmB,GAOV;AACT,sBACE,6BAAC,kBAAD;AACE,IAAA,WAAW,EAAE,IADf;AAEE,IAAA,OAAO,EAAEL,IAFX;AAGE,IAAA,cAAc,EAAE,MAAME,cAAc,EAHtC;AAIE,IAAA,aAAa,EAAC;AAJhB,kBAME,6BAAC,6BAAD;AACE,IAAA,OAAO,EAAE,MAAMD,iBAAiB,EADlC;AAEE,IAAA,KAAK,EAAE,CACLK,MAAM,CAACC,cADF,EAELD,MAAM,CAACH,oBAFF,EAGLA,oBAHK;AAFT,kBAQE,6BAAC,yBAAD;AACE,IAAA,KAAK,EAAE,CAACG,MAAM,CAACE,qBAAR,EAA+BJ,0BAA/B;AADT,KAGGC,QAHH,CARF,CANF,CADF;AAuBD,CA/BD;;AAiCA,MAAMC,MAAM,GAAGG,wBAAWC,MAAX,CAAkB;AAC/BH,EAAAA,cAAc,EAAE;AACdI,IAAAA,IAAI,EAAE,CADQ;AAEdC,IAAAA,cAAc,EAAE;AAFF,GADe;AAK/BT,EAAAA,oBAAoB,EAAE;AAAEU,IAAAA,eAAe,EAAE;AAAnB,GALS;AAM/BL,EAAAA,qBAAqB,EAAE;AACrBM,IAAAA,SAAS,EAAE,KADU;AAErBD,IAAAA,eAAe,EAAEE,eAAOC,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD;AANQ,CAAlB,CAAf;;eAcenB,W","sourcesContent":["import React from 'react';\nimport {\n Modal,\n TouchableOpacity,\n SafeAreaView,\n StyleSheet,\n} from 'react-native';\nimport { colors } from './styles/colors';\n\nconst CustomModal = ({\n open,\n handleToggleModal,\n onRequestClose,\n modalBackgroundStyle,\n modalOptionsContainerStyle,\n children,\n}: any) => {\n return (\n <Modal\n transparent={true}\n visible={open}\n onRequestClose={() => onRequestClose()}\n animationType=\"fade\"\n >\n <TouchableOpacity\n onPress={() => handleToggleModal()}\n style={[\n styles.modalContainer,\n styles.modalBackgroundStyle,\n modalBackgroundStyle,\n ]}\n >\n <SafeAreaView\n style={[styles.modalOptionsContainer, modalOptionsContainerStyle]}\n >\n {children}\n </SafeAreaView>\n </TouchableOpacity>\n </Modal>\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});\n\nexport default CustomModal;\n"]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_OPTION_VALUE = exports.DEFAULT_OPTION_LABEL = void 0;
7
+ const DEFAULT_OPTION_LABEL = 'label';
8
+ exports.DEFAULT_OPTION_LABEL = DEFAULT_OPTION_LABEL;
9
+ const DEFAULT_OPTION_VALUE = 'value';
10
+ exports.DEFAULT_OPTION_VALUE = DEFAULT_OPTION_VALUE;
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["DEFAULT_OPTION_LABEL","DEFAULT_OPTION_VALUE"],"mappings":";;;;;;AAAO,MAAMA,oBAAoB,GAAG,OAA7B;;AACA,MAAMC,oBAAoB,GAAG,OAA7B","sourcesContent":["export const DEFAULT_OPTION_LABEL = 'label';\nexport const DEFAULT_OPTION_VALUE = 'value';\n"]}
@@ -13,6 +13,10 @@ var _Modal = _interopRequireDefault(require("./Modal"));
13
13
 
14
14
  var _DropdownList = _interopRequireDefault(require("./DropdownList"));
15
15
 
16
+ var _constants = require("./constants");
17
+
18
+ var _Input = require("./Input");
19
+
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
18
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -31,18 +35,23 @@ const DropdownSelect = _ref => {
31
35
  onValueChange,
32
36
  selectedValue,
33
37
  isMultiple,
38
+ isSearchable,
34
39
  labelStyle,
35
40
  dropdownStyle,
36
41
  dropdownContainerStyle,
37
42
  selectedItemStyle,
38
43
  modalBackgroundStyle,
39
- modalOptionsContainer
44
+ modalOptionsContainer,
45
+ searchInputStyle,
46
+ primaryColor
40
47
  } = _ref;
48
+ const [newOptions, setNewOptions] = (0, _react.useState)(options ? options : []);
41
49
  const [open, setOpen] = (0, _react.useState)(false);
42
50
  const [selectedItem, setSelectedItem] = (0, _react.useState)(selectedValue); //for single selection
43
51
 
44
52
  const [selectedItems, setSelectedItems] = (0, _react.useState)(Array.isArray(selectedValue) ? selectedValue : selectedValue === '' || selectedValue === undefined ? [] : [selectedValue]); //for multiple selection
45
53
 
54
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
46
55
  /*===========================================
47
56
  * Selection handlers
48
57
  *==========================================*/
@@ -80,14 +89,37 @@ const DropdownSelect = _ref => {
80
89
  selectedItems && selectedItems.forEach(element => {
81
90
  var _options$find;
82
91
 
83
- let selectedItemLabel = options && ((_options$find = options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : 'value'] === element)) === null || _options$find === void 0 ? void 0 : _options$find[optionLabel]);
92
+ let selectedItemLabel = options && ((_options$find = options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : _constants.DEFAULT_OPTION_VALUE] === element)) === null || _options$find === void 0 ? void 0 : _options$find[optionLabel]);
84
93
  selectedLabels.push(selectedItemLabel);
85
94
  });
86
95
  return selectedLabels;
87
96
  }
88
97
 
89
- let selectedItemLabel = options && options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : 'value'] === selectedItem);
90
- return selectedItemLabel === null || selectedItemLabel === void 0 ? void 0 : selectedItemLabel[optionLabel];
98
+ let selectedItemLabel = options && options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : _constants.DEFAULT_OPTION_VALUE] === selectedItem);
99
+ return selectedItemLabel === null || selectedItemLabel === void 0 ? void 0 : selectedItemLabel[optionLabel !== null && optionLabel !== void 0 ? optionLabel : _constants.DEFAULT_OPTION_LABEL];
100
+ };
101
+ /*===========================================
102
+ * Search
103
+ *==========================================*/
104
+
105
+
106
+ const onSearch = value => {
107
+ setSearchValue(value);
108
+ let searchTerm = value.toString().toLocaleLowerCase();
109
+ const searchResults = options.filter(item => {
110
+ return item[optionLabel !== null && optionLabel !== void 0 ? optionLabel : _constants.DEFAULT_OPTION_LABEL].toString().toLowerCase().includes(searchTerm) || item[optionValue !== null && optionValue !== void 0 ? optionValue : _constants.DEFAULT_OPTION_VALUE].toString(searchTerm).toLowerCase().includes();
111
+ });
112
+ setNewOptions(searchResults);
113
+ };
114
+ /*===========================================
115
+ * Modal
116
+ *==========================================*/
117
+
118
+
119
+ const handleToggleModal = () => {
120
+ setOpen(!open);
121
+ setSearchValue('');
122
+ setNewOptions(options);
91
123
  };
92
124
 
93
125
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Dropdown.default, {
@@ -98,28 +130,33 @@ const DropdownSelect = _ref => {
98
130
  getSelectedItemsLabel: getSelectedItemsLabel,
99
131
  selectedItem: selectedItem,
100
132
  selectedItems: selectedItems,
101
- setOpen: setOpen,
102
- open: open,
133
+ handleToggleModal: handleToggleModal,
103
134
  labelStyle: labelStyle,
104
135
  dropdownStyle: dropdownStyle,
105
136
  dropdownContainerStyle: dropdownContainerStyle,
106
137
  selectedItemStyle: selectedItemStyle,
107
- isMultiple: isMultiple
138
+ isMultiple: isMultiple,
139
+ primaryColor: primaryColor
108
140
  }), /*#__PURE__*/_react.default.createElement(_Modal.default, {
109
141
  open: open,
110
- setOpen: setOpen,
142
+ handleToggleModal: handleToggleModal,
111
143
  modalBackgroundStyle: modalBackgroundStyle,
112
144
  modalOptionsContainer: modalOptionsContainer,
113
145
  onRequestClose: () => {}
114
- }, /*#__PURE__*/_react.default.createElement(_DropdownList.default, {
115
- options: options,
146
+ }, isSearchable && /*#__PURE__*/_react.default.createElement(_Input.Input, {
147
+ value: searchValue,
148
+ onChangeText: text => onSearch(text),
149
+ style: searchInputStyle
150
+ }), /*#__PURE__*/_react.default.createElement(_DropdownList.default, {
151
+ options: newOptions,
116
152
  optionLabel: optionLabel,
117
153
  optionValue: optionValue,
118
154
  isMultiple: isMultiple,
119
155
  selectedItems: selectedItems,
120
156
  selectedItem: selectedItem,
121
157
  handleMultipleSelections: handleMultipleSelections,
122
- handleSingleSelection: handleSingleSelection
158
+ handleSingleSelection: handleSingleSelection,
159
+ primaryColor: primaryColor
123
160
  })));
124
161
  };
125
162