Skip to content
Snippets Groups Projects
Commit 74337a8a authored by Max Frederiksen's avatar Max Frederiksen Committed by Max Frederiksen
Browse files

Delete /SearchBoxFilter folder + move useTypingTimer into hooks folder

parent cbe60efa
No related branches found
No related tags found
2 merge requests!612Release 5.0.0,!590CE-3429: Convert to typescript
import { useState, useEffect } from "react";
import { styled } from "@mui/material/styles";
import { Container, List, ListItem, Paper, TextField } from "@mui/material";
import { useUniqueKeys } from "@ess-ics/ce-ui-common";
import { useTypingTimer } from "./TypingTimer";
const PREFIX = "SearchBoxFilter";
const classes = {
searchText: `${PREFIX}-searchText`
};
const StyledSearchBoxFilter = styled(SearchBoxFilter)(() => ({
[`& .${classes.searchText}`]: {
fontFamily: "Segoe UI"
}
}));
export function SearchBoxFilter({ items, filter, render }) {
const [filteredItems, setFilteredItems] = useState(items);
const [search, searchKeyPress] = useTypingTimer();
const filterItems = () => {
const f = filter(search);
const subset = items.filter(f);
setFilteredItems(subset);
};
useEffect(filterItems, [items, search, filter]);
return (
<StyledSearchBoxFilter>
<Container>
<TextField
className={classes.searchText}
fullWidth
variant="outlined"
label="Search"
onKeyUp={searchKeyPress}
/>
<div>&nbsp;</div>
{render(filteredItems)}
</Container>
</StyledSearchBoxFilter>
);
}
const MyList = ({ items }) => {
const itemsKeys = useUniqueKeys(items);
return (
<List>
{items &&
items.map((item, i) => {
return (
<Paper key={itemsKeys[i]}>
<ListItem>{item}</ListItem>
</Paper>
);
})}
</List>
);
};
export function SearchBoxFilterDemo() {
const items = ["Big Dog", "Big Cat", "Small Dog", "Small Cat"];
const filter = (search) => {
return (item) => {
return item.toLowerCase().includes(search);
};
};
const renderFilteredItems = (items) => {
return <MyList items={items} />;
};
return (
<SearchBoxFilter
items={items}
filter={filter}
render={renderFilteredItems}
/>
);
}
import { SearchBoxFilter, SearchBoxFilterDemo } from "./SearchBoxFilter";
import { useTypingTimer } from "./TypingTimer";
export { SearchBoxFilter, SearchBoxFilterDemo, useTypingTimer };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment