@rn-components-dropdown/dropdown 1.0.7 → 1.0.8
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/dist/components/dropdown/Dropdown.js +2 -2
- package/dist/components/dropdown/hooks/useDropdown.d.ts +1 -1
- package/dist/components/dropdown/interface/DropdownInterface.d.ts +1 -1
- package/package.json +1 -1
- package/src/assets/svg/SearchIcon.tsx +1 -1
- package/src/components/dropdown/Dropdown.tsx +6 -6
- package/src/components/dropdown/hooks/useDropdown.ts +1 -1
- package/src/components/dropdown/interface/DropdownInterface.ts +2 -0
|
@@ -94,7 +94,7 @@ const DropdownComponent = (props) => {
|
|
|
94
94
|
const isSelected = lodash_1.default.some(currentValue, h => lodash_1.default.isEqual(lodash_1.default.get(h, valueField), lodash_1.default.get(item, valueField)));
|
|
95
95
|
return (<react_native_1.TouchableHighlight key={index.toString()} testID={lodash_1.default.get(item, itemTestIDField || labelField)} accessible={!!accessibilityLabel} accessibilityLabel={lodash_1.default.get(item, itemAccessibilityLabelField || labelField)} underlayColor={colors[activeColor]} onPress={() => onCheckPress(item)}>
|
|
96
96
|
<react_native_1.View style={react_native_1.StyleSheet.flatten([itemContainerStyle])}>
|
|
97
|
-
{renderItem ? (renderItem(item, isSelected)) : (<react_native_1.View style={styles.item}>
|
|
97
|
+
{renderItem ? (renderItem(item, isSelected, labelField, valueField)) : (<react_native_1.View style={styles.item}>
|
|
98
98
|
<SvgButton_1.default icon={multiSelectIcon ? multiSelectIcon : <CheckIcon_1.default color={colors.white}/>} onPress={() => onCheckPress(item)} style={[
|
|
99
99
|
styles.checkContainer,
|
|
100
100
|
{
|
|
@@ -132,7 +132,7 @@ const DropdownComponent = (props) => {
|
|
|
132
132
|
lodash_1.default.assign(item, { _index: index });
|
|
133
133
|
return (<react_native_1.TouchableHighlight key={index.toString()} testID={lodash_1.default.get(item, itemTestIDField || labelField)} accessible={!!accessibilityLabel} accessibilityLabel={lodash_1.default.get(item, itemAccessibilityLabelField || labelField)} underlayColor={colors[activeColor]} onPress={() => onSelect(item)}>
|
|
134
134
|
<react_native_1.View style={react_native_1.StyleSheet.flatten([itemContainerStyle])}>
|
|
135
|
-
{renderItem ? (renderItem(item, selected)) : (<react_native_1.View style={styles.item}>
|
|
135
|
+
{renderItem ? (renderItem(item, selected, labelField, valueField)) : (<react_native_1.View style={styles.item}>
|
|
136
136
|
{renderRadio(selected)}
|
|
137
137
|
<AppText_1.default style={react_native_1.StyleSheet.flatten([
|
|
138
138
|
styles.textItem,
|
|
@@ -12,7 +12,7 @@ declare const useDropdown: <T, Mode extends "single" | "multi">(props: DropdownP
|
|
|
12
12
|
position: any;
|
|
13
13
|
onSelect: (item: any) => void;
|
|
14
14
|
onSearch: (text: string) => void;
|
|
15
|
-
listData:
|
|
15
|
+
listData: T[];
|
|
16
16
|
onMeasure: () => void;
|
|
17
17
|
searchText: string;
|
|
18
18
|
showOrClose: () => void;
|
|
@@ -61,7 +61,7 @@ export type DropdownProps<S, T extends SelectionType> = {
|
|
|
61
61
|
flatListProps?: Omit<FlatListProps<any>, 'renderItem' | 'data'>;
|
|
62
62
|
renderLeftIcon?: (visible?: boolean) => React.JSX.Element | null | undefined;
|
|
63
63
|
renderRightIcon?: (visible?: boolean) => React.JSX.Element | null | undefined;
|
|
64
|
-
renderItem?: (item: S, selected?: boolean) => React.JSX.Element | null | undefined;
|
|
64
|
+
renderItem?: (item: S, selected?: boolean, labelField?: keyof S, valueField?: keyof S) => React.JSX.Element | null | undefined;
|
|
65
65
|
renderInputSearch?: (onSearch: (text: string) => void) => React.JSX.Element | null | undefined;
|
|
66
66
|
};
|
|
67
67
|
export interface IUseDetectDevice {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import Svg, { Path
|
|
2
|
+
import Svg, { Path } from "react-native-svg";
|
|
3
3
|
import { SvgInterface } from "../../interface/svg.interface";
|
|
4
4
|
|
|
5
5
|
const SearchIcon = ({ size= 18, color = "#1C1B1F" }: SvgInterface) => (
|
|
@@ -104,7 +104,7 @@ const DropdownComponent = <T, Mode extends 'single' | 'multi'>(
|
|
|
104
104
|
};
|
|
105
105
|
|
|
106
106
|
const _renderDropdown = () => {
|
|
107
|
-
const isSelected = currentValue && _.get(currentValue, valueField);
|
|
107
|
+
const isSelected: boolean = currentValue && _.get(currentValue, valueField);
|
|
108
108
|
return (
|
|
109
109
|
<TouchableWithoutFeedback
|
|
110
110
|
testID={testID}
|
|
@@ -169,7 +169,7 @@ const DropdownComponent = <T, Mode extends 'single' | 'multi'>(
|
|
|
169
169
|
);
|
|
170
170
|
|
|
171
171
|
const renderCheckItem = useCallback(
|
|
172
|
-
({ item, index }: { item:
|
|
172
|
+
({ item, index }: { item: T; index: number }) => {
|
|
173
173
|
const isSelected = _.some(currentValue, h =>
|
|
174
174
|
_.isEqual(_.get(h, valueField), _.get(item, valueField)),
|
|
175
175
|
);
|
|
@@ -187,8 +187,8 @@ const DropdownComponent = <T, Mode extends 'single' | 'multi'>(
|
|
|
187
187
|
>
|
|
188
188
|
<View style={StyleSheet.flatten([itemContainerStyle])}>
|
|
189
189
|
{renderItem ? (
|
|
190
|
-
renderItem(item, isSelected)
|
|
191
|
-
)
|
|
190
|
+
renderItem(item, isSelected, labelField, valueField)
|
|
191
|
+
) : (
|
|
192
192
|
<View style={styles.item}>
|
|
193
193
|
<SvgButton
|
|
194
194
|
icon={multiSelectIcon ? multiSelectIcon : <CheckIcon color={colors.white}/> }
|
|
@@ -233,7 +233,7 @@ const DropdownComponent = <T, Mode extends 'single' | 'multi'>(
|
|
|
233
233
|
);
|
|
234
234
|
|
|
235
235
|
const _renderItem = useCallback(
|
|
236
|
-
({ item, index }: { item:
|
|
236
|
+
({ item, index }: { item: T; index: number }) => {
|
|
237
237
|
const isSelected = currentValue && _.get(currentValue, valueField);
|
|
238
238
|
const selected = _.isEqual(_.get(item, valueField), isSelected);
|
|
239
239
|
_.assign(item, { _index: index });
|
|
@@ -251,7 +251,7 @@ const DropdownComponent = <T, Mode extends 'single' | 'multi'>(
|
|
|
251
251
|
>
|
|
252
252
|
<View style={StyleSheet.flatten([itemContainerStyle])}>
|
|
253
253
|
{renderItem ? (
|
|
254
|
-
renderItem(item, selected)
|
|
254
|
+
renderItem(item, selected, labelField, valueField)
|
|
255
255
|
) : (
|
|
256
256
|
<View style={styles.item}>
|
|
257
257
|
{renderRadio(selected)}
|
|
@@ -50,7 +50,7 @@ const useDropdown = <T, Mode extends 'single' | 'multi'>(
|
|
|
50
50
|
const orientation = useDeviceOrientation();
|
|
51
51
|
const [position, setPosition] = useState<any>();
|
|
52
52
|
const [searchText, setSearchText] = useState('');
|
|
53
|
-
const [listData, setListData] = useState<
|
|
53
|
+
const [listData, setListData] = useState<T[]>(data);
|
|
54
54
|
const [visible, setVisible] = useState<boolean>(false);
|
|
55
55
|
const [currentValue, setCurrentValue] = useState<any>(null);
|
|
56
56
|
const statusBarHeight: number = StatusBar.currentHeight || 0;
|
|
@@ -77,6 +77,8 @@ export type DropdownProps<S, T extends SelectionType> = {
|
|
|
77
77
|
renderItem?: (
|
|
78
78
|
item: S,
|
|
79
79
|
selected?: boolean,
|
|
80
|
+
labelField?: keyof S,
|
|
81
|
+
valueField?: keyof S,
|
|
80
82
|
) => React.JSX.Element | null | undefined;
|
|
81
83
|
renderInputSearch?: (
|
|
82
84
|
onSearch: (text: string) => void,
|