UNPKG

@variantjs/core

Version:

VariantJS common functions and utilities

34 lines (27 loc) 870 B
import { NormalizedOption, NormalizedOptions } from './types'; const filterOptions = (options: NormalizedOptions, query: string): NormalizedOptions => { if (query === '') { return options; } return options .map((option: NormalizedOption): NormalizedOption => { if (option.children) { const newOption: NormalizedOption = { ...option, ...{ children: filterOptions(option.children, query), }, }; return newOption; } return option; }).filter((option: NormalizedOption): boolean => { const foundText = String(option.text) .toUpperCase() .trim() .includes(query.toUpperCase().trim()); const hasChildren = option.children && option.children.length > 0; return hasChildren || foundText; }); }; export default filterOptions;