Options.js
unknown
javascript
3 years ago
1.1 kB
11
Indexable
function Options({ exclude, startWithNumber, className }) {
const { search } = useContext(SearchContext);
function filterExclusions(options, exclude, startWithNumber) {
if (!options) {
return;
}
const regex = /^\d/;
const result =
exclude.length > 0
? options.filter((option) => {
return !exclude.includes(option.title);
})
: options;
return result
.filter((item) =>
startWithNumber ? regex.test(item.title) : !regex.test(item.title)
)
.sort((a, b) =>
a.title.toLowerCase().localeCompare(b.title.toLowerCase())
);
}
const { isLoading, data: certificates } = useQuery(["certificates"], () =>
getCertificates()
);
return (
<LoadingWrapper loading={isLoading}>
{certificates &&
filterExclusions(
searchCertificates(certificates, search),
exclude,
startWithNumber
).map((item) => (
<Option option={item} key={item.id} className={className} />
))}
</LoadingWrapper>
);
}
Options.defaultProps = {
exclude: [],
};
export default Options;
Editor is loading...