react-select
Version:
A Select control built with and for ReactJS
46 lines (40 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createFilter = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _diacritics = require('./diacritics');
var trimString = function trimString(str) {
return str.replace(/^\s+|\s+$/g, '');
};
var defaulStringify = function defaulStringify(option) {
return option.label + ' ' + option.value;
};
var createFilter = exports.createFilter = function createFilter(config) {
return function (option, rawInput) {
var _ignoreCase$ignoreAcc = _extends({
ignoreCase: true,
ignoreAccents: true,
stringify: defaulStringify,
trim: true,
matchFrom: 'any'
}, config),
ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,
ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,
stringify = _ignoreCase$ignoreAcc.stringify,
trim = _ignoreCase$ignoreAcc.trim,
matchFrom = _ignoreCase$ignoreAcc.matchFrom;
var input = trim ? trimString(rawInput) : rawInput;
var candidate = trim ? trimString(stringify(option)) : stringify(option);
if (ignoreCase) {
input = input.toLowerCase();
candidate = candidate.toLowerCase();
}
if (ignoreAccents) {
input = (0, _diacritics.stripDiacritics)(input);
candidate = (0, _diacritics.stripDiacritics)(candidate);
}
return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;
};
};