@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.
@@ -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: any[];
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@rn-components-dropdown/dropdown",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "repository": {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import Svg, { Path, SvgProps } from "react-native-svg";
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: any; index: number }) => {
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: any; index: number }) => {
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<any[]>(data);
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,