react-native-input-select 2.1.5 → 2.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/lib/commonjs/asset/close.png +0 -0
- package/lib/commonjs/components/Dropdown/Dropdown.js +26 -11
- package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -1
- package/lib/commonjs/components/Dropdown/DropdownSelectedItem.js +53 -0
- package/lib/commonjs/components/Dropdown/DropdownSelectedItem.js.map +1 -0
- package/lib/commonjs/components/Dropdown/{DropdownSelectedItemsView.js → DropdownSelectedItemsContainer.js} +41 -46
- package/lib/commonjs/components/Dropdown/DropdownSelectedItemsContainer.js.map +1 -0
- package/lib/commonjs/components/List/DropdownFlatList.js +1 -1
- package/lib/commonjs/components/List/DropdownListItem.js.map +1 -0
- package/lib/commonjs/components/List/DropdownSectionList.js +1 -1
- package/lib/commonjs/hooks/use-selection-handler.js +13 -7
- package/lib/commonjs/hooks/use-selection-handler.js.map +1 -1
- package/lib/commonjs/index.js +14 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/styles/colors.js.map +1 -1
- package/lib/commonjs/styles/input.js.map +1 -1
- package/lib/commonjs/utils/index.js +30 -13
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/asset/close.png +0 -0
- package/lib/module/components/Dropdown/Dropdown.js +27 -12
- package/lib/module/components/Dropdown/Dropdown.js.map +1 -1
- package/lib/module/components/Dropdown/DropdownSelectedItem.js +46 -0
- package/lib/module/components/Dropdown/DropdownSelectedItem.js.map +1 -0
- package/lib/module/components/Dropdown/{DropdownSelectedItemsView.js → DropdownSelectedItemsContainer.js} +42 -47
- package/lib/module/components/Dropdown/DropdownSelectedItemsContainer.js.map +1 -0
- package/lib/module/components/List/DropdownFlatList.js +1 -1
- package/lib/module/components/List/DropdownFlatList.js.map +1 -1
- package/lib/module/components/List/DropdownListItem.js.map +1 -0
- package/lib/module/components/List/DropdownSectionList.js +1 -1
- package/lib/module/components/List/DropdownSectionList.js.map +1 -1
- package/lib/module/hooks/use-selection-handler.js +13 -7
- package/lib/module/hooks/use-selection-handler.js.map +1 -1
- package/lib/module/index.js +15 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/styles/colors.js.map +1 -1
- package/lib/module/styles/input.js.map +1 -1
- package/lib/module/utils/index.js +27 -11
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts +3 -1
- package/lib/typescript/src/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItem.d.ts +16 -0
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItem.d.ts.map +1 -0
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItemsContainer.d.ts +16 -0
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItemsContainer.d.ts.map +1 -0
- package/lib/typescript/src/components/List/DropdownListItem.d.ts.map +1 -0
- package/lib/typescript/src/hooks/use-selection-handler.d.ts +2 -1
- package/lib/typescript/src/hooks/use-selection-handler.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/styles/colors.d.ts +10 -1
- package/lib/typescript/src/styles/colors.d.ts.map +1 -1
- package/lib/typescript/src/styles/input.d.ts +23 -1
- package/lib/typescript/src/styles/input.d.ts.map +1 -1
- package/lib/typescript/src/types/index.types.d.ts +13 -6
- package/lib/typescript/src/types/index.types.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +5 -4
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/asset/close.png +0 -0
- package/src/components/Dropdown/Dropdown.tsx +29 -10
- package/src/components/Dropdown/DropdownSelectedItem.tsx +78 -0
- package/src/components/Dropdown/DropdownSelectedItemsContainer.tsx +164 -0
- package/src/components/List/DropdownFlatList.tsx +1 -1
- package/src/components/List/DropdownSectionList.tsx +1 -1
- package/src/hooks/use-selection-handler.ts +20 -7
- package/src/index.tsx +30 -23
- package/src/styles/colors.ts +1 -1
- package/src/styles/input.ts +1 -1
- package/src/types/index.types.ts +14 -6
- package/src/utils/index.ts +55 -23
- package/lib/commonjs/components/Dropdown/DropdownListItem.js.map +0 -1
- package/lib/commonjs/components/Dropdown/DropdownSelectedItemsView.js.map +0 -1
- package/lib/module/components/Dropdown/DropdownListItem.js.map +0 -1
- package/lib/module/components/Dropdown/DropdownSelectedItemsView.js.map +0 -1
- package/lib/typescript/src/components/Dropdown/DropdownListItem.d.ts.map +0 -1
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItemsView.d.ts +0 -4
- package/lib/typescript/src/components/Dropdown/DropdownSelectedItemsView.d.ts.map +0 -1
- package/src/components/Dropdown/DropdownSelectedItemsView.tsx +0 -134
- /package/lib/commonjs/components/{Dropdown → List}/DropdownListItem.js +0 -0
- /package/lib/module/components/{Dropdown → List}/DropdownListItem.js +0 -0
- /package/lib/typescript/src/components/{Dropdown → List}/DropdownListItem.d.ts +0 -0
- /package/src/components/{Dropdown → List}/DropdownListItem.tsx +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.removeDisabledItems = exports.isSectionList = exports.
|
|
6
|
+
exports.removeDisabledItems = exports.isSectionList = exports.getSelectionsData = exports.extractTextStylesFromArray = exports.extractPropertyFromArray = exports.escapeRegExp = void 0;
|
|
7
7
|
const extractPropertyFromArray = (arr, property) => {
|
|
8
8
|
let extractedValue = arr?.map(item => item[property]);
|
|
9
9
|
return extractedValue;
|
|
@@ -27,29 +27,46 @@ const isSectionList = options => {
|
|
|
27
27
|
* @returns
|
|
28
28
|
*/
|
|
29
29
|
exports.isSectionList = isSectionList;
|
|
30
|
-
const
|
|
30
|
+
const getSelectionsData = ({
|
|
31
31
|
isMultiple,
|
|
32
|
-
optionLabel,
|
|
33
32
|
optionValue,
|
|
34
33
|
selectedItem,
|
|
35
34
|
selectedItems,
|
|
36
35
|
modifiedOptions
|
|
37
36
|
}) => {
|
|
38
37
|
// Multiple select
|
|
39
|
-
if (isMultiple
|
|
40
|
-
let
|
|
41
|
-
selectedItems
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
if (isMultiple) {
|
|
39
|
+
let currentSelections = [];
|
|
40
|
+
Array.isArray(selectedItems) && selectedItems.forEach(element => {
|
|
41
|
+
const currentSelection = modifiedOptions?.find(item => item[optionValue] === element);
|
|
42
|
+
|
|
43
|
+
// Only push if currentSelection is defined and is of the correct type
|
|
44
|
+
if (currentSelection) {
|
|
45
|
+
currentSelections.push(currentSelection);
|
|
45
46
|
}
|
|
46
47
|
});
|
|
47
|
-
return
|
|
48
|
+
return currentSelections;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
// Single select
|
|
51
|
-
let
|
|
52
|
-
return
|
|
52
|
+
let current = modifiedOptions?.find(item => item[optionValue] === selectedItem);
|
|
53
|
+
return current ? current : {};
|
|
54
|
+
};
|
|
55
|
+
exports.getSelectionsData = getSelectionsData;
|
|
56
|
+
const textStyleKeys = ['color', 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'textAlign', 'lineHeight', 'textDecorationLine', 'textDecorationStyle', 'textDecorationColor', 'textShadowColor', 'textShadowOffset', 'textShadowRadius', 'letterSpacing', 'textTransform'];
|
|
57
|
+
const extractTextStylesFromArray = (styleArray = []) => {
|
|
58
|
+
const extractedStyles = {};
|
|
59
|
+
for (const styleObject of styleArray) {
|
|
60
|
+
if (styleObject && typeof styleObject === 'object') {
|
|
61
|
+
// Ensure it's a valid style object
|
|
62
|
+
for (const prop in styleObject) {
|
|
63
|
+
if (textStyleKeys.includes(prop)) {
|
|
64
|
+
extractedStyles[prop] = styleObject[prop];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return extractedStyles;
|
|
53
70
|
};
|
|
54
|
-
exports.
|
|
71
|
+
exports.extractTextStylesFromArray = extractTextStylesFromArray;
|
|
55
72
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item","exports","escapeRegExp","text","replace","removeDisabledItems","items","filter","disabled","isSectionList","options","some","title","data","Array","isArray","
|
|
1
|
+
{"version":3,"names":["extractPropertyFromArray","arr","property","extractedValue","map","item","exports","escapeRegExp","text","replace","removeDisabledItems","items","filter","disabled","isSectionList","options","some","title","data","Array","isArray","getSelectionsData","isMultiple","optionValue","selectedItem","selectedItems","modifiedOptions","currentSelections","forEach","element","currentSelection","find","push","current","textStyleKeys","extractTextStylesFromArray","styleArray","extractedStyles","styleObject","prop","includes"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;AAIO,MAAMA,wBAAwB,GAAGA,CAACC,GAAU,EAAEC,QAAgB,KAAK;EACxE,IAAIC,cAAc,GAAGF,GAAG,EAAEG,GAAG,CAAEC,IAAS,IAAKA,IAAI,CAACH,QAAQ,CAAC,CAAC;EAE5D,OAAOC,cAAc;AACvB,CAAC;AAACG,OAAA,CAAAN,wBAAA,GAAAA,wBAAA;AAEK,MAAMO,YAAY,GAAIC,IAAY,IAAK;EAC5C,OAAOA,IAAI,CAACC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACpD,CAAC;AAACH,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEK,MAAMG,mBAAmB,GAAIC,KAAgB,IAAK;EACvD,OAAOA,KAAK,EAAEC,MAAM,CAAEP,IAAmB,IAAK,CAACA,IAAI,CAACQ,QAAQ,CAAC;AAC/D,CAAC;AAACP,OAAA,CAAAI,mBAAA,GAAAA,mBAAA;AAEK,MAAMI,aAAa,GAAIC,OAAiC,IAAc;EAC3E,OAAQA,OAAO,CAAkBC,IAAI,CAClCX,IAAI,IAAKA,IAAI,CAACY,KAAK,IAAIZ,IAAI,CAACa,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACf,IAAI,CAACa,IAAI,CAC9D,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAZ,OAAA,CAAAQ,aAAA,GAAAA,aAAA;AAKO,MAAMO,iBAAiB,GAAGA,CAAC;EAChCC,UAAU;EACVC,WAAW;EACXC,YAAY;EACZC,aAAa;EACbC;AAOF,CAAC,KAAsC;EACrC;EACA,IAAIJ,UAAU,EAAE;IACd,IAAIK,iBAAkC,GAAG,EAAE;IAE3CR,KAAK,CAACC,OAAO,CAACK,aAAa,CAAC,IAC1BA,aAAa,CAACG,OAAO,CAAEC,OAAsB,IAAK;MAChD,MAAMC,gBAAgB,GAAGJ,eAAe,EAAEK,IAAI,CAC3C1B,IAAmB,IAAKA,IAAI,CAACkB,WAAW,CAAC,KAAKM,OACjD,CAAC;;MAED;MACA,IAAIC,gBAAgB,EAAE;QACpBH,iBAAiB,CAACK,IAAI,CAACF,gBAAgB,CAAC;MAC1C;IACF,CAAC,CAAC;IAEJ,OAAOH,iBAAiB;EAC1B;;EAEA;EACA,IAAIM,OAAO,GAAGP,eAAe,EAAEK,IAAI,CAChC1B,IAAmB,IAAKA,IAAI,CAACkB,WAAW,CAAC,KAAKC,YACjD,CAAC;EACD,OAAOS,OAAO,GAAGA,OAAO,GAAG,CAAC,CAAC;AAC/B,CAAC;AAAC3B,OAAA,CAAAe,iBAAA,GAAAA,iBAAA;AAEF,MAAMa,aAAa,GAAG,CACpB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,CAChB;AAEM,MAAMC,0BAA0B,GAAGA,CACxCC,UAAqC,GAAG,EAAE,KACvC;EACH,MAAMC,eAAoC,GAAG,CAAC,CAAC;EAC/C,KAAK,MAAMC,WAAW,IAAIF,UAAU,EAAE;IACpC,IAAIE,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;MAClD;MACA,KAAK,MAAMC,IAAI,IAAID,WAAW,EAAE;QAC9B,IAAIJ,aAAa,CAACM,QAAQ,CAACD,IAAI,CAAC,EAAE;UAChCF,eAAe,CAACE,IAAI,CAAC,GAAID,WAAW,CAAyBC,IAAI,CAAC;QACpE;MACF;IACF;EACF;EACA,OAAOF,eAAe;AACxB,CAAC;AAAC/B,OAAA,CAAA6B,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { View, Text, StyleSheet } from 'react-native';
|
|
3
|
-
import
|
|
2
|
+
import { View, Text, StyleSheet, Image, TouchableOpacity } from 'react-native';
|
|
3
|
+
import DropdownSelectedItemsContainer from './DropdownSelectedItemsContainer';
|
|
4
4
|
import { colors } from '../../styles/colors';
|
|
5
5
|
import { typography } from '../../styles/typography';
|
|
6
6
|
const Dropdown = ({
|
|
@@ -9,12 +9,14 @@ const Dropdown = ({
|
|
|
9
9
|
placeholder,
|
|
10
10
|
helperText,
|
|
11
11
|
error,
|
|
12
|
-
|
|
12
|
+
selectionData,
|
|
13
13
|
openModal,
|
|
14
|
-
closeModal,
|
|
15
14
|
isMultiple,
|
|
16
15
|
selectedItem,
|
|
17
16
|
selectedItems,
|
|
17
|
+
optionLabel,
|
|
18
|
+
optionValue,
|
|
19
|
+
selectedItemsControls,
|
|
18
20
|
dropdownIcon,
|
|
19
21
|
labelStyle,
|
|
20
22
|
dropdownStyle,
|
|
@@ -28,7 +30,8 @@ const Dropdown = ({
|
|
|
28
30
|
dropdownHelperTextStyle,
|
|
29
31
|
primaryColor,
|
|
30
32
|
disabled,
|
|
31
|
-
setIndexOfSelectedItem
|
|
33
|
+
setIndexOfSelectedItem,
|
|
34
|
+
handleMultipleSelections
|
|
32
35
|
}) => {
|
|
33
36
|
return /*#__PURE__*/React.createElement(View, {
|
|
34
37
|
style: [styles.dropdownInputContainer, dropdownContainerStyle],
|
|
@@ -37,30 +40,37 @@ const Dropdown = ({
|
|
|
37
40
|
testID: testID
|
|
38
41
|
}, label && label !== '' && /*#__PURE__*/React.createElement(Text, {
|
|
39
42
|
style: [styles.label, labelStyle]
|
|
40
|
-
}, label), /*#__PURE__*/React.createElement(
|
|
43
|
+
}, label), /*#__PURE__*/React.createElement(DropdownSelectedItemsContainer, {
|
|
41
44
|
placeholder: placeholder,
|
|
42
45
|
error: error,
|
|
43
|
-
|
|
46
|
+
selectionData: selectionData,
|
|
44
47
|
openModal: openModal,
|
|
45
|
-
closeModal: closeModal,
|
|
46
48
|
isMultiple: isMultiple,
|
|
47
49
|
selectedItem: selectedItem,
|
|
48
50
|
selectedItems: selectedItems,
|
|
49
|
-
|
|
51
|
+
optionLabel: optionLabel,
|
|
52
|
+
optionValue: optionValue,
|
|
50
53
|
dropdownStyle: dropdownStyle,
|
|
51
|
-
dropdownIconStyle: dropdownIconStyle,
|
|
52
54
|
selectedItemStyle: selectedItemStyle,
|
|
53
55
|
multipleSelectedItemStyle: multipleSelectedItemStyle,
|
|
54
56
|
dropdownErrorStyle: dropdownErrorStyle,
|
|
55
57
|
primaryColor: primaryColor,
|
|
56
58
|
disabled: disabled,
|
|
57
59
|
placeholderStyle: placeholderStyle,
|
|
58
|
-
setIndexOfSelectedItem: setIndexOfSelectedItem
|
|
60
|
+
setIndexOfSelectedItem: setIndexOfSelectedItem,
|
|
61
|
+
handleMultipleSelections: handleMultipleSelections,
|
|
62
|
+
selectedItemsControls: selectedItemsControls
|
|
59
63
|
}), error && error !== '' && /*#__PURE__*/React.createElement(Text, {
|
|
60
64
|
style: [styles.error, dropdownErrorTextStyle]
|
|
61
65
|
}, error), helperText && helperText !== '' && !error && /*#__PURE__*/React.createElement(Text, {
|
|
62
66
|
style: [styles.helper, dropdownHelperTextStyle]
|
|
63
|
-
}, helperText)
|
|
67
|
+
}, helperText), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
68
|
+
style: [styles.iconStyle, dropdownIconStyle],
|
|
69
|
+
onPress: () => openModal(),
|
|
70
|
+
testID: "dropdown-trailing-icon"
|
|
71
|
+
}, dropdownIcon || /*#__PURE__*/React.createElement(Image, {
|
|
72
|
+
source: require('../../asset/arrow-down.png')
|
|
73
|
+
})));
|
|
64
74
|
};
|
|
65
75
|
const styles = StyleSheet.create({
|
|
66
76
|
label: {
|
|
@@ -84,6 +94,11 @@ const styles = StyleSheet.create({
|
|
|
84
94
|
},
|
|
85
95
|
blackText: {
|
|
86
96
|
color: colors.black
|
|
97
|
+
},
|
|
98
|
+
iconStyle: {
|
|
99
|
+
position: 'absolute',
|
|
100
|
+
right: 25,
|
|
101
|
+
top: 60
|
|
87
102
|
}
|
|
88
103
|
});
|
|
89
104
|
export default Dropdown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","Image","TouchableOpacity","DropdownSelectedItemsContainer","colors","typography","Dropdown","testID","label","placeholder","helperText","error","selectionData","openModal","isMultiple","selectedItem","selectedItems","optionLabel","optionValue","selectedItemsControls","dropdownIcon","labelStyle","dropdownStyle","dropdownIconStyle","dropdownContainerStyle","selectedItemStyle","placeholderStyle","multipleSelectedItemStyle","dropdownErrorStyle","dropdownErrorTextStyle","dropdownHelperTextStyle","primaryColor","disabled","setIndexOfSelectedItem","handleMultipleSelections","createElement","style","styles","dropdownInputContainer","accessibilityRole","pointerEvents","helper","iconStyle","onPress","source","require","create","marginBottom","color","gray","caption","red","marginTop","primary","width","blackText","black","position","right","top"],"sourceRoot":"../../../../src","sources":["components/Dropdown/Dropdown.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Text, Pressable, StyleSheet, Image, TouchableOpacity } from 'react-native';
|
|
4
|
+
import { extractTextStylesFromArray } from '../../utils';
|
|
5
|
+
const DropdownSelectedItem = ({
|
|
6
|
+
onPress,
|
|
7
|
+
style,
|
|
8
|
+
label,
|
|
9
|
+
removeItemIcon,
|
|
10
|
+
onRemoveItem,
|
|
11
|
+
showRemoveIcon,
|
|
12
|
+
closeIconStyles,
|
|
13
|
+
testId,
|
|
14
|
+
disabled,
|
|
15
|
+
...rest
|
|
16
|
+
}) => {
|
|
17
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
|
|
18
|
+
onPress: () => onPress()
|
|
19
|
+
}, rest, {
|
|
20
|
+
style: [styles.dropdownInputContent, ...(style ?? [])],
|
|
21
|
+
testID: `dropdown-selected-item-${testId}`
|
|
22
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
23
|
+
style: extractTextStylesFromArray(style)
|
|
24
|
+
}, label), showRemoveIcon && /*#__PURE__*/React.createElement(Pressable, {
|
|
25
|
+
onPress: disabled ? null : () => onRemoveItem?.(),
|
|
26
|
+
testID: `dropdown-selected-item-remove-icon-${testId}`
|
|
27
|
+
}, removeItemIcon || /*#__PURE__*/React.createElement(Image, {
|
|
28
|
+
source: require('../../asset/close.png'),
|
|
29
|
+
style: [styles.removeItemIcon, closeIconStyles]
|
|
30
|
+
})));
|
|
31
|
+
};
|
|
32
|
+
const styles = StyleSheet.create({
|
|
33
|
+
dropdownInputContent: {
|
|
34
|
+
display: 'flex',
|
|
35
|
+
justifyContent: 'center',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
flexDirection: 'row',
|
|
38
|
+
gap: 8
|
|
39
|
+
},
|
|
40
|
+
removeItemIcon: {
|
|
41
|
+
height: 10,
|
|
42
|
+
width: 10
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
export default DropdownSelectedItem;
|
|
46
|
+
//# sourceMappingURL=DropdownSelectedItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","Pressable","StyleSheet","Image","TouchableOpacity","extractTextStylesFromArray","DropdownSelectedItem","onPress","style","label","removeItemIcon","onRemoveItem","showRemoveIcon","closeIconStyles","testId","disabled","rest","createElement","_extends","styles","dropdownInputContent","testID","source","require","create","display","justifyContent","alignItems","flexDirection","gap","height","width"],"sourceRoot":"../../../../src","sources":["components/Dropdown/DropdownSelectedItem.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAqB,OAAO;AACxC,SACEC,IAAI,EACJC,SAAS,EACTC,UAAU,EACVC,KAAK,EACLC,gBAAgB,QAIX,cAAc;AACrB,SAASC,0BAA0B,QAAQ,aAAa;AAcxD,MAAMC,oBAAoB,GAAGA,CAAC;EAC5BC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC,cAAc;EACdC,YAAY;EACZC,cAAc;EACdC,eAAe;EACfC,MAAM;EACNC,QAAQ;EACR,GAAGC;AACsB,CAAC,KAAK;EAC/B,oBACEjB,KAAA,CAAAkB,aAAA,CAACb,gBAAgB,EAAAc,QAAA;IACfX,OAAO,EAAEA,CAAA,KAAMA,OAAO,CAAC;EAAE,GACrBS,IAAI;IACRR,KAAK,EAAE,CAACW,MAAM,CAACC,oBAAoB,EAAE,IAAIZ,KAAK,IAAI,EAAE,CAAC,CAAE;IACvDa,MAAM,EAAE,0BAA0BP,MAAM;EAAG,iBAE3Cf,KAAA,CAAAkB,aAAA,CAACjB,IAAI;IAACQ,KAAK,EAAEH,0BAA0B,CAACG,KAAK;EAAE,GAAEC,KAAY,CAAC,EAE7DG,cAAc,iBACbb,KAAA,CAAAkB,aAAA,CAAChB,SAAS;IACRM,OAAO,EAAEQ,QAAQ,GAAG,IAAI,GAAG,MAAMJ,YAAY,GAAG,CAAE;IAClDU,MAAM,EAAE,sCAAsCP,MAAM;EAAG,GAEtDJ,cAAc,iBACbX,KAAA,CAAAkB,aAAA,CAACd,KAAK;IACJmB,MAAM,EAAEC,OAAO,CAAC,uBAAuB,CAAE;IACzCf,KAAK,EAAE,CAACW,MAAM,CAACT,cAAc,EAAEG,eAAe;EAAE,CACjD,CAEM,CAEG,CAAC;AAEvB,CAAC;AAED,MAAMM,MAAM,GAAGjB,UAAU,CAACsB,MAAM,CAAC;EAC/BJ,oBAAoB,EAAE;IACpBK,OAAO,EAAE,MAAM;IACfC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE;EACP,CAAC;EACDnB,cAAc,EAAE;IACdoB,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,eAAezB,oBAAoB","ignoreList":[]}
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import { View,
|
|
2
|
+
import { View, Pressable, ScrollView, StyleSheet } from 'react-native';
|
|
4
3
|
import { colors } from '../../styles/colors';
|
|
5
4
|
import { inputStyles } from '../../styles/input';
|
|
6
|
-
|
|
5
|
+
import DropdownSelectedItem from './DropdownSelectedItem';
|
|
6
|
+
const DropdownSelectedItemsContainer = ({
|
|
7
7
|
placeholder,
|
|
8
8
|
error,
|
|
9
|
-
|
|
9
|
+
selectionData = [],
|
|
10
10
|
openModal,
|
|
11
11
|
isMultiple,
|
|
12
12
|
selectedItem,
|
|
13
13
|
selectedItems,
|
|
14
|
-
|
|
14
|
+
optionLabel,
|
|
15
|
+
optionValue,
|
|
15
16
|
dropdownStyle,
|
|
16
|
-
|
|
17
|
-
selectedItemStyle,
|
|
18
|
-
|
|
19
|
-
multipleSelectedItemStyle,
|
|
17
|
+
placeholderStyle = {},
|
|
18
|
+
selectedItemStyle = {},
|
|
19
|
+
multipleSelectedItemStyle = {},
|
|
20
20
|
dropdownErrorStyle,
|
|
21
21
|
primaryColor,
|
|
22
|
-
disabled,
|
|
23
|
-
setIndexOfSelectedItem
|
|
22
|
+
disabled = false,
|
|
23
|
+
setIndexOfSelectedItem,
|
|
24
|
+
selectedItemsControls,
|
|
25
|
+
handleMultipleSelections
|
|
24
26
|
}) => {
|
|
25
27
|
const openActions = label => {
|
|
26
28
|
openModal();
|
|
@@ -52,48 +54,41 @@ const DropdownSelectedItemsView = ({
|
|
|
52
54
|
}, /*#__PURE__*/React.createElement(View, {
|
|
53
55
|
style: styles.selectedItemsContainer,
|
|
54
56
|
onStartShouldSetResponder: () => true
|
|
55
|
-
}, isMultiple ?
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
}, isMultiple ? selectionData?.map((data, i) => {
|
|
58
|
+
const label = data[optionLabel];
|
|
59
|
+
const value = data[optionValue];
|
|
60
|
+
return /*#__PURE__*/React.createElement(DropdownSelectedItem, {
|
|
61
|
+
onPress: () => openActions(label),
|
|
62
|
+
key: `react-native-input-select-list-item-${Math.random()}-${i}`,
|
|
63
|
+
style: [styles.selectedItems, {
|
|
64
|
+
backgroundColor: primaryColor
|
|
65
|
+
}, multipleSelectedItemStyle],
|
|
66
|
+
closeIconStyles: {
|
|
67
|
+
tintColor: multipleSelectedItemStyle?.color || styles.selectedItems.color
|
|
68
|
+
},
|
|
69
|
+
label: label,
|
|
70
|
+
disabled: disabled || data.disabled,
|
|
71
|
+
showRemoveIcon: selectedItemsControls?.showRemoveIcon || true,
|
|
72
|
+
removeItemIcon: selectedItemsControls?.removeItemIcon,
|
|
73
|
+
onRemoveItem: () => {
|
|
74
|
+
handleMultipleSelections?.(value);
|
|
75
|
+
selectedItemsControls?.onRemoveItem?.(); //user defined control
|
|
76
|
+
},
|
|
77
|
+
testId: `${i}`
|
|
78
|
+
});
|
|
79
|
+
}) : /*#__PURE__*/React.createElement(DropdownSelectedItem, {
|
|
80
|
+
onPress: () => openActions(String(selectionData?.[optionLabel] ?? '')),
|
|
65
81
|
style: [styles.blackText, selectedItemStyle],
|
|
66
|
-
label:
|
|
82
|
+
label: selectionData[optionLabel],
|
|
67
83
|
disabled: disabled
|
|
68
|
-
}), selectedItem === '' && selectedItems?.length === 0 && /*#__PURE__*/React.createElement(
|
|
84
|
+
}), selectedItem === '' && selectedItems?.length === 0 && /*#__PURE__*/React.createElement(DropdownSelectedItem, {
|
|
69
85
|
onPress: () => openModal(),
|
|
70
86
|
style: [styles.blackText, placeholderStyle],
|
|
71
87
|
label: placeholder ?? 'Select an option',
|
|
72
88
|
disabled: disabled
|
|
73
|
-
})))
|
|
74
|
-
style: [styles.iconStyle, dropdownIconStyle]
|
|
75
|
-
}, dropdownIcon || /*#__PURE__*/React.createElement(Image, {
|
|
76
|
-
source: require('../../asset/arrow-down.png')
|
|
77
|
-
})));
|
|
78
|
-
};
|
|
79
|
-
const DropdownContent = ({
|
|
80
|
-
onPress,
|
|
81
|
-
style,
|
|
82
|
-
label,
|
|
83
|
-
...rest
|
|
84
|
-
}) => {
|
|
85
|
-
return /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
|
|
86
|
-
onPress: () => onPress()
|
|
87
|
-
}, rest), /*#__PURE__*/React.createElement(Text, {
|
|
88
|
-
style: style
|
|
89
|
-
}, label));
|
|
89
|
+
}))));
|
|
90
90
|
};
|
|
91
91
|
const styles = StyleSheet.create({
|
|
92
|
-
iconStyle: {
|
|
93
|
-
position: 'absolute',
|
|
94
|
-
right: 25,
|
|
95
|
-
top: 25
|
|
96
|
-
},
|
|
97
92
|
selectedItemsContainer: {
|
|
98
93
|
flexDirection: 'row',
|
|
99
94
|
flexWrap: 'nowrap',
|
|
@@ -112,5 +107,5 @@ const styles = StyleSheet.create({
|
|
|
112
107
|
color: colors.black
|
|
113
108
|
}
|
|
114
109
|
});
|
|
115
|
-
export default
|
|
116
|
-
//# sourceMappingURL=
|
|
110
|
+
export default DropdownSelectedItemsContainer;
|
|
111
|
+
//# sourceMappingURL=DropdownSelectedItemsContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Pressable","ScrollView","StyleSheet","colors","inputStyles","DropdownSelectedItem","DropdownSelectedItemsContainer","placeholder","error","selectionData","openModal","isMultiple","selectedItem","selectedItems","optionLabel","optionValue","dropdownStyle","placeholderStyle","selectedItemStyle","multipleSelectedItemStyle","dropdownErrorStyle","primaryColor","disabled","setIndexOfSelectedItem","selectedItemsControls","handleMultipleSelections","openActions","label","createElement","onPress","style","pressed","inputFocusState","borderColor","input","inputFocusErrorState","testID","horizontal","alwaysBounceHorizontal","showsHorizontalScrollIndicator","styles","selectedItemsContainer","onStartShouldSetResponder","map","data","i","value","key","Math","random","backgroundColor","closeIconStyles","tintColor","color","showRemoveIcon","removeItemIcon","onRemoveItem","testId","String","blackText","length","create","flexDirection","flexWrap","alignItems","white","paddingHorizontal","paddingVertical","borderRadius","primary","marginRight","overflow","black"],"sourceRoot":"../../../../src","sources":["components/Dropdown/DropdownSelectedItemsContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
|
|
|
2
2
|
/* eslint-disable react-native/no-inline-styles */
|
|
3
3
|
import React, { useEffect, useRef } from 'react';
|
|
4
4
|
import { FlatList, StyleSheet } from 'react-native';
|
|
5
|
-
import DropdownListItem from '
|
|
5
|
+
import DropdownListItem from './DropdownListItem';
|
|
6
6
|
import { ItemSeparatorComponent, ListEmptyComponent } from '../Others';
|
|
7
7
|
const DropdownFlatList = ({
|
|
8
8
|
options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","FlatList","StyleSheet","DropdownListItem","ItemSeparatorComponent","ListEmptyComponent","DropdownFlatList","options","optionLabel","optionValue","isMultiple","isSearchable","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","checkboxControls","listComponentStyles","listIndex","emptyListMessage","listEmptyComponent","rest","flatlistRef","scrollToItem","index","current","scrollToIndex","animated","itemIndex","itemSeparator","createElement","itemSeparatorStyle","_extends","testID","data","extraData","initialNumToRender","listEmptyComponentStyle","contentContainerStyle","paddingTop","styles","renderItem","item","_renderItem","selectedOption","onChange","keyExtractor","_item","ref","onScrollToIndexFailed","setTimeout","props","create"],"sourceRoot":"../../../../src","sources":["components/List/DropdownFlatList.tsx"],"mappings":";AAAA;AACA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,QAAQ,EAAiBC,UAAU,QAAQ,cAAc;AAClE,OAAOC,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","FlatList","StyleSheet","DropdownListItem","ItemSeparatorComponent","ListEmptyComponent","DropdownFlatList","options","optionLabel","optionValue","isMultiple","isSearchable","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","checkboxControls","listComponentStyles","listIndex","emptyListMessage","listEmptyComponent","rest","flatlistRef","scrollToItem","index","current","scrollToIndex","animated","itemIndex","itemSeparator","createElement","itemSeparatorStyle","_extends","testID","data","extraData","initialNumToRender","listEmptyComponentStyle","contentContainerStyle","paddingTop","styles","renderItem","item","_renderItem","selectedOption","onChange","keyExtractor","_item","ref","onScrollToIndexFailed","setTimeout","props","create"],"sourceRoot":"../../../../src","sources":["components/List/DropdownFlatList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","TouchableOpacity","StyleSheet","CheckBox","DropdownListItem","item","optionLabel","optionValue","isMultiple","selectedOption","onChange","primaryColor","checkboxControls","createElement","style","styles","listItemContainerStyle","onPress","disabled","value","includes","label","create","paddingHorizontal","paddingVertical","flexDirection","alignItems"],"sourceRoot":"../../../../src","sources":["components/List/DropdownListItem.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,cAAc;AAC3D,OAAOC,QAAQ,MAAM,aAAa;AAElC,MAAMC,gBAAgB,GAAGA,CAAC;EACxBC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,UAAU;EACVC,cAAc;EACdC,QAAQ;EACRC,YAAY;EACZC;AACG,CAAC,KAAK;EACT,oBACEb,KAAA,CAAAc,aAAA,CAACZ,gBAAgB;IACfa,KAAK,EAAEC,MAAM,CAACC,sBAAuB;IACrCC,OAAO,EAAEZ,IAAI,CAACa,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,MAAMR,QAAQ,CAACL,IAAI,CAACE,WAAW,CAAC;EAAE,gBAEtER,KAAA,CAAAc,aAAA,CAACV,QAAQ;IACPgB,KAAK,EACHX,UAAU,GACNC,cAAc,CAACW,QAAQ,CAACf,IAAI,CAACE,WAAW,CAAC,CAAC,GAC1C,CAACE,cAAc,CAAC,CAACW,QAAQ,CAACf,IAAI,CAACE,WAAW,CAAC,CAChD;IACDc,KAAK,EAAEhB,IAAI,CAACC,WAAW,CAAE;IACzBI,QAAQ,EAAEA,CAAA,KAAMA,QAAQ,CAACL,IAAI,CAACE,WAAW,CAAC,CAAE;IAC5CI,YAAY,EAAEA,YAAa;IAC3BC,gBAAgB,EAAEA,gBAAiB;IACnCM,QAAQ,EAAEb,IAAI,CAACa;EAAS,CACzB,CACe,CAAC;AAEvB,CAAC;AAED,MAAMH,MAAM,GAAGb,UAAU,CAACoB,MAAM,CAAC;EAC/BN,sBAAsB,EAAE;IACtBO,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,4BAAe1B,IAAI,CAACI,gBAAgB,CAAC","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
|
|
|
2
2
|
/* eslint-disable react-native/no-inline-styles */
|
|
3
3
|
import React, { useEffect, useState, useRef } from 'react';
|
|
4
4
|
import { SectionList, StyleSheet } from 'react-native';
|
|
5
|
-
import DropdownListItem from '
|
|
5
|
+
import DropdownListItem from './DropdownListItem';
|
|
6
6
|
import { ItemSeparatorComponent, ListEmptyComponent, SectionHeaderTitle } from '../Others';
|
|
7
7
|
import { extractPropertyFromArray } from '../../utils';
|
|
8
8
|
const DropdownSectionList = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","useRef","SectionList","StyleSheet","DropdownListItem","ItemSeparatorComponent","ListEmptyComponent","SectionHeaderTitle","extractPropertyFromArray","DropdownSectionList","options","optionLabel","optionValue","isMultiple","isSearchable","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","checkboxControls","listComponentStyles","listIndex","emptyListMessage","listEmptyComponent","rest","expandedSections","setExpandedSections","Set","initialState","handleToggleListExpansion","title","expandedSectionsState","next","has","delete","add","sectionlistRef","scrollToLocation","index","current","sectionIndex","animated","itemIndex","itemSeparator","createElement","itemSeparatorStyle","_extends","testID","sections","extraData","initialNumToRender","listEmptyComponentStyle","contentContainerStyle","paddingTop","styles","renderItem","item","_renderItem","selectedOption","onChange","renderSectionHeader","section","sectionHeaderStyle","onPress","isExpanded","keyExtractor","_item","stickySectionHeadersEnabled","ref","onScrollToIndexFailed","setTimeout","props","create"],"sourceRoot":"../../../../src","sources":["components/List/DropdownSectionList.tsx"],"mappings":";AAAA;AACA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,OAAO;AAC1D,SAASC,WAAW,EAAEC,UAAU,QAAQ,cAAc;AACtD,OAAOC,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","useRef","SectionList","StyleSheet","DropdownListItem","ItemSeparatorComponent","ListEmptyComponent","SectionHeaderTitle","extractPropertyFromArray","DropdownSectionList","options","optionLabel","optionValue","isMultiple","isSearchable","selectedItems","selectedItem","handleMultipleSelections","handleSingleSelection","primaryColor","checkboxControls","listComponentStyles","listIndex","emptyListMessage","listEmptyComponent","rest","expandedSections","setExpandedSections","Set","initialState","handleToggleListExpansion","title","expandedSectionsState","next","has","delete","add","sectionlistRef","scrollToLocation","index","current","sectionIndex","animated","itemIndex","itemSeparator","createElement","itemSeparatorStyle","_extends","testID","sections","extraData","initialNumToRender","listEmptyComponentStyle","contentContainerStyle","paddingTop","styles","renderItem","item","_renderItem","selectedOption","onChange","renderSectionHeader","section","sectionHeaderStyle","onPress","isExpanded","keyExtractor","_item","stickySectionHeadersEnabled","ref","onScrollToIndexFailed","setTimeout","props","create"],"sourceRoot":"../../../../src","sources":["components/List/DropdownSectionList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,18 +2,22 @@ import { useState, useCallback } from 'react';
|
|
|
2
2
|
export const useSelectionHandler = ({
|
|
3
3
|
initialSelectedValue,
|
|
4
4
|
isMultiple,
|
|
5
|
+
minSelectableItems = 0,
|
|
5
6
|
maxSelectableItems,
|
|
6
7
|
onValueChange,
|
|
7
8
|
closeModal,
|
|
8
9
|
autoCloseOnSelect
|
|
9
10
|
}) => {
|
|
10
|
-
// Initialize state based on whether it
|
|
11
|
+
// Initialize state based on whether it is multiple selection or not
|
|
11
12
|
const [selectedItem, setSelectedItem] = useState(isMultiple ? '' : initialSelectedValue);
|
|
12
13
|
const [selectedItems, setSelectedItems] = useState(isMultiple ? initialSelectedValue : []);
|
|
13
14
|
const handleSingleSelection = useCallback(value => {
|
|
14
15
|
if (selectedItem === value) {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
// Deselect item if minSelectableItems is not reached
|
|
17
|
+
if (minSelectableItems === 0) {
|
|
18
|
+
setSelectedItem('');
|
|
19
|
+
onValueChange(''); // Send null to parent when deselected
|
|
20
|
+
}
|
|
17
21
|
} else {
|
|
18
22
|
setSelectedItem(value);
|
|
19
23
|
onValueChange(value); // Send selected value to parent
|
|
@@ -22,13 +26,15 @@ export const useSelectionHandler = ({
|
|
|
22
26
|
closeModal(); // close modal upon selection
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
|
-
}, [selectedItem, onValueChange, autoCloseOnSelect, closeModal]);
|
|
29
|
+
}, [selectedItem, minSelectableItems, onValueChange, autoCloseOnSelect, closeModal]);
|
|
26
30
|
const handleMultipleSelections = useCallback(value => {
|
|
27
31
|
setSelectedItems(prevVal => {
|
|
28
32
|
let selectedValues = [...prevVal];
|
|
29
33
|
if (selectedValues.includes(value)) {
|
|
30
|
-
//
|
|
31
|
-
|
|
34
|
+
// Only remove item if it doesn't drop below the minimum required
|
|
35
|
+
if (selectedValues.length > minSelectableItems) {
|
|
36
|
+
selectedValues = selectedValues.filter(item => item !== value);
|
|
37
|
+
}
|
|
32
38
|
} else {
|
|
33
39
|
// Add item
|
|
34
40
|
if (maxSelectableItems && selectedValues.length >= maxSelectableItems) {
|
|
@@ -39,7 +45,7 @@ export const useSelectionHandler = ({
|
|
|
39
45
|
onValueChange(selectedValues); // Send selected values to parent
|
|
40
46
|
return selectedValues;
|
|
41
47
|
});
|
|
42
|
-
}, [maxSelectableItems, onValueChange]);
|
|
48
|
+
}, [minSelectableItems, maxSelectableItems, onValueChange]);
|
|
43
49
|
|
|
44
50
|
// Return the relevant state and handlers
|
|
45
51
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","useSelectionHandler","initialSelectedValue","isMultiple","maxSelectableItems","onValueChange","closeModal","autoCloseOnSelect","selectedItem","setSelectedItem","selectedItems","setSelectedItems","handleSingleSelection","value","handleMultipleSelections","prevVal","selectedValues","includes","
|
|
1
|
+
{"version":3,"names":["useState","useCallback","useSelectionHandler","initialSelectedValue","isMultiple","minSelectableItems","maxSelectableItems","onValueChange","closeModal","autoCloseOnSelect","selectedItem","setSelectedItem","selectedItems","setSelectedItems","handleSingleSelection","value","handleMultipleSelections","prevVal","selectedValues","includes","length","filter","item","push"],"sourceRoot":"../../../src","sources":["hooks/use-selection-handler.ts"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AAa7C,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAClCC,oBAAoB;EACpBC,UAAU;EACVC,kBAAkB,GAAG,CAAC;EACtBC,kBAAkB;EAClBC,aAAa;EACbC,UAAU;EACVC;AACwB,CAAC,KAAK;EAC9B;EACA,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGX,QAAQ,CAC9CI,UAAU,GAAG,EAAE,GAAID,oBACrB,CAAC;EACD,MAAM,CAACS,aAAa,EAAEC,gBAAgB,CAAC,GAAGb,QAAQ,CAChDI,UAAU,GAAID,oBAAoB,GAAuB,EAC3D,CAAC;EAED,MAAMW,qBAAqB,GAAGb,WAAW,CACtCc,KAAoB,IAAK;IACxB,IAAIL,YAAY,KAAKK,KAAK,EAAE;MAC1B;MACA,IAAIV,kBAAkB,KAAK,CAAC,EAAE;QAC5BM,eAAe,CAAC,EAAE,CAAC;QACnBJ,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;MACrB;IACF,CAAC,MAAM;MACLI,eAAe,CAACI,KAAK,CAAC;MACtBR,aAAa,CAACQ,KAAK,CAAC,CAAC,CAAC;;MAEtB,IAAIN,iBAAiB,EAAE;QACrBD,UAAU,CAAC,CAAC,CAAC,CAAC;MAChB;IACF;EACF,CAAC,EACD,CACEE,YAAY,EACZL,kBAAkB,EAClBE,aAAa,EACbE,iBAAiB,EACjBD,UAAU,CAEd,CAAC;EAED,MAAMQ,wBAAwB,GAAGf,WAAW,CACzCc,KAAoB,IAAK;IACxBF,gBAAgB,CAAEI,OAAO,IAAK;MAC5B,IAAIC,cAAc,GAAG,CAAC,GAAGD,OAAO,CAAC;MAEjC,IAAIC,cAAc,CAACC,QAAQ,CAACJ,KAAK,CAAC,EAAE;QAClC;QACA,IAAIG,cAAc,CAACE,MAAM,GAAGf,kBAAkB,EAAE;UAC9Ca,cAAc,GAAGA,cAAc,CAACG,MAAM,CAAEC,IAAI,IAAKA,IAAI,KAAKP,KAAK,CAAC;QAClE;MACF,CAAC,MAAM;QACL;QACA,IACET,kBAAkB,IAClBY,cAAc,CAACE,MAAM,IAAId,kBAAkB,EAC3C;UACA,OAAOY,cAAc;QACvB;QACAA,cAAc,CAACK,IAAI,CAACR,KAAK,CAAC;MAC5B;MAEAR,aAAa,CAACW,cAAc,CAAC,CAAC,CAAC;MAC/B,OAAOA,cAAc;IACvB,CAAC,CAAC;EACJ,CAAC,EACD,CAACb,kBAAkB,EAAEC,kBAAkB,EAAEC,aAAa,CACxD,CAAC;;EAED;EACA,OAAO;IACLG,YAAY;IACZE,aAAa;IACbE,qBAAqB;IACrBE,wBAAwB;IACxBH,gBAAgB;IAAE;IAClBF,eAAe,CAAE;EACnB,CAAC;AACH,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import DropdownSectionList from './components/List/DropdownSectionList';
|
|
|
9
9
|
import CustomModal from './components/CustomModal';
|
|
10
10
|
import { colors } from './styles/colors';
|
|
11
11
|
import { DEFAULT_OPTION_LABEL, DEFAULT_OPTION_VALUE } from './constants';
|
|
12
|
-
import { extractPropertyFromArray,
|
|
12
|
+
import { extractPropertyFromArray, getSelectionsData, removeDisabledItems } from './utils';
|
|
13
13
|
import { useSelectionHandler, useModal, useSearch, useIndexOfSelectedItem, useSelectAll } from './hooks';
|
|
14
14
|
export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
15
15
|
testID,
|
|
@@ -45,7 +45,9 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
45
45
|
searchControls,
|
|
46
46
|
modalControls,
|
|
47
47
|
checkboxControls,
|
|
48
|
+
selectedItemsControls,
|
|
48
49
|
autoCloseOnSelect = true,
|
|
50
|
+
minSelectableItems,
|
|
49
51
|
maxSelectableItems,
|
|
50
52
|
...rest
|
|
51
53
|
}, ref) => {
|
|
@@ -125,6 +127,7 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
125
127
|
} = useSelectionHandler({
|
|
126
128
|
initialSelectedValue: selectedValue,
|
|
127
129
|
isMultiple,
|
|
130
|
+
minSelectableItems,
|
|
128
131
|
maxSelectableItems,
|
|
129
132
|
onValueChange,
|
|
130
133
|
closeModal: () => closeModal(),
|
|
@@ -132,8 +135,10 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
132
135
|
});
|
|
133
136
|
useEffect(() => {
|
|
134
137
|
isMultiple ? setSelectedItems(selectedValue) : setSelectedItem(selectedValue);
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
|
|
139
|
+
// setSelectedItems already updates selectedValue, so omit it from dependency array to avoid infinite loop
|
|
140
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
141
|
+
}, [setSelectedItems, setSelectedItem, isMultiple, onValueChange]);
|
|
137
142
|
|
|
138
143
|
/*===========================================
|
|
139
144
|
* List type
|
|
@@ -168,18 +173,19 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
168
173
|
placeholder: placeholder,
|
|
169
174
|
helperText: helperText,
|
|
170
175
|
error: error,
|
|
171
|
-
|
|
176
|
+
selectionData: getSelectionsData({
|
|
172
177
|
isMultiple,
|
|
173
|
-
optionLabel,
|
|
174
178
|
optionValue,
|
|
175
179
|
selectedItem,
|
|
176
180
|
selectedItems,
|
|
177
181
|
modifiedOptions
|
|
178
182
|
}),
|
|
183
|
+
optionLabel: optionLabel,
|
|
184
|
+
optionValue: optionValue,
|
|
179
185
|
selectedItem: selectedItem,
|
|
180
186
|
selectedItems: selectedItems,
|
|
187
|
+
selectedItemsControls: selectedItemsControls,
|
|
181
188
|
openModal: () => openModal(),
|
|
182
|
-
closeModal: () => closeModal(),
|
|
183
189
|
labelStyle: labelStyle,
|
|
184
190
|
dropdownIcon: dropdownIcon,
|
|
185
191
|
dropdownStyle: dropdownStyle,
|
|
@@ -194,7 +200,8 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
194
200
|
primaryColor: primaryColor,
|
|
195
201
|
disabled: disabled,
|
|
196
202
|
placeholderStyle: placeholderStyle,
|
|
197
|
-
setIndexOfSelectedItem: setIndexOfSelectedItem
|
|
203
|
+
setIndexOfSelectedItem: setIndexOfSelectedItem,
|
|
204
|
+
handleMultipleSelections: handleMultipleSelections
|
|
198
205
|
}, rest)), /*#__PURE__*/React.createElement(CustomModal, {
|
|
199
206
|
visible: isVisible,
|
|
200
207
|
onRequestClose: () => closeModal(),
|
|
@@ -212,7 +219,7 @@ export const DropdownSelect = /*#__PURE__*/forwardRef(({
|
|
|
212
219
|
style: styles.optionsContainerStyle
|
|
213
220
|
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
214
221
|
accessible: false
|
|
215
|
-
}, /*#__PURE__*/React.createElement(CheckBox, {
|
|
222
|
+
}, removeDisabledItems(modifiedOptions)?.length !== 0 && /*#__PURE__*/React.createElement(CheckBox, {
|
|
216
223
|
value: selectAll,
|
|
217
224
|
label: selectAll ? listControls?.unselectAllText || 'Clear all' : listControls?.selectAllText || 'Select all',
|
|
218
225
|
onChange: () => handleSelectAll(),
|