react-native-input-select 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +69 -0
- package/lib/commonjs/Dropdown.js +138 -0
- package/lib/commonjs/Dropdown.js.map +1 -0
- package/lib/commonjs/DropdownList.js +90 -0
- package/lib/commonjs/DropdownList.js.map +1 -0
- package/lib/commonjs/DropdownListItem.js +68 -0
- package/lib/commonjs/DropdownListItem.js.map +1 -0
- package/lib/commonjs/Modal.js +56 -0
- package/lib/commonjs/Modal.js.map +1 -0
- package/lib/commonjs/asset/arrow-down.png +0 -0
- package/lib/commonjs/index.js +129 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/styles/colors.js +16 -0
- package/lib/commonjs/styles/colors.js.map +1 -0
- package/lib/commonjs/styles/typography.js +20 -0
- package/lib/commonjs/styles/typography.js.map +1 -0
- package/lib/module/Dropdown.js +124 -0
- package/lib/module/Dropdown.js.map +1 -0
- package/lib/module/DropdownList.js +76 -0
- package/lib/module/DropdownList.js.map +1 -0
- package/lib/module/DropdownListItem.js +49 -0
- package/lib/module/DropdownListItem.js.map +1 -0
- package/lib/module/Modal.js +43 -0
- package/lib/module/Modal.js.map +1 -0
- package/lib/module/asset/arrow-down.png +0 -0
- package/lib/module/index.js +109 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/styles/colors.js +9 -0
- package/lib/module/styles/colors.js.map +1 -0
- package/lib/module/styles/typography.js +10 -0
- package/lib/module/styles/typography.js.map +1 -0
- package/lib/typescript/Dropdown.d.ts +2 -0
- package/lib/typescript/DropdownList.d.ts +2 -0
- package/lib/typescript/DropdownListItem.d.ts +3 -0
- package/lib/typescript/Modal.d.ts +2 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/styles/colors.d.ts +1 -0
- package/lib/typescript/styles/typography.d.ts +1 -0
- package/package.json +151 -0
- package/src/Dropdown.tsx +125 -0
- package/src/DropdownList.tsx +76 -0
- package/src/DropdownListItem.tsx +51 -0
- package/src/Modal.tsx +57 -0
- package/src/asset/arrow-down.png +0 -0
- package/src/index.tsx +120 -0
- package/src/styles/colors.ts +8 -0
- package/src/styles/typography.ts +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["colors.ts"],"names":["colors","primary","black","white","dark","gray","lightGray"],"mappings":";;;;;;AAAO,MAAMA,MAAW,GAAG;AACzBC,EAAAA,OAAO,EAAE,SADgB;AAEzBC,EAAAA,KAAK,EAAE,SAFkB;AAGzBC,EAAAA,KAAK,EAAE,SAHkB;AAIzBC,EAAAA,IAAI,EAAE,SAJmB;AAKzBC,EAAAA,IAAI,EAAE,SALmB;AAMzBC,EAAAA,SAAS,EAAE;AANc,CAApB","sourcesContent":["export const colors: any = {\n primary: '#EF8031',\n black: '#000000',\n white: '#FFFFFF',\n dark: '#11142D',\n gray: '#808191',\n lightGray: '#F7F7F7',\n};\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.typography = void 0;
|
|
7
|
+
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
|
|
10
|
+
const typography = _reactNative.StyleSheet.create({
|
|
11
|
+
caption: {
|
|
12
|
+
fontStyle: 'normal',
|
|
13
|
+
fontWeight: 'normal',
|
|
14
|
+
fontSize: 12,
|
|
15
|
+
lineHeight: 15
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
exports.typography = typography;
|
|
20
|
+
//# sourceMappingURL=typography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["typography.ts"],"names":["typography","StyleSheet","create","caption","fontStyle","fontWeight","fontSize","lineHeight"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,UAAe,GAAGC,wBAAWC,MAAX,CAAkB;AAC/CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,QADJ;AAEPC,IAAAA,UAAU,EAAE,QAFL;AAGPC,IAAAA,QAAQ,EAAE,EAHH;AAIPC,IAAAA,UAAU,EAAE;AAJL;AADsC,CAAlB,CAAxB","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const typography: any = StyleSheet.create({\n caption: {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: 12,\n lineHeight: 15,\n },\n});\n"]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, Text, Pressable, ScrollView, StyleSheet, Image } from 'react-native';
|
|
3
|
+
import { colors } from './styles/colors';
|
|
4
|
+
import { typography } from './styles/typography';
|
|
5
|
+
|
|
6
|
+
const Dropdown = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
label,
|
|
9
|
+
placeholder,
|
|
10
|
+
helperText,
|
|
11
|
+
error,
|
|
12
|
+
getSelectedItemsLabel,
|
|
13
|
+
setOpen,
|
|
14
|
+
open,
|
|
15
|
+
isMultiple,
|
|
16
|
+
selectedItem,
|
|
17
|
+
selectedItems,
|
|
18
|
+
labelStyle,
|
|
19
|
+
dropdownStyle,
|
|
20
|
+
dropdownContainerStyle,
|
|
21
|
+
selectedItemStyle
|
|
22
|
+
} = _ref;
|
|
23
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
24
|
+
style: [styles.dropdownInputContainer, dropdownContainerStyle]
|
|
25
|
+
}, label && label !== '' && /*#__PURE__*/React.createElement(Text, {
|
|
26
|
+
style: [styles.label, labelStyle]
|
|
27
|
+
}, label), /*#__PURE__*/React.createElement(Pressable, {
|
|
28
|
+
onPress: () => setOpen(!open),
|
|
29
|
+
style: _ref2 => {
|
|
30
|
+
let {
|
|
31
|
+
pressed
|
|
32
|
+
} = _ref2;
|
|
33
|
+
return [pressed && styles.inputFocusState, styles.input, dropdownStyle];
|
|
34
|
+
}
|
|
35
|
+
}, /*#__PURE__*/React.createElement(ScrollView, {
|
|
36
|
+
horizontal: true,
|
|
37
|
+
alwaysBounceHorizontal: true,
|
|
38
|
+
showsHorizontalScrollIndicator: false
|
|
39
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
40
|
+
style: styles.selectedItemsContainer,
|
|
41
|
+
onStartShouldSetResponder: () => true
|
|
42
|
+
}, isMultiple ? getSelectedItemsLabel().map((item, i) => /*#__PURE__*/React.createElement(Text, {
|
|
43
|
+
key: `SelectedItems${i}`,
|
|
44
|
+
style: [styles.selectedItems, selectedItemStyle]
|
|
45
|
+
}, item)) : /*#__PURE__*/React.createElement(Text, {
|
|
46
|
+
style: styles.blackText
|
|
47
|
+
}, getSelectedItemsLabel())), !selectedItem && (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) === 0 && /*#__PURE__*/React.createElement(Text, {
|
|
48
|
+
style: styles.blackText
|
|
49
|
+
}, placeholder !== null && placeholder !== void 0 ? placeholder : 'Select an option')), /*#__PURE__*/React.createElement(View, {
|
|
50
|
+
style: styles.iconStyle
|
|
51
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
52
|
+
source: require('../src/asset/arrow-down.png')
|
|
53
|
+
}))), error && error !== '' && /*#__PURE__*/React.createElement(Text, {
|
|
54
|
+
style: styles.error
|
|
55
|
+
}, error), helperText && helperText !== '' && !error && /*#__PURE__*/React.createElement(Text, {
|
|
56
|
+
style: styles.helper
|
|
57
|
+
}, helperText));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const styles = StyleSheet.create({
|
|
61
|
+
label: {
|
|
62
|
+
marginBottom: 16,
|
|
63
|
+
color: colors.gray,
|
|
64
|
+
...typography.caption
|
|
65
|
+
},
|
|
66
|
+
input: {
|
|
67
|
+
paddingVertical: 18,
|
|
68
|
+
paddingHorizontal: 23,
|
|
69
|
+
backgroundColor: colors.lightGray,
|
|
70
|
+
borderRadius: 8,
|
|
71
|
+
borderColor: colors.dark,
|
|
72
|
+
borderWidth: 1,
|
|
73
|
+
color: colors.dark,
|
|
74
|
+
width: '100%',
|
|
75
|
+
minHeight: 64
|
|
76
|
+
},
|
|
77
|
+
inputFocusState: {
|
|
78
|
+
borderWidth: 2,
|
|
79
|
+
borderStyle: 'solid',
|
|
80
|
+
borderColor: colors.primary,
|
|
81
|
+
borderRadius: 8
|
|
82
|
+
},
|
|
83
|
+
inputFocusErrorState: {
|
|
84
|
+
borderWidth: 2,
|
|
85
|
+
borderStyle: 'solid',
|
|
86
|
+
borderColor: colors.cliqkiRed
|
|
87
|
+
},
|
|
88
|
+
iconStyle: {
|
|
89
|
+
position: 'absolute',
|
|
90
|
+
right: 25,
|
|
91
|
+
top: 25
|
|
92
|
+
},
|
|
93
|
+
error: {
|
|
94
|
+
color: colors.cliqkiRed,
|
|
95
|
+
marginTop: 8,
|
|
96
|
+
...typography.caption
|
|
97
|
+
},
|
|
98
|
+
helper: {
|
|
99
|
+
marginTop: 8,
|
|
100
|
+
color: colors.primary,
|
|
101
|
+
...typography.caption
|
|
102
|
+
},
|
|
103
|
+
dropdownInputContainer: {
|
|
104
|
+
marginBottom: 23,
|
|
105
|
+
width: '100%'
|
|
106
|
+
},
|
|
107
|
+
selectedItemsContainer: {
|
|
108
|
+
flexDirection: 'row',
|
|
109
|
+
flexWrap: 'nowrap'
|
|
110
|
+
},
|
|
111
|
+
selectedItems: {
|
|
112
|
+
color: colors.white,
|
|
113
|
+
paddingHorizontal: 10,
|
|
114
|
+
paddingVertical: 5,
|
|
115
|
+
borderRadius: 10,
|
|
116
|
+
backgroundColor: colors.primary,
|
|
117
|
+
marginRight: 10
|
|
118
|
+
},
|
|
119
|
+
blackText: {
|
|
120
|
+
color: colors.black
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
export default Dropdown;
|
|
124
|
+
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Dropdown.tsx"],"names":["React","View","Text","Pressable","ScrollView","StyleSheet","Image","colors","typography","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","create","marginBottom","color","gray","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":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,IADF,EAEEC,IAFF,EAGEC,SAHF,EAIEC,UAJF,EAKEC,UALF,EAMEC,KANF,QAOO,cAPP;AAQA,SAASC,MAAT,QAAuB,iBAAvB;AACA,SAASC,UAAT,QAA2B,qBAA3B;;AAEA,MAAMC,QAAQ,GAAG,QAeN;AAAA,MAfO;AAChBC,IAAAA,KADgB;AAEhBC,IAAAA,WAFgB;AAGhBC,IAAAA,UAHgB;AAIhBC,IAAAA,KAJgB;AAKhBC,IAAAA,qBALgB;AAMhBC,IAAAA,OANgB;AAOhBC,IAAAA,IAPgB;AAQhBC,IAAAA,UARgB;AAShBC,IAAAA,YATgB;AAUhBC,IAAAA,aAVgB;AAWhBC,IAAAA,UAXgB;AAYhBC,IAAAA,aAZgB;AAahBC,IAAAA,sBAbgB;AAchBC,IAAAA;AAdgB,GAeP;AACT,sBACE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACC,MAAM,CAACC,sBAAR,EAAgCH,sBAAhC;AAAb,KACGZ,KAAK,IAAIA,KAAK,KAAK,EAAnB,iBACC,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE,CAACc,MAAM,CAACd,KAAR,EAAeU,UAAf;AAAb,KAA0CV,KAA1C,CAFJ,eAIE,oBAAC,SAAD;AACE,IAAA,OAAO,EAAE,MAAMK,OAAO,CAAC,CAACC,IAAF,CADxB;AAEE,IAAA,KAAK,EAAE;AAAA,UAAC;AAAEU,QAAAA;AAAF,OAAD;AAAA,aAAiB,CACtBA,OAAO,IAAIF,MAAM,CAACG,eADI,EAEtBH,MAAM,CAACI,KAFe,EAGtBP,aAHsB,CAAjB;AAAA;AAFT,kBAQE,oBAAC,UAAD;AACE,IAAA,UAAU,MADZ;AAEE,IAAA,sBAAsB,MAFxB;AAGE,IAAA,8BAA8B,EAAE;AAHlC,kBAKE,oBAAC,IAAD;AACE,IAAA,KAAK,EAAEG,MAAM,CAACK,sBADhB;AAEE,IAAA,yBAAyB,EAAE,MAAM;AAFnC,KAIGZ,UAAU,GACTH,qBAAqB,GAAGgB,GAAxB,CAA4B,CAACC,IAAD,EAAYC,CAAZ,kBAC1B,oBAAC,IAAD;AACE,IAAA,GAAG,EAAG,gBAAeA,CAAE,EADzB;AAEE,IAAA,KAAK,EAAE,CAACR,MAAM,CAACL,aAAR,EAAuBI,iBAAvB;AAFT,KAIGQ,IAJH,CADF,CADS,gBAUT,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEP,MAAM,CAACS;AAApB,KAAgCnB,qBAAqB,EAArD,CAdJ,CALF,EAuBG,CAACI,YAAD,IAAiB,CAAAC,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAEe,MAAf,MAA0B,CAA3C,iBACC,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEV,MAAM,CAACS;AAApB,KACGtB,WADH,aACGA,WADH,cACGA,WADH,GACkB,kBADlB,CAxBJ,CARF,eAqCE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEa,MAAM,CAACW;AAApB,kBACE,oBAAC,KAAD;AAAO,IAAA,MAAM,EAAEC,OAAO,CAAC,6BAAD;AAAtB,IADF,CArCF,CAJF,EA8CGvB,KAAK,IAAIA,KAAK,KAAK,EAAnB,iBAAyB,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEW,MAAM,CAACX;AAApB,KAA4BA,KAA5B,CA9C5B,EAgDGD,UAAU,IAAIA,UAAU,KAAK,EAA7B,IAAmC,CAACC,KAApC,iBACC,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEW,MAAM,CAACa;AAApB,KAA6BzB,UAA7B,CAjDJ,CADF;AAsDD,CAtED;;AAwEA,MAAMY,MAAM,GAAGnB,UAAU,CAACiC,MAAX,CAAkB;AAC/B5B,EAAAA,KAAK,EAAE;AAAE6B,IAAAA,YAAY,EAAE,EAAhB;AAAoBC,IAAAA,KAAK,EAAEjC,MAAM,CAACkC,IAAlC;AAAwC,OAAGjC,UAAU,CAACkC;AAAtD,GADwB;AAE/Bd,EAAAA,KAAK,EAAE;AACLe,IAAAA,eAAe,EAAE,EADZ;AAELC,IAAAA,iBAAiB,EAAE,EAFd;AAGLC,IAAAA,eAAe,EAAEtC,MAAM,CAACuC,SAHnB;AAILC,IAAAA,YAAY,EAAE,CAJT;AAKLC,IAAAA,WAAW,EAAEzC,MAAM,CAAC0C,IALf;AAMLC,IAAAA,WAAW,EAAE,CANR;AAOLV,IAAAA,KAAK,EAAEjC,MAAM,CAAC0C,IAPT;AAQLE,IAAAA,KAAK,EAAE,MARF;AASLC,IAAAA,SAAS,EAAE;AATN,GAFwB;AAa/BzB,EAAAA,eAAe,EAAE;AACfuB,IAAAA,WAAW,EAAE,CADE;AAEfG,IAAAA,WAAW,EAAE,OAFE;AAGfL,IAAAA,WAAW,EAAEzC,MAAM,CAAC+C,OAHL;AAIfP,IAAAA,YAAY,EAAE;AAJC,GAbc;AAmB/BQ,EAAAA,oBAAoB,EAAE;AACpBL,IAAAA,WAAW,EAAE,CADO;AAEpBG,IAAAA,WAAW,EAAE,OAFO;AAGpBL,IAAAA,WAAW,EAAEzC,MAAM,CAACiD;AAHA,GAnBS;AAwB/BrB,EAAAA,SAAS,EAAE;AAAEsB,IAAAA,QAAQ,EAAE,UAAZ;AAAwBC,IAAAA,KAAK,EAAE,EAA/B;AAAmCC,IAAAA,GAAG,EAAE;AAAxC,GAxBoB;AAyB/B9C,EAAAA,KAAK,EAAE;AAAE2B,IAAAA,KAAK,EAAEjC,MAAM,CAACiD,SAAhB;AAA2BI,IAAAA,SAAS,EAAE,CAAtC;AAAyC,OAAGpD,UAAU,CAACkC;AAAvD,GAzBwB;AA0B/BL,EAAAA,MAAM,EAAE;AAAEuB,IAAAA,SAAS,EAAE,CAAb;AAAgBpB,IAAAA,KAAK,EAAEjC,MAAM,CAAC+C,OAA9B;AAAuC,OAAG9C,UAAU,CAACkC;AAArD,GA1BuB;AA2B/BjB,EAAAA,sBAAsB,EAAE;AAAEc,IAAAA,YAAY,EAAE,EAAhB;AAAoBY,IAAAA,KAAK,EAAE;AAA3B,GA3BO;AA4B/BtB,EAAAA,sBAAsB,EAAE;AAAEgC,IAAAA,aAAa,EAAE,KAAjB;AAAwBC,IAAAA,QAAQ,EAAE;AAAlC,GA5BO;AA6B/B3C,EAAAA,aAAa,EAAE;AACbqB,IAAAA,KAAK,EAAEjC,MAAM,CAACwD,KADD;AAEbnB,IAAAA,iBAAiB,EAAE,EAFN;AAGbD,IAAAA,eAAe,EAAE,CAHJ;AAIbI,IAAAA,YAAY,EAAE,EAJD;AAKbF,IAAAA,eAAe,EAAEtC,MAAM,CAAC+C,OALX;AAMbU,IAAAA,WAAW,EAAE;AANA,GA7BgB;AAqC/B/B,EAAAA,SAAS,EAAE;AAAEO,IAAAA,KAAK,EAAEjC,MAAM,CAAC0D;AAAhB;AArCoB,CAAlB,CAAf;AAwCA,eAAexD,QAAf","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"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, FlatList, StyleSheet } from 'react-native';
|
|
3
|
+
import DropdownListItem from './DropdownListItem';
|
|
4
|
+
import { colors } from './styles/colors';
|
|
5
|
+
|
|
6
|
+
const DropdownList = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
options,
|
|
9
|
+
optionLabel,
|
|
10
|
+
optionValue,
|
|
11
|
+
isMultiple,
|
|
12
|
+
selectedItems,
|
|
13
|
+
selectedItem,
|
|
14
|
+
handleMultipleSelections,
|
|
15
|
+
handleSingleSelection
|
|
16
|
+
} = _ref;
|
|
17
|
+
return /*#__PURE__*/React.createElement(FlatList, {
|
|
18
|
+
data: options,
|
|
19
|
+
extraData: isMultiple ? selectedItems : selectedItem,
|
|
20
|
+
initialNumToRender: 5 // ListEmptyComponent={
|
|
21
|
+
// <EmptyStateComponent
|
|
22
|
+
// style={{alignItems: 'flex-start', marginTop: 30}}
|
|
23
|
+
// message="Be the first to reply"
|
|
24
|
+
// />
|
|
25
|
+
// }
|
|
26
|
+
,
|
|
27
|
+
ItemSeparatorComponent: () => /*#__PURE__*/React.createElement(View, {
|
|
28
|
+
style: styles.itemSeparatorStyle
|
|
29
|
+
}),
|
|
30
|
+
renderItem: item => _renderItem(item, {
|
|
31
|
+
optionLabel,
|
|
32
|
+
optionValue,
|
|
33
|
+
isMultiple,
|
|
34
|
+
selectedOption: isMultiple ? selectedItems : selectedItem,
|
|
35
|
+
onChange: isMultiple ? handleMultipleSelections : handleSingleSelection
|
|
36
|
+
}),
|
|
37
|
+
keyExtractor: (_item, index) => `Options${index}`
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const _renderItem = (_ref2, props) => {
|
|
42
|
+
let {
|
|
43
|
+
item
|
|
44
|
+
} = _ref2;
|
|
45
|
+
return /*#__PURE__*/React.createElement(DropdownListItem, {
|
|
46
|
+
item: item,
|
|
47
|
+
optionLabel: props.optionLabel,
|
|
48
|
+
optionValue: props.optionValue,
|
|
49
|
+
isMultiple: props.isMultiple,
|
|
50
|
+
selectedOption: props.selectedOption,
|
|
51
|
+
onChange: props.onChange
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const styles = StyleSheet.create({
|
|
56
|
+
modalContainer: {
|
|
57
|
+
flex: 1,
|
|
58
|
+
justifyContent: 'flex-end'
|
|
59
|
+
},
|
|
60
|
+
modalBackgroundStyle: {
|
|
61
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
62
|
+
},
|
|
63
|
+
modalOptionsContainer: {
|
|
64
|
+
maxHeight: '50%',
|
|
65
|
+
backgroundColor: colors.white,
|
|
66
|
+
borderTopLeftRadius: 16,
|
|
67
|
+
borderTopRightRadius: 16
|
|
68
|
+
},
|
|
69
|
+
itemSeparatorStyle: {
|
|
70
|
+
backgroundColor: colors.gray,
|
|
71
|
+
height: 1,
|
|
72
|
+
opacity: 0.15
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
export default DropdownList;
|
|
76
|
+
//# sourceMappingURL=DropdownList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["DropdownList.tsx"],"names":["React","View","FlatList","StyleSheet","DropdownListItem","colors","DropdownList","options","optionLabel","optionValue","isMultiple","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","styles","itemSeparatorStyle","item","_renderItem","selectedOption","onChange","_item","index","props","create","modalContainer","flex","justifyContent","modalBackgroundStyle","backgroundColor","modalOptionsContainer","maxHeight","white","borderTopLeftRadius","borderTopRightRadius","gray","height","opacity"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,EAAeC,QAAf,EAAyBC,UAAzB,QAA2C,cAA3C;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,SAASC,MAAT,QAAuB,iBAAvB;;AAEA,MAAMC,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,oBAAC,QAAD;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,oBAAC,IAAD;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,oBAAC,gBAAD;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,GAAGZ,UAAU,CAACqB,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,EAAExB,MAAM,CAAC2B,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD,GANQ;AAY/BlB,EAAAA,kBAAkB,EAAE;AAClBa,IAAAA,eAAe,EAAExB,MAAM,CAAC8B,IADN;AAElBC,IAAAA,MAAM,EAAE,CAFU;AAGlBC,IAAAA,OAAO,EAAE;AAHS;AAZW,CAAlB,CAAf;AAmBA,eAAe/B,YAAf","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"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
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 = _ref => {
|
|
7
|
+
let {
|
|
8
|
+
item,
|
|
9
|
+
optionLabel,
|
|
10
|
+
optionValue,
|
|
11
|
+
isMultiple,
|
|
12
|
+
selectedOption,
|
|
13
|
+
onChange
|
|
14
|
+
} = _ref;
|
|
15
|
+
const selectedOptionValue = optionValue !== null && optionValue !== void 0 ? optionValue : 'value';
|
|
16
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
17
|
+
style: styles.modalOptions,
|
|
18
|
+
onPress: () => onChange(item[selectedOptionValue])
|
|
19
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
20
|
+
style: styles.spacing
|
|
21
|
+
}, /*#__PURE__*/React.createElement(CheckBox, {
|
|
22
|
+
value: isMultiple ? selectedOption.includes(item[selectedOptionValue]) : [selectedOption].includes(item[selectedOptionValue]),
|
|
23
|
+
onChange: () => onChange(item[selectedOptionValue]),
|
|
24
|
+
boxType: "circle" //works on ios only
|
|
25
|
+
,
|
|
26
|
+
tintColors: {
|
|
27
|
+
true: colors.primary
|
|
28
|
+
} //android control
|
|
29
|
+
,
|
|
30
|
+
onCheckColor: colors.primary //ios checkmark colour control
|
|
31
|
+
,
|
|
32
|
+
onTintColor: colors.primary //ios box colour control
|
|
33
|
+
|
|
34
|
+
})), /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Text, null, item[optionLabel !== null && optionLabel !== void 0 ? optionLabel : 'label'])));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const styles = StyleSheet.create({
|
|
38
|
+
spacing: {
|
|
39
|
+
marginRight: 10
|
|
40
|
+
},
|
|
41
|
+
modalOptions: {
|
|
42
|
+
paddingHorizontal: 20,
|
|
43
|
+
paddingVertical: 10,
|
|
44
|
+
flexDirection: 'row',
|
|
45
|
+
alignItems: 'center'
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
export default /*#__PURE__*/memo(DropdownListItem);
|
|
49
|
+
//# sourceMappingURL=DropdownListItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["DropdownListItem.tsx"],"names":["React","memo","View","Text","TouchableOpacity","StyleSheet","CheckBox","colors","DropdownListItem","item","optionLabel","optionValue","isMultiple","selectedOption","onChange","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,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,oBAAC,gBAAD;AACE,IAAA,KAAK,EAAEK,MAAM,CAACC,YADhB;AAEE,IAAA,OAAO,EAAE,MAAMH,QAAQ,CAACL,IAAI,CAACM,mBAAD,CAAL;AAFzB,kBAIE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACE;AAApB,kBACE,oBAAC,QAAD;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,EAAEb,MAAM,CAACc;AAAf,KARd,CAQwC;AARxC;AASE,IAAA,YAAY,EAAEd,MAAM,CAACc,OATvB,CASgC;AAThC;AAUE,IAAA,WAAW,EAAEd,MAAM,CAACc,OAVtB,CAU+B;;AAV/B,IADF,CAJF,eAkBE,oBAAC,IAAD,qBACE,oBAAC,IAAD,QAAOZ,IAAI,CAACC,WAAD,aAACA,WAAD,cAACA,WAAD,GAAgB,OAAhB,CAAX,CADF,CAlBF,CADF;AAwBD,CAjCD;;AAmCA,MAAMM,MAAM,GAAGX,UAAU,CAACiB,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,4BAAe1B,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}: 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"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Modal, TouchableOpacity, SafeAreaView, StyleSheet } from 'react-native';
|
|
3
|
+
import { colors } from './styles/colors';
|
|
4
|
+
|
|
5
|
+
const CustomModal = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
open,
|
|
8
|
+
setOpen,
|
|
9
|
+
onRequestClose,
|
|
10
|
+
modalBackgroundStyle,
|
|
11
|
+
modalOptionsContainerStyle,
|
|
12
|
+
children
|
|
13
|
+
} = _ref;
|
|
14
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
15
|
+
transparent: true,
|
|
16
|
+
visible: open,
|
|
17
|
+
onRequestClose: () => onRequestClose(),
|
|
18
|
+
animationType: "fade"
|
|
19
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
20
|
+
onPress: () => setOpen(!open),
|
|
21
|
+
style: [styles.modalContainer, styles.modalBackgroundStyle, modalBackgroundStyle]
|
|
22
|
+
}, /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
23
|
+
style: [styles.modalOptionsContainer, modalOptionsContainerStyle]
|
|
24
|
+
}, children)));
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const styles = StyleSheet.create({
|
|
28
|
+
modalContainer: {
|
|
29
|
+
flex: 1,
|
|
30
|
+
justifyContent: 'flex-end'
|
|
31
|
+
},
|
|
32
|
+
modalBackgroundStyle: {
|
|
33
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
34
|
+
},
|
|
35
|
+
modalOptionsContainer: {
|
|
36
|
+
maxHeight: '50%',
|
|
37
|
+
backgroundColor: colors.white,
|
|
38
|
+
borderTopLeftRadius: 16,
|
|
39
|
+
borderTopRightRadius: 16
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
export default CustomModal;
|
|
43
|
+
//# sourceMappingURL=Modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Modal.tsx"],"names":["React","Modal","TouchableOpacity","SafeAreaView","StyleSheet","colors","CustomModal","open","setOpen","onRequestClose","modalBackgroundStyle","modalOptionsContainerStyle","children","styles","modalContainer","modalOptionsContainer","create","flex","justifyContent","backgroundColor","maxHeight","white","borderTopLeftRadius","borderTopRightRadius"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,KADF,EAEEC,gBAFF,EAGEC,YAHF,EAIEC,UAJF,QAKO,cALP;AAMA,SAASC,MAAT,QAAuB,iBAAvB;;AAEA,MAAMC,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,oBAAC,KAAD;AACE,IAAA,WAAW,EAAE,IADf;AAEE,IAAA,OAAO,EAAEL,IAFX;AAGE,IAAA,cAAc,EAAE,MAAME,cAAc,EAHtC;AAIE,IAAA,aAAa,EAAC;AAJhB,kBAME,oBAAC,gBAAD;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,oBAAC,YAAD;AACE,IAAA,KAAK,EAAE,CAACG,MAAM,CAACE,qBAAR,EAA+BJ,0BAA/B;AADT,KAGGC,QAHH,CARF,CANF,CADF;AAuBD,CA/BD;;AAiCA,MAAMC,MAAM,GAAGT,UAAU,CAACY,MAAX,CAAkB;AAC/BF,EAAAA,cAAc,EAAE;AACdG,IAAAA,IAAI,EAAE,CADQ;AAEdC,IAAAA,cAAc,EAAE;AAFF,GADe;AAK/BR,EAAAA,oBAAoB,EAAE;AAAES,IAAAA,eAAe,EAAE;AAAnB,GALS;AAM/BJ,EAAAA,qBAAqB,EAAE;AACrBK,IAAAA,SAAS,EAAE,KADU;AAErBD,IAAAA,eAAe,EAAEd,MAAM,CAACgB,KAFH;AAGrBC,IAAAA,mBAAmB,EAAE,EAHA;AAIrBC,IAAAA,oBAAoB,EAAE;AAJD;AANQ,CAAlB,CAAf;AAcA,eAAejB,WAAf","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"]}
|
|
Binary file
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import Dropdown from './Dropdown';
|
|
3
|
+
import CustomModal from './Modal';
|
|
4
|
+
import DropdownList from './DropdownList';
|
|
5
|
+
export const DropdownSelect = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
placeholder,
|
|
8
|
+
label,
|
|
9
|
+
error,
|
|
10
|
+
helperText,
|
|
11
|
+
options,
|
|
12
|
+
optionLabel,
|
|
13
|
+
optionValue,
|
|
14
|
+
onValueChange,
|
|
15
|
+
selectedValue,
|
|
16
|
+
isMultiple,
|
|
17
|
+
labelStyle,
|
|
18
|
+
dropdownStyle,
|
|
19
|
+
dropdownContainerStyle,
|
|
20
|
+
selectedItemStyle,
|
|
21
|
+
modalBackgroundStyle,
|
|
22
|
+
modalOptionsContainer
|
|
23
|
+
} = _ref;
|
|
24
|
+
const [open, setOpen] = useState(false);
|
|
25
|
+
const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection
|
|
26
|
+
|
|
27
|
+
const [selectedItems, setSelectedItems] = useState(Array.isArray(selectedValue) ? selectedValue : []); //for multiple selection
|
|
28
|
+
|
|
29
|
+
/*===========================================
|
|
30
|
+
* Selection handlers
|
|
31
|
+
*==========================================*/
|
|
32
|
+
|
|
33
|
+
const handleSingleSelection = value => {
|
|
34
|
+
if (selectedItem === value) {
|
|
35
|
+
setSelectedItem(null);
|
|
36
|
+
} else {
|
|
37
|
+
setSelectedItem(value);
|
|
38
|
+
onValueChange(value); //send value to parent
|
|
39
|
+
|
|
40
|
+
setOpen(false); //close modal upon selection
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const handleMultipleSelections = value => {
|
|
45
|
+
let selectedValues = [...selectedItems];
|
|
46
|
+
|
|
47
|
+
if (selectedValues.includes(value)) {
|
|
48
|
+
selectedValues = selectedValues.filter(item => item !== value);
|
|
49
|
+
} else {
|
|
50
|
+
selectedValues.push(value);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
setSelectedItems(selectedValues);
|
|
54
|
+
};
|
|
55
|
+
/*===========================================
|
|
56
|
+
* Get label handler
|
|
57
|
+
*==========================================*/
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
const getSelectedItemsLabel = () => {
|
|
61
|
+
if (isMultiple) {
|
|
62
|
+
let selectedLabels = [];
|
|
63
|
+
selectedItems && selectedItems.forEach(element => {
|
|
64
|
+
var _options$find;
|
|
65
|
+
|
|
66
|
+
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]);
|
|
67
|
+
selectedLabels.push(selectedItemLabel);
|
|
68
|
+
});
|
|
69
|
+
return selectedLabels;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
let selectedItemLabel = options && options.find(item => item[optionValue !== null && optionValue !== void 0 ? optionValue : 'value'] === selectedItem);
|
|
73
|
+
return selectedItemLabel === null || selectedItemLabel === void 0 ? void 0 : selectedItemLabel[optionLabel];
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dropdown, {
|
|
77
|
+
label: label,
|
|
78
|
+
placeholder: placeholder,
|
|
79
|
+
helperText: helperText,
|
|
80
|
+
error: error,
|
|
81
|
+
getSelectedItemsLabel: getSelectedItemsLabel,
|
|
82
|
+
selectedItem: selectedItem,
|
|
83
|
+
selectedItems: selectedItems,
|
|
84
|
+
setOpen: setOpen,
|
|
85
|
+
open: open,
|
|
86
|
+
labelStyle: labelStyle,
|
|
87
|
+
dropdownStyle: dropdownStyle,
|
|
88
|
+
dropdownContainerStyle: dropdownContainerStyle,
|
|
89
|
+
selectedItemStyle: selectedItemStyle,
|
|
90
|
+
isMultiple: isMultiple
|
|
91
|
+
}), /*#__PURE__*/React.createElement(CustomModal, {
|
|
92
|
+
open: open,
|
|
93
|
+
setOpen: setOpen,
|
|
94
|
+
modalBackgroundStyle: modalBackgroundStyle,
|
|
95
|
+
modalOptionsContainer: modalOptionsContainer,
|
|
96
|
+
onRequestClose: () => {}
|
|
97
|
+
}, /*#__PURE__*/React.createElement(DropdownList, {
|
|
98
|
+
options: options,
|
|
99
|
+
optionLabel: optionLabel,
|
|
100
|
+
optionValue: optionValue,
|
|
101
|
+
isMultiple: isMultiple,
|
|
102
|
+
selectedItems: selectedItems,
|
|
103
|
+
selectedItem: selectedItem,
|
|
104
|
+
handleMultipleSelections: handleMultipleSelections,
|
|
105
|
+
handleSingleSelection: handleSingleSelection
|
|
106
|
+
})));
|
|
107
|
+
};
|
|
108
|
+
export default DropdownSelect;
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["React","useState","Dropdown","CustomModal","DropdownList","DropdownSelect","placeholder","label","error","helperText","options","optionLabel","optionValue","onValueChange","selectedValue","isMultiple","labelStyle","dropdownStyle","dropdownContainerStyle","selectedItemStyle","modalBackgroundStyle","modalOptionsContainer","open","setOpen","selectedItem","setSelectedItem","selectedItems","setSelectedItems","Array","isArray","handleSingleSelection","value","handleMultipleSelections","selectedValues","includes","filter","item","push","getSelectedItemsLabel","selectedLabels","forEach","element","selectedItemLabel","find"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport Dropdown from './Dropdown';\nimport CustomModal from './Modal';\nimport DropdownList from './DropdownList';\n\nexport const DropdownSelect = ({\n placeholder,\n label,\n error,\n helperText,\n options,\n optionLabel,\n optionValue,\n onValueChange,\n selectedValue,\n isMultiple,\n labelStyle,\n dropdownStyle,\n dropdownContainerStyle,\n selectedItemStyle,\n modalBackgroundStyle,\n modalOptionsContainer,\n}: any) => {\n const [open, setOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState(selectedValue); //for single selection\n const [selectedItems, setSelectedItems] = useState(\n Array.isArray(selectedValue) ? selectedValue : []\n ); //for multiple selection\n\n /*===========================================\n * Selection handlers\n *==========================================*/\n const handleSingleSelection = (value: any) => {\n if (selectedItem === value) {\n setSelectedItem(null);\n } else {\n setSelectedItem(value);\n onValueChange(value); //send value to parent\n setOpen(false); //close modal upon selection\n }\n };\n\n const handleMultipleSelections = (value: any) => {\n let selectedValues = [...selectedItems];\n\n if (selectedValues.includes(value)) {\n selectedValues = selectedValues.filter((item) => item !== value);\n } else {\n selectedValues.push(value);\n }\n setSelectedItems(selectedValues);\n };\n\n /*===========================================\n * Get label handler\n *==========================================*/\n const getSelectedItemsLabel = () => {\n if (isMultiple) {\n let selectedLabels: Array<string> = [];\n selectedItems &&\n selectedItems.forEach((element) => {\n let selectedItemLabel =\n options &&\n options.find(\n (item: string) => item[optionValue ?? 'value'] === element\n )?.[optionLabel];\n selectedLabels.push(selectedItemLabel);\n });\n return selectedLabels;\n }\n\n let selectedItemLabel =\n options &&\n options.find(\n (item: string) => item[optionValue ?? 'value'] === selectedItem\n );\n return selectedItemLabel?.[optionLabel];\n };\n\n return (\n <>\n <Dropdown\n label={label}\n placeholder={placeholder}\n helperText={helperText}\n error={error}\n getSelectedItemsLabel={getSelectedItemsLabel}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n setOpen={setOpen}\n open={open}\n labelStyle={labelStyle}\n dropdownStyle={dropdownStyle}\n dropdownContainerStyle={dropdownContainerStyle}\n selectedItemStyle={selectedItemStyle}\n isMultiple={isMultiple}\n />\n <CustomModal\n open={open}\n setOpen={setOpen}\n modalBackgroundStyle={modalBackgroundStyle}\n modalOptionsContainer={modalOptionsContainer}\n onRequestClose={() => {}}\n >\n <DropdownList\n options={options}\n optionLabel={optionLabel}\n optionValue={optionValue}\n isMultiple={isMultiple}\n selectedItems={selectedItems}\n selectedItem={selectedItem}\n handleMultipleSelections={handleMultipleSelections}\n handleSingleSelection={handleSingleSelection}\n />\n </CustomModal>\n </>\n );\n};\n\nexport default DropdownSelect;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["colors.ts"],"names":["colors","primary","black","white","dark","gray","lightGray"],"mappings":"AAAA,OAAO,MAAMA,MAAW,GAAG;AACzBC,EAAAA,OAAO,EAAE,SADgB;AAEzBC,EAAAA,KAAK,EAAE,SAFkB;AAGzBC,EAAAA,KAAK,EAAE,SAHkB;AAIzBC,EAAAA,IAAI,EAAE,SAJmB;AAKzBC,EAAAA,IAAI,EAAE,SALmB;AAMzBC,EAAAA,SAAS,EAAE;AANc,CAApB","sourcesContent":["export const colors: any = {\n primary: '#EF8031',\n black: '#000000',\n white: '#FFFFFF',\n dark: '#11142D',\n gray: '#808191',\n lightGray: '#F7F7F7',\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["typography.ts"],"names":["StyleSheet","typography","create","caption","fontStyle","fontWeight","fontSize","lineHeight"],"mappings":"AAAA,SAASA,UAAT,QAA2B,cAA3B;AAEA,OAAO,MAAMC,UAAe,GAAGD,UAAU,CAACE,MAAX,CAAkB;AAC/CC,EAAAA,OAAO,EAAE;AACPC,IAAAA,SAAS,EAAE,QADJ;AAEPC,IAAAA,UAAU,EAAE,QAFL;AAGPC,IAAAA,QAAQ,EAAE,EAHH;AAIPC,IAAAA,UAAU,EAAE;AAJL;AADsC,CAAlB,CAAxB","sourcesContent":["import { StyleSheet } from 'react-native';\n\nexport const typography: any = StyleSheet.create({\n caption: {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontSize: 12,\n lineHeight: 15,\n },\n});\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const DropdownSelect: ({ placeholder, label, error, helperText, options, optionLabel, optionValue, onValueChange, selectedValue, isMultiple, labelStyle, dropdownStyle, dropdownContainerStyle, selectedItemStyle, modalBackgroundStyle, modalOptionsContainer, }: any) => JSX.Element;
|
|
2
|
+
export default DropdownSelect;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const colors: any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const typography: any;
|