secullum-react-native-ui 4.15.1-beta.0 → 4.15.1-beta.1
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.
|
@@ -40,6 +40,7 @@ export declare class DropDown extends React.Component<DropDownProperties, DropDo
|
|
|
40
40
|
icon?: string | undefined;
|
|
41
41
|
nativeID?: string | undefined;
|
|
42
42
|
}[];
|
|
43
|
+
shouldDisplaySearchField: () => boolean | undefined;
|
|
43
44
|
renderClosedDropDown: (item: any, inputStyle: any) => JSX.Element | null;
|
|
44
45
|
getStyles: () => any;
|
|
45
46
|
render(): JSX.Element;
|
|
@@ -110,6 +110,10 @@ class DropDown extends React.Component {
|
|
|
110
110
|
const { searchText } = this.state;
|
|
111
111
|
return items.filter(item => item.label.toLowerCase().includes(searchText.toLowerCase()));
|
|
112
112
|
};
|
|
113
|
+
this.shouldDisplaySearchField = () => {
|
|
114
|
+
const { items, searchable } = this.props;
|
|
115
|
+
return items.length >= 10 && searchable;
|
|
116
|
+
};
|
|
113
117
|
this.renderClosedDropDown = (item, inputStyle) => {
|
|
114
118
|
const { iconComponent } = this.props;
|
|
115
119
|
const theme = (0, theme_1.getTheme)();
|
|
@@ -192,7 +196,7 @@ class DropDown extends React.Component {
|
|
|
192
196
|
right: 16
|
|
193
197
|
},
|
|
194
198
|
modalOverlay: {
|
|
195
|
-
justifyContent: this.
|
|
199
|
+
justifyContent: this.shouldDisplaySearchField() ? 'flex-start' : 'center'
|
|
196
200
|
},
|
|
197
201
|
modalContainer: {
|
|
198
202
|
maxHeight: '95%',
|
|
@@ -285,7 +289,8 @@ class DropDown extends React.Component {
|
|
|
285
289
|
const selectedItem = items.find(x => x.value === value);
|
|
286
290
|
const styles = this.getStyles();
|
|
287
291
|
const theme = (0, theme_1.getTheme)();
|
|
288
|
-
const filteredItems =
|
|
292
|
+
const filteredItems = this.filteredItems();
|
|
293
|
+
const visibleItems = searchable ? filteredItems : items;
|
|
289
294
|
return (React.createElement(react_native_1.TouchableWithoutFeedback, { onPress: () => __awaiter(this, void 0, void 0, function* () {
|
|
290
295
|
if (onPress) {
|
|
291
296
|
const result = yield onPress();
|
|
@@ -315,19 +320,12 @@ class DropDown extends React.Component {
|
|
|
315
320
|
justifyContent: 'center'
|
|
316
321
|
}
|
|
317
322
|
] },
|
|
318
|
-
|
|
319
|
-
style: styles.
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
name: "search",
|
|
325
|
-
size: 16,
|
|
326
|
-
color: "gray",
|
|
327
|
-
style: styles.searchIcon
|
|
328
|
-
})))),
|
|
329
|
-
filteredItems.length > 0 ? (React.createElement(react_native_1.FlatList, { data: searchable ? filteredItems : items, initialNumToRender: filteredItems.length, keyExtractor: item => item.value.toString(), renderItem: ({ item, index }) => {
|
|
330
|
-
return (React.createElement(DropDownItem, { nativeID: item.nativeID, first: index === 0, last: index === (searchable ? filteredItems : items).length - 1, label: item.label, value: item.value, onPress: this.handleItemPress, icon: item.icon, iconComponent: iconComponent }));
|
|
323
|
+
this.shouldDisplaySearchField() && (React.createElement(react_native_1.View, { style: styles.searchContainer },
|
|
324
|
+
React.createElement(react_native_1.View, { style: styles.inputWrapper },
|
|
325
|
+
React.createElement(react_native_1.TextInput, { style: styles.searchInput, value: searchText, placeholder: "Buscar", onChangeText: (text) => this.setState({ searchText: text }) }),
|
|
326
|
+
React.createElement(FontAwesome_1.default, { name: "search", size: 16, color: "gray", style: styles.searchIcon })))),
|
|
327
|
+
filteredItems.length > 0 ? (React.createElement(react_native_1.FlatList, { data: visibleItems, initialNumToRender: filteredItems.length, keyExtractor: item => item.value.toString(), renderItem: ({ item, index }) => {
|
|
328
|
+
return (React.createElement(DropDownItem, { nativeID: item.nativeID, first: index === 0, last: index === visibleItems.length - 1, label: item.label, value: item.value, onPress: this.handleItemPress, icon: item.icon, iconComponent: iconComponent }));
|
|
331
329
|
} })) : (React.createElement(react_native_1.View, { style: styles.emptyMessageContainer },
|
|
332
330
|
React.createElement(FontAwesome_1.default, { name: "warning", color: theme.warningColor, size: 24 }),
|
|
333
331
|
React.createElement(react_native_1.Text, { style: styles.modalItem }, emptyMessage)))))))));
|