react-native-customisable-combobox
Version:
A simple react native combobox
42 lines (41 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useGetSearchItems = void 0;
var react_1 = require("react");
var useGetSearchItems = function (_a) {
var items = _a.items, search = _a.search, searchField = _a.searchField, onSearchCallback = _a.onSearchCallback;
var _b = (0, react_1.useState)(items), filteredItems = _b[0], setFilteredItems = _b[1];
(0, react_1.useEffect)(function () {
if (search && search.length > 3) {
if (onSearchCallback) {
var customFilteredItems = onSearchCallback(search);
if (customFilteredItems instanceof Promise) {
customFilteredItems.then(setFilteredItems);
}
else {
setFilteredItems(customFilteredItems);
}
return;
}
var foundItems = items.filter(function (item) {
if (typeof item === "object" && searchField) {
var fieldValue = item === null || item === void 0 ? void 0 : item[searchField];
if (typeof fieldValue === "string") {
return fieldValue.toLowerCase().includes(search.toLowerCase());
}
return false;
}
else {
return (typeof item === "string" &&
item.toLowerCase().includes(search.toLowerCase()));
}
});
setFilteredItems(foundItems);
}
else {
setFilteredItems(items);
}
}, [search, items, searchField]);
return filteredItems;
};
exports.useGetSearchItems = useGetSearchItems;