autocompleteValidator.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /**
  2. * Autocomplete cell validator.
  3. *
  4. * @private
  5. * @validator AutocompleteValidator
  6. * @param {*} value - Value of edited cell
  7. * @param {Function} callback - Callback called with validation result
  8. */
  9. export default function autocompleteValidator(value, callback) {
  10. let valueToValidate = value;
  11. if (valueToValidate === null || valueToValidate === void 0) {
  12. valueToValidate = '';
  13. }
  14. if (this.allowEmpty && valueToValidate === '') {
  15. callback(true);
  16. return;
  17. }
  18. if (this.strict && this.source) {
  19. if (typeof this.source === 'function') {
  20. this.source(valueToValidate, process(valueToValidate, callback));
  21. } else {
  22. process(valueToValidate, callback)(this.source);
  23. }
  24. } else {
  25. callback(true);
  26. }
  27. }
  28. /**
  29. * Function responsible for validation of autocomplete value.
  30. *
  31. * @param {*} value - Value of edited cell
  32. * @param {Function} callback - Callback called with validation result
  33. */
  34. function process(value, callback) {
  35. const originalVal = value;
  36. return function(source) {
  37. let found = false;
  38. for (let s = 0, slen = source.length; s < slen; s++) {
  39. if (originalVal === source[s]) {
  40. found = true; // perfect match
  41. break;
  42. }
  43. }
  44. callback(found);
  45. };
  46. }