UNPKG

@awsui/components-react

Version:

AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A

35 lines (34 loc) 1.47 kB
var isGroup = function (option) { return 'type' in option && option.type === 'parent'; }; var popLastGroup = function (options) { if (options.length) { var lastOption = options[options.length - 1]; if (isGroup(lastOption)) { options.pop(); } } }; export var filterOptions = function (options, text) { var filteredOptions = options.reduce(function (filteredIn, option) { if (isGroup(option)) { popLastGroup(filteredIn); filteredIn.push(option); } else if (matchSingleOption(option, text)) { filteredIn.push(option); } return filteredIn; }, []); popLastGroup(filteredOptions); return filteredOptions; }; var matchSingleOption = function (option, text) { var searchableFields = ['value', 'label', 'description', 'labelTag']; var searchableTagFields = ['tags', 'filteringTags']; var searchText = text.toLowerCase(); var searchStrFieldsFn = function (attr) { return matchString(option[attr], searchText); }; var searchTagsFieldsFn = function (attr) { var _a; return (_a = option[attr]) === null || _a === void 0 ? void 0 : _a.some(function (value) { return matchString(value, searchText); }); }; return searchableFields.some(searchStrFieldsFn) || searchableTagFields.some(searchTagsFieldsFn); }; var matchString = function (value, searchText) { return value && value.toLowerCase().indexOf(searchText) !== -1; };