autocompleteValidator.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. if (value == null) {
  11. value = '';
  12. }
  13. if (this.allowEmpty && value === '') {
  14. callback(true);
  15. return;
  16. }
  17. if (this.strict && this.source) {
  18. if (typeof this.source === 'function') {
  19. this.source(value, process(value, callback));
  20. } else {
  21. process(value, callback)(this.source);
  22. }
  23. } else {
  24. callback(true);
  25. }
  26. };
  27. /**
  28. * Function responsible for validation of autocomplete value.
  29. *
  30. * @param {*} value - Value of edited cell
  31. * @param {Function} callback - Callback called with validation result
  32. */
  33. function process(value, callback) {
  34. var originalVal = value;
  35. return function (source) {
  36. var found = false;
  37. for (var s = 0, slen = source.length; s < slen; s++) {
  38. if (originalVal === source[s]) {
  39. found = true; // perfect match
  40. break;
  41. }
  42. }
  43. callback(found);
  44. };
  45. }