autocompleteValidator.js 1.2 KB

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